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/
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
a:hover { font-weight: bold; color: #00da01; }
var num = 12.34567; num = num.toFixed(2); alert(num); // 12.35
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_export($arr);
What time is it? It is a quarter to 5. - Cat este ora? E 5 fara un sfert.
¿Qué hora es? Son las tres menos cuarto. - Cat este ora? E 3 fara un sfert.