Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $this->metoda()-> i cos jeszcze ..., czym są Fluent Interfaces
xbitdesigns
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.04.2006
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Czesc.

Co to jest:

  1. <?php
  2. $this->blah()->smash();
  3. ?>


a moze powinno byc:

  1. <?php
  2. $this->blah()->$this->smash();
  3. ?>


Jak to sie nazywa, bo nawet chcac w google znalezc nie wiem czego szukac (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Ten post edytował xbitdesigns 5.04.2008, 01:58:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Witam. Dołączę się do tematu. Bardzo podoba mi się ta metoda, jednak nie wiem jak ją zaimplementować. W powyższym przykładzie wszystko jest oczywiste, bo funkcje używają tylko echo, ale gdy ma istnieć jakaś zależność pomiędzy nimi wszystko się komplikuje.

Chcę napisać klasę generującą zapytania sql i używać jej w przybliżeniu tak:

  1. <?php
  2. $query = $queryGen->select('column')->form('table');
  3. ?>


Co w tym przypadku zostanie przypisane do zmiennej $query? Wartość ostatniej funkcji? Jeżeli tak, to musiałbym to chyba rozwiązać w taki sposób:
  1. <?php
  2. class queryGenerator {
  3.  private $actQuery='';
  4.  public function makeQuery() {
  5. $actQuery = $this->actQuery;
  6. $this->actQuery = '';
  7. return $actQuery;
  8.  }
  9.  public function select($select) {
  10. $this->actQuery .= 'SELECT '.$select;
  11. return $this;
  12.  }
  13.  //itd itd
  14. }
  15. ?>


i wywoływać tak

  1. <?php
  2. $queryGen = new queryGenerator();
  3. $query = $queryGen->select('column')->from('table')->makeQuery();
  4. ?>

Pisałem przed chwilą jako przykład, nie wiem czy działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Czy dobrze myślę? Jest może jakieś prostsze rozwiązanie?

Bardzo proszę o odpowiedź
Pozdrawiam

Ten post edytował l0ud 6.04.2008, 19:12:14
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 06:31