Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $a->b()->c(); na jakiej zasadzie to działa
Forum PHP.pl > Forum > PHP > Object-oriented programming
Spawnm
Witam,
pytanie jak w temacie , jak to działa?
myślałem że wystarczy
  1. <?php
  2. class a{
  3.  public function b(){
  4.  //...
  5.  }
  6.  
  7.  public function c(){
  8.  //...
  9.  }
  10. }
  11. $a=new a();
  12. $a->b()->c();
  13. ?>

jednak taki kod nie działa ...
-=Peter=-
  1. <?php
  2. class a{
  3. public function b(){
  4. //...
  5.   return $this;//metoda musi zwracać obiekt
  6. }
  7.  
  8. public function c(){
  9. //...
  10. }
  11. }
  12. $a=new a();
  13. $a->b()->c();
  14. ?>


Jak miało działać, jak metoda a::b() nic nie zwracała? :]

Temat: Jak_sie_nazywa_sposob_programowania
Crozin
Metoda "b" z obiektu $a musi zwrócić jakiś obiekt, który będzie posiadał metodę "c" - może to być on sam:
  1. <?php
  2. class ABC{
  3.  public function b(){
  4.    var_dump(__METHOD__);
  5.    return $this;
  6.  }
  7.  public function c(){
  8.    var_dump(__METHOD__);
  9.    return $this;
  10.  }
  11. }
  12.  
  13. $a = new ABC();
  14. $a->b()->c()->b()->c();
  15. ?>
  1. <?php
  2. class ABC{
  3.  public function b(){
  4.    return new DEF();
  5.  }
  6. }
  7.  
  8. class DEF{
  9.  public function c(){
  10.    var_dump(__METHOD__);
  11.  }
  12. }
  13.  
  14. $a = new ABC();
  15. $a->b()->c();
  16. ?>
Spawnm
bardzo dziękuje za udzielenie informacji smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.