在 Laravel 4 中使用命名空间

2022-08-30 11:18:27

我是Laravel的新手,通常使用PHP命名空间。我没有遇到任何问题,直到我决定制作一个名为File的模型。如何正确进行命名空间设置,以便可以使用我的文件模型类?

这些文件是 和 。我正试图在.app/controllers/FilesController.phpapp/models/File.phpFileFilesController.php


答案 1

一旦你掌握了它的窍门,命名空间就很容易了。

举个例子:

应用程序/模型/文件.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()

看看关于命名空间的PHP文档,Nettut的总是个很好的资源与这篇文章


答案 2

首先,加载你的类:

$ composer dump-autoload

然后

$file = new File;

// your stuff like:
$file->name = 'thename';
$file->active = true;

$file->save();

部分: 插入, 更新, 删除 Laravel 4 Eloquent 的文档


推荐