![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 23.11.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ok ta kwestie jakos rozwiaze. A teraz to co tygryski lubia najbardziej czyli pytanie techniczne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) CMS pisze pod php 4. I teraz sprawa referencji. Mam następującą strukturę
Core -> - db - tpl - session -- login --- auth - error_handler - page - cache - assert handler I teraz wszystkie te klasy mają być dostępne dla jądra i dla każdej innej. Więc w klasie core stworzyłem zmienna: [php:1:66d913925e]<?php class core { var $classes; function core() global $CORE; $this->classes = &$CORE; } } ?>[/php:1:66d913925e] i teraz nie muszę przekazywać po zainicjowaniu dowolnej klasy ($this->classes['db'] = new db()) jej instancji innej. zastanawia mnie tylko czy takie rozwiązanie jest dość optymalne. Aplikacja jak narazie ma działać na php 4 nad czym bardzo boleję bo na 5 było by o wiele łatwiej. Więc pytanie: czy wykorzystać inny "punkt zaczepienia" czyli np. $_GLOBALS czy $_SESSION (można by zserialiozować obiekty wszystkie) czy może istnieje inny pomysł na referencję w b. złóżonej strukturze (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) jeśli tak to jaki i czy jest dosyć szybki?? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 22.10.2003 Skąd: Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
A ja proponuje jeszcze inaczej:
[php:1:f86601a695] <? $class1 = new Class1; $class2 = new Class2; $class3 = new Class3; // dodajemy referencje do klasy 1 $class1->AddObject('cClass2', $class2); $class1->AddObject('cClass3', $class3); // dodajemy referencje do klasy 2 $class2->AddObject('cClass1', $class1); $class2->AddObject('cClass3', $class3); // dodajemy referencje do klasy 3 $class3->AddObject('cClass1', $class1); $class3->AddObject('cClass2', $class2); // Klasy class Class1 { var $mProperty1; var $mProperty2; function CosRobieZClass2 () { $this->cClass2->JakasMetoda(); } function AddObject($pName, &$pObject) { if (false == is_object($this->$pName)) { $this->$pName = &$pObject; } } } class Class2 { function JakasMetoda() { $this->cClass1->mProperty1 = 'wartosc'; $this->cClass3->MetodaZClass3(); } function AddObject($pName, &$pObject) { if (false == is_object($this->$pName)) { $this->$pName = &$pObject; } } } // [ciach]... - nie chcialo mi sie pisac klasy 3 ?> [/php:1:f86601a695] Mam nadzieje, ze idea jest jasna - w ten sposob jest duzo referencji ale zawsze z kazdej klasy mozna sie dostac do innych. Warunkiem jest tylko, zeby kazda z klass miala metode AddObject() i mozna dzialac. Co o tym myslicie? Dodam tylko, ze tego uzywam i bardzo przyjemnie sie uzywa. Aha, mozna oczywiscie zrobic tak w srodku Class1 np. [php:1:f86601a695] <? $this->cClass2->cClass3->MetodaJakasZClass3(); ?> [/php:1:f86601a695] Oczywiscie tutaj nie ma to sensu ale w niektorych miejscach sie to przydaje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 07:23 |