>  기사  >  PHP 7.4는 2019년 12월에 출시될 예정입니다.

PHP 7.4는 2019년 12월에 출시될 예정입니다.

藏色散人
藏色散人원래의
2019-03-27 11:33:306408검색

PHP 7.4는 2019년 12월에 출시될 예정입니다. 이 페이지는 정기적으로 업데이트됩니다.

<strong>미리 로드 중</strong><strong>미리 로드 중</strong> rfc
<strong>Preloading</strong>预加载 rfc

Preloading(预加载)是对PHP核心的一个惊人的补充,它可以带来一些主要的性能改进。

简而言之:如果你今天使用的是框架,那么它的文件必须在每次请求时加载和重新编译。预加载允许服务器在启动时在内存中加载PHP文件,并使它们对所有后续请求永久可用。

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

<strong>Typed properties</strong> rfc

类变量可以是类型提示:

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

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

<strong>Improved type variance</strong>(改进的类型差异) rfc

我以前写过关于PHP类型系统的文章,所以很高兴看到PHP内核中出现了一些改进。

类型差异是一个值得自己发表博文的主题;

简而言之:你将能够使用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目前处于投票阶段,但看起来它会毫无问题地通过。

<strong>Foreign Function Interface</strong>(外部函数接口) rfc

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

值得注意的是,这是一个复杂的话题。你仍然需要C知识才能正确地使用这个特性。

<strong>Null</strong>合并赋值操作符 rfc

不是这样做:

