Я использовал учебник, размещенный в Net Tuts + (http://hub.tutsplus.com/tutorials/combining-laravel-4-and-backbone--net-31745), и реализовал обработку ошибок в соответствии с инструкциями.Класс Laravel не скомпилирован при первом запуске
В разделе автозагрузки композитора у меня загружен файл error.php. Он содержит класс NotFoundException, который используется для создания исключений для запросов REST.
Когда я сбрасываю автозагрузку с помощью мастера, он строит отлично, и при первом запуске я получаю сообщение об ошибке «ReflectionException: Class NotFoundException не существует». Это ТОЛЬКО случается при первом запуске после сброса. Последующие прогоны прекрасны, и когда я сталкиваюсь с экземпляром, который запускает исключение, класс исключений работает. Эта ошибка появляется каждый раз, когда я запускаю модульное тестирование, в результате чего мои тесты терпят неудачу, но они появляются только в первом файле, который вызывает исключение. У меня есть 2 теста в двух отдельных файлах, которые запускаются, и оба используют исключение в качестве утверждения, а первое - и ошибка, а вторая -.
Я все еще очень новичок в Laravel, так что это может быть простое исправление, но я что-то упускаю? Должна ли быть другая ссылка, которую я пропускаю?
Выход из шагов ниже:
[email protected]:/var/www/api# composer dump-autoload
Generating autoload files
[email protected]:/var/www/api# php artisan clear-compiled
[email protected]:/var/www/api# php artisan optimize
Generating optimized class loader
Compiling common classes
[email protected]:/var/www/api# phpunit
PHPUnit 3.7.22 by Sebastian Bergmann.
Configuration read from /var/www/api/phpunit.xml
E........................................
Time: 2 seconds, Memory: 46.00Mb
There was 1 error:
1) AuthControllerTest::testProcess
ReflectionException: Class NotFoundException does not exist
/var/www/api/bootstrap/compiled.php:7539
/var/www/api/bootstrap/compiled.php:7533
/var/www/api/bootstrap/compiled.php:7508
/var/www/api/bootstrap/compiled.php:7477
/var/www/api/bootstrap/compiled.php:7472
/var/www/api/vendor/composer/ClassLoader.php:185
/var/www/api/vendor/composer/ClassLoader.php:185
/var/www/api/bootstrap/compiled.php:165
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:83
/var/www/api/bootstrap/compiled.php:163
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:186
/var/www/api/bootstrap/compiled.php:175
/var/www/api/bootstrap/compiled.php:142
/var/www/api/bootstrap/compiled.php:444
/var/www/api/bootstrap/compiled.php:4763
/var/www/api/bootstrap/compiled.php:7834
/var/www/api/bootstrap/compiled.php:7821
/var/www/api/bootstrap/compiled.php:4775
/var/www/api/bootstrap/compiled.php:483
/var/www/api/bootstrap/compiled.php:490
/var/www/api/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php:82
/var/www/api/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php:324
/var/www/api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php:58
/var/www/api/app/tests/controllers/AuthControllerTest.php:22
/usr/share/php/PHPUnit/TextUI/Command.php:192
/usr/share/php/PHPUnit/TextUI/Command.php:130
FAILURES!
Tests: 41, Assertions: 38, Errors: 1.
Вот файл errors.php:
<?php
class PermissionException extends Exception {
public function __construct($message = null, $code = 403)
{
parent::__construct($message ? : 'Action not allowed', $code);
}
}
class ValidationException extends Exception {
protected $messages;
public function __construct($validator)
{
$this->messages = $validator->messages();
parent::__construct($this->messages, 400);
}
public function getMessages()
{
return $this->messages;
}
}
class NotFoundException extends Exception {
public function __construct($message = null, $code = 404)
{
parent::__construct($message ? : 'Resource Not Found', $code);
}
}
И, наконец, мой файл composer.json:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master",
"hybridauth/hybridauth": "*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/ifr/interfaces",
"app/ifr/repositories",
"app/errors.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev"
}
Что именно у вас есть в части автозагрузки композитора? – rmobis
Какой сервер/система вы используете? Может быть, есть какое-то местное кэширование или подобная проблема? – Laurence