Zend引擎的發展_PHP教程

來源:互聯網
上載者:User
本章的最後一節,Zeev討論了Zend引擎帶來的物件模型,非凡提到它與PHP的前幾個版本中的模型有什麼不同.
  當1997年夏天,我們開發出PHP3, 我們沒有計劃要使PHP具備物件導向的能力. 當時沒有任何與類和對象有關的想法. PHP3是一個純粹面向過程的語言. 但是,在1997.8.27的晚上PHP3 alpha版中增加了對類的支援. 增加一個新特性給PHP,當時僅需要極少的討論,因為當時探索PHP的人太少. 於是從1997年八月起, PHP邁出了走向物件導向程式設計語言的第一步.

  確實,這隻是第一步. 因為在這個設計中只有極少的相關的想法,對於對象的支援不夠強大. 這個版本中使用對象僅是訪問數組的一個很酷的方法而已. 取代使用$foo[“bar”],你可以使用看起來更漂亮的$foo->bar. 物件導向方法的主要的優勢是通過成員函數或方法來儲存功能. 例子6.18中顯示了一個典型的代碼塊. 但是它和例6.19中的做法其實並沒有太大不同.

  Listing 6.18 PHP 3 object-oriented programming PHP3中的物件導向編程

class Example
{
var $value = "some value";
function PrintValue()
{
print $this->value;
}
}
$obj = new Example();
$obj->PrintValue();
?>
  Listing 6.19 PHP 3 structural programming PHP3 PHP3中的結構化編程

function PrintValue($arr)
{
print $arr["value"];
}

function CreateExample()
{
$arr["value"] = "some value";
$arr["PrintValue"] = "PrintValue";

return $arr;
}

$arr = CreateExample();

//Use PHP's indirect reference
$arr["PrintValue"]($arr);
?>
  以上我們在類中寫上兩行代碼,或者顯示地傳遞數組給函數. 但考慮到PHP3中這兩種選擇並沒有任何不同,我們仍然可以僅把物件模型當成一種”文法上的粉飾”來訪問數組.

  想要用PHP來進行物件導向開發的人們,非凡是想使用設計模式的人,很快就發現他們碰壁了. 幸運地,當時(PHP3時代)沒有太多人想用PHP來進行物件導向開發.

  PHP4改變了這種情況. 新的版本帶來了引用(reference)的概念, 它答應PHP的不同標識符指向記憶體中的同一個地址. 這意味著你可以使用兩個或更多的名稱來給同一個變數命名,就像例6.20那樣.

  Listing 6.20 PHP 4 references PHP4中的引用

$a = 5;

//$b points to the same place in memory as $a $b與$a指向記憶體中同個地址
$b = &$a;

//we're changing $b, since $a is pointing to 改變$b,指向的地址改變
//the same place - it changes too $a指向的地址也改變
$b = 7;

//prints 7 輸出7
print $a;

http://www.bkjia.com/PHPjc/632447.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632447.htmlTechArticle本章的最後一節,Zeev討論了Zend引擎帶來的物件模型,非凡提到它與PHP的前幾個版本中的模型有什麼不同. 當1997年夏天,我們開發出PHP3, 我們沒...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.