PHP导入类与使用关键字

PHP导入类与使用关键字

问题描述:

我不使用至今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

根据@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/