![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Kodząc sobie "coś" małego mam mały problem. A mianowicie, dajmy na to, że mamy klasę A i jest klasa Class której argumentem jest nazwa pliku innej klasy(nazwa klasy == nazwa pliku). Klasa Class includuje tą klasę. I czy byłoby możliwe, żeby klasa Class przypisała uchwyt do klasy która jest w argumencie do jakiejś zmiennej w klasie A ?
-------------------- "Software is like sex: it's better when it's free." - Linus Torvalds
Chodź czasem warto skorzystać z komercyjnych rozwiązań [ nie chodzi tu o software ] |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 84 Dołączył: 27.11.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
wzorzec registry, singleton, przekazanie instancji klasy A do klasy B jako argument dla konstruktora lub dajesz dziedziczenie klasie B z klasy A i przypisujesz właściwość przez $this
Ten post edytował Quantum 25.06.2010, 16:05:13 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
chodzi ci o coś takiego?
Chyba że to nie to, ale wytłumacz jak sołtys krowie na miedzy. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
OK. Już wiem gdzie mogę znaleźć odpowiedź na me pytanie. Dziękuję odpowiedzi.
Nie chciałem robić robić nowego tematu, ponieważ dotyczy to tego samego problemu. Poprzednie rozwiązanie jakiego użyłem wygląda tak : Kod <?php function __autoload($Class) { require_once('Models/' . $Class . '.php'); } class Model { function Get($Class) { return new $Class(); } } ?> a by załadować model muszę napisać coś takiego : Kod <?php $model = new Model(); $model = $model->Get('First'); $model->test(); ?> To co napisał erix już próbowałem. Wynik : Fatal error: Cannot re-assign $this Czy nie dało by się teraz zrobić tak by nazwę klasy podawałoby się jako argument i już ? -------------------- "Software is like sex: it's better when it's free." - Linus Torvalds
Chodź czasem warto skorzystać z komercyjnych rozwiązań [ nie chodzi tu o software ] |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jak rozumiem metoda Test należy do klasy First? Musiałbyś w klasie Model utworzyć metodę robiącą za proxy - mogła by to być nawet metoda magiczna:
Tylko... po co? Dlaczego nie zrobisz po prostu:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czy nie dało by się teraz zrobić tak by nazwę klasy podawałoby się jako argument i już ? $obj = eval(sprintf('new %s', $className)); Lecz nie jest to eleganckie rozwiązanie. Wzorzecz Factory może coś Ci pomoże. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Za tego evala to Ci powinni coś odciąć... tak w ramach pokuty. $obj = new $className(); jak już, albo ReflectionAPI.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 2 Dołączył: 6.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
http://wortal.php.pl/wortal/artykuly/php/p...orce_projektowe
powinna cię zainteresować cześć o DI kontenerze ogółem kontenery mogą cię zaciekawić ![]() jeśli wczytywane klasy będą miały wspólny interfejs to łatwo je obsłużyć. na pewno powinieneś zainteresować się refleksją klas metod itp. dokumentacja raczej uboga ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 01:13 |