选php框架核心是三件事:能不能用(如swoole 5.1+协程支持)、好不好调(如laravel缓存清理机制)、出事了修不修得动(如filament权限可干预粒度高于nova)。

别学“最流行”的,先看你的项目能不能跑起来——2026年PHP框架选型,核心就三件事:能不能用、好不好调、出事了修不修得动。
确认服务器是否支持 Swoole 5.1+ 协程
Hyperf、Laravel Octane、Swoole 原生服务都依赖 swoole 扩展的协程能力。没这个基础,再好的框架也起不来。
- 执行
php --ri swoole,检查输出中是否有coroutine => enabled且version >= 5.1.0 - 若显示
coroutine => disabled,说明未启用协程支持,需在php.ini中添加swoole.enable_coroutine=On - 某些云主机(如阿里云轻量应用服务器默认镜像)仍预装 Swoole 4.x,
pecl install swoole可能失败,应改用源码编译并指定--enable-coroutine-glibc - Workerman 不依赖扩展,
composer require workerman/workerman后直接运行即可,适合无法装扩展的共享主机或老旧运维环境
Laravel 项目里哪些地方最容易因缓存失效出问题
不是代码写错了,而是缓存没清干净——这是 Laravel 新手和迁移老项目时最常卡住的点。
-
php artisan config:clear必须在修改.env或config/*.php后立即执行;否则config('database.default')仍返回旧值 - 路由缓存(
php artisan route:cache)只支持闭包路由以外的控制器语法,含use语句或匿名函数的路由会直接报错Unable to prepare route - 视图缓存(
php artisan view:clear)在 Blade 中使用@includeIf或动态组件名时容易漏清,建议开发期关掉:'view' => ['compiled' => env('VIEW_COMPILED', false)] - 如果用了 Horizon 或 Telescope,它们各自的配置也走 config 缓存,
config:clear会一并刷新,但 Horizon 的 supervisor 配置需额外重载:执行php artisan horizon:terminate
Filament 和 Nova 权限控制的实际差异在哪
表面上都是“can(viewAny, Post::class)”,但底层拦截时机和可干预粒度完全不同。
- Filament 的权限检查发生在资源类的
canView()方法内,你可以在该方法里加业务逻辑,比如判断当前租户是否拥有该资源所属团队的访问权 - Nova 的权限由
Nova::user()->can()统一驱动,它走的是 Laravel Gate,默认绑定到模型策略类;但如果你在策略中用了Auth::id(),在 Octane/Swoole 环境下可能拿到上一个请求的用户 ID——因为Auth实例未被重置 - Filament 支持 per-resource action 权限,例如在
getActions()里用can('publish', $this->resource)控制单条记录按钮显隐;Nova 必须靠前端 JS 判断,后端无对应钩子 - 两者都不自动处理 Eloquent 关联权限(如用户只能看自己团队的订单),必须手动在 Policy 的
viewAny中加whereHas('team', fn ($q) => $q->where('owner_id', auth()->id()))
ThinkPHP 8 build:admin 生成的后台为什么比 Laravel + Nova 更快上线
不是 TP8 技术更强,是它把“重复劳动”压缩到了命令行一级——而 Laravel 生态需要你手动拼凑权限、菜单、日志、导出等模块。
-
php think build:admin一条命令生成含 RBAC、左侧菜单树、操作日志追踪、Excel 导出/导入、字段级权限开关的完整后台,所有代码物理隔离在app/admin - Laravel Nova 需分别配置
Nova::resources()、定义App\Nova\User类、手动注册菜单项、再用spatie/laravel-permission搭配中间件做角色控制,至少多写 300 行配置和 glue code - TP8 的
build:admin输出可直接部署,无需 Node.js 构建前端;Nova 和 Filament 均依赖前端构建流程(即使 Livewire 也不免要跑npm run build) - 但代价是:TP8 生成的代码侵入性强,升级框架版本时
build:admin无法增量更新已有模块,必须人工合并;Laravel 生态各包独立发版,可按需升级 Nova 或 Filament 而不动核心
真正卡住项目的,从来不是框架性能数字,而是某个中间件没注册、某条路由缓存没清、某个协程上下文没隔离——这些细节不会出现在任何“对比表格”里,但每天都在线上发生。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











