Возникли проблемы с пространствами имен и set_include_path () в PHP - PullRequest
0 голосов
/ 29 августа 2010

C: \ xampp \ htdocs содержит Controller.php и ApplicationHelper.php . C: \ xampp \ htdocs \ site содержит index.php .

Вот ошибка, которую я получаю:

Неустранимая ошибка: Класс 'site \ controller \ ApplicationHelper' не найден в C: \ xampp \ htdocs \ Controller.php в строке 17

Я новичок во всем бизнесе с пространствами имен, но я не на 100%уверен, что это то, что стоит за этим.Просто кажется, что он не находит ApplicationHelper.php , хотя я установил включаемый путь для просмотра в этой папке.Это работает, если я непосредственно включаю ApplicationHelper.php в Controller.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() {

    }

}

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 29 августа 2010

Вам необходимо включить ApplicationHelper.php или использовать автозагрузчик.

function __autoloader($class_name)
{
    include  $class_name . "php";
}
0 голосов
/ 29 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...