2016-06-22 6 views
0

Я пытаюсь интегрировать существующую библиотеку в Laravel5, которая сама по себе не имеет пространства имен и использует свои собственные классы в подпапках, используя require. Я поместил его в 'app/API/libname/mainlibclass.php'. с каталогом сестры в 'app/API/libname/toolkit', который содержит классы, которые использует библиотека.laravel 5 Класс реализует Iterator

Вызов из контроллера Laravel я не могу создать класс, используя требуется утверждение (правильно?) Перед

$objectinstance=new Mainlibclass(); 

так в главном приложении Laravel У меня есть

use app/API/libname/Mainlibclass 

затем позже обычный

$objectinstance=new Mainlibclass(); 

В существующей библиотеке и каждом из своих используемых классов я установил

namespace app/API/libname 

и «использовать» там, где это необходимо. У меня теперь нет класса, который не найден, но один из файлов использует «реализует Iterator» - я получаю ошибку. Интерфейс «App \ API \ libname \ Iterator» не найден.

ответ

1

Попробуйте добавить \ перед этим, так это выглядит следующим образом:

class ABC implements \Iterator { 

Редактировать:

Я думаю, что было бы лучше практика, чтобы сохранить внешние Непро- psr-4/0 библиотеки нетронутым (для облегчения если необходимо, в будущем) и за пределами каталога app/.

Для этого можно использовать composer classmap autoload feature.

+0

Я пробовал это с использованием \ Iterator; и получил то же самое - класс тогда не найден – Datadimension

+0

Ваша ссылка была не самая лучшая для моей ситуации, но вы меня на правильном пути, следовательно, принимаете ее для ответа. Плюс ваш идеал не изменять что-либо в исходном коде был моим намерением с самого начала - это не библиотека, которую я поддерживаю. Поэтому я добавил в композитор путь, сделал компоновщик dump-autoload и готов был пойти после нескольких собственных исправлений кода. Оригинал полностью неповрежден, и у меня есть обертка от Laravel5. Спасибо – Datadimension

+0

PS Теперь нет необходимости в «\ Итераторе», этот подход также не нужен - для повторения был основной класс библиотеки - я разбил кластерную папку и теперь ее, как если бы ее общий класс PHP – Datadimension