您现于de位置乃:亚博 > APP学习

亚博 2019-03-28 APP学习 562

APP 7.4可能将于今年12month发布

APP 7.4可能将于今年12month发布.此页面将定期更新.


Preloading预加载 rfc


Preloading(预加载)乃对APP核心de1个惊人de补充 它可以带来1些主要de性能改进.


简而言之:如果您当日使用de乃框架 那么它de文件必须于每次请求时加载和重新编译.预加载允许服务器于启动时于内存中加载APP文件 并使它们对所有后续请求好的可用.


性能de提高当然乃有代价de:如果预加载文件de来源发生变化 则必须重新启动服务器.


Typed properties rfc


类变量可以乃类型提示:

class A
{
    public string $name;
     
    public Foo $foo;
}

更新:到目前为止 已合并了Typed properties 从而为APP 7.4确认了这些属性.


Improved type variance(改进de类型差异) rfc


我以前写过关于APP类型系统de文章 所以很高兴看到APP内核中出现了1些改进.


类型差异乃1个值得自己发表博文de主题;


简而言之:您将能够使用covariant返回类型

class ParentType {}
class ChildType extends ParentType {}
 
class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}
class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}


和contravariant参数.

class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

 


class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}

更新:RFC目前处于投票阶段 但看起来它会毫无问题地通过.


Foreign Function Interface(外部函数接口) rfc


外部函数接口 简称FFI 允许从用户域调用C代码.这意味着APP扩展可以用纯APP编写.


值得注意de乃 这乃1个复杂de话题.您仍然需要C知识才能正确地使用这个特性.


Null合并赋值操作符 rfc


不乃这样做:

$data['date'] = $data['date'] ?? new DateTime();

您可以这样做:

$data['date'] ??= new DateTime();

更新:这个特性现于合并到APP 7.4中.


自定义对象序列化 rfc


这个RFC添加了两个新de魔术方法:__serialize和__unserialize.于RFC中讨论了这些方法与__sleep和__wakeup方法de区别.


更新:RFC通过.这个特性将于APP 7.4中添加.


No more narrow margins rfc


从技术上讲 这并不乃1个与APP 7.4相关de更新 但它确实值得1提.RFCde投票规则已经改变:他们总乃需要2/3de多数才能通过.


Reflection for references rfc


像Symfonydevar转储程序这样de库很大程度上依赖于反射API来可靠地转储变量.以前 没有对引用de适当反射支持 导致这些库依赖hack来检测引用.


APP 7.4添加了ReflectionReference类 解决了这个问题.


更新:RFC已通过 APP 7.4已确认更改.


添加mb_str_split rfc


这个函数提供了与str_split相同de功能 但4擞诙嘧纸谧址.


始终启用ext-hash rfc


正如标题所说 这个扩展现于于所有APP安装中都乃好的可用de.


默认情况下不启用PEAR


由于PEAR不再积极维护 核心团队决定用APP 7.4删除其默认安装.


密码哈希(Hashing)注册表 rfc


内部更改哈希库de使用方式 以便用户更容易地使用它们.


弃用ext / wwdx rfc


这种数据交换格式从来没有标准化过 现于它de扩展被废弃了.


向后不兼容de变更升级


于升级APP版本时 应该始终查看完整de升级文档.


以下乃突出显示de1些向后不兼容de更改:


parent::于没有父级de类中引用将生成编译时错误而不乃运行时错误.


于DateTime或datetimevariable实例上调用var_dump将不再于对象上留下可访问de属性.


openssl_random_pseudo_bytes将于错误情况下抛出异常.


试图序列化PDO或PDOStatement实例将生成异常 而不乃PDOException.


于ArrayObject实例上调用get_object_vars()将返回ArrayObject本身de属性 而不乃被包装de数组或对象de值.注意(数组)强制转换不受影响.



翻译自:https://stitcher.io/blog/new-in-app-74#reflection-for-references-rfc


评论