我在带有 php 5.6.24 的 Windows 7 上使用 xampp。我对 php 命名空间有疑问。
我的项目目录如下所示:
-project
+ config
- Framework
+ database
+ Expection
test.php
+ src
index.php
我在 Framework/test.php 中有一个 php 文件,它包含以下代码:
<?php
namespace Framework\Test;
echo " i Am in test.php class";
class Test{
public function __construct(){
echo "I m from test classs ";
}
public function test_method(){
echo " No";
}
}
在我的根目录中有 index.php、composer.json
我的 composer.json 有自动加载对象
"autoload": {
"psr-4": {
"Framework\\": "Framework/"
},
"files": [
"src/Helpers/ArrayHelpers.php"
]
},
在我的 index.php 中,我有以下代码:
<?php
echo "<pre>";
require __DIR__ . '/vendor/autoload.php';
use Framework\Test;
$n = new Test;
print_r($n);
当我在浏览器上运行 index.php
文件时,我得到了响应:
i Am in test.php class;
Fatal error: Class 'Framework\Test' not found in C:\xampp\htdocs\project\index.php on line 12
我不知道我做错了什么?我的命名空间是错误的吗?但是我如何从该文件中得到 echo ?为什么 ?怎么了?我的 Composer 文件错了吗?
提前致谢。
最佳答案
Test
类的命名空间只是Framework
,(因为它也位于Framework 文件夹中)所以尝试更改Test.php 如下:
<?php
namespace Framework;
echo " i Am in test.php class";
class Test{
public function __construct(){
echo "I m from test classs ";
}
public function test_method(){
echo " No";
}
}
希望对你有帮助
关于PHP - 命名空间无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636239/