У меня есть следующая структура библиотеки
C:\WWW\WEBS
| users.php
|
\---lib
| Api.php
| Server.php
| TimeSync.php
|
\---TimeSync
Ntp.php
Protocol.php
Sntp.php
В server.php у меня есть
<?php
namespace lib;
class Server extends Api
{
}
?>
В users.php я использую его как
<?php
use lib\Server;
$objServer = new Server();
?>
Я также попробовал, используя как use lib\Server;
Но в обоих случаях это говорит
Неустранимая ошибка: класс ‘lib \ Server’ не найден в
C: \ www \ Experimentation \ webserviceserver \ users.php в строке 7
Где я иду не так. Должен ли я использовать автозагрузчик?
Вам нужно будет использовать автозагрузчик.
Вы можете использовать тот, который поставляется в Composer.
Установив его (в корне своего проекта), вы помещаете файл composer.json и копируете в него следующий код:
{
"autoload":{
"psr-4":{
"Lib\\" : "lib/"}
}
}
Затем вы используете команду composer dumpautoload
, Это скопирует файлы автозагрузки в папку с именем «vendor» в корне вашего проекта.
Затем в users.php вам требуется автозагрузчик:
require_once "vendor/autoload.php"
И вы используете пространство имен:
use Lib;
$objServer = new Lib\Server();
Это может сработать.
Других решений пока нет …