亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1131 | 回復(fù): 0
打印 上一主題 下一主題

第1次親密接觸PHP5 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-12-24 09:20 |只看該作者 |倒序?yàn)g覽

PHP5的正式版還沒(méi)發(fā)布,但我們可以學(xué)習(xí)、體驗(yàn)下開(kāi)發(fā)版給我們帶來(lái)的PHP新特性。
本文將集中介紹以下3大PHP5新功能:
[color="#ff0000"]* 新對(duì)象模式
[color="#ff0000"]* 結(jié)構(gòu)化異常處理
[color="#ff0000"]* 名稱空間
第1次親密接觸PHP5
作者:Admin | 文章出處:未知 | 閱讀次數(shù):44 | 發(fā)布日期:2004-10-24
文章來(lái)源:
[color="#005fa9"]PHPBuilder.com
原作者:Luis Argerich
翻譯:erquan
erquan注:本人現(xiàn)還未來(lái)得及體驗(yàn)PHP5,只是翻譯一篇老外的文章。
以下均由erquan翻譯,第1次作這些的事情希望沒(méi)有誤導(dǎo)大家。有些不準(zhǔn)的地方請(qǐng)諒解。
大家看這樣的行不行,如果行的話,偶就翻譯完,不行就翻譯了,免得誤導(dǎo)了大家,也累哦。。。。:)
轉(zhuǎn)貼時(shí)請(qǐng)注明文章來(lái)源,謝謝:)
PHP5的正式版還沒(méi)發(fā)布,但我們可以學(xué)習(xí)、體驗(yàn)下開(kāi)發(fā)版給我們帶來(lái)的PHP新特性。
本文將集中介紹以下3大PHP5新功能:
[color="#ff0000"]* 新對(duì)象模式
[color="#ff0000"]* 結(jié)構(gòu)化異常處理
[color="#ff0000"]* 名稱空間
在正式開(kāi)始之前,請(qǐng)注意:
*文章中的部分例子用PHP4的方法實(shí)現(xiàn),只是為了增強(qiáng)文章的可讀性
*本文所描述的新特性可能會(huì)與正式版特性有出入,請(qǐng)以正式版本為準(zhǔn)。
[color="#ff0000"]* 新對(duì)象模式
PHP5新的對(duì)象模式在PHP4的基礎(chǔ)上做了很大的"升級(jí)",你看起來(lái)會(huì)很像JAVA:(。
下面的一些文字將對(duì)它做一些簡(jiǎn)單介紹,并且附有小例子讓您開(kāi)始體驗(yàn)PHP5的新特性
come on~~:)
[color="#ff0000"]* 構(gòu)造函數(shù) 和 析構(gòu)函數(shù)
[color="#ff0000"]* 對(duì)象的引用
[color="#ff0000"]* 克隆對(duì)象
[color="#ff0000"]* 對(duì)象的3種模式:私有、公共和受保護(hù)
[color="#ff0000"]* 接口
[color="#ff0000"]* 虛擬類
[color="#ff0000"]* __call()
[color="#ff0000"]* __set()和__get()
[color="#ff0000"]* 靜態(tài)成員
[color="#ff0000"]構(gòu)造函數(shù) 和 析構(gòu)函數(shù)
在PHP4中,和類名一樣的函數(shù)被默認(rèn)為該類的構(gòu)造器,并且在PHP4沒(méi)有析構(gòu)函數(shù)的概念。(二泉 注:這點(diǎn)和JAVA一樣)
但從PHP5開(kāi)始,構(gòu)造函數(shù)被統(tǒng)一命名為 __construct,而且有了析構(gòu)函數(shù):__destruct(二泉 注:這點(diǎn)卻和Delphi一樣,可見(jiàn)PHP5吸收了眾多的成熟的OO思想,可C可賀~~):
例1:構(gòu)造函數(shù)和析構(gòu)函數(shù)
[color="#0000bb"]
x = $x;
  }
  function display()
  function __destruct() {
    print("bye bye");
  }
}
$o1 = new foo(4);
$o1->display();
?>
運(yùn)行完你將看到輸出了"bye bye",這是因?yàn)轭愒诮K止的時(shí)候調(diào)用了__destruct()析構(gòu)函數(shù)~~
[color="#ff0000"]對(duì)象的引用
正如你所知道的一樣,在PHP4中,對(duì)一個(gè)函數(shù)或方法傳遞一個(gè)變量時(shí),實(shí)際上是傳遞了一個(gè)copy,除非你用了傳址符&來(lái)聲明
你在做一個(gè)變量的引用。在PHP5中,對(duì)象總是以引用的方式被指定:
例2:對(duì)象的引用
[color="#0000bb"]
x = $x;
  }
  function getX() {
    return $this->x;
  }
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1;
$o1->setX(5);
if($o1->getX() == $o2->getX()) print("Oh my god!");
?>

