Aceasta lectie arata cum se pot accesa mai multe metode inlantuite in PHP OOP.
Inlantuirea metodelor inseamna accesarea mai multor metode, sau functii ale unei clase, intr-o singura instructune.
$obiect->metoda_1()->metoda_2()Cerinta prin care se pot accesa metode inlantuite este ca metoda precedenta sa returneze instanta de obiect, folosind: return $this in codul metodei precedente (metoda_1() ).
class Rectangle { public $x = 0; public $y = 0; // seteaza valori pentru laturile $x si $y public function setXY($x, $y){ $this->x = $x; $this->y = $y; return $this; // returneaza instanta de obiect } // returneaza aria public function area(){ return $this->x * $this->y; } // returneaza perimetru public function perimeter(){ return 2 * ($this->x + $this->y); } } // creaza o instanta de obiect a clasei $obR = new Rectangle; // afiseaza aria si perimetru echo $obR->setXY(3, 4)->area(); // 12 echo '<br/>'. $obR->setXY(3, 4)->perimeter(); // 14
class setTag { private $id = ''; // atributul id private $class = ''; // atributul class // seteaza $id public function setId($id){ $this->id = ' id="'. $id .'"'; return $this; // returneaza instanta de obiect } // seteaza $class public function setClass($class){ $this->class = ' class="'. $class .'"'; return $this; // returneaza instanta de obiect } // returneaza tag-ul HTML si continutul public function getTagCnt($tag, $cnt){ return '<'. $tag .$this->id. $this->class .'>'. $cnt .'</'. $tag. '>'; } } // creaza o instanta de obiect a clasei $obTag = new setTag; // variabile cu tipul tag-ului si continut $tag = 'div'; $cnt = 'https://marplo.net'; // apeleaza metodele inlantuite pt. setare ID, "class", creaza un <div> cu aceste atribute si continut echo $obTag->setId('some_id')->setClass('cls')->getTagCnt($tag, $cnt); /* Rezultat: <div id="some_id" class="cls">https://marplo.net</div> */Instructiunea cu metodele inlantuite din codul de mai sus:
// seteaza pe rand ID-ul, "class" si afiseaza tag-ul cu continutul $obTag->setId('some_id'); $obTag->setClass('cls'); echo $obTag->getTagCnt($tag, $cnt);
numeClasa::metodaStatica()->altaMetoda()- Exemplu, o clasa PHP cu o metoda statica ce seteaza valoarea la o proprietate statica privata (private nu poate fi accesat direct in afara clasei), si o metoda publica ce returneaza valoarea proprietatii private.
<?php class clsData { // proprietate privata, nu poate fi accesata direct in afara clasei private static $data; // metoda statica, seteaza valoarea pt. $data public static function setData(){ self::$data = 'https://marplo.net/php-mysql/'; return new self; // returneaza instanta clasei } // metoda ce returneaza valoarea din $data public function getData(){ return self::$data; } } // acceseaza metoda getData() dupa /legat de setData() echo clsData::setData()->getData(); // https://marplo.net/php-mysql/
<table><tr> <th>Title 1</th> <th>Title 2</th> </tr></table>
.some_class { line-height: 150%; }
document.getElementById("id_button").onclick = function(){ window.open("http://coursesweb.net/"); }
$ar_dir = scandir("dir_name"); var_export($ar_dir);
He will sleep there. - El va dormi acolo.
Él dormirá allí. - El va dormi acolo.