Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] Dynamiczne tworzenie metod
Crozin
post
Post #1





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

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


Mam sobie jakas klase (oczywiscie to tylko schemat (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ):
  1. <?php
  2. class Cos{
  3. //pola
  4.  
  5. public function a(){}
  6. public function b(){}
  7. public function c(){}
  8. public function d(){}
  9. //i jeszcze kilka...
  10. }
  11. ?>

zawartosc metod jest dosc dluga, a musze teraz dodac jeszcze kilka/kilkanascie, nie chce robic klasy ktora bedzie zbym dluga (pod wzgledem linijek) głównie za wzgledu na czytelnosc... bardzo wyglodnym rozwiazaniem bylo by zapisanie kilku metod w osobnych plkach, jednak powstaje tu pewnen probelm :/ Nie znalazlem niczego co by umozliwiało zrobienie czegos takiego:
  1. <?php
  2. class Klasa{
  3. //pola
  4.  
  5. public function a(){}
  6. public function b(){}
  7. public function c(){}
  8.  
  9. include('metodaD.php'); 
  10. }
  11. ?>

przeszukalem manual (Function Handling Functions) ale niczgo nie znalazlem... moglbym robic to w ten sposob:
  1. <?php
  2. //....
  3. public function d(){
  4. include('metodaD.php');
  5. }
  6. ?>
ale to jest ostateczne rozwiazanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Tak wiec... czy istnieje sposob na "dynamiczne" stworzenie, ale wczytanie z innego pliku metod?

Ten post edytował Crozin 10.04.2007, 14:35:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Tyle, że ta koncepcja nie akceptuje elementów prywatnych. I nie możesz w ten sposób implementować metod magicznych, bo php tego nie rozpozna. Nie będzie również działać z interfejsami/całym zaawansowanym OOP. Pozdrawiam.
  1. <?php
  2.  
  3. function XXXtest($self)
  4. {
  5. print $self->var;
  6. }
  7.  
  8. $XXXMethodsList=array(
  9. 'test'=>'XXXtest'
  10. );
  11.  
  12. class XXX
  13. {
  14. public $var='XXX';
  15. public function __call($_fname, $_fargs)
  16. {
  17. global $XXXMethodsList;
  18. if(!is_array($_fargs)) $_fargs=array();
  19. array_unshift($_fargs, &$this);
  20. if(isset($XXXMethodsList[$_fname])) return call_user_func_array($XXXMethodsList[$_fname], $_fargs);
  21. }
  22. }
  23.  
  24. $test=new XXX();
  25. $test->test();
  26.  
  27. ?>


Ten post edytował Jabol 10.04.2007, 17:42:23
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: 7.10.2025 - 16:25