2014-11-25 75 views
-2

我不使用至今PHP使用的詞,但現在必須... :)PHP導入類與使用關鍵字

的index.php內容:

require_once 'Classes/MainClass.php'; 
$obj = new Main(); 
echo $obj->test(); 

類/ MainClass .PHP

<?php 

use AdminFrontEnd; 

class Main { 


    function test(){ 

     return new AdminFrontEnd("debug"); 

    } 

} 

AdminFrontEndClass.php內容:

<?php 

class AdminFrontEnd { 

    function __constuctor($test){ 

     echo $test; 

    } 
} 

和決賽,以下錯誤:

Fatal error: Class 'AdminFrontEnd' not found in Classes/MainClass.php on line 10

感謝您的幫助!

+3

'use'僅用於別名化命名空間。它不會用代碼加載文件。您仍然需要使用'require'或自動加載來做到這一點。 – deceze 2014-11-25 11:07:36

回答

1

根據@deceze的評論,您需要使用require語句或自動加載來顯式導入附加類。

use語句用於別名的類別,正如@deceze所說,可用於從不同名稱空間拉入類,或避免類衝突。

擁有一個名爲「Main」的類可能並不理想。它是單身人士,還是會有多個'Main's?
也許這個類會更好地命名爲'應用'。

從更長遠的角度來看,您將需要了解如何使用名稱空間,以便如果您使用其他人的類和插件,則不會發生衝突。我已經添加了一個解決方案,還有一些更廣泛的信息。

爲了讓你擺脫困境:

類/ MainClass.php

<?php 

require_once 'Classes/AdminFrontEnd.php'; 

class Main { /* etc... */ 


進一步閱讀,我會建議:創建一個自動加載

例子:

http://php.net/manual/en/language.oop5.autoload.php

你可能想了解的命名空間太:

http://php.net/manual/en/language.namespaces.php

我也強烈建議你閱讀有關互操作性的編碼標準。首先需要付出很多,但它會幫助您理解使用名稱空間和自動加載器的邏輯。

http://www.php-fig.org/