Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]require_once i define
Forum PHP.pl > Forum > PHP
bliitz
Przykładowa struktura katalogów i plików:
Kod
   ./
    |
     ----- /class
             |db.conf.php
             |extPDO.class.php
    ./test.php


Jako, że pliki db.conf.php i extPDO.class.php znajdują się w tym samym katalogu to w pliku extPDO.class.php jest kod:
  1. <?php
  2. define( DBCONFIG, 'db.conf.php' );
  3.  
  4. if( file_exists( DBCONFIG ) == FALSE OR defined( 'DBCONFIG' ) == FALSE )
  5.            throw new Exception( 'Cannot load config file.' );
  6. ?>


Natomiast w pliku test.php, który jest jeden poziom nad katalogiem class znajduje się kod:
  1. <?php
  2. require_once( 'class/extPDO.class.php' );
  3. try{
  4.    $pdo = new extPDO();
  5. }
  6. catch( Exception $e ){
  7.    echo $e->getMessage();
  8. }
  9. ?>

Wywołanie tego powoduje błąd 'Cannot load config file.', pomaga zmiana w pliku extPDO.class.php
  1. <?php
  2. define( DBCONFIG, 'db.conf.php' );
  3.  
  4. na
  5.  
  6. define( DBCONFIG, 'class/db.conf.php' );
  7. ?>

ale przecież nie będe zmieniał tej ścieżki za każdym razem jak z różnych plików będe wywoływał tą klasę. Dlaczego zmieniać trzeba ścieżkę w define skoro położenie pliku db.conf.php nie zmienia się względem extPDO.class.php?
W jaki sposób można to zrobić żeby prawidłowo działało bez względu na położenie pliku test.php?
Noddi
  1. <?php
  2. define( DBCONFIG, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'db.conf.php' );
  3. ?>
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.