Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje w klasie ładowane z zewnętrznych plików
Forum PHP.pl > Forum > PHP > Object-oriented programming
busterek
Witajcie.
Jak zrobić coś takiego. Mam plik php, z definicją klasy. Ale ponieważ funkcji w tej klasie mam już całą masę, chciałbym każdą z nich umieścić w oddzielnym pliku i w jakiś automagiczny sposób ładować je. Wiem, że funkcje include, require nie będą działać. Jak to zrobić poprawnie?
Szymciosek
Pokaż kod i powiedz PO CO ?
busterek
Tu nie chodzi o jakiś problem z kodem, tylko chodzi o rozwiązanie problemu. Czemu bym tak chciał? Stwarza mi się jakiś porządek. W tej chwili wszystko działa poprawnie. Ale przegrzebywanie się przez kilkadziesiąt funkcji sprawia pewien kłopot, a aplikacja nadal się rozrasta. Wpadłem więc na pomysł, stworzenia szeregu plików, w których będę umieszczał każdą funkcję oddzielnie. Dużo łątwiej będzie wtedy nawigować. Problemem dla mnie jest załadować te pliki do klasy, aby były pełnoprawnymi metodami tejże.
W praktyce:
  1. class przykladowaKlasa
  2. {
  3. kod;
  4. }


Co w miejsce kodu, aby wstawiały się zawartości plików funckja1.php, funkcja2.php itd.?
Szymciosek
Dziedziczenie Ci nie pomoże tutaj ? Będziesz miał osobne pliki z klasami, klasy w jedną stronę będą się widzieć, więc będziesz miał prawie jedną wielką klasę w wielu plikach.
busterek
A możesz podać przykład?
Szymciosek
  1. class A
  2. {
  3. public function met1()
  4. {
  5. echo 'met1<br />';
  6. }
  7.  
  8. public function met2()
  9. {
  10. echo 'met2<br />';
  11. }
  12.  
  13. public function met3()
  14. {
  15. echo 'met3<br />';
  16. }
  17. }
  18.  
  19. class B extends A
  20. {
  21. public function met4()
  22. {
  23. echo 'met4<br />';
  24. }
  25.  
  26. public function met5()
  27. {
  28. echo 'met5<br />';
  29. }
  30.  
  31. public function met6()
  32. {
  33. echo 'met6<br />';
  34. }
  35. }
  36.  
  37. class C extends B
  38. {
  39. public function met7()
  40. {
  41. echo 'met7<br />';
  42. }
  43.  
  44. public function met8()
  45. {
  46. echo 'met8<br />';
  47. }
  48.  
  49. public function met9()
  50. {
  51. echo 'met9<br />';
  52. }
  53. }
  54.  
  55. $obj = new C;
  56. $obj->met7(); //output: met7
  57. $obj->met2(); //output: met2
  58. $obj->met4(); //output: met4


Tutaj możesz sobie wkleić i odpalić: http://writecodeonline.com/php/

Dalej to już od Ciebie mogłoby zależeć, które metody potrzebujesz public, które private, a które protected.
Tutaj akurat musiałem zastosować public, bo wszystkie metody wywołuję gdzieś z zewnątrz.
irmidjusz
busterek, nie przenoś samych funkcji do osobnych plików, tylko stwórz nowe klasy w tych plikach i tam przenieś odpowiedni kod. Skoro masz taki problem, to prawie na pewno jest to związane z tym, że Twoja klasa robi zbyt wiele rzeczy na raz, które tak naprawdę są różnymi zadaniami i powinny je wykonywać osobne klasy.
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.