Невозможно загрузить классы классов php-ds в PHP 7, так как я получаю фатальную ошибку: класс не найден

Я новичок в разработке PHP 7 и начал работать с Composer и PHP. Мне нужно использовать структуру данных PHP 7, такую ​​​​как Vector, Stack и т. Д. Для этого я создал composer.json в своем корневом каталоге, чтобы требовать php DS. После установки композитора он создал папку с именем Vendor, и внутри нее находится папка PHP ds.

Я использую приведенный ниже код в файле robots.php внутри корневого каталога.

<?php
use Ds\Stack;
use Ds\Vector;

$Vector = new Vector();

$stack = new  Stack(); 

Я получаю фатальную ошибку о том, что класс не найден. Я не в курсе, как работает автозагрузка полностью. Смогу ли я вызвать этот класс из моего php-файла в корневой папке?


person bodi87    schedule 27.09.2019    source источник
comment
Вам нужно require_once 'vendor/autoload.php' вверху файла.   -  person TheGentleman    schedule 27.09.2019


Ответы (2)


Автозагрузка

Для библиотек, в которых указана информация об автозагрузке, Composer создает файл vendor/autoload.php. Вы можете просто включить этот файл и начать использовать классы, предоставляемые этими библиотеками, без дополнительной работы:

require __DIR__ . '/vendor/autoload.php';

use Ds\Stack;
use Ds\Vector;

$Vector = new Vector();

$stack = new  Stack(); 

Я предлагаю вам взглянуть на https://getcomposer.org/doc/01-basic-usage.md

person Azael    schedule 27.09.2019

Поскольку Php DS является расширением PHP, его необходимо сначала установить.

$ apt-get install php7.4-ds

Это может помочь вам:

Существует также пакет polyfill, это означает, что классы Php Ds будут доступны, даже если расширение не установлено, хотя я полагаю, что это влияет на производительность.

person jawira    schedule 06.11.2020