PHP5試用(二)_PHP教程
Jul 21, 2016 pm 04:11 PM
抽象類別
抽象類別不能被實(shí)例化。
抽象類別與其它類別一樣,允許定義變數(shù)及方法。
抽象類別同樣可以定義一個(gè)抽象的方法,抽象類別的方法不會(huì)被執(zhí)行,不過將有可能會(huì)在其衍生類別中執(zhí)行。
例六:抽象類別
abstract class foo {
protected $x;
abstract function display();
function setX($ x) {
$this->x = $x;
}
}
class foo2 extends foo {
function display() {
// Code
}
}
?>
__call
PHP5 的物件新增了一個(gè)專用方法__call(),這個(gè)方法用來監(jiān)視一個(gè)物件中的其它方法。如果你試著呼叫一個(gè)物件中不存在的方法,__call 方法將會(huì)被自動(dòng)呼叫。
例七:__call
class foo {
function __call($name,$arguments) {
print("Did you call me? I 'm $name!");
}
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
? >
這個(gè)特殊的方法可以被用來實(shí)現(xiàn)「過載(overloading)」的動(dòng)作,這樣你就可以檢查你的參數(shù)並且透過呼叫一個(gè)私有的方法來傳遞參數(shù)。
例八:使用__call 實(shí)作「過載」動(dòng)作
class Magic {
function __call($name,$arguments) {
if( $name=='foo') {
if(is_int($arguments[0])) $this->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");
?>
__set 和__get
這是一個(gè)很棒的方法,__set 和__get 方法可以用來捕獲一個(gè)物件中不存在的變數(shù)和方法。
例九: __set 和__get
class foo {
function __set($name,$val) {
print("Hello, you tried to put $val in $name");
}
function __get($name) {
print("Hey you asked for $name");
}
}
$x = new foo();
$x->bar = 3;
print($x->winky_winky);
?>
類型指示
在PHP5 中,你可以在物件的方法中指明其參數(shù)必須為另一個(gè)物件的實(shí)例。
例十:型別指示
class foo {
// code ...
}
class bar {
public function process_a_foo(foo $foo) {
// Some code
}
}
$b = new bar();
$f = new foo();
$b- >process_a_foo($f);
?>
可以看出,我們可以顯性的在參數(shù)前指明一個(gè)物件的名稱,PHP5 會(huì)辨識(shí)出這個(gè)參數(shù)將會(huì)要是一個(gè)物件實(shí)例。
靜態(tài)成員
靜態(tài)成員和靜態(tài)方法在面象物件程式設(shè)計(jì)的術(shù)語中被稱作“物件方法(class methods)” 和“物件變數(shù)(class variables)” 。
「物件方法」 在一個(gè)物件沒有實(shí)例化前允許被呼叫。同樣,「物件變數(shù)」 在一個(gè)物件沒有實(shí)例化前可以被獨(dú)立操作控制(不需要用一個(gè)物件的方法來控制)。
例十一:物件方法與物件變數(shù)
class calculator {
static public $pi = 3.14151692;
static public function add($x ,$y) {
return $x $y;
}
}
$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>
異常處理
異常處理是公認(rèn)的處理程序錯(cuò)誤的理想方法,在Java 及C 中都有這個(gè)概念,我們欣喜的看到,在PHP5 已經(jīng)加入了這方面的應(yīng)用。你可以嘗試使用 “try” 和 “catch” 來控製程式的錯(cuò)誤。
例十二:異常處理
class foo {
function divide($x,$y) {
if($y==0 ) throw new Exception("cannot divide by zero");
return $x/$y;
}
}
$x = new foo();
try {
$x->divide(3,0);
} catch (Exception $e) {
echo $e->getMessage();
echo "n
n";
// Some catastrophic measure here
}
?>
上例中,我們使用了「try」 來執(zhí)行花括號(hào)中的語句,當(dāng)有錯(cuò)誤發(fā)生的時(shí)候,程式碼會(huì)把錯(cuò)誤交給「catch」 子句來處理,在「catch」 子句中,你需要指明要把錯(cuò)誤交給某個(gè)物件處理,這樣做可以讓程式碼結(jié)構(gòu)看起來更清晰,因?yàn)楝F(xiàn)在我們可以把所有的錯(cuò)誤資訊交給一個(gè)物件來處理。
自訂錯(cuò)誤處理
你可以很方便的用自訂的處理錯(cuò)誤的程式碼來控制你的程式中的意外。你僅僅需要從異常類別中派生出一個(gè)自己的錯(cuò)誤控制類,在你自己的錯(cuò)誤控制類中,你需要有一個(gè)建構(gòu)函數(shù)和一個(gè) getMessage 方法,以下是一個(gè)例子。
例十三:自訂錯(cuò)誤處理
class WeirdProblem extends Exception {
private $data;
function WeirdProblem(>private $data;
function WeirdProblem($$ >parent::exception();
$this->data = $data;
}
function getMessage() {
return $this->data . " caused a weird exception!";
}
}
?>
現(xiàn)在我們可以使用「throw new WeirdProblem($foo)」 來拋出一個(gè)錯(cuò)誤句柄,如果錯(cuò)誤在「try」的程式碼區(qū)塊中發(fā)生,PHP5 會(huì)自動(dòng)把錯(cuò)誤交給「catch」 部分來處理。
名稱空間
名稱空間對(duì)類別的分組或函數(shù)分組很有用。它可以把一些相關(guān)的類別或函數(shù)給組合在一起,方便以後呼叫。
例十四:名稱空間
namespace Math {
class Complex {
//...code...
function __construct () {
print("hey");
}
}
} $m = new Math::Complex();
?>
注意你需要在何種情況下使用名稱空間,在實(shí)際運(yùn)用中,你可能會(huì)需要聲明兩個(gè)或多個(gè)名稱一樣的物件來做不同的事情,那麼你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

而後悔莫及、人們常常會(huì)因?yàn)橐恍┰虿恍⌒膭h除某些聯(lián)絡(luò)人、微信作為一款廣泛使用的社群軟體。幫助用戶解決這個(gè)問題,本文將介紹如何透過簡(jiǎn)單的方法找回被刪除的聯(lián)絡(luò)人。 1.了解微信聯(lián)絡(luò)人刪除機(jī)制這為我們找回被刪除的聯(lián)絡(luò)人提供了可能性、微信中的聯(lián)絡(luò)人刪除機(jī)制是將其從通訊錄中移除,但並未完全刪除。 2.使用微信內(nèi)建「通訊錄恢復(fù)」功能微信提供了「通訊錄恢復(fù)」節(jié)省時(shí)間和精力,使用者可以透過此功能快速找回先前刪除的聯(lián)絡(luò)人,功能。 3.進(jìn)入微信設(shè)定頁(yè)面點(diǎn)選右下角,開啟微信應(yīng)用程式「我」再點(diǎn)選右上角設(shè)定圖示、進(jìn)入設(shè)定頁(yè)面,,

番茄小說是一款非常熱門的小說閱讀軟體,我們?cè)诜研≌f中經(jīng)常會(huì)有新的小說和漫畫可以去閱讀,每一本小說和漫畫都很有意思,很多小伙伴也想著要去寫小說來賺取賺取零用錢,在把自己想要寫的小說內(nèi)容編輯成文字,那麼我們要怎麼樣在這裡面去寫小說呢?小伙伴們都不知道,那就讓我們一起到本站本站中花點(diǎn)時(shí)間來看寫小說的方法介紹。分享番茄小說寫小說方法教學(xué) 1、先在手機(jī)上打開番茄免費(fèi)小說app,點(diǎn)擊個(gè)人中心——作家中心 2、跳到番茄作家助手頁(yè)面——點(diǎn)擊創(chuàng)建新書在小說的結(jié)

手機(jī)遊戲成為了人們生活中不可或缺的一部分,隨著科技的發(fā)展。它以其可愛的龍蛋形象和有趣的孵化過程吸引了眾多玩家的關(guān)注,而其中一款備受矚目的遊戲就是手機(jī)版龍蛋。幫助玩家們?cè)谶[戲中更好地培養(yǎng)和成長(zhǎng)自己的小龍,本文將向大家介紹手機(jī)版龍蛋的孵化方法。 1.選擇合適的龍蛋種類玩家需要仔細(xì)選擇自己喜歡並且適合自己的龍蛋種類,根據(jù)遊戲中提供的不同種類的龍蛋屬性和能力。 2.提升孵化機(jī)的等級(jí)玩家需要透過完成任務(wù)和收集道具來提升孵化機(jī)的等級(jí),孵化機(jī)的等級(jí)決定了孵化速度和孵化成功率。 3.收集孵化所需的資源玩家需要在遊戲中

在現(xiàn)今社會(huì),手機(jī)已經(jīng)成為我們生活中不可或缺的一部分。而微信作為我們?nèi)粘贤?、工作、生活的重要工具,更是?jīng)常被使用。然而,在處理不同事務(wù)時(shí)可能需要分開兩個(gè)微信帳號(hào),這就要求手機(jī)能夠支援同時(shí)登入兩個(gè)微信帳號(hào)。華為手機(jī)作為國(guó)內(nèi)知名品牌,很多人使用,那麼華為手機(jī)開啟兩個(gè)微信帳號(hào)的方法是怎麼樣的呢?下面就來揭秘一下這個(gè)方法。首先,要在華為手機(jī)上同時(shí)使用兩個(gè)微信帳號(hào),最簡(jiǎn)

