Php 3.x與4.x中關於物件程式設計的不相容問題之一 構造器說 (轉)
3.x與4.x中關於的不相容問題
“物件導向”聽起來是個很流行的詞彙,似乎到了如果你還沒有,那不如回家種白菜的地步。
Php從版本3.x開始支援物件程式設計,雖然它的Class從一開始就飽受員們的指責,但它的確給我們帶來了意外的驚喜。一路跌跌撞撞走來,到了4.x,Php已經相當OOP了。當然,它對於類變數的處理依然不能讓人滿意,沒有私有、公有、保護、靜態的宣告方法。Php物件導向的可用性不在本文討論範圍內。
伴隨著4.x中關於物件程式設計的完善,Php team給我們帶來了些許“麻煩”:3.x和4.x中關於物件程式設計的一些遊戲規則改變了,不相容。筆者就實際開發過程遇到的問題稍作討論,相信有些問題可能筆者尚未遇到,歡迎諸位補充、共賞。
一、構造器()說
在3.x中,構造器指的是與類同名的類函式。有點拗口,不過更拗口的還有。在4.x中,構造器指的是在構造器內部直接定義的與類同名的類函式,就是說不包括繼承來的類函式。比如:
1、
{
function ABabyStudio(){
echo('call constructor'.chr(13));
}
//...
}
註釋:
在3.x和4.x中效果相同
2、
{
function ABabyStudio(){
echo('ABabyStudio');
}
}
class ABabyStudio
{
//...
}
註釋:
在3.x中類ABabyStudio有構造器,從父類ABaby繼承獲得;在4.x中將沒有構造器。讀者可試執行這樣一行程式碼
$ABabyStudio=new ABabyStudio();
在3.x版本中應該會輸出“ABabyStudio”,而4.x中則不會輸出。
還有一點值得注意的是,在4.x中規定例項化一個物件時,只能為類變數指定常量值(或稱作標量值)作為初始值。如果想要透過變數(通常是全域性變數)、物件、設定初始值,應該在構造器中進行操作。比如:
3、
{
//...
}
class ABabyStudio
{
var $ababy='hello every one'; //sentence 1
var $ababy='hello'.' world '; //sentence 2
var $ababy=new ABaby(); //sentence 3
var $ababy=array(); //sentence 4
var $ababy=g_hello; //sentence 5,g_hello is a constant
function ABabyStudio(){
echo('call constructor'.chr(13));
}
//...
}
註釋:
5個標示的sentence只有1、4、5可以在4.x下透過。不過,筆者沒有了解Php工作組為什麼讓sentence 4透過,只能強迫自己理解為:array被作為一種基本資料型別,array()不被看作方法或表示式。
4、
class ABaby{
//...
}
class ABabyStudio
{
var $ababy;
function ABabyStudio(){
$this->ababy='hello every one';
$this->ababy='hello'.' every'.' one';
$this->ababy=new ABaby();
$this->ababy=array();
$this->ababy=g_hello;
echo('call constructor'.chr(13));
}
//...
}
註釋:
這段程式碼在3.x和4.x都能夠編譯透過,效果相同。
在3.x和4.x中,關於構造器規則的變化的說明駐足於此。下一篇將介紹按引用傳遞引數的不相容問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-997861/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Php 3.x與4.x中關於物件程式設計的不相容問題 (轉)PHP物件程式設計
- 關於PHP程式設計師解決問題的能力PHP程式設計師
- 關於考勤模組中設計的問題
- 關於單機遊戲製作中的物件重用問題(轉)遊戲物件
- 關於實體與值物件的問題物件
- 關於VC中的DLL的程式設計 (轉)程式設計
- 關於轉義符 在php正則中的匹配問題PHP
- 請教一個關於JAVA SOCKET程式設計中的問題Java程式設計
- 關於內嵌物件(Embedded Object)快取設計的問題物件Object快取
- 好程式設計師前端教程-關於瀏覽器的相容問題程式設計師前端瀏覽器
- 有關asp程式設計中,baseclass的問題程式設計
- 關於QGraphicsView中的物件移動問題. zView物件
- php關於session的問題PHPSession
- 關於日期計算的問題 (轉)
- 關於Python的面相物件程式設計Python物件程式設計
- 關於PHP程式設計中的變數使用技巧小結PHP程式設計變數
- 物件導向程式設計(C++篇2)——構造物件程式設計C++
- [併發程式設計]-關於 CAS 的幾個問題程式設計
- 關於物件持久化的問題物件持久化
- 關於jsp中轉發的問題JS
- 關於php解構函式的一個有趣問題PHP函式
- 關於繼承與重寫的面試程式設計題繼承面試程式設計
- 關於PHP佇列的問題PHP佇列
- 為什麼說物件導向程式設計和函數語言程式設計都有問題物件程式設計函數
- [討論]關於一個設計方面的問題――主動物件和被動物件中的方法定義物件
- 關於java安全性程式設計問題求助!!!Java程式設計
- 99.9%的Java程式設計師都說不清的問題:JVM中的物件記憶體佈局?Java程式設計師JVM物件記憶體
- php關於金額比較引發的問題(轉)PHP
- 關於詳細設計/程式碼的同步問題--請教
- 關於PHP的OpenSSL的加密問題PHP加密
- [.net 物件導向程式設計基礎] (2) 關於物件導向程式設計物件程式設計
- 好程式設計師教程分享關於ajax物件一些常見的問題總結程式設計師物件
- 關於物件顆粒大小的問題。物件
- 關於物件導向程式設計的一點思考物件程式設計
- 關於螢幕程式設計(轉)程式設計
- 關於Static程式碼塊、匿名程式碼塊、構造器的小擴充C程式
- 關於值物件的驗證的問題物件
- 關於php後端與js前端互動問題PHP後端JS前端