在Laravel中,我应该把自定义类和函数放在哪里?
在Laravel中,我应该把自定义类和函数放在哪里?
这个问题已经有了答案:
我正在尝试构建一个包含一些经常使用的函数的类,以便我可以从项目中的任何地方使用它们。我不知道在哪里建立包含这些类的PHP文件,或如何调用它们... 有谁可以帮我弄清楚所有这些东西的归属位置吗?谢谢!!!
/App/Http/Helpers/MyClasses.php
/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(); } }
这返回:Class \'App\\Http\\Controllers\\PopularFunctions\' not found。
admin 更改状态以发布 2023年5月22日
在 App/Http 目录下创建一个名为 "Helpers" 的文件夹
在 Helpers 文件夹下创建一个名为 CustomAvatar.php
的类
现在如果你想在你的控制器中使用这个类:
use App\Http\Helpers\CustomAvatar; ... public function create_user(){ $customAvatar=new CustomAvatar(); $defaultAvatar = $customAvatar->default_avatar; $user=new User(); $user->avatar=$defaultAvatar; $user->save(); }
基本上,我们可以在app
目录下创建另一个目录(例如 MyCustomStuff
),然后正确namespace
我们的文件。
我知道两种方法。
1. 通过Composer创建全局函数
App/MyCustomStuff/MyGlobalTools.php
然后在"autoload": { }
中添加
"files": [ "app/MyCustomStuff/MyGlobalTools.php" ]
所以目录结构将会是
"autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/" }, "files": [ "app/MyCustomStuff/MyGlobalTools.php" ] },
更改autoload
后,运行composer dump-autoload
然后在控制器中,只需调用全局函数(无需导入),例如:
public function index() { $res = sayHi(); }
2. 或普通的类
App/MyCustomStuff/MyClass.php
在您的控制器中
sayhi(); } }