Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Referencja do klasy w innej klasie
Forum PHP.pl > Forum > PHP > Object-oriented programming
.radex
Witam. Piszę CMS'a i mam pewien problem:

Aby w kontrolerze mieć dostęp do wszystkich bibliotek itp. dodaję "extends Controller".

Zanim jednak "odpalę" kontroler, wczytuję bibliotekę URL (która jest klasą), żeby sparsować "przyjazne URL'e". Chciałbym mieć do niej dostęp w klasie Controller. Mógłbym zrobić to (chyba) tak:Controller::url = new URL();
Ale po co dwa razy wykonywać bibliotekę? No właśnie, bez sensu. Jak to obejść?

Pozdrawiam.
splatch
W twoim przypadku dziedziczenie jest jak najbardziej ok.

Zainwestuj we FrontController:
Core J2EE Patterns - Front Controller
WACT: Front Controller
.radex
poradziłem sobie, ale w okropny sposób, więc zainteresuję się tym - przynajmniej czegoś nowego się nauczę winksmiley.jpg

Zrobiłem to tak:
w konstruktorze klasy Controller:

global $_cms;
$this->url = &$_cms->url;

Dzięki za podpowiedź.
Cysiaczek
Hm. To nawet nie jest okropny sposób, jest wręcz niedopuszczalny. Gdybyś miał mi zdawać kod, to byś dostał niezły opieprz snitch.gif
Jeśli nie Front Controller, to jeszcze zawsze zostaje singleton, lub lepiej - rejestr, do którego wrzuć obiekt URL (albo dane, które produkuje).

Pozdrawiam
.radex
hehe tongue.gif Dlatego też szukam lepszego rozwiązania.

Front Controller o ile dobrze rozumiem jest skryptem, który ładuje odpowiedni moduł (kontroler), no i coś takiego mam (no chyba, że to trochę inaczej). Natomiast rejestr "wygląda" nieźle, zobaczymy tongue.gif



EDIT:

Dzięki za podpowiedź - użyłem Singletona, bo z Rejestrami jest za dużo roboty.

Także podziękowania dla Athlana - http://athlan.vgroup.pl/singleton-registry-map/ winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.