Sovetkali
@Sovetkali
Инженер по тестированию ПО

Почему не получается использовать пространства имен с автозагрузчиком?

Добрый день.
Использую автозагручик. Не могу получить доступ к классам через пространство имен.

Файл index.php:
<?php  
	include 'core/autoloader.php';
	use pages as page;

	$p = new \page\class1();
?>


Файл автозагручика:
<?php
spl_autoload_register ('autoload');

function autoload ($className) {
  $fileName = 'vendor/'.$className . ".php";
  echo $fileName.'<br>';
  include  $fileName;
}
?>


Файл class1.php:
<?php

namespace pages;

class class1{
	static function hello()
	{
		echo 'NS pages';
	}
}
?>


Файл class1.php:
<?php
namespace users;

class class1{
	public function hello()
	{
		echo 'NS users';
	}
}
?>


Ошибка:
Warning: include(vendor/page\class1.php): failed to open stream: Нет такого файла или каталога in /home/users/s/sovetkali/domains/php.sovetkali.ru/core/autoloader.php on line 7

Warning: include(): Failed opening 'vendor/page\class1.php' for inclusion (include_path='.:/usr/local/zend-7.0/share/pear') in /home/users/s/sovetkali/domains/php.sovetkali.ru/core/autoloader.php on line 7

Fatal error: Uncaught Error: Class 'page\class1' not found in /home/users/s/sovetkali/domains/php.sovetkali.ru/index.php:6 Stack trace: #0 {main} thrown in /home/users/s/sovetkali/domains/php.sovetkali.ru/index.php on line 6


Не могу понять как использовать пространства имен если есть автозагрузчик, подскажите пожалуйста.
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
Используйте composer для этой цели.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы