Co je nového v PHP 5 (díl 2/5)
Ve druhém díle se podíváme na další rozšíření objektové koncepce PHP 5. Jedním z dalších podstatných rozšíření jsou abstraktní metody třídy (abstract), s tím, že třída, která obsahuje abstraktní metody (není definována jejich implemetace), musí být také typu abstract.
Je pochopitelné, že není možné vytvořit instanci abstract třídy, je nutné vytvořit návaznou třídu, která danou metodu již implemetuje, a zde vytvoříme instanci. Příklad?
abstract class AbstractClass { abstract public function test(); } class ImplementedClass extends AbstractClass { public function test() { echo "ImplementedClass::test() called\n"; } } $o = new ImplementedClass; $o->test();
Další věcí dobře známou z C++ je zavedení interface (tedy struktura, deklarace, a definice funkcí a metod) a jeho následná, nezávislá, implementace (implements), určitou třídou. Příklad?
interface Throwable { public function getMessage(); } class MyException implements Throwable { public function getMessage() { // ... } }
Dalším prvkem objektové koncepce je klíčové slovo final. Metody, nebo celé třídy označené slovem final nemohou být dále modifikovány potomky. Příklad?
class Foo { final function bar() { // ... } }
a:
final class Foo { // class definition }
Jako final můžeme označit jen metody a celé třídy, nikoliv již vlastnosti (proměnné) třídy.
V díle třetím se podíváme na velice důležitou novou věc - výjímky (exception).
Myslim si, ze prinos Vasich clanku by byl vetsi s konkretnimi priklady trid a metod. Spoustu lidi treba zacalo programovat az s prichodem PHP, treba se zdokonalili a ted by chteli prijit na kloub objektovemu PHP. To ze ale muzou definovat absatraktni tridu jim nic neda, pokud jako priklad abstraktni tridy je trida AbstractClass s metodou test.
Tenhle serial je jenom marketing nebo opravdu chcete aby se z toho nekdo neco dozvedel?
[1] tento seriál je pro lidi, co už umí programovat. Nicméně, plánuji rovněž jiný seriál o objektovém programování obecně, pro lidi, co se to teprve učí :)
Mohu se zeptat? Kdy mam pouzit ve tride implementovani interfacu a kdy dedeni metody z abstraktni tridy? Zatim v tom neneachazim rozdil.