Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przechwycenie momentu utworzenia zmiennej
CuteOne
post
Post #1





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Witam,

na wstępie trochę kodu

1.
  1.  
  2. class A {
  3.  
  4. public function xyz() {
  5.  
  6. $this->a = 'aaa';
  7. }
  8. }
  9.  
  10. $a = new A();
  11. $a -> xyz();


2.
  1.  
  2. class A {
  3.  
  4. public $a='bbb';
  5.  
  6. public function xyz() {
  7.  
  8. $this->a = 'aaa';
  9. }
  10. }
  11.  
  12. $a = new A();
  13. $a -> xyz();

i pytanie - czy istnieje, możliwość przechwycenia z zewnątrz, momentu zainicjowania(1) $this->a lub zmiany jego wartości(2)?

EDIT: __set() nie wchodzi w grę

Ten post edytował CuteOne 9.11.2012, 16:18:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Twoje rady jak zawsze trafiają w dziesiątkę! Dziękuje bardzo za pomoc, teraz muszę ponownie zrobić remanent swoich pomysłów - zajmie to pewnie z tydzień, dwa. W razie wątpliwości mam nadzieję, że użyczysz mi swojej fachowej wiedzy.

Jeszcze raz dziękuję i pozdrawiam


Edit:

Wstępny projekt architektury aplikacji już mam
(IMG:http://img528.imageshack.us/img528/4803/framestruct.png)
Legenda:
- EventDispatcher pochodzi z Symfony2
- ED skrót od EventDispatchera
- Plugin Manager - rejestruje wszystkie akcje pluginów do ED
- Resource Manager - standardowy Zendowski loader (lekko zmodyfikowany)
- ViewAction - renderowanie widoku

Kolejność ładowania klas od lewej do prawej, z góry na dół.

Nadal jednak nie rozwiązałem problemu zmiany modeli ;P W teorii bez problemu można wstrzyknąć modelX, Y, Z ale przy rozbudowanych akcjach będzie to wyglądało dość komicznie
  1. $class = new IndexController();
  2. $class -> viewAction(
  3. new ModelA,
  4. new ModelB,
  5. new ModelC,
  6. new ModelD,
  7. new ModelE
  8. ),
  9. new ServiceA,
  10. new ServiceB,
  11. new ServiceC
  12. )
  13. );

Drugim problem jest brak kontroli nad wstrzykiwanymi modelami
  1. // Tak jest elegancko
  2. interface IndexInterface {
  3.  
  4. public function viewAction(ModelX $modelX, ModelY $modelY);
  5. }
  6.  
  7. // a tu nie bardzo :)
  8. interface IndexInterface {
  9.  
  10. public function viewAction(array $models, array $services);
  11. }



Dzisiaj poświęcę parę godzin nad studiowaniem wzorców, może znajdę rozwiązanie tego problemu

Ten post edytował CuteOne 15.11.2012, 09:36:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 00:27