Objekty v PHP 5 - 7. díl

Diskuze čtenářů k článku

18. 03. 2009 11:47

Proc pracovat prave pro nas?

Nasi největší hodnotou jsou lidé a team, který tvoří. Bez nadšených a inovativních spolupracovníků bychom nedosáhli našeho úspěchu. Vytváříme takové pracovní podmínky, které umožňují a podporují týmovou spolupráci a neustálý profesní i lidský růst. Sdílíme mezi sebou znalosti, komunikujeme přímo a jasně. Ve spolecnosti panuje neustále dobrá nálada a je znát, že nás práce opravdu baví.

Práce lidí v našem týmu musí být vždy na vysoké úrovni. Za tuto práci každému patří náležitá odměna, která zahrnuje:

- Odpovídající fixní plat

- Variabilní složku platu a odměny z dokončených projektů

- Placené přesčasy

- Odborné vzdělávání

- Prostor pro realizaci vlastních projektů

- Příspěvek na stravování

- Silnou firemní kulturu

- Firemní akce, teambuilding

Náplň práce:

Senior programátor pracuje na nejtěžších úkolech při tvorbě nových produktů nebo při vývoji na zakázku pro partnerské společnosti. Jeho úkolem je nalézat řešení náročných úkolů, mít přehled o nových technologiích, chuť neustále se učit a vzdělávat, uvádět nové technologie do praxe.

Požadujeme:

- Velmi dobrá znalost objektového programování (PHP,Python,C++).

- Perfektní znalost relačních databází PostgreSQL, MySQL.

- Znalost značkovacích jazyků XML,XHTML, ...

- Angličtina (alespoň pasivně).

- VŠ příp. SŠ vzdělání.

- Pečlivý přístup k práci.

- Schopnost týmové i samostatné práce.

- Chuť učit se novým věcem, schopnost vést tým vývojářů.

- Praxe při komerčním vývoji, zkušenosti s návrhem a vývojem aplikací.

Nabízíme:

- Zajímavou práci, za kterou jsou vidět výsledky.

- Propracovaný systém hodnocení, odpovídající výsledkům (cca 35 - 55 000 Kč/měs.)

- Přátelské pracovní prostředí, jedinečný kolektiv.

- Osobní vzdělávání a kariérní růst.

- Příspěvek na důchodové pojištění.

- Stravenky.

- Možnost využívat služeb asistentky (administrativní záležitosti).

Lokalita: Brno

V pripade zajmu posilejte zivotopisy na nabor@cdr-cz.com

Souhlasím  |  Nesouhlasím  |  Odpovědět
Big_G  |  22. 03. 2006 17:04

Zdravím.
Nejsem úplný laik, ikdyž nemám na programování žádný papír.
Spravoval jsem portál, který byl naprosto celý napsán klasickým PHP.
Fungoval naprosto bez problémů a kód byl perfektně čitelný i přes jeho rozsáhlost.
pokud ale dostanu na monitor něco, co je psáno jako OOP, jsem totálně mimo. Všude samá šipka (->), všechno zastrkané do škatulek (třídy).
Vysvětlete mi, vy "profesionální" programátoři, co na tom vlastně vidíte?
Ač jsem programoval sebenáročnější weby, vždy jsem se obešel bez všech těch rodičů, dětí, babiček, tet a kdoví jakého ještě příbuzenstva nemluvě o třídách a školách.
Vždyť funkci lze zavolat pouhým funkce(). Proč stále dokola vypisovat třída->funkce()?
A to jsem se ještě nezmínil o dědicích a klonech... prostě chaos.
Může mi někdo vysvětlit, v čem je to lepší než prosté PHP?
Díky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
anakin  |  06. 04. 2006 16:25

Zdar, taky nejsem zadnym guru, ale ... v praci pouzivam objektovy jazyk (nekteri si nemysli, ze java je objektovy, ale s tim nic neudelam ...) a nejak jsem si na to zvykl. Nyni predelavam jeden projekt na objektovy a musim rici, ze pro me se prehlednost zvysila. Bohuzel se neda odstranit to, ze je to webovy jazyk, tudiz par veci je "trosku podivnych", napr. prechody mezi strankami, ale jinak si myslim, ze zalezi na vkusu a zvyku. To same plati i o vyjimkach ... nejsou v PHP prave 2x dokonale, ale aspon se s tim zacalo a ja je vyuzivam myslim si celkem hojne ...
Nejak mi z tveho prispevku prislo, ze objektove moc neprogramujes, tudiz mas na toto trosku jiny nahled, cimz nerikam, ze je spatny, jen jiny ;)