(二泉 注:你將看到"Oh my god!"的輸出)
[color="#ff0000"]克隆對(duì)象
如上,如果有時(shí)不想得到對(duì)象的引用而想用copy時(shí),怎么辦?在PHP5提供的 __clone 方法中實(shí)現(xiàn):
例3:克隆對(duì)象
[color="#0000bb"]
x = $x;
  }
  function getX() {
    return $this->x;
  }
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1->__clone();
$o1->setX(5);
if($o1->getX() != $o2->getX()) print("Copies are independant");
?>

克隆對(duì)象的方法在已被應(yīng)用到很多語(yǔ)言中,所以你不必?fù)?dān)心它的性能:)。
[color="#ff0000"]Private, Public 和 Protected
在PHP4中,你可以在對(duì)象的外面操作它任意的方法和變量--因?yàn)榉椒ê妥兞渴枪玫。在PHP5引用了3種模式來(lái)控制
對(duì)變量、方法的控制權(quán)限:Public(公用的)、Protected(受保護(hù))和Private(私有)
Public:方法和變量可以在任意的時(shí)候被訪問(wèn)到
Private:只能在類的內(nèi)部被訪問(wèn),子類也不能訪問(wèn)
Protected:只能在類的內(nèi)部、子類中被訪問(wèn)
例子4:Public, protected and private
[color="#0000bb"]
private_foo(); //Ok because we are in the same class we can call private methods
    print("I'm protected");
  }
  private function private_foo() {
    $this->x = 3;
    print("I'm private");
  }
}
class foo2 extends foo {
  public function display() {
    $this->protected_foo();
    $this->public_foo();
    // $this->private_foo();  // Invalid! the function is private in the base class
  }
}
$x = new foo();
$x->public_foo();
//$x->protected_foo();  //Invalid cannot call protected methods outside the class and derived classes
//$x->private_foo();    //Invalid private methods can only be used inside the class
$x2 = new foo2();
$x2->display();
?>

提示:變量總是私有形式,直接訪問(wèn)一個(gè)私有變量并不是一個(gè)好的OOP思想,應(yīng)該用其他的方法來(lái)實(shí)現(xiàn) set/get 的功能
[color="#ff0000"]接口
正如你知道的一樣,在 PHP4 中實(shí)現(xiàn)繼承的語(yǔ)法是"class foo extends parent"。無(wú)論在PHP4 還是在 PHP5 中,都不支持多重繼承即只能從一個(gè)類往下繼承。 PHP5中的"接口"是這樣的一種特殊的類:它并不具體實(shí)現(xiàn)某個(gè)方法,只是用來(lái)定義方法的名稱和擁有的元素,然后通過(guò)關(guān)鍵字將它們一起引用并實(shí)現(xiàn)具體的動(dòng)作。
[color="#0000bb"]
Example 5: 接口

這對(duì)代碼的閱讀性和理解性是非常有幫助的:讀到該類時(shí),你就知道foo包含了接口displayable和printable,而且一定有print()(二泉 注:應(yīng)該是doprint())方法和display()方法。不必知道它們內(nèi)部是如何實(shí)現(xiàn)就可輕松操作它們只要你看到foo的聲明。
[color="#ff0000"]虛擬類
虛擬類是一種不能被實(shí)例化的類,它可以像超類一樣,可以定義方法和變量。
在虛擬類中還可以定義虛擬的方法,而且在該方法也不能在該類是被實(shí)現(xiàn),但必須在其子類中被實(shí)現(xiàn)
Example 6: 虛擬類
[color="#0000bb"]
x = $x;
  }
}
class foo2 extends foo {
  function display() {
    // Code
  }
}
?>

[color="#ff0000"]__call()方法
在PHP5時(shí),如果你定義了 __call()方法,當(dāng)你試圖訪問(wèn)類中一個(gè)不存在的變量或方法時(shí),__call()就會(huì)被自動(dòng)調(diào)用:
Example 7: __call
[color="#0000bb"]
doStuff();
$x->fancy_stuff();
?>

這個(gè)特殊的方法被習(xí)慣用來(lái)實(shí)現(xiàn)"方法重載",因?yàn)槟阋揽恳粋(gè)私有參數(shù)來(lái)實(shí)現(xiàn)并檢查這個(gè)參數(shù):
Exampe 8:  __call 實(shí)現(xiàn)方法重載
[color="#0000bb"]
foo_for_int($arguments[0]);
      if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
    }
  }
  private function foo_for_int($x) {
    print("oh an int!");
  }
  private function foo_for_string($x) {
    print("oh a string!");
  }
}
$x = new Magic();
$x->foo(3);
$x->foo("3");
?>
[color="#ff0000"]__set()方法 和 __get()方法
當(dāng)訪問(wèn)或設(shè)置一個(gè)未定義的變量時(shí),這兩個(gè)方法將被調(diào)用:
Example 9: __set and __get
[color="#0000bb"]
bar = 3;
print($x->winky_winky);
?>


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/12387/showart_63192.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP