我似乎无法理解为什么这似乎不起作用。我试图了解名称空间,从书本到计算机,认为这很容易,我已经在这最后一个半小时内被占用了,只是没有得到我做错了什么。
这是合约。
我从我桌面上名为' 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}
答案 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