Autor | Zpráva | ||
---|---|---|---|
Jirik1 Profil * |
#1 · Zasláno: 29. 11. 2018, 21:20:46
Ahoj, chtěl bych se zeptat, co znamená prázdné this v returnu funkce? Díky
public function fce() { return $this; } |
||
Kcko Profil |
ze muzes pote metody z objektu pri volani retezit
$objekt->neco1()->neco2() |
||
Jirik1 Profil * |
Řetězit?
To je mi pánečku novinka :-). Nešlo by nějaký příklad, aby ostatní věděli :-)? Abych byl upřímný, našel jsem v diskuzi na jakpsatweb vysvětlení, ale neumím si představit využití. |
||
Slark Profil |
Říká se tomu fluent interface a využívám to pro získávání dat z elasticsearche, např.
<?php class SearchQuery { function createQuery() { /** zde si získám nějaká data **/ } /** a zde mohu postupně aplikovat různé filtry apod. záleží kde data získávám **/ function byUser(User $user) { /** nějaká logika **/ return $this; } function inCategory(Category $category) { /** nějaká logika **/ return $this; } function limit($limit) { /** nějaká logika **/ return $this; } } /** a použití **/ $searchQuery = new SearchQuery; $result = $searchQuery->createQuery()->inCategory($category)->limit(8) |
||
Jirik1 Profil * |
#5 · Zasláno: 29. 11. 2018, 21:33:45
Chápu správně, že je to přebírání (seskupování) skriptů z různých funkcí?
|
||
RastyAmateur Profil |
Nemyslím si, že to znamená, že můžeš něco řetězit. Prostě se ti vrátí samotnou instanci právě užívané třídy, nic víc. I kdyby jsi vrátil instanci jiné třídy, můžeš volat metody dál
<?php class a { function aa() { return new b; } } class b { function bb() { echo "Hello world!"; } } (new a)->aa()->bb(); |
||
Jirik1 Profil * |
#7 · Zasláno: 29. 11. 2018, 23:00:52
Díky za pomoc.
|
||
RastyAmateur Profil |
Tak samotného mě zajímalo, k čemu bych to dokázal použít a zjistil jsem, že měl Kcko pravdu. Zdá se, že hlavní užití je opravdu v tom řetězení. Mně osobně to tedy nepřijde jako zrovna dobrý způsob, ale to už je asi na zvyku. Nepochybně to ovšem zkrátí a zpřehlední kód
Každopádně ta funkcionalita stále vězí v tom, že to vrátí tu aktuálně používanou instanci |
||
blaaablaaa Profil |
Ještě k praktickému použití, opravdu je to dobrý způsob práce:
$image ->fromString($data) ->autoOrient() ->resize(1600, 1600) ->toFile('xxx', 'image/jpeg', 90); $image->fromString($data); $image->autoOrient(); $image->resize(1600, 1600); $image->toFile('xxx', 'image/jpeg', 90); |
||
Časová prodleva: 5 let
|
0