Souhlasím  |  Nesouhlasím  |  Odpovědět
anakin  |  06. 04. 2006 16:25

sorry ...
(nekteri si nemysli, ze java NENI objektovy, ale s tim nic neudelam ...)
;)

Souhlasím  |  Nesouhlasím  |  Odpovědět
bob  |  07. 04. 2006 15:29

"Vždyť funkci lze zavolat pouhým funkce(). Proč stále dokola vypisovat třída->funkce()?"
Napr. mas aplikaciu, ktoru si napisal nad databazou MySQL. A chces ju dat na server, kde je MySQL nie je a je tam Oracle.  A mas v kode pouzite funkcie napr. mysql_num_rows(); Takze musis prepisat vsetky "mysql_num_rows()" za "oracle_num_rows()". Preco mam stale vypisovat mysql_num_rows()? Co keby som mal triedu Database(provider){...} a potom by som napisal asi toto v nejakom subore db.inc.php
$DB = new Database("mysql");
$DB->Connect();
a dalej v inom kode by som stale pisal toto: $DB->num_rows(); ($DB->Query("SELECT...")). A ked zmenim databazu za Oracle, tak len v subore db.inc.php zmenim riadok $DB = new Database("mysql") za $DB = new Database("oracle"); A mam portovanu aplikaciu na Oracle. Pravda, ak nepouzivam speciality mysql typu "SELECT ID FROM Users ORDER BY ID DESC limit 20,40"... :)
Okrem toho, teraz pises nazvy funkcii asi takto: mysql_volaco_urob. Tiez sa da opytat, naco tam mam stale vypisovat mysql_
Alebo ked mas funkcie, ktore robia to iste, ale vnutorne su rozne implementovane. To mas potom kod plny funkcii anketa1_dajzoznam(), anketa2_dajzoznam(),
pripadne "este lepsie"
function anketa_dajzoznam($Ankety){
  if ($Anketa==...)
else if ($Anketa ==...)
else if ($Anketa ==...)
return volaco;
}
Toto su uzasne kostrukcie na niekolko stran A4. Ale ked to niekomu vyhovuje, nech si pise takyto znovapouzitelny spagety kod. :)
Bohus

Souhlasím  |  Nesouhlasím  |  Odpovědět
--==[FReeZ]==--  |  23. 04. 2006 12:04

K clanku: Clanek je pro mne prinosem, libi se mi jak je to tam pekne rozepsano ale zcela mi zchazi bit jedine prakticke vyuziti, kde je lepsi pouzit objekt misto funkce, muzete mi prosim nejake to vyuziti nekdo napsat? Dekuji

----------------------------------------------- --------
Bob nebo nekdo jiny:
Ahoj, sice se to neni adresovano konkretne mne, ale podivejte se na to prosim:

Takze musis prepisat vsetky "mysql_num_rows()" za "oracle_num_rows()

Nemusim prepsat nic vic, nez uz objektoveho reseni, to proto, ze mysql_num_rows() hodim do nektere funkce jako treba pocet_sloupcu($vysledek) a ta funkce jednodusse zavola mysql_num_rows()

Jsem jeden z tech to tvrdi ze PHP nema vubec nic spolecneho s programovacim jazykem, v PHP je vsechno tak zjednodusene a nebo vyprasene, az to boli. PHP neni programovaci jazyk, ale skriptovaci jazyk, ikdyz malokdo si to prizna. (napr. HTML take neni programovaci jazyk, ale znackovaci jazyk)

Napr. pouzil jste uz nekdo nekdy (If $a=10) ... kde jedno rovnase priradi promenne $a hodnotu 10? Ja vzdy pouze testoval (If a==10) a ty 2 rovnase bych jeste prezil, ale co ty zavorky? Vzdyt je to uplna katastrofa, mrknete se treba na delphi, tam je jedno rovnase a pro podminku bez logickych operatoru tam nemuseji byt zavorky a dokonce ani stupidni a pribly dolar $ pred promennou v Delphi byt nemusi a presto je to daleko prehlednejsi, nez PHP a ma to skutecne objekty (Object Pascal) se VSIM co k nim patri a co se tyce objektu v Delphi tvrdim ze jsou lepsi nez ty v C, protoze jsem to mnohokrat cetl, nezavisle na sobe, object pascal nema slovo object v nazvu jen tak.

