Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odwołanie do statycznej klasy potomnej.
Forum PHP.pl > Forum > PHP > Object-oriented programming
zdzichu
Witam. Właśnie zabrałem się za przerabianie mojej klasy DB. Cała zamiana polega na tym, że chciałbym odwoływać się statycznie do klasy (klepanie $this->db->(...) w innych klasach znudziło mnie, wolę db::query() ).
Struktura aktualnej klasy wygląda tak:
  1. <?php
  2. //w konstruktorze deklaruję gdzieś $this->driver = new mysql;
  3. //a potem:
  4. public function init(){
  5. $this->driver->init();
  6. }
  7. public function execute($query){
  8. return $this->driver->execute($query);
  9. }
  10. //itp itd.
  11. ?>

natomiast sterownik ma
  1. <?php
  2. public function execute($query){
  3. $query= $this->prepare($query);
  4. return mysql_query($query);
  5. ?>

teraz chciałbym przerobić to statycznie... no właśnie, czym jednak zastąpić $this->driver ? coś takiego jak child:: chyba nie istnieje? natomiast
  1. <?php
  2. public $driver = new 'mysql';
  3. ?>

niestety nie działa smile.gif czy mógłby ktoś naprowadzić mnie na rozwiązanie?
faster
Witaj,

Aby można było wywołać metodę statyczną musi mieć kluczowe słowo static:

np.
public static function Metodka()
{
//...
}

należy pamiętać, że taka metoda może korzystać jedynie ze statycznych atrybutów klasy.

To może nie dokładna odpowiedź na Towje pytanie ale naprowadzi Cię na trop....

pozdro
Ziels
self::driver
zdzichu
...panowie,chodzi mi dokładnie jak zastąpić
  1. <?php
  2. return $this->driver->execute($query);
  3. ?>

...bo niestety,
  1. <?php
  2. self::$driver::execute($query);
  3. ?>

nie działa- co jest jasne...
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.