在laravel 5.2中创建新类


Create new classes in laravel 5.2

我正在使用Laravel框架。

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

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

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

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

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

的类

Laravel 5.*使用PSR-4在应用程序/目录中自动加载。您可以在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;

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

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

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

您不必做以下事情以外的任何事情:

  1. 在App''文件夹中创建一个类
  2. 无论何时使用该类,都必须在导入类的顶部使用"use App''XYZ;"来导入该类

就是这样。大多数人遵循惯例,然后在App''folder上创建"服务"文件夹。在服务文件夹中创建不同于laravel框架类的异类类是很好的。