2013-11-05 277 views
0

我遇到包含/需要路徑的問題。由於代碼風格是OOP,所以在子類化時會出現問題,因爲該路徑相對於第一個包裝文件。例如:PHP包含子類路徑

// path: /class/entity/A.class.php 
class A { /*definition*/ } 


// path: /class/widget/B.class.php 
require_once("../model/entity/A.class.php"); 
class B extends A { /*definition*/ } 


// path /ajax/some_request.php 
require_once("../class/widget/B.class.php"); 
//.. some code to execute 

的問題是,由於需要路徑是相對於some_request.php,也不會找到A.class.php因爲路徑將結束是/model/entity/A.class.php,它應該是/class/model/entity/A.class.php

回答

2

您可以使用相對路徑要做到這一點(你已經在那裏):如果你想上去兩個目錄

你會怎麼做:

require_once("../../path/to/my/file.php");

從您的結構,它看起來像你想是這樣的:

require_once("../../../classes/model/entity/A.cass.php");

我缺少從你的問題的東西嗎?

1

使用

$path = dirname(dirname(__FILE__))."/my/path"; 

從當前文件的父目錄的尊重。以您的代碼爲例...

// path: /class/model/entity/A.class.php 
class A { /*definition*/ } 

// path: /class/widget/B.class.php 
require_once(dirname(dirname(__FILE__))."/model/entity/A.class.php"); 
class B extends A { /*definition*/ } 


// path /ajax/some_request.php 
require_once(dirname(dirname(__FILE__))."/class/widget/B.class.php"); 
//.. some code to execute