Ok!!! Теперь я меньше понимаю, почему spl_autoload_register () не может загрузить класс.
Моя структура папок такая ..
заявление
- controller
- welcome.php
- controller
система
- core
- BaseController.php
- Load.php
- core
index.php
Мой код BaseController.php
<?php
namespace system\core;
class BaseController {
public function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($className) {
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strrpos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
}
}
Мой код Load.php
<?php
namespace system\core;
class Load {
public function view()
{
echo "Method for loading view";
}
}
Мой код welcome.php
<?php
class Welcome extends system\core\BaseController {
public function index()
{
$obj_load = new Load();
$obj_load->view();
}
}
Мой код index.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
require_once "system/core/BaseController.php";
require_once "application/controller/welcome.php";
$welcome = new welcome();
echo $welcome->index();
Когда я выполняю этот код (index.php), я получаю следующую ошибку ...
Fatal error: Class 'Load' not found in /var/www/nut/test/application/controller/welcome.php on line 5
Но если я удалю пространство имен из Load.php, я не получаю никаких ошибок. Я не могу понять, почему это пространство имен (используемое в Load.php) создает ошибку.
Любая мысль ...
С Уважением
system\core\Load
; вы пытаетесь загрузить'system/core/'.$className . '.php';
, который соответствует файлу с именем _3 _.... - person Mark Baker   schedule 13.07.2014