试图了解名称空间,它似乎不起作用,找不到类

时间:2017-05-25 19:46:05

标签: php namespaces

我似乎无法理解为什么这似乎不起作用。我试图了解名称空间,从书本到计算机,认为这很容易,我已经在这最后一个半小时内被占用了,只是没有得到我做错了什么。

这是合约。

我从我桌面上名为' learning-php'的桌面上的文件夹中运行我的MacBook上的MAMP Pro。 在此文件夹旁边有两个文件。

的index.php /Classes/Person.php

这两个文件如下所示:

文件:index.php

<?php

use Classes\Person;

$person = new Person();

?>

文件:Classes / Person.php

<?php 

namespace Classes;

class Person 
{
//code goes here...
}

?>

这会导致此错误: 致命错误:未捕获错误:班级&#39;班级\人员#39;在/Users/John/Desktop/learning-php/index.php:5中找不到堆栈跟踪:在第5行的/Users/John/Desktop/learning-php/index.php中抛出#0 {main}

2 个答案:

答案 0 :(得分:2)

使用include,它会将整个文件拉入您输入的文件中,这样您就可以在include语句后的任何位置创建该类的实例。您需要有办法找到该文件的完整文件路径,因为它不会从您的应用程序的根目录中获取它。

文档here

include '/Users/John/Desktop/learning-php/Classes/Person.php';
$person = new Person();

答案 1 :(得分:0)

使用这样的东西可以自动加载类。在声明命名空间后,测试只是将它包含在PHP页面的顶部。

<?php

namespace Test;

spl_autoload_register(function($className){

    include '../'.$className.'.php';

});

$obj = new Test(); //this loads from Test/Foo/Bar/Test.php