Dalej bawimy się w MVC i programowanie obiektowe. Poznajemy czym są klasy abstrakcyjne i metody abstrakcyjne. Do dzieła.
Zacznijmy od utworzenia pliku helloname.php:
<?php
echo "<h1>Hello name page</h1>";
echo "<br>";
echo @"Hello $name";
Mamy tutaj ciekawy error suppress operator, zatem bez zmiennej name nie wyskoczą nam żadne błędy. Teraz teoria.
Klasa abstrakcyjna to klasa najwyższego rzędu, z której się tylko dziedziczy. Klasa abstrakcyjna nie może utworzyć obiektu.
Klasa abstrakcyjna może posiadać metody abstrakcyjne, ale bez implementacji.
<?php
abstract class InvokableController {
abstract public function __invoke($path);
}
Takiego obiektu nie możemy utworzyć, ale możemy dziedziczyć z tej klasy, tylko musimy zaimplementować jej abstrakcyjną metodę __invoke:
<?php
abstract class InvokableController {
abstract public function __invoke($path);
}
class HomeController extends InvokableController {
public function __invoke($path){
require __DIR__ . "/$path.php";
}
}
$invokable = new HomeController();
$invokable("helloname");
Klasy abstrakcyjne poznamy lepiej w następnych odcinkach, na razie niewiele różnią się od interfejsów, ale to się wkrótce zmieni.