PHP - 命名空间无法正常工作

标签 php namespaces composer-php runtime-error

我在带有 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/

相关文章:

c++ - 什么是类内命名空间的良好替代方案?

php - 无法在 PHP 7 中加载类 php-ds 类,因为我收到 fatal error :class not found

php - 在php中检查带有空格的函数

php - 将 mysql 时间戳转换为来自 Code igniter 的实际时间 mm dd yyyy hh mm

namespaces - Kubernetes pod 中的容器之间共享哪些命名空间?

python - 制作一个 Python 脚本来加载目录中的所有 npy/npz 文件

symfony - 如何避免 symfony 4 在 src 中创建默认文件夹

php - Composer - 使用两个不同版本的 Guzzle

php - 如何优化 MySQL (CentOS)

PHP:Gmail 的邮件包含无效的 HTML 和随机行话