![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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."
|
|
|
![]()
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
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.07.2025 - 03:57 |