Я новичок в Laravel и использую пространства имен PHP в целом. У меня не возникало никаких проблем, пока я не решил создать модель под названием «Файл». Как я буду правильно размещать имена, чтобы я мог использовать класс модели File?
Файлы – это app/controllers/FilesController.php
и app/models/File.php
. Я пытаюсь создать новый File
в FilesController.php
.
Пространство имен довольно легко, как только вы это почувствуете.
Возьмем следующий пример:
приложение / модели / file.php
namespace App\Models; class File { public function someMethodThatGetsFiles() { } }
приложение / контроллеры / FileController.php
namespace App\Controllers; use App\Models\File; class FileController { public function someMethod() { $file = new File(); } }
Объявить пространство имен:
namespace App\Controllers;
Помните, как только вы разместили класс в пространстве имен для доступа к любому из встроенных классов PHP, вам нужно вызвать их из корневого пространства имен. например: $stdClass = new stdClass();
будет $stdClass = new \stdClass();
(см. \
)
«Импортировать» другие пространства имен:
use App\Models\File;
Это позволяет использовать класс File
без префикса пространства имен.
В качестве альтернативы вы можете просто позвонить:
$file = new App\Models\File();
Но лучше всего поместить его наверху в оператор use
как вы можете просмотреть все зависимости файла без необходимости сканирования кода.
Как только это будет сделано, вам понадобится запустить composer dump-autoload
чтобы обновить функцию автозагрузки Composer, чтобы учесть ваши недавно добавленные классы.
Помните, что если вы хотите получить доступ к FileController через URL-адрес, вам необходимо определить маршрут и указать полное пространство имен следующим образом:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
Который направит все запросы GET / file на контроллер someMethod()
Взгляните на документацию PHP на пространства имен, а Nettut всегда является хорошим ресурсом в этой статье
во-первых, загрузите свой класс:
$ composer dump-autoload
тогда
$file = new File; // your stuff like: $file->name = 'thename'; $file->active = true; $file->save();
Раздел: Вставка, обновление, удаление на Laravel 4 Досье Эвкалипта
Чтобы проставить пространство вашей модели в верхней части вашего модельного класса сразу после открытия
Затем, когда вы вызываете из контроллеров, вы вызываете new What whatever \ Model;
Вероятно, вам придется сначала сделать самозагрузку с композитором в первый раз.
посмотрите на это. Надеюсь, вы очистите свой запрос ….
<?php namespace app\controllers; use yii\web\Controller; use app\models\users; class UserController extends Controller{ public function actionIndex() { echo "working on ....."; } }