首頁  >  文章  >  後端開發  >  PHP7 calling scope與php5的不一樣了?

PHP7 calling scope與php5的不一樣了?

WBOY
WBOY原創
2016-12-01 00:56:52842瀏覽

今天在研究__call()__callStatic()的時候讀到了鳥哥的文章 PHP的Calling Scope

但是發現下面的程式碼在PHP5.5和PHP7中得到的結果不一樣了?

<code><?php
 class Foo {
     public function bar() {
         var_dump($this); //PHP5.5中打印的是A对象,PHP7是未定义,也就是NULL
     }
 }
 class A {
     public function test() {
         Foo::bar();
     }
 }
 $a  = new A();
 $a->test();
?></code>

沒找到PHP7關於調整這個的說明。謝謝大家指教

回覆內容:

今天在研究__call()__callStatic()的時候讀到了鳥哥的文章 PHP的Calling Scope

但是發現下面的程式碼在PHP5.5和PHP7中得到的結果不一樣了?

<code><?php
 class Foo {
     public function bar() {
         var_dump($this); //PHP5.5中打印的是A对象,PHP7是未定义,也就是NULL
     }
 }
 class A {
     public function test() {
         Foo::bar();
     }
 }
 $a  = new A();
 $a->test();
?></code>

沒找到PHP7關於調整這個的說明。謝謝大家指教

有這個調整, 你在 PHP 7 的非向下兼容的里面可以找到, 並且在 PHP 5.6 中已經被標記為 DEPRECATED

靜態呼叫一個非靜態方法, 會在靜態呼叫中被提示未定義 $this, 並會報錯。

http://php.net/manual/en/migr...

http://m.runoob.com/php/php-d...

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn