最推荐方式是将自定义类放在 app/ 下并遵循 PSR-4 规范,如 app/Services/PaymentService.php,声明 namespace App\Services;,无需额外配置即可自动加载。

在 Laravel 中添加一个自定义类,核心思路是:让类能被自动加载(autoload)且符合 PSR-4 规范。Laravel 默认基于 Composer 的 autoloader,所以最标准、推荐的方式是通过命名空间 + 目录结构 + composer.json 配置来实现。
以下是几种常见且实用的添加方式,按推荐顺序排列:
✅ 方式一:放在 `app/` 下,遵循 PSR-4(最推荐)
这是 Laravel 官方推荐做法,类会自动被加载,无需额外配置。
- 在 `app/` 目录下新建子目录,比如 `app/Services/`
- 创建类文件,如 `app/Services/PaymentService.php`
- 类必须声明正确命名空间:`namespace App\Services;`
- 类名与文件名一致(如
PaymentService),首字母大写 - 使用时直接
use App\Services\PaymentService;或在控制器中用完整命名空间
✅ 方式二:注册自定义命名空间(适合非 app 目录)
如果你希望把类放在 `app/Custom/` 或 `src/` 等非默认路径,需手动告诉 Composer:
适用于中小型企业的网站后台程序,采用VS2008(2.0)+ACCESS+Jquery 开发,源码作为研究和学习之用,本人非高手,源码有不合理之处请指点。后台框架:公司信息管理基本信息、公告信息、公司简介、联系我们、招聘信息、招商信息产品信息管理分类管理、添加分类、产品信息、添加产品展示信息管理展示信息、添加展示订单信息管理订单信息资讯信息管理分类管理、添加分类、资讯信息、添加资讯系统信息管理友情
立即学习“PHP免费学习笔记(深入)”;
```json"App\\Custom\\": "app/Custom/"
```
- 执行
composer dump-autoload刷新自动加载器 - 之后就可以用
use App\Custom\SomeClass;了
⚠️ 方式三:使用 `classmap`(仅适用于无命名空间的旧类或工具类)
不推荐用于新开发,但兼容遗留代码时可用:
- 把类文件(如
app/Helpers/StringUtils.php,无 namespace)放入目录 - 在
composer.json的"autoload": { "classmap": [...] }中添加路径:
"classmap": ["app/Helpers/"]
```
- 运行
composer dump-autoload - 该类即可全局使用(无需 use),但无法被 IDE 友好识别,也不符合现代 PHP 实践
? 小贴士
- 所有类建议加 PHPDoc 注释,方便 IDE 补全和团队协作
- Laravel 的服务容器支持依赖注入,如果类需要被容器管理,记得在
AppServiceProvider中绑定(如$this->app->bind(...)) - 避免在类中硬编码配置,优先通过构造函数注入或使用
config()辅助函数
基本上就这些。只要命名空间、目录、autoload 配置三者对得上,Laravel 就能顺利找到并加载你的类。










