2010-08-29 2 views
0

C: \ XAMPP \ HTDOCS содержит controller.php и ApplicationHelper.php. C: \ xampp \ htdocs \ сайт содержит index.php.Имея проблему с пространствами имен и set_include_path() в PHP

Здесь ошибка я получаю:

Фатальная ошибка: Class 'сайт \ контроллер \ ApplicationHelper' не найден в C: \ XAMPP \ HTDOCS \ controller.php на линии 17

I «новичок во всем бизнесе в пространствах имен, но я не уверен на 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() { 

    } 

} 

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

ответ

1

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

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

Спасибо. Я понимаю это сейчас. – birderic

+0

Было бы предпочтительнее размещать это в index.php или каждом классе, который его использует? – birderic

Смежные вопросы