【问题标题】:Having a problem with namespaces and set_include_path() in PHPPHP 中的命名空间和 set_include_path() 存在问题
【发布时间】:2010-08-29 04:08:57
【问题描述】:

C:\xampp\htdocs 包含 Controller.phpApplicationHelper.phpC:\xampp\htdocs\site 包含 index.php

这是我得到的错误:

致命错误:在第 17 行的 C:\xampp\htdocs\Controller.php 中找不到类 'site\controller\ApplicationHelper'

我是整个命名空间业务的新手,但我不能 100% 确定这就是它背后的原因。即使我将包含路径设置为在该文件夹中查找,它似乎也没有找到 ApplicationHelper.php。如果我在 Controller.php 中直接包含 ApplicationHelper.php,它会起作用。这是(相关的)代码:

index.php

set_include_path(get_include_path() . PATH_SEPARATOR . 'C:\xampp\htdocs');

require('Controller.php');
\site\controller\Controller::run();

Controller.php

namespace site\controller;

class Controller {

    private $applicationHelper;
    private function __construct () {}

    static function run () {
        $instance = new Controller();
        $instance->init();
    }

    function init () {
        $applicationHelper = ApplicationHelper::instance();
        $applicationHelper->init();
    }

}

ApplicationHelper.php

namespace site\controller;

class ApplicationHelper {

    private static $instance;

    private function __construct () {}

    static function instance () {
        if (!self::$instance) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    function init() {

    }

}

感谢您的帮助!

【问题讨论】:

    标签: php namespaces set-include-path


    【解决方案1】:

    您需要包含 ApplicationHelper.php 或使用自动加载器。

    function __autoloader($class_name)
    {
        include  $class_name . "php";
    }
    

    【讨论】:

    • 谢谢。我现在明白了。
    • 将它放在 index.php 或每个使用它的类中更好吗?
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多