Возможно ли добавить? (namespace)

1. KpuTuK (26.01.2014 / 20:32)
Добрый вечер))
Есть такой код:
<?php

define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
set_include_path(DOCROOT);
spl_autoload_extensions('.php');
function my_autoload($class) {
  $path = str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php';
  require_once($path);
}
spl_autoload_register('my_autoload');

?>
далее я вызываю класс Test находящийся в DOCROOT/system/classes/Test.php
<?php

use system\classes\Test;
new Test();

?>
Но мне хотелось бы видеть use CM\system\classes\Test;
Возможно "замутить" такое??

2. Артур (26.01.2014 / 20:54)
не понял задачи

3. KpuTuK (26.01.2014 / 21:01)
2. Башка, ну я хочу добавить перед всеми пространствами имен CM тоесть
<?php
namespace system\classes;
?>
Должна превратиться в
<?php
namespace CM\system\classes;
?>


4. Артур (26.01.2014 / 21:07)
Перемести тогда все в каталог CM или поменяй автозагрузчик так:
<?php
function my_autoload($class) {
  $path = '\CM'.str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php';
  require_once($path);
} 


5. KpuTuK (26.01.2014 / 21:11)
4. Башка, в том то все и дело что структуру я хочу оставить как есть))

Добавлено через 02:02 сек.
Дабы не плодить тем отпишу здесь....
поменял автозагрузчик на
spl_autoload_register(function ($class) {
    require_once str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php';
});
Выдало Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2619240345 bytes) in /var/www/kputu258/data/www/srv16.ru/system/CodeMania.php on line 10

6. Артур (26.01.2014 / 21:20)
Что то ты левое подключаешь, и зачем используешь DIRECTORY_SEPARATOR?

7. KpuTuK (26.01.2014 / 21:31)
6. Башка,
не подключаю)) ниже скрипт))
так в виндовс разделитель \ а в остальных /

8. Артур (26.01.2014 / 21:36)
винда нормуль работает и с / на сколько я помню
И что я должен увидеть в этом архиве?

Добавлено через 03:38 сек.
Подозреваю что у тебя там рекурсивная ссылка, от того и повисает

9. KpuTuK (26.01.2014 / 21:40)
8. Башка, то что лишнего там нет ничего))
Значит хомяк чтото подключает....

10. Артур (26.01.2014 / 21:42)
Я не хочу у себя запускать твой скрипт, но тебе посоветовал бы написать в функции автоподключения:
function custom_autoload($className) {
$path = str_replace('\\', DIRECTORY_SEPARATOR, $className).'.php';
echo $path;
require_once($path);
}

11. KpuTuK (26.01.2014 / 21:45)
10. Башка,
var_dump($path);
string(24) "system/classes/Route.php"
все ок... класс Route пуст

12. Артур (26.01.2014 / 21:56)
не ну мало просто require_once("system/classes/Route.php"), там же еще нужен корень системы, что то типа "/var/www/site.com/system/classes/Route.php"

Добавлено через 02:00 сек.
да и не может там быть "system/classes/Route.php", должно быть как минимум "/system/classes/Route.php" так как ns в php всегда начинается с \

13. KpuTuK (26.01.2014 / 22:06)
12. Башка, это смотря как вызывать видимо...
use system\classes\Route;
new Route();
попробовал просто
spl_autoload_register(function ($class) {
});
тоже самое выдало... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2619244433 bytes) in /var/www/kputu258/data/www/srv16.ru/system/CodeMania.php on line 17

php 5.4.23 сменил на 5.5.7 и все ок... видимо в самом php чтото...

URL: https://visavi.net/topics/39972