easy-swoole / easyswoole

swoole,easyswoole,swoole framework
https://www.easyswoole.com/
Apache License 2.0
4.74k stars 511 forks source link

路由分发 强制 ucfirst 是不是不太合适? #435

Closed LangrisserApp closed 3 years ago

LangrisserApp commented 3 years ago

vendor/easyswoole/http/src/Dispatcher.php 方法 Dispatcher::controllerExecutor

for ($i=0 ;$i<$maxDepth;$i++){
    $className = $className."\\".ucfirst($list[$i] ?: 'Index');//为一级控制器Index服务
}

个人比较喜欢常规 namespace 用全小写(默认的 App\HttpController 我已经换成 app\controller ) linux 下大小写是有区别的,强制 ucfirst 导致实际路径 在 linux 下 class_exist 失败

LangrisserApp commented 3 years ago

如果直接去掉 ucfirst 会有其他项目的历史兼容问题 可以考虑 全局 config 里增加一个 开关,默认打开 ucfist ,可以手动配置关闭

SysConst::DISPATCHER_CLASS_PATH_UCFIRST = 'DISPATCHER_CLASS_PATH_UCFIRST';
kiss291323003 commented 3 years ago

按照编写和psr规范。class都和目录都应该是大驼峰法

LangrisserApp commented 3 years ago

在 PSR-1 中明确 class name 需要大驼峰写法

Class names MUST be declared in StudlyCaps.

但是没有任何一个规范对 namespace 有明确规定

Google讨论组里 2012 年的讨论 https://groups.google.com/g/php-fig/c/VA0ZVUjCH-Q?pli=1

StackOverflow 2015 年的问答 https://stackoverflow.com/questions/31815777/psr-2-when-to-capitalize-directories