Оператор объявления пространства имен должен быть самым первым оператором в скрипте
Я только начал разрабатывать веб-приложение с Laravel, у меня есть проблема с использованием инъекции зависимостей. Он прекрасно работает без DI, но я хочу рефакторинговать код так, чтобы код не был тесно связан.
Я уже ищу в google, что предполагает, возможно, есть пробел перед пространством имен и поисковыми вопросами, связанными здесь, но ни один из них не решает мою проблему. проблема.
AccountController
<?php
namespace TabJutHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesInput;
use IlluminateSupportFacadesRedirect;
use IlluminateSupportFacadesValidator;
use View;
use TabJutHttpRequests;
use TabJutHttpControllersController;
use TabJutRepositoriesAccountRepository;
class AccountController extends Controller
{
/* error culprit, If I remove these the page not error */
protected $repository;
public function __construct(AccountRepository $repository)
{
$this->repository = $repository;
}
/* error culprit */
public function getLogin()
{
return View::make('account.login');
}
public function postLogin()
{
// Validates inputs.
$rules = array(
'username' => 'required',
'password' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
// Redirects back to the form if the validator fails.
if ($validator->fails()) {
return Redirect::action('AccountController@getLogin')
->withErrors($validator)
->withInput(Input::except('password'));
}
$username = Input::get('username');
$password = Input::get('password');
$user = $repository.Authenticate($username, $password);
var_dump($user);
}
}
AccountRepository
<?php
namespace TabJutRepositories;
use DB;
class AccountRepository
{
public function Authenticate($username, $password)
{
$user = DB::table('users')
->where('is_active', '1')
->where('user_name', $username)
->where('password', $password)
->first();
return $user;
}
}
Дерево Папок

Сообщение Об Ошибке
FatalErrorException в AccountRepository.php строка 3: пространство имен
оператор declaration должен быть самым первым оператором в скрипте
in AccountRepository.php line 3
at FatalErrorException->__construct() in HandleExceptions.php line 127
at HandleExceptions->fatalExceptionFromError() in HandleExceptions.php line 112
at HandleExceptions->handleShutdown() in HandleExceptions.php line 0
at ComposerAutoloadincludeFile() in ClassLoader.php line 301
Пропустил ли я какую-либо важную конфигурацию, например настройку локатора служб, или просто невидимую ошибку кода?
Пожалуйста, помогите.
1 ответ:
Это не имеет никакого отношения к инъекции зависимостей, основываясь на комментарии кузавинского к руководству, я воссоздал файл с помощью блокнота, и это решает проблему.
...и вы все равно получите " заявление объявления пространства имен должно быть самое первое утверждение в скрипте " фатальная ошибка, тогда вы, вероятно, используете Кодировка UTF-8 (что хорошо) с меткой порядка байтов, aka BOM (которая является плохой). Попробуйте конвертировать ваши файлы в "UTF-8 без BOM", и он должен быть в порядке. комментарий
Comments