【问题标题】:Native php. Not works namespace use本机 php。不工作命名空间使用
【发布时间】:2016-08-01 17:03:45
【问题描述】:

我在我的项目中使用命名空间。但命名空间不起作用。

文件 index.php

use \Folder\Aa;
Aa::test();
$test = new Aa();

文件夹/Aa.php

namespace  Folder;
class Aa
{
    static function test()
    {
        $a = 3;
        echo $a;
    }
}

给我写信致命错误:在 /home/ademidko/www/first.local/index.php 中找不到类 'Folder\Aa'

我在 Аа.php 中更改命名空间,写“使用 \Folder”和其他 -> 但不起作用

【问题讨论】:

  • 在这里对我来说很好:3v4l.org/rBuUu 你是否在index.php 中包含/要求Folder/Aa.php
  • 是否需要Aa.php 或以其他方式自动加载?
  • use 只处理 命名空间。它与管理文件和/或加载文件无关。
  • 在手册中写关于符号链接php.net/manual/ru/language.namespaces.importing.php
  • 你可能误解了它在说什么。 use aliases 命名空间名称。也许这就是您从中获得“符号链接”的地方。它与文件无关。

标签: php namespaces


【解决方案1】:

PHP 自身不会动态加载类。为了让您能够使用您的课程,您的代码必须如下所示:

require_once('Folder/Aa.php');
use \Folder\Aa;
Aa::test();
$test = new Aa();

在不手动编写requirerequire_once 的情况下,有许多可能的方法来完成这项工作。其中之一是使用 composer 的自动加载功能(详细信息可以在这里找到:https://getcomposer.org/doc/04-schema.md#psr-4)。 你也可以考虑编写你自己的自动加载器(更多细节在这里:http://php.net/manual/en/function.spl-autoload-register.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多