$data[&#39;date&#39;] = $data[&#39;date&#39;] ?? new DateTime();

你可以这样做:

$data[&#39;date&#39;] ??= new DateTime();

更新:这个特性现在合并到PHP 7.4中。

自定义对象序列化 rfc

这个RFC添加了两个新的魔术方法:__serialize__unserialize。在RFC中讨论了这些方法与__sleep__wakeup方法的区别。

更新:RFC通过。这个特性将在PHP 7.4中添加。

<strong>No more narrow margins</strong> rfc

从技术上讲,这并不是一个与PHP 7.4相关的更新,但它确实值得一提。RFC的投票规则已经改变:他们总是需要2/3的多数才能通过。

<strong>Reflection for references</strong> rfc

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

PHP 7.4添加了ReflectionReference类,解决了这个问题。

更新:RFC已通过,PHP 7.4已确认更改。

添加mb_str_split rfc

这个函数提供了与str_split相同的功能,但是是在多字节字符串上。

始终启用ext-hash rfc

正如标题所说,这个扩展现在在所有PHP安装中都是永久可用的。

默认情况下不启用PEAR

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

密码哈希(Hashing)注册表 rfc

内部更改哈希库的使用方式,以便用户更容易地使用它们。

弃用<strong>ext / wwdx</strong> rfc

这种数据交换格式从来没有标准化过,现在它的扩展被废弃了。

向后不兼容的变更升级

在升级PHP版本时,应该始终查看完整的升级文档

以下是突出显示的一些向后不兼容的更改:

parent::

사전 로드(사전 로드)는 몇 가지 주요 성능 향상을 가져오는 놀라운 PHP 코어 추가 기능입니다. #🎜🎜##🎜🎜# 간단히 말해서, 현재 프레임워크를 사용하고 있다면 요청이 있을 때마다 해당 파일을 로드하고 다시 컴파일해야 합니다. 사전 로드를 사용하면 서버가 시작 시 메모리에 PHP 파일을 로드하고 이후의 모든 요청에 ​​영구적으로 사용할 수 있도록 할 수 있습니다. #🎜🎜##🎜🎜# 성능 향상에는 비용이 따릅니다. 미리 로드된 파일의 소스가 변경되면 서버를 다시 시작해야 합니다. #🎜🎜##🎜🎜#<strong>유형화된 속성</strong> rfc #🎜🎜##🎜🎜# 클래스 변수는 유형 힌트를 사용할 수 있습니다: #🎜🎜#rrreee#🎜🎜# 업데이트: 유형이 지정된 속성이 지금까지 병합되어 PHP 7.4에 대해 확인되었습니다. #🎜🎜##🎜🎜#<strong>향상된 유형 변화</strong>(향상된 유형 변화) rfc#🎜🎜##🎜🎜#PHP 유형 시스템에 대해 이전에 작성한 적이 있으므로 일부 내용을 보니 반갑습니다. PHP 코어에 개선 사항이 나타났습니다. #🎜🎜##🎜🎜#유형 차이는 자체 블로그 게시물에 올릴 만한 주제입니다.#🎜🎜##🎜🎜#간단히 말하면 공변 반환 유형을 사용할 수 있습니다#🎜 🎜# rrreee#🎜🎜# 및 반공변 매개변수. #🎜🎜#rrreee#🎜🎜#업데이트: RFC는 현재 투표 단계이지만 문제 없이 통과될 것으로 보입니다. #🎜🎜##🎜🎜#<strong>외부 함수 인터페이스</strong>(외부 함수 인터페이스) rfc#🎜🎜##🎜🎜#Foreign Function Interface(FFI)를 사용하면 사용자 도메인에서 C 코드를 호출할 수 있습니다. 이는 PHP 확장이 순수 PHP로 작성될 수 있음을 의미합니다. #🎜🎜##🎜🎜#이것이 복잡한 주제라는 점은 주목할 가치가 있습니다. 이 기능을 올바르게 사용하려면 여전히 C 지식이 필요합니다. #🎜🎜##🎜🎜#<strong>Null</strong>병합 할당 연산자 rfc#🎜🎜##🎜🎜# 다음을 수행하는 대신: #🎜🎜#rrreee#🎜🎜#다음을 수행할 수 있습니다: #🎜🎜#rrreee#🎜🎜#Update :이 기능은 이제 PHP 7.4에 병합되었습니다. #🎜🎜##🎜🎜#사용자 정의 객체 직렬화 rfc #🎜 🎜##🎜🎜#이 RFC에는 __serialize__unserialize라는 두 가지 새로운 매직 메서드가 추가되었습니다. 이러한 메서드와 __sleep__wakeup 메서드 간의 차이점은 RFC에 설명되어 있습니다. #🎜🎜##🎜🎜#업데이트: RFC가 통과되었습니다. 이 기능은 PHP 7.4에 추가될 예정입니다. #🎜🎜##🎜🎜#<strong>더 이상 좁은 여백 없음</strong> rfc#🎜🎜##🎜🎜#기술적으로 말하면, 이것은 PHP 7.4와 관련된 업데이트는 아니지만 확실히 언급할 가치가 있습니다. RFC에 대한 투표 규칙이 변경되었습니다. 통과하려면 항상 2/3의 과반수가 필요합니다. #🎜🎜##🎜🎜#<strong>참조 반영</strong> rfc#🎜🎜##🎜🎜#Symfony의 var dumper와 같은 라이브러리는 변수를 안정적으로 덤프하기 위해 리플렉션 API에 크게 의존합니다. 이전에는 참조에 대한 적절한 리플렉션 지원이 없었기 때문에 이러한 라이브러리는 참조를 감지하기 위해 해킹에 의존했습니다. #🎜🎜##🎜🎜#PHP 7.4에서는 이 문제를 해결하기 위해 ReflectionReference 클래스가 추가되었습니다. #🎜🎜##🎜🎜#업데이트: RFC 통과, PHP 7.4에 대한 변경 사항 확인. #🎜🎜##🎜🎜#mb_str_split rfc 추가 #🎜🎜##🎜🎜#이 함수는 str_split과 동일한 기능을 제공하지만 멀티바이트 문자열에 적용됩니다. #🎜🎜##🎜🎜#항상 ext-hash 활성화 rfc#🎜🎜##🎜🎜# 제목에서 알 수 있듯이 이 확장은 이제 모든 PHP 설치에서 영구적으로 사용할 수 있습니다. #🎜🎜##🎜🎜#PEAR은 기본적으로 활성화되어 있지 않습니다. #🎜🎜##🎜🎜# PEAR는 더 이상 적극적으로 유지 관리되지 않으므로 핵심 팀은 제거하기로 결정했습니다. PHP 7.4와 함께 기본적으로 설치됩니다. #🎜🎜##🎜🎜#비밀번호 해싱(Hashing) 레지스트리 rfc#🎜🎜##🎜🎜# 사용자가 더 쉽게 사용할 수 있도록 해시 라이브러리를 사용하는 방법이 내부적으로 변경되었습니다. #🎜🎜##🎜🎜#지원 중단됨<strong>ext / wwdx</strong> rfc#🎜🎜##🎜🎜#이 데이터 교환 형식은 표준화된 적이 없으며 해당 확장은 이제 더 이상 사용되지 않습니다. #🎜🎜##🎜🎜#이전 버전과 호환되지 않는 변경 사항 업그레이드#🎜🎜##🎜🎜#PHP 버전을 업그레이드할 때 항상 업그레이드 문서 전체. #🎜🎜##🎜🎜#다음은 이전 버전과 호환되지 않는 변경 사항 중 일부입니다. #🎜🎜##🎜🎜# • parent:: 부모 없이 클래스에서 참조하면 A 컴파일이 생성됩니다. 런타임 오류가 아닌 시간 오류입니다. #🎜🎜#

DateTime 또는 datetimevariable 인스턴스에서 var_dump를 호출하면 더 이상 개체에 액세스 가능한 속성이 남지 않습니다. DateTimedatetimevariable实例上调用var_dump将不再在对象上留下可访问的属性。

openssl_random_pseudo_bytes将在错误情况下抛出异常。

• 试图序列化PDOPDOStatement实例将生成异常,而不是PDOException

• 在ArrayObject实例上调用get_object_vars()将返回ArrayObject

openssl_random_pseudo_bytes는 오류 상황에서 예외를 발생시킵니다.

PDO 또는 PDOStatement 인스턴스를 직렬화하려고 하면 PDOException 대신 예외가 생성됩니다.

ArrayObject 인스턴스에서 get_object_vars()를 호출하면 래핑된 배열이나 객체의 값이 아닌 ArrayObject 자체의 속성이 반환됩니다. . (배열) 캐스트는 영향을 받지 않습니다.

번역 출처: https://stitcher.io/blog/new-in-php-74#reflection-for-references-rfc
관련 추천:

PHP7과 PHP5의 보안 차이(예)

PHP7의 추상 구문 트리(AST)가 가져온 변화

》🎜🎜 《🎜PHP7 언어의 실행 원리(PHP7 소스 코드 분석)🎜》🎜
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.