Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> __get __ set static i array
g00fy
post 23.07.2005, 14:40:29
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 23.11.2004

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


W moim zamierzeniu ma powstać coś takiego:
  1. <?php
  2.  
  3. Core::LoadModule('modul','NazwaKlasy');
  4. //operowanie na module
  5. Core::modul->info();
  6.  
  7. ?>

Pytanie , czy to w ogole możliwe??
oto kod ktory niby jakoś działa, ale nie tak jak chcę
  1. <?php
  2. class Core{
  3. public static $modules= array();
  4.  
  5. public static function LoadModule($module,$var){
  6. self::$modules[$module]=$var;
  7. }
  8. public static function GetModule($module){
  9. return self::$modules[$module];
  10. }
  11. }
  12.  
  13. $core= new Core();
  14. $core->LoadModule('sklep','ok');
  15. echo $core->GetModule('sklep');
  16. Core::LoadModule('sklep','kicz');
  17. echo Core::GetModule('sklep');
  18. ?>


chciałem zrobic to tak , by w Core był array przechowujący moduły , a __get i __set pozwalały na dostęp do niego , niestety , to nie działa ... (WHY??)

i pytanie , czy to w ogole jest sensowne rozwiązanie questionmark.gif

Chodzi o to , że gdy zrobie ,
  1. <?php
  2.  
  3. Core::LoadModule('modul','klasa');
  4. Core::$modul->info();
  5.  
  6. ?>


to php szuka Core::$modul , a nie wywola przeciazen (__set i __get)...

da sie jakos to oszukać??

Ten post edytował g00fy 23.07.2005, 14:50:20
Go to the top of the page
+Quote Post
Nievinny
post 23.07.2005, 18:53:10
Post #2





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 27.01.2005
Skąd: Białystok

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


Niestety, przeciążenie działa tylko przy danych niestatycznych...


--------------------
Go to the top of the page
+Quote Post
splatch
post 28.07.2005, 13:48:04
Post #3





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Hm... nie rozumiem pojęcia przeciążenie w tym kontekście. Przeciążenie dla mnie ma miejsce wtedy gdy w klasie są zdefiniowane metody o tej samej nazwie lecz o innych parametrach.

Co do kodu. Możesz spróbować:
  1. <?php
  2. Core::loadModule('modul','klasa');
  3. Core::load()->method();
  4. ?>

W loadModule ustawiasz self::$module a w load zwracasz odpowiedni obiekt.


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
aleksander
post 28.07.2005, 14:01:09
Post #4





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


to jest takie phpowe przeciążanie biggrin.gif
Takiego typowego z javt niestety nie ma, mamy zato __get __set i __call
Go to the top of the page
+Quote Post
dag
post 30.07.2005, 00:33:28
Post #5





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

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


Gdzieś był mój wątek na ten temat i było kilka rozwiązań. Niestety nie da się w elegancki sposób tego rozwiązać, pozostaje droga na obkoło, ach te php. Chyba w php 5.1 da się osiągnąć to co chciałem bo pozwala na zwrócenie referencji prywatnego obiektu. Poszukaj na Forum mojego wątku.


--------------------

------------------------------------------------------------------------------------------------------
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: 20.07.2025 - 10:27