【问题标题】:Create new classes in laravel 5.2在 laravel 5.2 中创建新类
【发布时间】:2016-04-10 13:21:18
【问题描述】:

我正在使用 Laravel 框架。

我有一个关于类创建的问题。 为了解释我的问题,我举个例子:

class articleController extends Controller{
    public function bla(){
        $a = new MyNewClass($colorfulVariable);
        $b = $a->createSomething(new MySecondNewClass());
    }
}

现在,MyNewClassMySecondNewClass 类不存在,我想创建它们,在我想要的每个控制器中使用它们,就像我使用 Laravel 提供的 Redirect 或 Request 类一样。

如何创建此类?制作一个新函数以在我的 laravel 项目中使用它们?

【问题讨论】:

  • 嗨 Itzhak,如果没有先创建类,就不能使用类。请提供有关您的问题的更多详细信息。问候!
  • 这只是一个示例代码。这些类并不存在,我只是问我什么时候可以创建它们以及如何使用它们?
  • 现在我了解你了。正如 wezzy 所说,App 文件夹中的任何类都已加载,但请记住为每个新类设置正确的命名空间。

标签: php laravel laravel-5 laravel-5.1 laravel-5.2


【解决方案1】:

您可以在您的应用程序文件夹中创建这些类(或在子文件夹中,例如我们创建一个包含所有实用程序的库文件夹)。只需包含一个 use App\YourClass;在使用这些类之前,laravel 会为你包含这些类

【讨论】:

  • 只是为了创建一个文件夹并包含类? laravel 没有创建很好的选项来轻松管理新的库或类?
  • 如果你想使用 3d 派对库,你可以使用 composer。但是如果你想为你的项目创建自定义类,最快的方法是在 app 文件夹中创建你的类
  • 我必须像@Alexey Mezenin 在他的评论中所说的那样将它们包含到composer.json 文件中?
  • 在我的 composer.json 中没有必要我有这行:"psr-4": { "App\\": "app/" },所以 app 下的所有内容都已经自动加载。你只需要告诉 laravel 使用“use”来使用这些类
【解决方案2】:

您可以像往常一样创建类,但不要忘记将它们包含在composer.json 自动加载部分:

"autoload": {
    "classmap": [
        "App\MyClassesNamespace"
....

然后运行composer dumpauto 命令重建自动加载器文件。如果您不这样做,您将无法在应用程序中使用您的类。

【讨论】:

    【解决方案3】:

    Laravel 5.* 是使用 PSR-4 在 app/ 目录中自动加载的。您可以在 composer.json 文件中看到这一点。

      "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    

    基本上,您可以在应用程序中创建另一个目录,然后在其中适当地命名您的文件:

    app/folder1/folder2/SomeClass.php.
    

    然后,在您的 SomeClass.php 中,确保为它命名:

    <?php namespace App\folder1\folder2;
    
    class Someclass {}
    

    现在,您可以使用类中的命名空间访问该类:

    use App\folder1\folder2\SomeClass;
    

    【讨论】:

      【解决方案4】:

      除了下面的事情,你不需要做任何事情:

      1. 在 App\ 文件夹中创建一个类。
      2. 无论何时使用该类,都必须使用“use App\XYZ;”导入该类在导入类之上。

      就是这样。大多数人遵循约定,然后在 App\ 文件夹上创建“服务”文件夹。最好将外星类创建到服务文件夹中,而不是 laravel 框架类。

      【讨论】:

        猜你喜欢
        • 2016-12-08
        • 2016-11-04
        • 2017-04-01
        • 2016-09-08
        • 2016-08-08
        • 2016-04-11
        • 2016-08-04
        • 2017-02-21
        • 1970-01-01
        相关资源
        最近更新 更多