发布者: Mamba 于 2015/10/24 8:10:00 阅读次数 4569

XOOPS XOOPS 2.6.0 支持 PSR-4 及其他核心改进

XOOPS 2.6.0 Goes PSR-4 plus Other Core Enhancements

1) Richard 为 XOOPS 2.6.0 的核心带来了一些非常酷的改进。最近他提交了以下改进:引用
本地化刷新第一阶段 #261 以及其他杂项清理 - 实现本地化的日期和时间处理。在所有日期处理中使用 PHP DateTime 对象。本地化由 [Punic](https://github.com/punic/punic) 提供 - 添加 `Request::getDateTime()` 从 `Form\DateSelect` 和 `Form\DateTime` 输入中返回 `\DateTime` 对象。表单类还可以接受 DateTime 对象作为值。表单日期现在是针对用户本地化,若无用户则使用系统默认。 - 时区现在使用 PHP `DateTimeZone` 名称,而不是浮点偏移量。PHP DateTime 和 DateTimeZone 对象用于实现所有计算。这使得处理诸如夏令时或夏令时等问题变得自动化。 - 添加 `Dtype::TYPE_TIMEZONE` 以存储和恢复 \DateTimeZone 对象 - 添加 Smarty `datetime` 修饰符,允许 XoopsLocale::formatTimestamp() 处理 Unix 时间戳和 DateTime 对象,允许在表示层中使用类似 `<{$datevariable|datetime:'short'}>` 的标签控制日期和时间格式。 - 将 XoopsList 类分解为 `Core\Lists` 中的单个类。这些类预计将实现 `Core\Lists\AbstractList`。这些类可以直接与表单字段交互,减少代码复杂性和重复。 - 添加 select_editor 'formtype' 给 $modversion['config']。这消除了在模块的 xoops_version.php 中加载编辑器的 active 代码的需求。所有编辑器列表现在都源自一个点,Core\Lists\Editor - 新的 Form\Element 子类,OptionsElement,它提供了标准选项方法。列表类可以与任何 OptionsElement 扩展器交互,请参阅 Core\Lists\AbstractList::setOptionsArray() - 将 `Xoops_*` 类移到实际的 `Xoops` 命名空间。这些 *PSR-0*,伪命名空间已经废弃。它们的删除允许我们转向基于 PSR-4 的 Xoops 命名空间加载。 - 国旗服务不再提供资源裸 URL,只提供用于显示国旗的 HTML。这允许更灵活地显示国旗。 - 在 `Core\Logger::handleExeception()` 中接受 `Trowable`(PHP7)
他还发布了对三个问题的 RFC(请求评论): - 命名空间 - 模块与扩展 - 向系统_module 添加 modinfo 列表引用
我仔细考虑了模块,并有一些想法想要提出。如果您有任何评论、替代方案、反对意见或其他反馈,请回应。在没有反对意见的情况下,我希望能迅速推进。 命名空间 在系统_module 表中添加一个命名空间列。这将对应于模块代码的 PHP 命名空间。它将以 PSR-4 方式映射到模块的类目录。这将自动应用于所有指定了命名空间的活动模块。注意,这将与 composer 维护的加载器分开,因为 composer 没有办法知道一个模块在 XOOPS 中是否“激活”。从未安装或非活动模块中自动加载组件可能会引起很多问题。启用命名空间后,大多数旧的目录位置命名结构都可以用对象替换。例如,使用 $modversion['onInstall'] 道项定位包含文件,然后根据模块名称构建函数名,代码会更像这样
if (class_exists($moduleNamespace 'SystemInstall')) {
    
$install = new $moduleNamespace 'SystemInstall'GitHub 上回复 Resized Image
值得注意的是,Eduardo 在为 XOOPS 2.6.0 创建新的“表示层”方面取得了重大进展。这是基于他的优秀“Common Utilities”。虽然缓慢但稳定,XOOPS 2.6.0 所需的各个部件开始到位!