Zadejte hledaný výraz...

Spojování funkcí

php student
verified
rating uzivatele
18. 3. 2011 23:04:08
Dobrý den
v programování jsem nováček a řeším tento problém, když chci tímto způsobem:
$objekt = new Trida();
$objekt->function1()->function2();
?>
propojit dvě funkce, tak se mi vrací hláška, že Call to a member function function2() on a non-object in. Co dělám špatně? (a prosím neříkejte že to, že píšu v PHP :-D). Je nějaké jednoduché řešení?
Na internetu jsem našel nějaké řešení, ale tam byla každá metoda v jiné třídě. Používá se toto vůbec v rámci jedné třídy?
Předem díky za radu
18. 3. 2011 23:04:08
https://webtrh.cz/diskuse/spojovani-funkci/#reply620344
toshi
verified
rating uzivatele
(4 hodnocení)
18. 3. 2011 23:08:46
class Trida() {
public function1() {
// blablabla
return $this;
}
}
18. 3. 2011 23:08:46
https://webtrh.cz/diskuse/spojovani-funkci/#reply620343
Tomas Volf
verified
rating uzivatele
(12 hodnocení)
18. 3. 2011 23:09:45
presne tak, jeste bych k tomu dodal ze podle toho co jsem nasel na netu musis pouzivat minimalne PHP 5...
18. 3. 2011 23:09:45
https://webtrh.cz/diskuse/spojovani-funkci/#reply620342
php student
verified
rating uzivatele
18. 3. 2011 23:11:15
Jééé, to je krása. Funguje to. Díky.
Do jiného bych nešel. :-)
18. 3. 2011 23:11:15
https://webtrh.cz/diskuse/spojovani-funkci/#reply620341
Byl bych s method chaining opatrný. Pokud budete bez rozmyslu řetězit metody, bude to hůře čitelné a upravitelné než obyčejný kód.
Typický nečitelný kód:
Malinko méně nečitelný a stejně špatně upravitelný kód v fluent interface
Lépe čitelný kód ve fluent interface
Lépe čitelný a upravitelný kód procedurálně
Největší smysl má asi tehdy, pokud z něj dokážete udělat věty.
"Vyber z množiny prvky, které mají tyhle vlastnosti, a udělej s nimi toto."
Jinak bych jeho použití zvážil.
Podle mě není náhoda, že na fluent interface nenarazíte skoro jen v jQuery, kde se používá právě jako věta "Vyber z DOMu tohle, a pokud to splňuje tuhle podmínku, udělej toto".
20. 3. 2011 14:52:15
https://webtrh.cz/diskuse/spojovani-funkci/#reply620340
Na StackOverflow je k tomu dobrá diskuse
http://stackoverflow.com/questions/1103985/method-chaining-why-is-it-a-good-practice-or-not
Many use method chaining as a form of convenience rather than having any readability concerns in mind. Method chaining is acceptable if it involves performing the same action on the same object - but only if it actually enhances readability, and not just for writing less code.
Also consider that having large numbers of methods chained will make things very fragile if something changes
Tohle je hezký příklad, kdy dává řetězení smysl
20. 3. 2011 15:02:46
https://webtrh.cz/diskuse/spojovani-funkci/#reply620339
Pro odpověď se přihlašte.
Přihlásit