MySQL中的複合主鍵是指表中由多個(gè)欄位組合而成的主鍵,用來唯一標(biāo)識(shí)每筆記錄。與單一主鍵不同的是,複合主鍵由多個(gè)欄位的值組合在一起形成。在建立表格的時(shí)候,可以透過指定多個(gè)欄位為主鍵來定義複合主鍵。為了示範(fàn)複合主鍵的定義與作用,我們先建立一個(gè)名為users的表,其中包含了id、username和email這三個(gè)字段,其中id是自增主鍵,user

什麼是全角字元?在電腦編碼系統(tǒng)中,全角字元是一種佔(zhàn)用兩個(gè)標(biāo)準(zhǔn)字元位置的字元編碼方式。相對(duì)應(yīng)的,佔(zhàn)用一個(gè)標(biāo)準(zhǔn)字元位置的字元編碼方式稱為半角字元。全角字元通常用於中文、日文、韓文等亞洲文字的輸入、顯示和列印。在中文輸入法和文字編輯中,全角字符與半角字符的使用場(chǎng)景是有所區(qū)別的。全角字符的使用中文輸入法:在中文輸入法中,通常全角字符用於輸入中文字符,例如漢字、標(biāo)

Go語言方法與函數(shù)的差異在於與結(jié)構(gòu)體的關(guān)聯(lián)性:方法與結(jié)構(gòu)體關(guān)聯(lián),用於操作結(jié)構(gòu)體資料或方法;函數(shù)獨(dú)立於類型,用於執(zhí)行通用操作。
