Děšení na PHP 5.2
Každou další verzi PHP očekávám se zděšením. Vždy trnu, co zase bude jinak. Pak dlouhé hodiny procházím changelog a pročítám PHP Internals, abych pochopil souvislosti.
Od vývoje PHP očekávám především
podporu Unicode a opravení nedostatků objektového modelu. To první nepřijde
dříve než se šestou verzí. To druhé je zcela ve hvězdách. Kdo očekával
od PHP 5.2 late static
binding, byl nejen zklamán (vývojáři to nepovažují za
důležité), ale dokonce dostal facku v podobě zamítnutí abstract
static function. A buďme rádi, že to negeneruje fatal error, bylo to
v plánu.
Že je objektový model PHP děravý jako řešeto, to by tak nevadilo. Chyby lze reportovat. Co však nelze, tak je obhájit. Dohadujte se s arogantním programátorem, který sám píše v neobjektovém jazyce C, o objektech… Já už na to nemám sílu.
Pěkným příkladem je Reflections. V každé „setinkové“ verzi se chová mírně jinak. Mírně jinak blbě, abych byl přesný. Podívejte se třeba, jak vývojáři chápou privátní metody:
class ParentClass
{
private function foo() {}
}
class Child extends ParentClass
{
}
// prozkoumáme třídu Child
$rc = new ReflectionClass('Child');
// má metodu foo() ?
echo $rc->hasMethod('foo'); // vrací TRUE!
Takových nesmyslů se dá najít celá řada. Dosáhnout jejich opravení je však nemožné. Doufal jsem, že za nás budou orodovat programátoři Zend Framework, ale byly to plané naděje.
Co tedy mohou přinést nové verze PHP? Problémy…
Komentáře » přidat
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat
Clanek do me vnesl beznadej a smutek. Zacina to byt cim da horsi a horsi. Jen cekam kdy nasatne ten zlom a PHP se uplne zavrhne, nebo se udela poradne.
Jelikoz vyvojari uz mrvy i opravy tak je cas jim rozbit PC basebalovou palkou.
Ach jo, to je fakt na zbláznění. PHP by mohlo být nádherný jazyk, zároveň jednoduchý i „powerful“, ale tyhle věci ho srážejí na zem… Abych se začal učit Ruby nebo Python.
Pratele, je cas na zmenu – www.djangoproject.com
Jestli mate radi Python, zkuste Django. Narozdil od ROR neni tak prospikovany Javaskriptem a drzi se pri zemi. Pise se v tom hodne pekne a prehledne.
Minimalne za ochutnavku skutecne stoji…
Začíná z toho být trend.
Nová verze: nové chyby a ty staré příliš neopravené. Navíc nasazování těchto verzí na web půjde hodně pomalu … neznalému zákazníkovi je jedno, na čem to jede, hlavně když to jede tak, jak on chce. A nedejbože to nějak měnit :)
No, chtěl bych se kouknout do budoucnosti, jak na tom bude PHP tak za 5let…
Co by dělali programátoři, kdyby vše pěkně šlapalo ? O čem by psali v blozích?
Na druhou stranu dopracovat PHP bude to krasný jazyk, už tak má mnoho přednosti. JAk se říká v jednoduchosti je krása…
<offtopic>Mám pozdravovat od Ing. Petra Nožičky, chemika z Pardubic…Už by se nad tím opravdu měli zamyslet, přeci by se měli snažit, aby lidi co v php píší měli co nejméně problémů. Takto akorát naštvou spoustu lidí!
[4] Pavel Richter: trendem se stalo vydat verzi a o dva dny později vydat další, opravnou. Vlastně už si to ani jinak nedovedu přestavit.
[5] Pavel: (ad Nožkin) ale, odkud se znáte?
Uz zmenu 4 → 5 boli zasadne a teraz budu v kazdej verzii menit funkcnost? radost, pomaly z toho zacina byt kocurkovo a to uz doteraz stalo za prdlajs. Nebodaj chcu zendaci znechutit phpcko?
nepripomina ti to windows? zeby v tom mali pani z ms prsty? :)
[7] David Grudl: z vlaku, jaksi v patečním 100 minutovém zpoždění, pak ještě výměna lokomotivy (ne za vodku). Tak nějak se lidi dají do řeči… :) a zjisti zajímavé věci…
Mně PHP5.2 nepomuze!! A kdy vyjde PHP6?
late static building není chyba – vývojáři jej prohlásili za vlastnost (třikrát hurá :[ ). ‚skutečnou‘ chybou je třeba nemožnost statickéno volání __call(), což je v buglistu již dva roky a vývojáři to neřeší.
A je vubec nejake reseni tohoto problemu? Kdyz na nas uz i vyvojari jazyka dlabou?
[5] Pavel: O čem by psali. Podívej se na vyvojar.cz, o čem bloggeři fungující technologie píší.
[9] ehmo: Většina Windows API je bezva, trochu to ale připomíná některé části, třeba Direct3D, tam ty přechody mezi verzema bývali hustý…
[12] paranoiq: To víš, jsou všichni strašně vytížení a nikdo nemá čas to označit za vlastnost.
Vývojáře PHP začínám čím dál tím víc považovat za bandu prasat, která z prasení udělala cíl a neschopnost povýšila na výhodu.
Možná se nakazili od většiny uživatelů tohoto jazyka, nevím. Ale celé PHP se řítí do pekla.
Myslím že pomalu nastává čas tento vlak smrti opustit.
Podle mě je jediný důvod proč PHP neignorovat jeho podpora hostingovými firmami. Implementace tohoto jazyk je vysloveně špatná a podpora vývojářů stejně tak.
Už by se měl konečně ustanovit nový „standard“, co má slušný webhosting splňovat, protože investovat do aplikace napsané v PHP jsou vyhozené peníze!!!
promiňte, opravte ignoranta (mě) – jaké je licence php? jestli je to closed-source – byl by takový problém udělat plně kompatibilní open-source engine, který by byl plně kompatibilní s pětkou i čtyřkou?
Tak si taky přisadím. Používal jsem knihovnu nusoap (nepovažuji ji za úžasnou, ale fungovala), po přechodu na php5 nastal problém – redefinice třídy soapclient. Inu přejmenovat a jde se dál. Pro práci s časem jsem si vytvořil třídu DateTime. A nyní (jak jsem se dočetl) budu muset opět přejemenovávat. První myšlenková obhajoba php – to mi mohli udělat i v javě, či pythonu byla hned vyvrácena: nemohli. I na tom je vidět, že php nemá žádný rozumný domyšlený koncept. Přitom i třeba python začínal jako nástroj pro jednoduche několikařádkové skripty.
Bohužel, jakmile byl jednou na začátku projektu zvolen špatný jazyk, už se ho člověk nezbaví.
[16] Tomáš Hubálek: Az bude libovolny jiny jazyk pouzitelny ve sdilenem webhostingovem prostredi jako PHP, neni problem ho nasadit. U PHPcka staci nastavit open_basedir, safe_mode + par drobnosti a uzivatel se nedostane ven ze sveho domovskeho adresare (pokud teda neni php deravy jak reseto :)).
Druha vec je ta, ze proste po „alternativnich“ resenich neni poptavka. Troufnu si rict, ze (z linux zakazniku) 95% chce PHP+MySQL, 4% PHP+PgSQL a zbytek jine programovaci jazyky+Firebird/SQLite. A nic na tom nezmeni narky advanced programatoru, kteri (pravem) nadavaji, ze php je bastl. S tim taky souhlasim, ale co se da delat…
Já se zastanu programátora v jazyce C.
A co se problémů s dalšími jazyky týče… Ono by se dalo ledacos, kdyby se chtělo. nebudu jmenovat konkrétní firmy, které na hostingu další jazyky mají. Je to jen otázka poptávky a nabídky. Zrovna nedávno po mě chtěl někdo pythona v cgi… no a má ho! :).
Sem tam čtu tady nářky nad problemy s PHP (naposledy s optimalizaci PHP) a je mi Vás fakt lito.
Programoval jsem v nem chvilku (jeden z projektu je zde http://coins.azz.cz/) a po letech v objektovem prostedi s duslednou typovou kontrolou (Delphi, C#) jsem si rval vlasy.
PHP je hrozny bastl.
Nastesti ted muzu programovat pro web (jinak programuji gui app) v ASP.NET a opet mam vlasy na hlave (kdo nezkusil, neuveri).
PHP bych nikdy nepouzil na nic vetsiho nez tak 200 radku.
Mimochodem vrele doporucuji IronPython (implementace Python pod .NET)
http://blogs.msdn.com/…asp-net.aspx
Jinak treba forpsi nabizi hosting s ASP.NET za stejnou cenu jako s PHP
PHP to už není jazyk, to je bastl pro amatéry. Nechápu schopné vývojáře, co v tom dělaji. Jediné co chápu je to, že je dostupný na free hostincích. Ochutnejte Ruby a na už budete chtít šáhnout jen dvoumetrovým klackem.
Otazka do plena: co se tedy vyplati ucit (kdyz je PHP takovy „bastl“)? Melo by to byt pokud mozno jednoduche a efektivni pro praci ; )
Vyplati se ten Python? Ruby?
Ty Spajky,
a proč namísto IronPythonu nedáš šanci přímo Pythonu?
A jak se jinak máš šéfe? Prgáš weby?
[22] pkm: No jasně, že váháš…
Projeď si tutorial Djanga je to fakt jednoduché.
Pokud bych to měl shrnout a zjednodušit, tak:
Hotovo. Možná to zní příliš složitě, ale zkus se začíst do toho tutorialu.
Jediný problém který by tě od Djanga mohl odradit je hosting. Jak už se tu několikrát zmiňovalo, není to ještě tak obvyklé a budeš se muset poohlédnout po firmě, která ti ho bude schopná nainstalovat.
Čas přejít na Python
[10] Pavel: ať už říkal cokoliv, tak to jsou jen smyšlené pomluvy
[17] noname: je to open source pod svobodnou licencí
[20] Majkls: že PHP původně nebyl objektově orientovaný jazyk není argument. To totiž nebyla ani řada dalších populárních jazyků. Pokud se však jednou k objektové orientaci rozhodli, tak podle toho mám očekávání a jazyk kritizuji.
Problém vidím v tom, že naprogramovat interpreter a navrhnout jazyk jsou dvě naprosto odlišné disciplíny. V případě PHP se obojího zhostují titéž lidé a na výsledku je to znát. Bohužel.
Věřím, že jde o špičkové kódéry, ale jakmile začnou kecat do návrhu jazyka, táhnou jej ke dnu. Neobjektovou část jazyka PHP považuji za výborné dílo. Naopak objektová sféra je z 90 % pofiderní. A chyby plodí další chyby.
[21] Radek Cervinka: články o optimalizaci rozhodně nebyly nářky!
[25] Michal: to už ale srovnáváš jazyk a framework…
[27] David Grudl: Aha, no jo… :)
Tak jinak – Python je hezky jazyk a Django pekny framework napsany v Pythonu…
[3] Michal: Nějak nerozumím tomu, co na RoR je „prošpikované JavaScriptem“ – nikdo ho nikoho nenutí používat a generovat v RoR „plain 'ole HTML“ je trivialita. A jinak, jak v Pythonu, tak i v Ruby (a vlastně i v Perlu) si člověk může vybrat ze spousty pomůcek na tvorbu webu a určitě se najde něco, co mu sedne.
[24] Valis: Zdar Valis, protože mám rád určitý komfort a navíc .NET je fakt velmi dobrá platforma. Jinak weby moc nedělám, spíše jako doplněk IS. Ty mince jsou taková nezisková srdeční záležitost
Nechci být za nějakého zaslepence, ale dokud jsem nezkusil ASP.NET tak jsem si říkal jak je PHP cool pro web.
Dám příklad: potřebujete odeslat formulář. Takže na formulář dáte tlačítko, poklepete na něj a IDE vám vygeneruje kostru obsluhy (jako v Delphi a dalších RAD).
Napíšete obsluhu a chcete to odladit. Tak tam date breakpoint a po stisknutí tlačítka v browseru se vám to zastaví v debuggeru.
Nehledě na to že spousta chyb se odchytí už při překladu (kompilovaný a navíc strikně typový jazyk) – na rozdíl od PHP.
Navíc si můžete vybrat jazyk v kterém chcete programovat (C#, VB, IronPython, ObjectPascal …).
[27] David Grudl: chápu tvé rozhořčení nad nesplněnými touhami. Byl jsem pesimistou nad OOP v PHP od doby, kdy mi kamarád řekl, že tam něco nefunguje, jak by mělo. když se jednou něco neudělá pořádně, obvykle se problém vleče. PHP je toho dobrým příkladem. Co se C# týče. Slyšel jsem hoodně zajímavých názorů o tomto jazyku. Například jeden programátor nadával, jakej to je bastl. Co se typovosti týče. Nevidím v tom příliš velkou výhodu. Vstupy se musí ošetřit u obojího. Jak u typového, tak u netypového jazyka.
[30] Radek Cervinka:
…poklepete na něj a IDE vám vygeneruje kostru obsluhy (jako v Delphi a dalších RAD)…
Mno ale ASP.NET je horší v tom, že za sebou tahá hromadu bordelu a tak například obyčejný kalendář vyžaduje DOM Javascript. Ale myslím, že o tom už tu DGX jednou mluvil. Samozdřejmě pokud to uživatelům neavadí a nevypínaj si JS, je to fajn. Měl jsem nainstalený mono. Zajímavá platforma. Ale příde mi skoro jedno, jestli napíšu celý formulářový tlačítko, nebo jestli mi ho vygeneruje funkce, když tam stejně musím napsat styl, name, value, id… Takže je lepší si stejně napsat vlastní funkci. Míň balastu. Ušetřená práce +- žádná. Generátory kódu jsou fajn. Určitě ušetří spustu času. Ale takový generátor se dá sesmolit i pro PHP, Ruby, Python, Perl… a nepotřebuju k tomu .NET. Takže to je otázkou IDE.
Například Na pythonu se mi líbí volání funkcí. napíšu si jména funkcí. a pak je volám přímo parametrem v url. to je celkem fajn, ne? Neříkám, že to nejde udělat jinde. Určitě by to nebyl problém.
[29] Jakub Hegenbart: Když se dnes člověk rozhodne psát nějaký web projekt, určitě po chvilce Googlení najde nějaký ten framework, nebo minimálně návod, jak ho zrealizovat v jazyce, který mu je blízký.
Dělám 3 roky v PHP. Jsem si naprosto jistý tím, že pokud člověk není prase, tak s PHPkem (ale vlastně s jakýmkoliv jiným jazykem) může dělat divy. Nicméně kdysi jsem ochutnal Python a strašně se mi zalíbil. Začal jsem ho používat na systémové věci a začal koketovat s myšlenkou využít jej i pro weby.
Narazil jsem na Zope/Plone. Vypadalo to slibně, ale po čase jsem pochopil, že ochočit tuhle bestii nebude jen tak. Věnoval jsem mu nemálo času, ale pořád jsem nebyl schopen dělat věci podle sebe. Neustále jsem se musel podřizovat hotovým řešením.
Pak přišla frustrace, a další hledání. Narazil jsem na ROR, ale nechtělo se mi učit další jazyk. Navíc jsem přesvědčen, že efektivita práce v Ruby a v Pythonu bude podobná.
No a pak jsem objevil Django, a byl jsem v sedmém nebi. Je to opravdu pěkný framework, a konečně mám pocit, že se v tom dá i programovat (naražím na Zope/Plone).
To tvrzení, že „…ROR je prošpikovaný Javaskriptem…“ jsem nabyl v minulosti po prolézání zahraničních webům, které byly napsány v ROR. Většina z nich byla silně „AJAXová“, samý efekt, samé dynamické změny v HTML (prostě Web 2.0 hype). V mailing listu Djanga se často řeší, jak je na tom právě s podporou AJAXu, a jako příklad je obvykle zmiňován ROR (který je v tomto ohledu údajně dál).
Takže tak… :)
Proč musím v PHP pristupovat k atributům a metodám přes šipku i uvnitr třídy?
[31] Majkls: :), vetsina komponent je psana tak ze v pripade kdy je dostupny javascript tak se pouzije, kdyz neni tak se automaticky provede volani pres server.
Typicky: validace vstupnich polozek formulare
(dostupny JS? ano – provede se validace na klientu, neni? neva – provede se validace pres server)
A ty pro to nemusis ani hnout prstem, mas pro to jeden kod (no kod – nastavis jednu vlastnost na komponente)
Ad ten kalendar: Nelibi se ti? Pouzijes jiny.
Ale hlavne jsou to kompilovane jazyky, takze vetsina veci je odchycena uz pri prekladu. Takze usetrim tak +60% casu ladeni a navic mam urcitou jistotu. To se ale blbe vysvetluje programatorum v PHP, kteri pouzivaji jednu a tu samou promennou jednou jako string a o kousek dale jako cislo.
… Například Na pythonu se mi líbí volání funkcí. napíšu si jména funkcí. a pak je volám přímo parametrem v url. to je celkem fajn, ne? …
neni to ale trochu nebezpecne?
Nevím, proč tady všichni nadávají tolik na PHPko a pak v něm více jak polovina programuje. Tvrdit, že .NET je lepší, je jako se hádat, zda Linux nebo Windows. Obojí má svá specifika a člověk by sám měl přejít na to, co je mu bližší.
v PHP programuji vetší intranetovy web. projekt, který jsem postavil na PHP5. Pravdou je, že mě štve dost věcí, ale i přesto si myslím, že PHP je použitelný jazyk i ve větších projektech a hlavně je použitelný i jako OOP jazyk, i když s určitými omezeními. Co by se podle mě mělo změnit:
Myslím, že by pak konečně mohli vznikat zajímavé frameworky, které by se postupně standardizovali.
[34] Radek Cervinka: neni to ale trochu nebezpecne?
… od čeho máme protected a private v OOP, že :))…
Ale hlavne jsou to kompilovane jazyky, takze vetsina veci je odchycena uz pri prekladu
ale těch 40% bezpečnostních děr se při překladu neodchytí. Apropo řekl bych, že to není 60%, ale méně. Teda pokud někdo takhle prasí kód :)). Nicméně semikompilované jazyky určitě nejsou špatné. Jinak používat proměnnou jako string i jako číslo, to je benefit netypových jazyků. Proč se starat o konverzi, když mi ji jazyk udělá sám. A s bezpečností se neohánějte. Ona v těch typovejch není rozhodně lepší než v netypovejch. To je jen iluze. Pravda pro kontrolu čísel musím u netypového PHP přetypovat proměnnou. Někde jsem o tom četl skvělý článek.
Ad ten kalendar: Nelibi se ti? Pouzijes jiny.
No vidiš, to už si zrovna můžu napsat vlastní. Asi stejný jako s názvy měsíců v locale. Prostě nemaj října, tak musim mít vlastní pole, kde bude října. Prostě univerzální != všeřešící. Některý věci jsou tak obecný, že se vyplatí si napsat vlastní specializovanou. Ale je fakt, že jelikož asp.net má všechno tohle integrovaný v sobě tak to je daleko rychlejší a efektivnější, než to mít hozený kdesi vedle byť ve formě frameworku.
No vidíš Davide, a ty ses se mnou hádal
http://www.snizekweb.cz/…/php-k-cemu/
Povedený článek
[38] In-počasí: Přeji příjemné a ničím nerušené spamování komentářů /-:
[39] zirafka: to je za dnešní den jediná pochvala, to nemůžu smazat
Tady nešlo o spam, stejně je tady nastaveno rel=„nofolow“
[40] David Grudl: ale tenhle smazat muzes. Tam Te nechvali (-;
[41] In-počasí:. Tady nešlo o spam, stejně je tady nastaveno rel=„nofolow“
Ale to sis vsiml, az jsi to poslal, ne?!
O Django jsem slysel, rad se na nej podivam. Jinak jsem se zacal zabyvat RoR a musim rict, ze neni prospikovane javascriptem. Jedna se o formu view – klasicke rhtml nemusi obsahovat zadny javascript. Javascript to obsahuje, pokud se dela nejaka Ajaxova frajerinka, a to pak je view rjs soubor.
`
class CollectionBase implements IteratorAggregate, Countable {
public function addItem($newItem, $key = null) {
}
}
class SurveyCollection extends CollectionBase {
public function addItem(Survey $newItem, $key = null){
parent::addItem($newItem, $key);
}
}
`
Strict Standards: Declaration of SurveyCollection::addItem() should be compatible with that of CollectionBase::addItem() in …
WTF?
Tak toto ma znechutilo. Takto sa neda programovat v OOP. To je o nicom. Preco nemozem pouzit „type hint“ v child class? Ved je to uplne logicke, no nie?
Možná by pomohlo napsat phpt test: http://qa.php.net/write-test.php, čož by mělo zaručit, že tenhle problém znovu nenastane.