Autor | Zpráva | ||
---|---|---|---|
lookAssSWE Profil * |
#1 · Zasláno: 1. 8. 2015, 16:41:56
Zdravim,
vim že v php existuje toto: <?php class Magic { public $x; public $y; public function x($x) { $this->x = $x; return $this; } public function y($y) { $this->y = $y; return $this; } public function __toString() { $r = $this->x.PHP_EOL; $r .= $this->y; return $r; } } $test = new Magic(true); print($test->x("some")->y("thing)); Koukal jsem se treba na PHP SDK Facebooku a tam to pouzivali dost a nikde jsem metodu __toString neviděl. Diky za pripadne vysvetleni |
||
Alphard Profil |
#2 · Zasláno: 1. 8. 2015, 17:00:26
lookAssSWE:
„$neco->neco->neco->neco("neco")“ Lepší by bylo pojmenovat to jinak: $a->b->c->d("neco") b instance $a (instance vzniká $a = new A ). Ve vlastnosti b instance $a je přiřazená nějaká jiná instance, třeba $b , a tady přistupujeme k její vlastnosti c . V té je opět nějaká instance $c a voláme její metodu d() .
Když se to rozepíše: $b = $a->b; $c = $b->c; $vysledek = $c->d("neco"); Tohle všechno je obecné objektové modelování, nic magického v tom není. Do skupiny Magic Methods patří až __toString , která se volá až na výsledné instanci, pokud je vyžadována konverze na řetězec. S předchozím to vůbec nesouvisí (tj. obojí lze používat nezávisle na sobě).
|
||
xROAL Profil |
Metóda
__toString() hovorí, ako sa trieda/objekt zachová, pokiaľ je použitá ako string.
<?php class EchoMe{ public function __toString(){ return "You did it!"; } } $obj = new EchoMe(); echo $obj; // vypíše "You did it!" $neco->neco1->neco2->...->necoX("neco") nie je nič špeciálne.
Objekt $neco má atribút neco1 , v ňom je objekt, ten má atribút neco2 , v ňom je objekt ... atď., na poslednom objekte v tejto šialenej "reťazi" sa potom volá metóda necoX() .
|
||
BuggsyUpper Profil * |
#4 · Zasláno: 1. 8. 2015, 17:07:45
Aha parada, dekuju :)
|
||
Časová prodleva: 9 let
|
0