Open chenliq opened 3 years ago
有同样的需求,现在带action的方案看起来不太好
有同样的需求,最好是不需要 modules 文件夹,直接 app/admin/controllers 或者 app/controllers 就是单模块模式,取消 action 后缀
有同样的需求,最好是不需要 modules 文件夹,直接 app/admin/controllers 或者 app/controllers 就是单模块模式,取消 action 后缀
多模块还是有需求场景的,比如一个大项目中不同的模块有不同的二级域名绑定之类的。 mail.qq.com 绑定 modules/mail admin.qq.com 绑定modules/admin。类似这种
有同样的需求,最好是不需要 modules 文件夹,直接 app/admin/controllers 或者 app/controllers 就是单模块模式,取消 action 后缀
多模块还是有需求场景的,比如一个大项目中不同的模块有不同的二级域名绑定之类的。 mail.qq.com 绑定 modules/mail admin.qq.com 绑定modules/admin。类似这种
我的意思并不是取消多模块,而是程序第一次运行时只能识别时候是多模块模式,而不需要额外添加一个 modules 文件夹来支持多模块。如项目文件夹是 app/controllers 这种结构,那就是单模块,若是 app/admin/controllers,app/mail/controllers 这种结构,则是多模块
有同样的需求,最好是不需要 modules 文件夹,直接 app/admin/controllers 或者 app/controllers 就是单模块模式,取消 action 后缀
多模块还是有需求场景的,比如一个大项目中不同的模块有不同的二级域名绑定之类的。 mail.qq.com 绑定 modules/mail admin.qq.com 绑定modules/admin。类似这种
我的意思并不是取消多模块,而是程序第一次运行时只能识别时候是多模块模式,而不需要额外添加一个 modules 文件夹来支持多模块。如项目文件夹是 app/controllers 这种结构,那就是单模块,若是 app/admin/controllers,app/mail/controllers 这种结构,则是多模块
附议
根据 约定大于配置 的原则,这些都不是问题 yaf追求的是简单可用,配置太多太复杂,这就根yaf一开始设计的思想不一样了 想要方便其实可以不用yaf
现在基本开源类库都遵循psr规范,希望yaf支持下标准规范,不然引入类库后有文件是命名空间格式,有的不是,感觉很乱
Springboot其实也不支持有同名的controller类,在不同的包里面都不行。
有同样的需求,最好是不需要 modules 文件夹,直接 app/admin/controllers 或者 app/controllers 就是单模块模式,取消 action 后缀
多模块还是有需求场景的,比如一个大项目中不同的模块有不同的二级域名绑定之类的。 mail.qq.com 绑定 modules/mail admin.qq.com 绑定modules/admin。类似这种
多模块我认为不是非用不可 但对于绑定不同域名,我们可以分多应用呀。 使用yaf_gc生成的结构如下:
yaf-demo
├── application
│ ├── Bootstrap.php
│ ├── controllers
│ │ ├── Error.php
│ │ └── Index.php
│ ├── library
│ │ └── readme.txt
│ ├── models
│ │ └── Sample.php
│ ├── plugins
│ │ └── Sample.php
│ └── views
│ ├── error
│ │ └── error.phtml
│ └── index
│ └── index.phtml
├── conf
│ └── application.ini
├── index.php
└── readme.txt
这是一个单应用结构,其中application是应用目录,可以看到conf在application外面,而library是在application中的。 如果我们要创建一个多应用的项目,而且需要共有项目类库,就得把library从application中提到外面来变成多应用共用的。 入口文件index.php放在这里,如果不在webserver配置访问权限,会有安全问题,所以我们把字放到application/public/index.php application/public 目录就是web站点根目录。 然后我们将这个application改个名字变成admin,他绑定admin.xxx.com这个域名。 我们再拷贝一个admin到mail,绑定mail.xxx.com这个域名 conf/application.ini 中 修改一下本地library的目录,完美地用多应用的方式实现多域名绑定。 最后结构大致如下:
yaf-demo
├── admin
│ ├── Bootstrap.php
│ ├── controllers
│ │ ├── Error.php
│ │ └── Index.php
│ ├── models
│ │ └── Sample.php
│ ├── plugins
│ │ └── Sample.php
│ ├── public
│ │ └── index.php
│ └── views
│ ├── error
│ │ └── error.phtml
│ └── index
│ └── index.phtml
├── conf
│ └── application.ini
├── library
│ └── readme.txt
├── mail
│ ├── Bootstrap.php
│ ├── controllers
│ │ ├── Error.php
│ │ └── Index.php
│ ├── models
│ │ └── Sample.php
│ ├── plugins
│ │ └── Sample.php
│ ├── public
│ │ └── index.php
│ └── views
│ ├── error
│ │ └── error.phtml
│ └── index
│ └── index.phtml
└── readme.txt
现在基本开源类库都遵循psr规范,希望yaf支持下标准规范,不然引入类库后有文件是命名空间格式,有的不是,感觉很乱
其实一点都不乱,yaf 的controllers models plugins actions 目录下的类其实都是在根命名空间下的,也就是 \ 根据所调用类的类名判断,Model后缀去models下去,Plugin后缀去plugins下找,不比用到一个类就在顶部 use 一下中吗 而且 也是支持子目录的,比如 models/Table/User.php中有 class UserModel,他可以用 new Table/UserModel(); 请问这样你不爱?? 非要一堆use ?? 我接手的一个项目其中有一个文件光use就 60多行,这样你就爱??
举例 Admin中有个User控制器,目前文件是 modules/Admin/controllers/User.php,代码是:
期望代码是:
如果能配置把Action后缀给去掉就更好了
目前的问题是: modules/Admin/controllers/User.php modules/Api/controllers/User.php 两个文件的全部没有命名空间,IDE会报相同的方法已在项目中多次定义,强迫症看着很难受,而且也不符合完整的命名空间规范。建议可以配置,支持完整的命名空间