Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dziedziczenie +konsruktory
rzseattle
post 17.11.2003, 00:31:03
Post #1





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


Jak to wlasciwie jest bo ja juz sam nie wiem

Moze ja cos zle robie ale sami zobaczcie - chce zeby ADoDB bylo dostepne we wszystkich moich obiektach zeby recznie nie trzeba bylo przenosic

no wiec
[php:1:a11d324283]<?php
class obj{
var $_db;
function obj(){
$this->_db =NewADOConnection('mysql');
return 1;
}
}
?>[/php:1:a11d324283]

po czym dziedziczy to obiek np engine
[php:1:a11d324283]<?php
class engine extends obj{

...
function engine(){
//$this->_db->debug = true;
$this->ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$this->conn = $this->_db->Connect($this->db_host, $this->db_user, $this->db_pass, $this->db);
..
}
?>[/php:1:a11d324283]

no i wyskakuje mi oczywiscie
Kod
Fatal error: Call to a member function on a non-object in C:FoxServwwwphpbbengineengine.php on line 27

czyli $this->_db->Connect sie wysypuje

moze ktos zna odpwedz??


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
KaMeLeOn
post 17.11.2003, 00:47:13
Post #2





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Jeśli definiujesz konstruktor w klasie pochodnej, nie zostanie wywołany konstruktor klasy bazowej.
Mówiąc krótko zostanie pominięty.
W przypadku kiedy klasa pochodna nie ma konstruktora wtedy wywoływany jest konstruktor klasy bazowej.


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
rzseattle
post 17.11.2003, 01:01:05
Post #3





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


no fakt teraz wszystko ma sens smile.gif a ja sie dziwilem czemu w klasie bazowej raz i sie wykonuje konstruktor a raz nie 8O

W kazdym razie czy jest inny sposob na zrobienie czegos takiego jak powyzej czy trza wszystko recznie robic?questionmark.gif Bo jesli recznie to w sumie juz tak mam ale myslalem ze idzie to zrobic sprytniej smile.gif


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
KaMeLeOn
post 17.11.2003, 01:36:53
Post #4





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


[php:1:36bef23973]<?php
class obj
{
var $_db;

function obj()
{
$this->_db = NewADOConnection('mysql');
}
}

class engine extends obj
{
var $conn;

function engine()
{
parent::obj();
//$this->_db->debug = true;
$this->ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$this->conn = $this->_db->Connect($this->db_host, $this->db_user, $this->db_pass, $this->db);
}
}
?>[/php:1:36bef23973]


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
rzseattle
post 17.11.2003, 06:12:51
Post #5





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


no wlasnie maam to tez wszedzie jedna linijka w kazdej klasie zalatwione
[php:1:db563026e4]<?php
$this->_db = &$GLOBALS['engine']->_db;
?>[/php:1:db563026e4]
no ale dzieki za pomoc kameleon twoj sposob jest rzeczywiscie lepsiejszy smile.gif


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
DeyV
post 17.11.2003, 10:21:32
Post #6





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




najlepiej jest połaczyć jedno i drugi.
tj. w klasie parent dać $this->_db = &$GLOBALS['engine']->_db;
a w potomnych wywoływać konstrutor rodzica.
Ograniczamy wtedy ilość wywołanych obiektów $_db;


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 01:50