| 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: 11 let
|
|||
0