2012-06-25 83 views
2

我有一個通用類,我希望通過其他類擴展它。在類文件夾外擴展另一個類的PHP類

我有我的目錄下建立文件夾和類文件這些文件夾,例如

類/用戶/ users.class.php 類/普通的內/ general.class.php

我有用戶類擴展了一般類,但由於它們在不同的文件夾中,我猜測一般類沒有找到。

類用戶一般的擴展{

}

是否有人可以幫我搞清楚了這一點。

我還要提到我使用autload功能

+1

嘗試添加「include」../general/general.class.php';「 – alfasin

+0

我想使用擴展的原因是在我的用戶類中使用$ this-> call來自通用 – Yeak

+0

我不理解您的評論。爲了使用「普通」類,您需要加載文件。 – alfasin

回答

8

當你有沒有自動加載那麼之前包括類。

然後這個班是已知的,你可以使用它。

require_once(__DIR__.'/../general/general.class.php'); 
+0

我有一個自動加載器正在運行。 – Yeak

3

您需要確保您加載了所需的類或任何其他類。例如:

在你的引導...:

// Set up the include path so that we can easily access the class files 
set_include_path('/absolute/path/to/classes'. PATH_SEPARATOR . get_include_path()); 
require_once('users/users.class.php'); 

在users.class.php:

​​

至於獲得的絕對路徑你的類文件夾,你會想根據您的引導位置進行配置。例如:

// bootstrap lives in $_SERVER['DOCUMENT_ROOT'] and classes is one level up outside the doc root 
// this code is in the bootstrap... 
$path = realpath(dirname(__FILE__).'/../classes'); 
set_include_path($path . PATH_SEPARATOR . get_include_path()); 
+0

我絕對推薦使用'set_include_path'。 –

+0

所以唯一的方法就是使用require? – Yeak

+0

是的,在某些時候,你總是會做一個'require'。現在你可以(也可以推薦)創建或使用像[Symfony's](http://symfony.com/doc/current/components/class_loader.html)或[Zend's](http:// framework)這樣的現有自動加載組件。 zend.com/manual/en/zend.loader.autoloader.html),但內部它只是將類名映射到文件,然後需要它。 – prodigitalson