기타 언어 수준 수정


1. 호환되지 않는 $this 컨텍스트에서 정적으로 비정적 메서드를 호출하는 것은 더 이상 지원되지 않습니다.

호환되지 않는 $this 컨텍스트에서 정적으로 비정적 메서드를 호출하는 것은 더 이상 지원되지 않습니다. 이 시나리오에서는 $this가 정의되지 않지만 호출은 여전히 ​​가능하지만 경고가 표시됩니다.

class A {
  public function test() { var_dump($this); }
}

// Note: Does NOT extend A
class B {
  public function callNonStaticMethodOfA() { A::test(); }
}

(new B)->callNonStaticMethodOfA();

// Deprecated: Non-static method A::test() should not be called statically
// Notice: Undefined variable $this
NULL

이 상황은 호환되지 않는 컨텍스트의 호출에 적용됩니다. 위의 코드 예에서 클래스 B와 클래스 A는 관계가 없으므로 호출 시 $this가 정의되지 않습니다.

그러나 클래스 B가 클래스 A에서 상속되면 호출이 합법적입니다.

2. 다음 예약어는 클래스 이름, 인터페이스 이름, 특성 이름으로 사용할 수 없습니다.

bool
int
float
string
null
false
true
다음 키워드는 향후 사용을 위해 예약되어 있어 현재 오류 없이 사용할 수 있지만 권장되지는 않습니다.
resourceobject
mixed
numeric

3. Yield 구문 조정

표현식에서 Yield 구문 구조를 사용할 때 괄호가 더 이상 필요하지 않습니다. 이제 "print"와 "=>" 연산자 사이에 우선순위가 있는 오른쪽 연관 연산자입니다. 일부 시나리오에서는 동작이 이전과 일치하지 않습니다.

echo yield -1;
echo (yield) - 1;  // 之前的语法解释行为
echo yield (-1);   // 现在的语法解释行为

yield $foo or die;
yield ($foo or die);  // 之前的语法解释行为
(yield $foo) or die;  // 现在的语法解释行为

괄호를 사용하면 모호함을 피할 수 있습니다.

참고: 생산량에 대해서는 Bird Brother의 다음 기사를 참조하세요. http://www.laruence.com/2012/08/30/2738.html

4. 기타 일부 조정 사항은 ASP 형식 지원을 제거했습니다. 및 스크립트 구문 지원: <% 및 <script 언어=php>

더 이상 new 결과에 대한 참조 할당을 지원하지 않습니다. (

번역을 공유해 주신 Gazhikaba에게 감사드립니다) 호환되지 않는 $this 컨텍스트에서 비정적 메서드에 대한 범위 호출을 제거했습니다. 참고 자료: https://wiki.php.net/rfc/incompat_ctx.http://www.laruence.com/2012/06/14/2628.html

Ini 파일은 더 이상 #으로 시작하는 주석을 지원하지 않습니다. .

$HTTP_RAW_POST_DATA 변수가 제거되었습니다. 대신 php://input을 사용하세요. https://wiki.php.net/rfc/remove_alternative_php_tags