Dean Edwards a jeho IE7
Geniální udělátko o kterém se u nás kupodivu moc neví. Některým webdesignérům prý natolik usnadnilo život, že začali fetovat a krást, aby zase nějaké problémy měli. Takže opatrně s tím!
Už to budou dva roky, co Dean Edwards začal psát záplatu pro Internet Explorer, která umožní webdesignerům používat pokročilé CSS vlastnosti. A nejen je. Nazval ji vyloženě nešťastně IE7, nejspíš nevěřil ve vznik další verze Microsoftího prohlížeče.
Statistika zastoupení PHP 5.x

Zajímalo by vás, jak jsou rozšířeny pětkové verze PHP? Váháte, zda ve svém open-source projektu stále udržovat kompatibilitu s PHP 4, nebo ji konečně pustit k vodě? Tak to vás asi překvapím.
Statistiky zastoupení PHP 5.x jsem hledal už dávno, leč marně. Až dnes mi ta zajímavá čísla prozradil francouzský server Nexen.net (viz statistiky za listopad). Měření provádí pravidelně každý měsíc na vzorku téměř 8 milionů webů.
Výsledky za listopad 2005
- PHP najdete na 37% serverů (tedy je tu obrovský trh, který lze komerčně využít)
- 1. místo: PHP 4.3.10 (30 %)
- 2. místo: PHP 4.3.11 (24 %)
- PHP 5.x jen 4.9 %
- což je dokonce méně, než zastoupení PHP 4.1.x nebo 4.2.x
Nenadávejte však na hostéry. Ona čísla neříkají, kolik procent hostingů PHP5 nabízí, ale kolik zákazníků jej používá. V reakci na dřívější článek Dávám PHP4 rok, maximálně dva mi napsal Stanislav Petr z HOSTING90:
Představte si firmu xy, vyrábějící třeba kolíčky na prádlo… Oni mají www stránky, které běží nad nějakým redakčním systémem, který jim někdo někdy napsal. A teď jim zkuste říct, že budou muset znovu investovat několik desítek tisíc korun do přepisu, jenom proto, že php5 je teďka in… Takže tady platí jedno krásné pravidlo – na něco, co funguje, se nesahá.
Naprosto s ním souhlasím. Elegantní východisko je tedy provozovat obě verze a dát klientům možnost výběru. Kdo bude mít ale chuť vytvářet prostor pro verzi třetí, PHP 6?
Co z toho plyne? Například to, že Texy! bude dále podporovat obě verze
PHP. V praxi to řeším tak, že kód píši v pětce s využitím většiny
jejich vlastností a čtverkovou variantu (de)generuji pomocí převodníku. Prostě zabíjí dvě mouchy
jednou ranou
Jo, abych nezapomněl, pěkný nový rok!
PHP 5 -> 4 converter
I have wrote tool for automatic convert PHP5 scripts to PHP4. It converts new PHP 5 object model features and language constructions into PHP 4 equivalents. This tool may be useful, if you need transfer PHP5 scripts to run under previous version. It is not designated to provides missing functionality (try PHP_Compat), just missing syntax.
Supported are these constructions:
- abstract classes and methods (demo)
- interface, implements (demo)
- new constructor syntax __construct (demo)
- final classes and method
- visibility modifiers public, protected, private (demo)
- static attributes and methods (demo)
- class constants (demo)
- object clonning (demo)
- operator instanceof
- self::
- automatic passing objects as references (see How to emulate PHP5's object model in PHP4)
- type hinting
- support for Doc Comments
- and for exceptions try, throw, catch (it is not full-value replacement, only partial emulation)
Try it here
PHP 5 -> 4 converter
Vytvořil jsem nástroj pro automatický převod skriptů z PHP5 do PHP4. Slouží pro převod nových jazykových konstrukcí OOP. Nahrazuje je ekvivalentními konstrukcemi, které fungují v obou verzích.
Podporovány jsou tyto konstrukce:
- abstraktní třídy a metody (abstract)
- rozhraní (interface, implements)
- nová syntaxe konstruktorů (__construct)
- „finální“ třídy a metody (final)
- modifikátory přístupu (public, protected, private)
- statické atributy a metody (static)
- konstanty uvnitř tříd (const)
- klonování (clone)
- operátor instanceof
- předřaďovač self
- automatické předávání objektů odkazem (viz dříve publikovaná metoda)
- podpora Doc Comments
- kontrola typů type hinting
- omezená podpora výjimek try, throw, catch (nejde o plnohodnotnou náhradu, ta není technicky řešitelná)
Overloading se ponechává beze změny. Cílem převodníku také není nahrazovat chybějící funkce, od toho je tu třeba PEAR PHP_Compat.
Konvertor si můžete naživo vyzkoušet. Pokud narazíte na nějaké chybky, svěřte se v komentářích.
Zlo si říká Database Abstraction Layer
Database Abstraction Layer je komponenta, která zpomalí aplikaci, zvýší její hardwarové nároky a zkomplikuje programátorům přístup k databázi. To vše výměnou za iluzi, že by aplikace mohla fungovat i pod jiným databázovým strojem, než pro který byla původně vyvíjena.
Toliko definice DAL (na Wikipedii mají jinší). A teď několik praktických ukázek.
ADOdb
Nejslavnější PéHáPéčková DAL si říká ADOdb. Po přilinkování cca 400kB kódu k vaší aplikaci můžete dát sbohem nudným SQL příkazům, jako je
UPDATE `table` SET lastname='Jones'
WHERE lastname LIKE 'Sm%'
a nahradit je vzrušujícím zápisem
$record["lastname"] = "Jones";
$conn->AutoExecute(
$conn->nameQuote.'table'.$conn->nameQuote,
$record, 'UPDATE', "lastname LIKE 'Sm%'");
To není má zběsilá fantazie, to cituji jeden svěží příklad z dokumentace. Zvládnout ADOdb tedy není nic složitého, stačí se jen naučit novou syntaxi a odměnou bude tento přehledný zápis, kde snad ani nelze udělat chybičku. Pravda, zjištění, že uvedené hned z několika důvodů nebude fungovat třeba v MSSQL, nás dvakrát nepotěší, ale hlavně že je mír.
PEAR DB
Tak teď jsem trošku na rozpacích – není náhodou tou nejslavnější DAL pro PHP právě tato?
PEAR DB je od své kolegyně o poznání štíhlejší (140kB), nicméně pro svůj chod vyžaduje ještě knihovnu PEAR. Čím nás za svou přízeň odmění? Především šikovným zapouzdřením (nemyšleno ironicky, protentokrát ne) všech důležitých funkcí pro práci s databází a několika užitečnými drobnostmi navíc.
Zajímavé je například vkládání parametrů do SQL příkazů:
$db->query('INSERT INTO numbers
VALUES (?, ?, ?)', array(1, 'one', 'en'));
Leč při větším počtu parametrů je tato technika spíše kontraproduktivní. Shrnuto podtrženo: PEAR DB je zvládnutá rutina bez geniálních nápadů.
PDO
Dámy a pánové, o své místo na slunci se uchází novinka jménem PDO, nedílná součást PHP od verze 5.1. Funkčně se velice podobá PEAR DB, avšak obejde se bez linkování stovek kilobajtů (pomalého) kódu. Ale ptám se, je důvod k jásotu?
- zajistí alespoň základní přenositelnost mezi databázovými stroji?
- zjednoduší programátorům zápis SQL příkazů?
Obávám se, že nikoliv. Nebo snad znáte způsob, kterak snadno zapsat SQL příkaz, jenž by se pro MySQL resp. MS Access reprodukoval takto:
INSERT INTO `table` (`date`, `text`) VALUES ('2000-12-02', 'say: \'hello\'');
INSERT INTO [table] ([date], [text]) VALUES (#12/2/2000#, 'say: ''hello''');

novější články