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%)
-----


Zrobiłem małą inwentaryzację swoich pomysłów "jak pluginować pluginy" i doszedłem do kilku wniosków:
- pisanie nowych pluginów musi być równie proste jak pisanie zwykłych modułów (ameryki nie odkryłem ale to chyba będzie największe wyzwanie przy pisaniu systemu)
- każdy kontroler, model czy widok musi posiadać odgórnie wyznaczone miejsca dostępu (hooki) dla danych wrażliwych(widać bez obserwatora się nie obejdzie (IMG:style_emoticons/default/wink.gif) )
- każdy moduł(pseudopligin) musi posiadać własne API, dzięki czemu możliwe będzie sterowanie modułem przy użyciu innego modułu. Nad tą kwestią muszę się jeszcze zastanowić - co, jak i gdzie (IMG:style_emoticons/default/smile.gif)
- idąc Twoją radą zrezygnuje z możliwości manipulowania zmiennymi danych metod.
- rozszerzanie pluginu przez inny plugin (tak jak w akcji Comments->viewAction() => BBCode->view()), będzie możliwe poprzez:
1. Nadpisanie metody
2. Hooki
3. Before i After
4. Za pomocą serializacji obiektu i zmianach struktury przed jego deserializacją (do przemyślenia)
5. Za pomocą API

Zostało jeszcze parę(naście) kwestii do przemyślenia ale to już pierdółki. Teraz zastanawiam się w jaki sposób uaktualniać już zainstalowane pluginy - wsteczna kompatybilność i te sprawy. Gdyby istniała, możliwość dziedziczenia metod rodzica przez dziecko bez ingerencji w kod..

Co do BBCode to tylko przykład (IMG:style_emoticons/default/smile.gif) wybrałem go bo najlepiej obrazuje w jaki sposób jeden plugin, może ingerować w dane innego pluginu.

Pozdrawiam i dziękuję za Twoje rady

Edit: co do Event Dispatchera to nie mam na jego temat wystarczającej wiedzy abym mógł napisać "profesjonalny" system - pracuje na Zend 1.x.x, może za jakiś czas zagłębie się w niego dokładniej gdy będę przechodził na Zenda 2.

Ten post edytował CuteOne 10.11.2012, 21:34:04
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: 6.10.2025 - 17:12