在Laravel 4中使用名称空间
我是Laravel的新手,一般使用PHP命名空间。 我没有遇到任何问题,直到我决定做一个名为文件的模型。 我将如何正确地使用命名空间,以便可以使用我的File模型类?
这些文件是app/controllers/FilesController.php
app/models/File.php
和app/models/File.php
。 我正在试图在FilesController.php
创build一个新的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;
请记住,一旦您将一个类放入一个名称空间来访问任何PHP的内置类,就需要从根名称空间调用它们。 例如: $stdClass = new stdClass();
将变成$stdClass = new \stdClass();
(见\
)
“导入”其他命名空间:
use App\Models\File;
这使您可以使用不带名称空间前缀的File
类。
或者你可以打电话给:
$file = new App\Models\File();
但是最好的做法是把它放在一个use
语句的顶部,然后可以看到所有文件的依赖关系,而不必扫描代码。
一旦完成,您需要运行composer dump-autoload
来更新Composer的自动加载function,以考虑您新添加的类。
请记住,如果你想通过URL访问FileController,那么你需要定义一个路由并像下面这样指定完整的命名空间:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
这将把所有GET /文件请求引导到控制器的someMethod()
看看命名空间上的PHP文档,Nettut的这篇文章总是很好的资源
首先,加载你的类:
$ composer dump-autoload
然后
$file = new File; // your stuff like: $file->name = 'thename'; $file->active = true; $file->save();
部分:插入,更新,删除Laravel 4雄辩的文档
在命名空间中,在开始之后,在模型类的顶部
然后,当你从控制器呼叫,你会打电话给新的Whatever \ Model;
你可能不得不第一次和composer php一起做自转加载。
看看它..希望将清除您的查询….
<?php namespace app\controllers; use yii\web\Controller; use app\models\users; class UserController extends Controller{ public function actionIndex() { echo "working on ....."; } }