Cili v Pascalu/Delphi
If a = 10
Then ...

v PHP
If ($a==10)
{ ...

a ty zavorky jsou v php k nicemu zrovna u toho IFu bych je velice rad vynechal a zprehlednil si tim kod.

Jednodusse kdyz to jde v Delphi (ktere je vysoce vyspelym PROGRAMOVACIM jazykem a ne stupidnim skriptovacim) tak proc to nejde v PHP ? Rad bych zavolal funkci, ktera nepotrebuje zadne parametry bez toho, aniz bych musel napsat Funkce(); vsimnete si zavorek, ktere tam jsou zbytecne, protoze v Delphi byt take nemuseji, proste PHPcko je strasne ukecane, co se tyce zavorek no a spojovani retezcu pomoci . (tecky) je rovnez hovadina, v delphi je pro to + a v java scriptu take a je to logicke i prehledne (a lepe videt)

Co se tyce "objektu" v PHP (ve skutecnosti to objekty nejsou) tak jake maji realne vyuziti, krome zpomalovani serveru?
Jejich dedicnost jsem nikdy nevyuzil a vim ze ji nevyuziji, jednodusse pri tvorbe web. stranek, webzinu, weblogu a dokonce i portalu lze vsechno vyresit bez objektu. Takze mne nenapada jedine vyuziti radoby objektu v praxi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
sarus  |  05. 05. 2006 12:58

s tvojim nazorom sa stotoznujem, kedze tiez robim aj v Delphi - programovat objektovo v php ... no este som nenasiel problem, ktory by som musel riesit cez objekty - ono tusim prave Borland priniesol objektove programovanie a bol to boom, ale casom sa zistilo, ze to objektove programovanie nie je az take spanosne...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Miloslav Ponkrác  |  05. 05. 2006 14:20

Jestli Borland přinesl objektové programování, tak je to stejná pravda jako, že Bill Gates je otcem internetu, tedy je to lež. Koncept objektů vznikl kdysi dávno, ale prvním objektově orientovaným programovacím jazykem byla Simula, která vznikla někdy v šedesátých létech, to Borland snad ani neexistoval a Delphi samozřejmě také ne. V sedmdesátých letech se vytvořila druhá větev, a to objektový jazyk Smalltalk. To stále bylo pořád asi deset let před založením Borlandu a tuším dalších dvanáct let trvalo, než se vylouplo Delphi.

Objektové programování není všemocné, ani všespasitelné, to je jasné. Je třeba mít objekty jako prostředek, nikoli jako cíl. Ale na druhé straně, až poznáte skutečné objekty, ne ty co jsou v Delphi, pak pochopíte, že je to mnohem silnější nástroj, než se vám dá teď. Bohužel pojem objektové programování se používá dost často jakožto reklamní a marketinkový pojem a pak přicházejí rozčarování. Protože mnoho lidí používá objekty jen proto, že jsou to objekty, ale ne proto, že jim mohou významně zjednodušit práci.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Miloslav Ponkrác  |  05. 05. 2006 13:59

Upřímně řečeno, jsem rád, že nemusím mít s Pascalem nic společného. Je to sice můj první seriózní jazyk, který jsem se naučil před cca 20 lety a děkuji za to, protože mě naučil tehdy čistotě a pořádku. Ale na opravdové programování je Pascal IMHO nevhodný. Dodnes skřípu, když musím něco napsat v Delphi, nebo naskriptovat v Pascal skriptu třeba v Inno setupu. Pascal je IMHO dobrý učební jazyk, ale pro praxi nic moc. Pokud pascaloidní syntaxi, tak prosím Adu. Simula taky nebyla špatná, taky měla pascaloidní syntaxi, ale poněkud pomalá a dnes už trochu out.

Mimochodem, Delphi a jeho pojetí objektů, to nejsou skutečné plnohotnotné objekty, tak jak to umí třeba Smalltalk a nebo jiné jazyky, kde poznáte skutečnou efektivitu objektů. Rozdíl mezi Pascalem a PHP v objektech je ten, že Pascal je kompilovaný staticky typovaný jazyk, zatímco PHP je interpretovaný dynamicky typovaný jazyk. Tím pádem se objektové pojetí musí lišit a upřímně řečeno dal bych přednost objektům spíše v pojetí PHP, než v Pascalu, protože možnosti objektů v PHP jsou o třídu výše díky dynamičnosti PHP jazyka a "duck typing" vlastnostem plus dalším featurám, které v Pascalu nemají ani obdoby. Tím neříkám, že PHP je nějaký zázrak, ale mluvíme tu o PHP.

Závorky u IFu můžete v PHP samozřejmě vynechat, není jediný důvod, abyste je tam měl, pokud následuje jeden příkaz. Pokud následuje více příkazů, pak i v Pascalu musíte obalit blok do zamlžujícího begin/end. V PHP máte na výběr, buď použijete závorky, a nebo endif. Takže porovnejte:

if ($a == 10)
příkaz;

nebo (chci-li použít závorky v PHP)

if ($a == 10)
{
příkaz_1;
příkaz_2;
}

nebo (nechci-li použít závorky v PHP):

if ($a == 10):
příkaz_1;
příkaz_2;
endif;

Pokud chcete kritizovat syntaxi v PHP, doporučuji Vám nejprve se s ní seznámit, jinak riskujete, že budete vypadat jako blbec, až budete mluvit s někým, kdo PHP ovládá. To jen taková přátelská rada.

Závorky navíc, které jsou v PHP a obecně v Céčkoidních syntaxích za jménem funkce miluju! Jsem za ně rád, protože přiřazení v Pascalu, kde se napíše a := x; a nevidím na první pohled, jestli x je proměnná, nebo funkce je prasečina zatemňující zdrojový kód. A jestli je podle Vás PHP ukecané, tak v tom případě je Pascal a Delphi ukecané na kvadrát. Tolik zbytečných psaní jako v Pascalu se opravdu vidí jen ve velmi málo programovacích jazycích.

Spojování řetězců pomocí tečky je logické, protože je jasně odděleno sčítání čísel pomocí + a spojování řetězců pomocí tečky. Je třeba jasně vidět, že tečka nejenom, že spojuje řetězce, ale také případně operand na řetězce převede, takže napíšete-li třeba 1 . 2 . 3, výsledkem bude řetězec 123, což už tak jednoduše v Delphi nenapíšete. A přiznejme si, že v praxi se často vyrábějí řetězce z čísel, takže to dost zpřehledňuje, zkracuje a zjednodušuje zápis. Stejně tak sčítání pomocí + v PHP převádí operandy na číslo, takže i to je logické, zjednodušující a zkracující.

Jestli nevyužijete dědičnost, prosím. Já vytvářím stránky dost často a za objekty v PHP jsem rád, naprogramuji stránky za poloviční dobu, než bez objektů, je to přehlednější, tím pádem je v tom méně chyb a samozřejmě za tu dobu mám sbírku mnoha užitečných objektů, které používám opakovaně. Ale je jasné, že lze vše vyřešit bez objektů, otázka je, jestli je to dobré řešení. Na super jednoduché věci na dvacet řádek možná ano.

(začátek ironie)Koneckonců Delphi je taky zbytečnost, všechno jde přeci napsat ve strojovém kódu a kromě zpomalování počítače nemá Delphi jiný význam.(konec ironie)

Ale co mě opravdu rozesmálo jsou ty přívlastky k Delphi ve stylu vysoce vyspělý programovací jazyk a ty skutečné objekty v Delphi. Asi jste moc programovacích jazyků nepoznal, že se nemýlím?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jiří Špaček  |  24. 02. 2008 19:06

Naprosto souhlasím, ovládám C / C++ / C#, Delphi (tedy Object Pascal) a PHP. Krom Ccek, coz jsou proste pro me asi nejlepsi jazyky, zvlaste C#, je PHP proste jasne nejlepsi, a objetky na webu bezne pouzivam, mam v nich napsane knihovny, muj vlastni framework. To co bych cistym PHP delal hodiny mam radove za par minut (knihovny jsou uz opravdu obsahle, a doplnuji je...)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zorg  |  31. 03. 2005 12:28

Protože jak píše autor, tak samo PHP žádné výjimky nevyvolává a pouze stále stupidně vrací např. false jako návratovou hodnotu.
Samozřejmě je možné si na všechno napsat pomocné funkce, nebo třeba zapouzdřit funkce PHP do objektů a tam výjimky vyhazovat. Ale je to zbytečná práce navíc. Němluvě o tom, že když si třeba já napíšu nějaké objektové zapouzdření a potom budu pokračovat v projektu, kde je to řešené úplně jinak, tak tím vzniká další spousta problémů.
Navíc, jestli jsem to správně pochopil, tak na rozdíl třeba od Javy si PHP nijak nevynucuje použití try catch bloku okolo kódu, kde může dojít k výjimce. Takže pokud můj kolega programátor bude moje výjimky ignorovat (nebo o nich nemusí ani vůbec vědět), tak se chyba opět nikde nezachytí.

Princip ošetřování chyb přes výjimky je obecně výborný, ale s touhle implementací si autoři PHP klidně mohli ušetřit práci, protože je skoro nepoužitelná.

Souhlasím  |  Nesouhlasím  |  Odpovědět
junix  |  31. 03. 2005 20:58

Rozhodne souhlasim, ze vyjimky jsou nejlepsim nastrojem pro osetrovani vyjimek. Nicmene nemuzu souhlasit skoro s nicim ostatnim.
Vyjimky jsou v kazdem alespon trochu objektovem jazyce, ale POUZE v Jave (kterou povazuji pouze za "trochu" objektovou vas prekladac nuti k osetrovani vyjimek, a to jeste pouze nekterych. Rozhodne si nemyslim, ze to ze vas do osetrovani nic nenuti (v PHP ani neni prekladac, ktery by to udelal), by nejak snizovalo jejich pouzitelnost. Pokud nekdo vyjimky ignoruje, je to jeho chyba a ne chyba jazyka.
To ze si napisete zapouzdreni pro pouziti vyjimek a jinde v projektu se nepouzivaji take neni chyba jazyka, ale implementace projektu. Uplne stejny problem vam muze nastat v Jave, protoze i v ni stejne programuji prevazne preuceni C/C++kari, kteri na vyjimky nejsou zvykli.

Souhlasim, ze slabina PHP co se tyka vyjimek je, ze interni funkce ani objekty je nevyhazuji. Vypada to ale, ze jako prvni vlastovka v tomto smeru by mohla byt knihovna mysqli, u ktere se pokud vim pracuje na prepracovani tak, aby pouzivala vyjimky. Nasledovat by mel take DOM. U jadra se toho ale asi nedockame nikdy.
Nevidim ale zadny duvod proc kvuli tomu nejak hanet PHP. Kdyz se podivate na C++, tak trid, ktere vyhazuji vyjimky je treba v STL jako safranu, v JavaScriptu vam je vyhazuje pouze parser a DOM, a v jave na ne normalne narazite taky velmi zridka (takova nejbeznejsi je pri praci se soubory).

Myslim ze autor v zaveru perfektne vystihl prednosti pouzivani vyjimek. Ted uz je jen na programatorech, aby se je naucili pouzivat a to v ktermkoliv jazyce.
Rozhodne bych nerekl, ze v PHP jsou vyjimky nepovedene (co to vubec znamena???).

Souhlasím  |  Nesouhlasím  |  Odpovědět
ftw  |  10. 04. 2005 22:26

Rozhodně souhlasím! V PHP se vůbec nedá mluvit o nějakých výjimkách, ale spíš o nových klíčových slovech try, catch, ... Ono je vůbec celé OOP v PHP pěkná divočina...

p.s.: toto není žádný pokus o flamewar, ale pouhé konstatování...

Souhlasím  |  Nesouhlasím  |  Odpovědět
foresth  |  11. 09. 2005 13:11

Jde videt, ze mate pramale tuseni, o cem mluvite. A Java a ASP sux.

p.s.: toto neni zadny pokus o flamewar, ale pouhe konstatovani...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jos  |  05. 10. 2005 15:32

Objektový model v php je vyřešen docela hezky, jsou tam nějaké nedostatky, ale dá se s tím udělat už ledascos. Ale přidání vyjímek nebylo dobrým krokem, protože lidi, kteří přecházejí z php a php5 většinou neumí objektově programovat (myslet) a využívají vyjímky k řízení toku skriptů - nahrazují jimy if else, což je nepřípustné. Vyjímka je pomůcka, kterou když vyhazuji, tak dávám znamení jinému programátorovi, že nevím co s chybou a ať si ji opraví sám. A ten by ve většině případů měl zareagovat na nejvyšší úrovni tak, že hodí hlášku na výstup.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor