Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php, klasa, includowanie pliku w klasie
Forum PHP.pl > Forum > PHP
deniol13
Witam, mam klasę, ma ona metodę która includuje plik przyjęty z parametru $file. Jeśli bezpośrednio z metody chcę wyświetlić coś z includowanego pliku to działa, ale jeśli najpierw wywołam metodę z obiektu klasy a potem próbuję echo'wać tą zmienna to już nie działa, nie wiem dlaczego
outsider
wklej kawalek kodu, bo nie za bardzo wiem o co Ci chodzi
deniol13
mam klase i jej metode

  1. public function loadCache( $file )
  2. {
  3. if( $file )
  4. {
  5. if( file_exists( './cache/' . $file ) )
  6. {
  7. if( is_writeable( './cache./' ) )
  8. {
  9. include_once( './cache/' . $file );
  10. if( $timeout < time() )
  11. {
  12. $this->deleteCache( $file );
  13. }
  14. }
  15. }
  16. }
  17. }


dziala, no, prawie bo dajmy na to ze jako parametr podam plik.php, zrodlo pliku plik.php wyglada tak

  1. <?php
  2.  
  3. $timeout = "123456";
  4.  
  5. ?>


a plik index.php

[cos]
$cache = new Cache;
$cache->loadCache( 'plik.php' );
echo $timeout;

[cos

i nic sie nie pokazuje ale jak do metody dopisze to echo $timeout to tak, tylko że ja mogę chcieć wyświetlić różne dane z różnych plikow a nie zdefiniuje wszystkiego
zegarek84
poczytaj może w pierw o zasięgu zmiennych i o include/require [prawie jeden czort]... pomijając to include u Ciebie będzie to wyglądało tak:
  1. public function loadCache( $file ){
  2. if( $file ){
  3. if( file_exists( './cache/' . $file ) ){
  4. if( is_writeable( './cache./' ) ){
  5. $timeout = "123456";
  6. if( $timeout < time() ){
  7. $this->deleteCache( $file );
  8. }
  9. }
  10. }
  11. }
  12. }
u Ciebie includowany plik nic nie zwraca ani przez echo ani przez opuszczenie kodu php...
można zrobić by include zwracało jakąś wartość do zmiennej ale tego nie preferuję - jeśli gdzieś includuję plik w metodzie gdzie zawsze może być inny i całkiem co innego przedstawiać [w sensie, że ten inkludowany plik mało ma wspólnego z głównym ciałem obiektu/funkcji] to najczęściej przy widokach a wygenerowaną treść z tego pliku przechwytuję do zmiennej w ten sposób:
  1. private function getWynik($file) {
  2. if (file_exists($file)) {
  3. include $file;
  4. $this->wynik = ob_get_contents();
  5. }else{
  6. throw new Exception('Nie można odnaleźć pliku w lokalizacji:'.$file);
  7. }
  8. }

zwróć uwagę na funkcje ob_start, ob_get_contents i ob_end_clean... tutaj akurat nie zwracałem w tej metodzie wyniku tylko przypisywałem do zmiennej ale nic nie stoi na przeszkodzie by zamiast $this->wynik przypisać wartość do wewnętrznej zmiennej $wynik po czym na końcu metody zwrócić przez return $wynik;
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.