Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: __get __ set static i array
Forum PHP.pl > Forum > PHP > Object-oriented programming
g00fy
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ć??
Nievinny
Niestety, przeciążenie działa tylko przy danych niestatycznych...
splatch
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.
aleksander
to jest takie phpowe przeciążanie biggrin.gif
Takiego typowego z javt niestety nie ma, mamy zato __get __set i __call
dag
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.
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.