php na informacni system neni moc dobre (modularita, objekty,... jsou v nem moc spatne), bohuzel spousta firem to zjisti v momente, kdyz uz ma naprogramovane tuny kodu a nejde to vratit :-( nadruhou stranu, toto je asi jeden z mala IS psanych v perlu (jak psal nekdo nahore)
PHPko od ctyrky vyse uz ma objekty docela pouzitelne. Jedine, co mne napada ze by se mohlo dodelat je vicenasobna dedicnost a (co si tak matne vzpominam) staticke/abstraktni metody a promenne. Ale i tak se v tom da v pohode psat. Mam v tom napsanou UI knihovnu (pod GPL, nechcete nekdo vyzkouset? ;-)
AFAIK je OOP v PHP zhruba na urovni toho Perlu.
http://knihovna.dateso.cz/dblib/
Zatim jsem to moc nepropagoval, protoze to nema vhodne priklady (jen jeden pomerne komplexni) a chybi "obecne povidani" (dokumentace ke tridam a metodam je).
Plus bych tam jeste par veci videl, napriklad Query (konektor) pro PGSQL atp., pokud by se toho nekdo ujmul, byl bych vdecny. Nemel by to byt velky problem, max. par set radku, struktura trid s tim pocita.
No, ja nechci vyvolavat nejaky flame, ale myslim si pravy opak. PHP byl od zacatku koncipovan jako jednoduchy beztypovy jazyk... S masovym pouzitim se zacalo pokukovat po vyssich sferach, zacala se implementovat velice sporadicka podpora OOP a v soucasne dobe je to takovy hybrid beztypovyho jazyka a polovicatych objektu. Kdo nekdy programoval v Jave, asi chape, jak to s tou typovou kontrolou myslim. Nechci tim rict, ze PHP je spatny jazyk, to vubec ne, ale je dobry na mensi veci, ktere se daji zvladat uplne v pohode bez OOP. U vetsich veci hraje silna typova kontrola vyznamnou roli a Javu nebo .NET je lepsi pouzit taky proto, ze PHP je interpretovane a vykonostne proste nema sanci.
No, priznejme si otevrene, ona Java je taky hybrid funkcionalne orientovaneho a objektoveho jazyka :-) Jedinym ciste objektovym jazykem, ktery znam, je SmallTalk (viz jiny serial).
Ale souhlasim s tim, ze podpora OOP featur neni v PHP stoprocentni, takze na velke projekty to asi neni to prave orechove. Ale OOP se hodi i na male a stredni projekty - viz moje knihovna zminovana vyse, ktera PHP OOP vyuzive velmi silne - v oblasti UI je OOP velmi vhodne.
> PHP je interpretovane a vykonostne proste nema sanci.
A mate pro to nejake benchmarky, nebo je to jenom Vase domenka? Zend ma docela dobry optimizer, navic se cele PHP interpretuje z bytekodu, trochu podobne jako Java (i kdyz samozrejme nema VM). Provozoval jsem PHP i na hodne zatizenych serverech a vetsinou doba provadeni PHP skriptu nebyla problemem.
Tak to už je dávná minulost. Pokud se PHP interpretuje z bajtkódu, pak má VM - protože co jiného je VM než interpret bajtkódu. Pokud ale jde o Javu, tak ta už se dávno kompiluje přímo do strojáku - stejně jako .NET, který JE použitelnou platformou. Tedy, až v něm někdo udělá JSP kontejner, pak bude určitě :) (JSP je jazykově nezávislé :). Nevím, mně běhá Java přinejhorším (!) o polovinu pomaleji než C++ ... sice pomalu startuje, ale co - copak v ní píšu CGI? Nepíšu :)
Mno, priznejme si, ze s opravdovym funkcionalnim prg. toho ma Java spolecnyho asi jako mi dva s Dalajlamou (za predpokladu, ze nejste tibetsky mnich):) Ale urcite souhlasim s tim, ze Java je pseudo OO jazyk a jediny pure objektovy je SmallTalk; nadejne se rysoval i Self, ale kde je mu konec.
K tomu PHP - ja jsem ani tak nemyslel uroven OOP, ale spis se mi nezamlouva samotny pokus postavit objektovy featury na netypovem jazyce... Prijde mi to jako gulas s cukrovou polevou.
A benchmarky samozrejme nemam, kdybych mel mit graf ke vsemu, co tvrdim, sedel bych porad za monitorem:) To, ze Java bezici prakticky ve strojaku, je obecne znamy fakt, takze rychlejsi bude tak jako tak, at uz se Zend snazi, jak chce (btw, jestli je tam skutecne nejaky bytecode, tak to urcite VM ma). Hlavne by se to melo projevit pri hodne vysoke zatezi, tam by mel byt rozdil markantni. Hlavne bych ale nerad sklouznul do srovnavani PHP a Javy - oboji vzniklo za jinym ucelem a IMHO neni mozne je srovnavat objektivne. PHP urcite skvele plni fci, k jake byl designovany, ja se jen snazim rict, ze mi prijde neprilis prozirave tlacit PHP nekam, kam nepatri.
> se mi nezamlouva samotny pokus postavit
> objektovy featury na netypovem jazyce...
Presneji receno, na jazyce se slabou typovou kontrolou - PHP samozrejme typy ma, jenom nema typovou kontrolu. Na druhou stranu nevidim zadny principialni duvod, proc by mela byt pro OOP ntuna silna typova kontrola.
Jedine, co mne napada je detekce chyb v programu (pouziti spatne promenne), nicmene to vetsinou stejne nastane, nebot pokud tomu date objekt jineho typu, tak nebude mit tu spravnou metodu kterou volate a stejne dostanete vynadano.
Ad bytecode - nezkoumal jsem to podrobne, AFAIK to neni vylozene bytecode ve smyslu kodu pro VM, ale spis nejaka predkompilovana/ztokenizovana forma zdrojaku (na druhou stranu, to co ji cte a interpretuje je ve sve podstate "neco jako" VM). Ale jak rikam, s vykonem PHP skriptu jsem nikdy moc velky problem nemel, spis byl problem s vykonem DB, pameti serveru, atp.
Silna typova kontrola samozrejme neni pro OO potrebna - podivejte se na Python.
A kdo chce silnou typovou kontrolu, pouziva Adu.
Duvod, proc se vubec takove paskvily, jako je Java nebo C# uchytily je jediny - marketing. Ostatne ani PHP neni nic extra a prosadilo se diky tomu, ze to byla prvni alternativa ASP a tak ziskalo sirokou komunitu.