Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> classy dziedziczenie
tamin
post 12.12.2003, 18:12:02
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 6.09.2003

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


Juz przejrzalem cale forum. Znalazlem kilka metod m.in. przez $_GLOBALS.
A ja mam taki problem:
mam klase glowna:
core
i inne klasy np.
db
error
load

I teraz klasa core includuje plik np. db.php, error.php itp.
a pozniej robi $this -> smarty = new Smarty; albo
$this -> Db = new db();

i w pliku index.php daje $cms = new core; i wszystko byloby ok dopoki classy sa bardzo proste.
A teraz pytanie: mam classe error w pliku error.php i includuje ja w klasie core. Klasa error musi korzystac z klasy db. Tak samo klasa load musi korzystac z error, load, db i smarty. Jak to zrobic najprosciej, najszybciej i najbezpieczniej.

Z gory wielkie dzieki za wszelkie podpowiedzi.
Go to the top of the page
+Quote Post
rzseattle
post 12.12.2003, 18:39:05
Post #2





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

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


W ten sposob jak na twoje potrzeby powinno byc dobrze:

[php:1:de85a39b98]<?php
$this -> Db = new db();

$this -> Error = new error;
$this -> Error -> db = &$this -> Db;
?>[/php:1:de85a39b98]

Tylko ze Db nie bedzie jeszcze widoczne w konstruktorze klasy error wiec musisz recznie odpalac konstruktor klasy przez np $this -> Error -> _error();


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
chfast
post 12.12.2003, 19:32:20
Post #3





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

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


Istnieją jeszcze dwa sposoby. Najpierw według mnie lepszy:[php:1:7e360d433e]<?php
class Core
{
//konstruktor:
function Core()
{
$this->Error = new Error();
$this->Db = new Db( &$this->Error );
}
}

class Db
{
//konstruktor:
function Db( &$Error )
{
$this->Error = &$Error;
}
}
?>[/php:1:7e360d433e]
W ten sposób masz w obiekcje $Db referencje do zewnętrznego obiektu $Error i możesz spokojnie korzystać z wszystkich jego funkcje: $Db->Error->func1() .

2 sposób - poprzez rozszerzenie klasy $Error:[php:1:7e360d433e]<?php
class Db extends Error
{
}
?>[/php:1:7e360d433e]
Funkcje klasy Error są dziedziczone przez klase Db. Wadą jest to, że w klasie Db zarówno funkcje Error jak i samego Db są na jednym poziomie. Można stracić orentacje która funkcja pochodzi od którego obiektu. Albo przez nieuwagę można nadpisać dziedziczone funkcje.


--------------------
pozdrawiam, chfast
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: 1.07.2025 - 03:57