45

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

文件是app/controllers/FilesController.phpapp/models/File.php。我正在尝试制作一个新FileFilesController.php.

4

5 回答 5

91

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

举个例子:

应用程序/模型/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 的内置类,您需要从根命名空间调用它们。eg: $stdClass = new stdClass();will become $stdClass = new \stdClass();(see the \)

“导入”其他命名空间:

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()

查看有关命名空间的 PHP 文档, Nettut始终是本文的一个很好的资源

于 2013-02-06T22:01:31.090 回答
4

首先,加载你的类:

$ composer dump-autoload

然后

$file = new File;

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

$file->save();

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

于 2013-02-05T23:01:04.633 回答
2

要命名您的模型,请在打开后立即在模型类的顶部

然后,当您从控制器调用时,您将调用 new What\Model;

您可能必须第一次使用 composer 进行转储自动加载。

于 2013-02-06T12:37:16.100 回答
0

看看它..希望能清除您的查询....

<?php

 namespace app\controllers;
 use yii\web\Controller;
 use app\models\users;
  class UserController extends Controller{
 public function actionIndex()
 {
echo "working on .....";
}
}
于 2015-08-28T06:58:55.470 回答
0

命名空间定义在 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 中,可以在 composer 可以自动加载它们的任何地方定义命名空间,我建议在 app 目录中定义命名空间。因此,您可以通过在 app 目录中创建 Utils 目录、创建实用程序类并像上面那样定义命名空间来定义像 Utils 这样的命名空间来保存实用程序类。

之后,您运行命令要求作曲家自动加载类:

 $ composer dump-autoload
于 2019-08-21T00:01:44.003 回答