Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
Есть задача: получить доступ из скрипта, который лежит в папке public, к модели, класс которой лежит в php файле в папке App\AutoParts.
Видимо, я не понимаю концепцию namespace.
Вот содержимое скрипта
<?php
use App\AutoParts;
$adverts = AutoParts::all();
?>
Сама модель содержится в пространстве имен namespace App.
Вот ее заголовок:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
При исполнении скрипта выводится следующее:
Fatal error: Class 'App\AutoParts' not found in C:\xampp\htdocs\auto_parts\public\autoparts.php on line 6
Я прочитал о ServiceContainer, но если правильно понял, то он подключает, наоборот, "свои" классы к Laravel проекту.
Указание в скрипте namespace App не решает проблему.
Не в сети
В скрипт желательно добавить namespace
<?php
namespace public;
use App\AutoParts;
$adverts = AutoParts::all();
В модели тоже нужно подправить namespace
<?php
namespace App\AutoParts;
use Illuminate\Database\Eloquent\Model;
Ну и если вдруг надумаете формировать класс в скрипте, то нужно добавить путь к нему в composer.json раздел "autoloads" → "classmap", т.е дописать public, выглядеть будет примерно так:
"autoload": {
"classmap": [
"database",
"public"
],
И запустить для закрепления composer dump-autload, это если всё таки пришлось редактировать composer.json
Благодарю за помощь. Попробую и отпушись о результате)
Не в сети
К сожалению, результат прежний.
При написании
namespace public;
ide ругается, а при компиляции вот такая ошибка возникает:
Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting identifier (T_STRING) or \\ (T_NS_SEPARATOR) or '{' in C:\xampp\htdocs\auto_parts\public\autoparts.php on line 3
namespace модели подправил на предложенный.
Не в сети
А если так:
<?php
use \App\AutoParts;
$adverts = AutoParts::all();
?>
Не в сети
К сожалению, время поджимало, пришлось в обход идти.
Но для интереса попробую и отпишусь, спасибо.
Не в сети
Страницы 1