Metody magiczne w PHP - call

Data: 2017-12-08, autor: Michał Misztal

Drąż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().

Skomentuj lub zgłoś błąd

© Michał Misztal 2018

Czytasz właśnie

Metody magiczne w PHP - call
Autor: Michał Misztal
Data: 2017-12-08

Podobne wpisy