3.2 -> 4.0 升级说明
建议
- 使用
Guzzle\Client
替代掉Curl\Curl
, 写法等均需要变动
Framework
- 不兼容
移除 x_app
函数, 此函数在 3.2 中废弃, 因为 nginx 无法从 json 中获取需要的数据, 需要显式使用 x_header
来获取
todo : 关于 Header 的定义需要完善
jwt_token
方法取消参数传递, 使用 jwt 的 tymon.jwt
来获取
[2022-06-10]
主 ServiceProvider \Poppy\Framework\Support\PoppyServiceProvider
变量 $listens
和 $policies
使用 array 强类型模式
- 可替代
移除 TestCase->poppyContainer()
方法, 使用 Container::getInstance()
替代
移除 Resp->data()
方法, 使用 Resp->custom()
替代
移除 get(), post()
方法, 使用 input()
替代
- 调整
[2022-06-10]
对于后置加载的 ServiceProvider, 需要继承 \Illuminate\Contracts\Support\DeferrableProvider
类, 取消 $defer
属性
Core
- 不兼容
因为 apidoc 升级导致无法生成 json , mgr-page 中无法使用新版来生成 apidoc 文档, 必须使用新版本才可以解析 json 数据, 使用 js eval
来解析
ServiceArray
改动 key()
方法需要强制返回 string
- 可替代
因为 sami 维护, 无法生成新版本 php api 文档, 使用 doctum 替代 sami, 接口不变, 可重新生成
移除 RdsNative->delTaggedKeys()
, 使用 RdsNative->del()
替代
移除 sys_success()
方法, 使用 sys_info()
替代
System
- 不兼容
ApiSignContract
方法 sign
增加参数 $type
, 使该方法同时支持不同端签名
class DefaultApiSignProvider extends DefaultBaseApiSign
{
- public function sign(array $params): string
+ public function sign(array $params, $type = 'user'): string
{
...
}
}
移除 SettingRepository
的 setReRead()
, save()
方法
此方法 3.2
已经重新改写为从缓存直接读取, 不使用静态变量
移除 pages.yaml
的定义以及读取, 改用 mgr-page/mgr-app 的 Form 写法
相关影响 : Module->pages()
, Module/Repositories/ModulesPage
, ModuleManager->pages()
移除 settings.yaml
的定义以及读取, 不支持项目默认数据在 settings.yaml
的定义
相关影响 : Module/Repositories/ModulesSetting
, ModuleManager->settings()
移除 ui.yaml
的定义以及读取, 不支持项目默认数据在 ui.yaml
的定义
相关影响 : 移除 Module/Repositories/ModulesUi
, 移除 ModuleManager->uis()
, 移除 Classes\Contracts\UiContract
移除 ModuleManager->getExcepts()
的定义以及读取(无相关用途)
移除 \Poppy\System\Action\Pam::setPasswordById
, 使用 \Poppy\System\Action\Pam::setPassword
替代, 参数不一致, 需要注意
移除 \Poppy\System\Classes\Contracts\UploadContract::type
, 使用 \Poppy\System\Classes\Uploader\Uploader::kvExt
替代, 参数有差异
移除 \Poppy\System\Action\Pam::captchaLogin
, 参数 platform
替换为 guard 类型, platform
从 header 中进行取值
移除
\Poppy\System\Models\PamAccount::fetch() : 多余的字段查询
\Poppy\System\Models\PamAccount::getIdByUsername() : 频率低, 无用函数
\Poppy\System\Models\PamAccount::getTypeById() : 频率低, 无用函数
Pam 中 loginCheck 移除 loginAllowIpCheck 方法(次级别调用), 会影响(ydl) 项目, 移除 \System\Events\LoginSuccessEvent
调用方法
public function loginCheck(string $passport, string $password, string $guard_name = PamAccount::GUARD_WEB): bool
{
- event(new LoginBannedEvent($pam, $guard));
- if (method_exists($this, 'loginAllowIpCheck') && !$this->loginAllowIpCheck()) {
- $guard->logout();
- return false;
- }
- // 兼容存在 system 模块事件
- // deprecated 为了兼容 q2
- if (class_exists('\System\Events\LoginSuccessEvent')) {
- event(new \System\Events\LoginSuccessEvent($pam, $platform, $guard));
- return true;
- }
...
}
- 可替代
移除 ModuleManager->repository()
, 使用 ModuleManager->modules()
替代
移除 sys_container
, 使用 py_container
替代
移除 \Poppy\System\Classes\Abstracts\SysRouteServiceProvider
, 使用框架 \Poppy\Framework\Application\RouteServiceProvider
替代
移除 \Poppy\System\Action\Pam::passportType
, 使用 PamAccount::passportType()
替代
移除 \Poppy\System\Action\Verification::getHiddenStr
, 使用 \Poppy\System\Action\Verification::getHidden
替代, 因为返回不仅仅是字串, 可能还会有数组
移除 \Poppy\System\Tests\Base\SystemTestCase::export
, 使用 \Poppy\Framework\Application\TestCase::outputVariables
替代, 使用 stream 打印数据, 可保证运行无异常提示
移除 \Poppy\System\Events\LoginSuccessEvent
的 platform 参数, 使用 x-id
替代
继承项目 \Poppy\System\Http\Forms\Settings\FormSettingBase
更新为 Poppy\MgrPage\Classes\Form\FormSettingBase
, 同理 Grid 也会迁移, 这里是对页面的组织对 mgr-page 做的一个调整
services 钩子改动
移除 poppy.system.html_top_nav
更改为 poppy.mgr-page.html_top_nav
并移动到 mgr-page 中
移除 poppy.system.html_cp
更改为 poppy.mgr-page.html_cp
并移动到 mgr-page 中
移除 poppy.system.settings
更改为 poppy.mgr-page.settings
并移动到 mgr-page 中
移除 poppy.system.custom_settings
, 此服务并入 poppy.mgr-page.settings
- 接口
接口需要增加标准化参数 x-type
用来指定是前台用户还是后台用户, 默认是 user
- 重复
移除 JwtAuthGuard
, 和 Jwt 包数据重复
- 移除
移除 PamAccount->getJWTCustomClaims()
的 user.id
返回, 改返回和 jwt 的 sub
一致, 不必再多余返回, 无兼容性问题
Aliyun-Oss
- 可替代
移除 Action/ActSts
类, 使用 Sts
类, 仅仅改动命名
移除 Action/OssDefaultUploadProvider
, 使用 Classes\Provider\OssDefaultUploadProvider
, 若依赖于 4.0 组件则此问题不必关注.
MgrPage
- 可替代
移除 \Poppy\MgrPage\Classes\Form\Field\Number
的 min
和 max
方法, 使用后端服务规则校验 Rule::min
, Rule::max