在 Laravel 4 中使用命名空间
2022-08-30 11:18:27
我是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
一旦你掌握了它的窍门,命名空间就很容易了。
举个例子:
应用程序/模型/文件.php
namespace App\Models;
class File {
public function someMethodThatGetsFiles()
{
}
}
应用程序/控制器/文件控制器.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的自动加载功能,以考虑新添加的类。composer dump-autoload
请记住,如果要通过 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();