Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> odwołanie do statycznej klasy potomnej.
zdzichu
post
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 28.08.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czy mógłby ktoś naprowadzić mnie na rozwiązanie?
Go to the top of the page
+Quote Post
faster
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 9.09.2002
Skąd: Pszczyna

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


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
Go to the top of the page
+Quote Post
Ziels
post
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


self::driver
Go to the top of the page
+Quote Post
zdzichu
post
Post #4





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 28.08.2006

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


...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...
Go to the top of the page
+Quote Post

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: 8.08.2026 - 02:54