Ale jak się okazuje w require_once nie da się chyba ich używać a przynajmniej takiego zapisu
<?php require_once('../../somefile.php'); ?>
Zapis ten nie spowoduje wyjścia o dwa katalogi w górę i nie załaduje pliku. Why?
Przykład:
Mamy taki układ katalogów:
Kod
Lib
|
|-Database
| |
| |-Mysql
| | |-Mysql.class.php
| |
| |-Postgresql
| | |-Postgresql.class.php
| |
| |-Database.interface.php
|
|-index.php
|
|-Database
| |
| |-Mysql
| | |-Mysql.class.php
| |
| |-Postgresql
| | |-Postgresql.class.php
| |
| |-Database.interface.php
|
|-index.php
Plik index.php
<?php require_once('Database/Mysql/Mysql.class.php') (...) ?>
Plik Mysql.class.php
<?php require_once('../Database.interface.php'); class Mysql implements Database { } ?>
Plik Database.interface.php
<?php interface Database { } ?>
W momencie wykonywania require_once('../Database.interface.php'); zostanie wywalony błąd :/
--------------------------------------------------------------------------------------
EDIT: Już wiem. Bo katalogiem źródłowym jest Lib. Ale i tak require_once dziwnie się zachowuje.
Załóżmy, że mamy taki układ katalogów:
Kod
Lib
|
|-Database
| |
| |-Mysql.class.php
| |
| |-Interface
| |-Database.class.php
|
|
|-index.php
|
|-Database
| |
| |-Mysql.class.php
| |
| |-Interface
| |-Database.class.php
|
|
|-index.php
Jeśli w pliku index.php zapiszemy:
<?php require_once('Database/Mysql.class.php'); ?>
a w pliku Mysql.class.php zapiszemy:
<?php require_once('Interface/Database.class.php'); ?>
to plik Database.class.php zostanie załadowany, pomimo tego, że katalogiem źródłowym jest lib a nie lib/Database! php sobie dołącza sam czyli pisząc: require_once('Interface/Database.class.php') php traktuje to tak jakbysmy napisali require_once('Database/Interface/Database.class.php') :/
Czy ktoś wie dlaczego? Troche to dziwne i może wprowadzać w błąd..