Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tworzenie metod dostępowych przy użyciu komentarzy
ZiaRek
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 25.09.2013

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


Witam serdecznie, przerabiam książkę o zaawansowanym programowaniu w PHP, i utkwiłem w jednym miejscu.

Jak programuje się funkcję która korzysta z komentarzy, tzn:

  1. class Example
  2. {
  3. /**
  4.  *@readwrite
  5.  */
  6. protected $_pierwsza;
  7.  
  8. /**
  9.  *@read
  10.  */
  11. protected $_druga
  12. }
  13.  
  14. $example = new Example();
  15. $example->setPierwsza("obojetnie")->setDruga("nieistotne");
  16. echo $example->getPierwsza();


Jak napisać do tego metodę która "czyta" komentarze i w zależności od flagi @read lub @readwrite sprawdza czy można użyć automatycznej metody dostępowej za pomocą __call bez pisania dla każdej zmiennej oddzielnych metod dostępowych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Przede wszystkim dlaczego nie zrobisz normalnych getterów/setterów? Będą pod każdym względem lepsze od tego co próbujesz tutaj osiągnąć.

Wracając do tematu. Da się to częściowo osiągnąć. Musiałbyś stworzyć narzędzie, które byłoby wstanie wyciągnąć adnotacje z kodu, utworzyć nową klasę która dziedziczyła by po bazowej, a która posiadałaby metody dostępowe. Oczywiście wiązałoby się to z pewnymi ograniczeniami, ale jako tako zapewne działałoby. Ostateczne użycie kodu wyglądałoby tak:
  1. $someFactory = ...;
  2.  
  3. $example = $someFactory->newInstance('Example');
  4. $example->setPierwsza('...')->setDruga('...');
  5.  
  6. var_dump($example); // jakaś klasa typu ABCDEF___AUTOGENERATED___Example
Jednak będzie to powodowało jedynie więcej problemów niż pożytku.
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: 27.12.2025 - 08:28