Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcje w klasie ładowane z zewnętrznych plików
busterek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Szymciosek
post
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Pokaż kod i powiedz PO CO ?
Go to the top of the page
+Quote Post
busterek
post
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

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


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.?
Go to the top of the page
+Quote Post
Szymciosek
post
Post #4





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


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.
Go to the top of the page
+Quote Post
busterek
post
Post #5





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

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


A możesz podać przykład?
Go to the top of the page
+Quote Post
Szymciosek
post
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  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.
Go to the top of the page
+Quote Post
irmidjusz
post
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


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.


--------------------
there is much to be learned
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 10:28