zencd
@zencd

Почему PHP не находит класс вынесенный в отдельный файл?

В рамках Laravel-проекта есть phpunit-тест, который отлично работает.

<?php

class FooBar { }

class ExampleTest extends TestCase {
  ...
  new FooBar();


Но стоит мне вынести "FooBar" в отдельный соседний файл "FooBar.php", как этот класс перестаёт находиться интерпретатором PHP: "Class 'FooBar' not found". Добавление конструкции "use FooBar;" ничего не меняет.

Как правильно вынести класс в отдельный файл?

Тест запускаю через "phpunit tests\ExampleTest.php". Никаких namespaces в тестах нет.

>ls tests
ExampleTest.php  FooBar.php


Laravel 5.x, PHP 7.1, phpunit ~5.0
  • Вопрос задан
  • 1185 просмотров
Решения вопроса 1
@pudovMaxim
web-developer
Чтобы заработали use и namespacЫ, нужно файлик с классом сначала загрузить в проект. Можно руками через require/include, либо композером-полуавтоматом через его autoload.

Скорей всего надо будет правильно кинуть этот файлик в папку исходников(src) и сделать composer dump-autoload. Затем проверить, что при phpunit тесте подгружается композерский файл-загрузчик
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Quieteroks
php программист
А вы подключить файл с классом не пробовали (include 'FooBar.php')?
Ответ написан
@Result007
P|-|P
А вы в файле класса прописали namespace ?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы