我正在使用Laravel框架。
我有一个关于创建类的问题。为了解释我的问题,我给你举个例子:
class articleController extends Controller{
public function bla(){
$a = new MyNewClass($colorfulVariable);
$b = $a->createSomething(new MySecondNewClass());
}
}
现在,类MyNewClass
和MySecondNewClass
不存在,我想创建它们,在我想要的每个控制器中使用它们,就像我使用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
命令来重建自动加载器文件。如果不这样做,您将无法在应用程序中使用类。
您不必做以下事情以外的任何事情:
- 在App''文件夹中创建一个类
- 无论何时使用该类,都必须在导入类的顶部使用"use App''XYZ;"来导入该类
就是这样。大多数人遵循惯例,然后在App''folder上创建"服务"文件夹。在服务文件夹中创建不同于laravel框架类的异类类是很好的。