автозагрузка — автозагрузка с именами PSR4 в переполнении стека

У меня есть следующая структура библиотеки

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

Где я иду не так. Должен ли я использовать автозагрузчик?

0

Решение

Вам нужно будет использовать автозагрузчик.
Вы можете использовать тот, который поставляется в Composer.
Установив его (в корне своего проекта), вы помещаете файл composer.json и копируете в него следующий код:

 {
"autoload":{
"psr-4":{
"Lib\\" : "lib/"}
}
}

Затем вы используете команду composer dumpautoload, Это скопирует файлы автозагрузки в папку с именем «vendor» в корне вашего проекта.

Затем в users.php вам требуется автозагрузчик:

require_once "vendor/autoload.php"

И вы используете пространство имен:

use Lib;
$objServer = new Lib\Server();

Это может сработать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]