私はLaravelが初めてで、一般的にPHP名前空間を使用しています。File という名前のモデルを作成することを決定するまで、何の問題もありませんでした。ファイル モデル クラスを使用できるように、名前空間を正しく設定するにはどうすればよいですか?
ファイルはapp/controllers/FilesController.php
とapp/models/File.php
. で新しく作ろうとしていFile
ますFilesController.php
。
私はLaravelが初めてで、一般的にPHP名前空間を使用しています。File という名前のモデルを作成することを決定するまで、何の問題もありませんでした。ファイル モデル クラスを使用できるように、名前空間を正しく設定するにはどうすればよいですか?
ファイルはapp/controllers/FilesController.php
とapp/models/File.php
. で新しく作ろうとしていFile
ますFilesController.php
。
名前空間は、そのコツをつかめば非常に簡単です。
次の例を見てください。
app / models / File.php
namespace App\Models;
class File {
public function someMethodThatGetsFiles()
{
}
}
app / controllers / 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の自動ロード機能を更新するためにそれらを実行する必要があります。
URLを介してFileControllerにアクセスする場合は、ルートを定義し、次のように完全な名前空間を指定する必要があることを忘れないでください。
Route::get('file', 'App\\Controllers\\FileController@someMethod');
これにより、すべてのGET/fileリクエストがコントローラーに送信されます。someMethod()
まず、クラスを次のようにロードします。
$ composer dump-autoload
それから
$file = new File;
// your stuff like:
$file->name = 'thename';
$file->active = true;
$file->save();
モデルに名前を付けるには、開いた直後のモデルクラスの上部に
次に、コントローラーから呼び出すと、新しいWhatever\Modelが呼び出されます。
おそらく、初めて composer で dump-autoload を実行する必要があります。
それを見てください..うまくいけば、クエリがクリアされます....
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\users;
class UserController extends Controller{
public function actionIndex()
{
echo "working on .....";
}
}