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/
<input type="color" name="get_color" />
#some_id:hover { transform: rotate(60deg); -ms-transform: rotate(60deg); /* IE 9 */ -moz-transform: rotate(60deg); /* Firefox */ }
var maxn = Math.max(8, 4, 88, 56); alert(maxn); // 88
include_once("un_fisier.php");
Most people arrived ahead of time. - Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Este fruto es buenĂsimo. - Acest fruct este extrem /nemaipomenit de bun.