Metody magiczne w PHP - call
Data: 2017-12-08, autor: Michał MisztalDrążenie wzorca MVC w PHP ciąg dalszy. Wiadomo, że nie wszystko można zrozumieć od razu. Z czasem przychodzi chęć oceny i weryfikacji kodu. Po nauce i zrozumieniu to naturalna kolej rzeczy.
Ta naturalna kolej rzeczy niejako wbija nam kolejnego skilla. Myślimy sobie "a może zrobię to za pomocą innej techniki, bo wygląda na wydajniejszą".
Dziś o magicznej metodzie w PHP - __call. Dzięki tej metodzie możemy tworzyć metody dynamicznie. To znaczy możemy opracować ogólną recepturę przygotowywania metod a o klasie jako takiej zapomnieć. Przydaje się to gdy życie obiektów rozwleka się na kilka dokumentów.
Najlepsze wykorzystanie metody __call to np tytuł strony, słowa kluczowe, opis czy breadcrumbs. Ale ze względu na sposób implementacji nie trzeba się przeklikiwać do klasy View. Całość jest bardziej intuicyjna.
Powiedzmy, że zlikwidujemy z klasy View metodę tytul a w zamian użyjemy magicznej metody. Kod klasy View uzupełniamy o metodę
function __call($name,$arguments){
$arguments=count($arguments)>1?$arguments:$arguments[0];
$this->$name=$arguments;
}
W konstruktorze wtedy mamy standardowe
$this->view->title("Tytuł strony");
Nic nie stoi na przeszkodzie by nieco uporządkować kod i np usystematyzować tytuł, opis i słowa kluczowe np tak
class View{
function __call($name, $arguments){
$arguments=count($arguments)>1?$arguments:$arguments[0];
switch($name){
case "title":
case "description":
case "keywords":
$this->$name=$arguments;
break;
}
}
}
Całość wywołujemy jak dla title. A w widoku
$this->title;
$this->description;
$this->keywords;
Dzięki temu plik "View.php" można zamknąć na zawsze. No i nie trzeba multiplikować funkcji ponad stan. Dodatkowo całość można zabezpieczyć według uznania w instrukcji switch().