Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasy + require_once
Forum PHP.pl > Forum > PHP > Object-oriented programming
JacekQ
Witam,
Właśnie próbuję sobie zrobić klase (właściwie to już ją zrobiłem) ale wpadłem na pomysł żeby klasa wyglądała ładniej i pojawiły się problemy sad.gif
Pomysł polega na tym żeby każda metoda była w oddzielnym pliku dołączanym do pliku klasy - wtedy plik klasy jest o wiele mniejszy i bardziej czytelny.

  1. <?php
  2.  
  3. // plik klasa.php
  4.  
  5. class Klasa {
  6. private $Sciezka = &#092;"klasa/\"; // sciezka do katalogu z metodami
  7.  
  8. function __construct() {
  9. require_once($this->Sciezka . &#092;"__construct.php\");
  10. }
  11.  
  12. function __destruct() {
  13. require_once($this->Sciezka . &#092;"__destruct.php\");
  14. }
  15.  
  16. function metoda() {
  17. require_once($this->Sciezka . &#092;"metoda.php\");
  18. }
  19. }
  20.  
  21. ?>


W katalogu .../htdocs/klasa/ są wszystkie pliki dla require_once ale problem polega na tym że jeżeli jawnie nie wywołam destruktora:

  1. <?php
  2.  
  3. require &#092;"./klasa.php\";
  4.  
  5. $obiekt = new klasa();
  6. // ...
  7. unset($obiekt);
  8.  
  9. ?>


To pojawiają się warrningi failed to open stream.

Wywołanie metody nie powoduje błędu ale metoda zachowuje się tak jak by była pusta (nic nie robi) sad.gif

Nie mam zielonego pojęcia dlaczego tak się dzieje sad.gif

Dzięki za odpowiedzi.
DeyV
Niestety - ale nie jest możliwe wyciągnięcie jakiegoś fragmentu klasy do innego pliku.

Można co prawda wyciągnąć fragment kodu do osobnej funkcji, musi jednak ona stanowić samodzielną całość, jako fragment kodu lub funkcja - bez możliwości odwoływania się do this i do innych właściwości konkretnej klasy.
JacekQ
Dzięki za szybką odpowiedź ...
A mogło być tak pięknie smile.gif
Imperior
JacekQ: Nie masz się czym przejmować...
Każda klasa w osobnym pliku - to rozumię... ale żeby każda metoda?
Każdy ma swoje motywy i upodobania, ale czytelność nie jest argumentem tego działania. Porządny edytor ma 'code folding', 'object inspector' które to funkcje szybko zabiorą Cię w wybrane miejsce i pozwolą ogarnąć całą klasę...

To było takie małe IMHO
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.