Autor Zpráva
Jirik1
Profil *
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 *
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();
Stále je to normální návratová hodnota, kterou funkce běžně mívají. V PHPku můžeš vracet cokoliv. Číslo, řetězec, pole, nic, boolean, i instanci objektu - jako je tomu právě v tebou uvedeném případě. Užití už je čistě jen na tobě.
Jirik1
Profil *
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);
se čte lépe, než:
$image->fromString($data);
$image->autoOrient();
$image->resize(1600, 1600);
$image->toFile('xxx', 'image/jpeg', 90);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0