[英]Using namespaces in Laravel 4
我是Laravel的新手並且通常使用PHP命名空間。 在我決定制作名為File的模型之前,我沒有遇到任何問題。 我如何正確地進行命名空間,以便我可以使用我的File模型類?
這些文件是app/controllers/FilesController.php
app/models/File.php
和app/models/File.php
。 我想在FilesController.php
創建一個新File
。
一旦掌握了它,它就很容易命名。
請看以下示例:
應用程序/模型/ 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;
請記住,一旦你在一個Namespace中放置一個類來訪問PHP的任何內置類,你需要從Root Namespace中調用它們。 例如: $stdClass = new stdClass();
將成為$stdClass = new \\stdClass();
(見\\
)
“導入”其他命名空間:
use App\Models\File;
這允許您使用不帶Namespace前綴的File
類。
或者你也可以打電話:
$file = new App\Models\File();
但是最好將它放在use
語句的頂部,因為您可以在不必掃描代碼的情況下查看所有文件的依賴項。
完成后,您需要運行composer dump-autoload
來更新Composer的自動加載功能,以考慮新添加的類。
請記住,如果您想通過URL訪問FileController,那么您需要定義一個路由並指定完整的命名空間,如下所示:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
這會將所有GET /文件請求指向控制器的someMethod()
首先,加載您的類:
$ composer dump-autoload
然后
$file = new File;
// your stuff like:
$file->name = 'thename';
$file->active = true;
$file->save();
要在模型類命名空間,請在打開后立即在模型類的頂部
然后當您從控制器呼叫時,您將調用new Whatever \\ Model;
您可能必須第一次使用composer進行轉儲自動加載。
看看它..希望能清除你的查詢......
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\users;
class UserController extends Controller{
public function actionIndex()
{
echo "working on .....";
}
}
在打開php腳本標記之后,命名空間被定義在PHP類的頂部,如下所示:
<?php
namespace MyNameSpace;
當您想在其他類中使用命名空間類時,您可以像這樣定義它:
new MyNameSpace\PhpClass;
或者將其導入文件的頂部(如果存在名稱空間之后),如下所示:
<?php
//namespace
use MyNameSpace\MyPHPClass;
//then later on the code you can instantiate the class normally
$myphpclass = new MyPHPClass();
在Laravel中,命名空間可以在作曲家可以自動加載的任何地方定義,我建議在app目錄中定義名稱空間。 因此,您可以通過在app目錄中創建Utils目錄來定義像Utils這樣的命名空間來保存Utility類,創建我們的實用程序類並像上面一樣定義命名空間。
然后你運行命令讓作曲家去自動加載類:
$ composer dump-autoload
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.