我在哪里放置我的自定义类和函数在 Laravel 中

Top*_*her 4 php namespaces class function laravel

我正在尝试构建一个包含一些常用函数的类,我可以在我的项目的任何地方使用这些函数。我不知道在哪里构建包含类的 PHP 文件,也不知道如何调用它们...谁能帮我找出所有这些东西的位置?谢谢!!!

/App/Http/Helpers/MyClasses.php

<?php

class PopularFunctions {
  public function sayhi() {
    echo 'hi';
  }
}

?>
Run Code Online (Sandbox Code Playgroud)

/App/Http/Controllers/TasksController.php

<?php

namespace App\Http\Controllers;

use App\Http\Helpers\MyClasses;

class TasksController extends Controller {

  public function index() {

    $myfunctions = new PopularFunctions();
    $myfunctions->sayhi();

  }

}
Run Code Online (Sandbox Code Playgroud)

这将返回:找不到类“App\Http\Controllers\PopularFunctions”。

Kel*_*vin 15

基本上,我们可以在app目录中创建另一个目录(MyCustomStuff例如),然后namespace正确创建我们的文件。

我知道两种方法。

1. 通过 Composer 实现全局函数

应用程序/MyCustomStuff/MyGlobalTools.php

<?php
function sayhi() {
    echo 'hi';
}
?>
Run Code Online (Sandbox Code Playgroud)

然后在composer.json中"autoload": { }添加

"files": [
    "app/MyCustomStuff/MyGlobalTools.php"
]
Run Code Online (Sandbox Code Playgroud)

所以结构将是

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/MyCustomStuff/MyGlobalTools.php" 
    ]
},
Run Code Online (Sandbox Code Playgroud)

更改自动加载后。然后运行composer dump-autoload

然后在控制器中,只需调用全局函数(无需导入),例如:

public function index() {
  $res = sayHi();
}
Run Code Online (Sandbox Code Playgroud)

2. 或普通班

应用程序/MyCustomStuff/MyClass.php

<?php
namespace App\MyCustomStuff;
class MyClass {
    function sayhi() {
        echo 'hi';
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

在你的控制器中

<?php

namespace App\Http\Controllers;

use App\MyCustomStuff\MyClass;

class TasksController extends Controller {

  public function index() {

    $myfunctions = new MyClass();
    $res = $myfunctions->sayhi();

  }

}
Run Code Online (Sandbox Code Playgroud)


Sau*_*try 5

App/Http 中创建一个目录说“Helpers”

在 Helpers 目录中创建一个类 CustomAvatar.php

<?php

class CustomAvatar{
    public $default_avatar='avatar.png';

    public function make_custom_avatar(){
        // do your operation here
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

现在如果你想在你的控制器中使用这个类:

use App\Http\Helpers\CustomAvatar;

 ...

 public function create_user(){

 $customAvatar=new CustomAvatar();
 $defaultAvatar = $customAvatar->default_avatar;

 $user=new User();
 $user->avatar=$defaultAvatar;
 $user->save();

 }
Run Code Online (Sandbox Code Playgroud)


Arj*_*ain 1

在 Laravel 框架中,您只能在 app\Http\Controller 文件夹中创建控制器。如果您想创建自定义类,请在应用程序文件夹内创建。

例子:

文件:app\FAReports.php

命名空间应用程序;

FA 报告类 {

// 防御 //

}