-
方法就是在類中的function,很多時候我們分不清方法與函數有什么差別,在面向過程的程序設計中function叫做函數,在面向對象中function則被稱之為方法。
同屬性一樣,類的方法也具有public,protected 以及?private 的訪問控制。
訪問控制的關鍵字代表的意義為:
public:公開的
protected:受保護的
private:私有的我們可以這樣定義方法:
class?Car?{ ????public?function?getName()?{ ????????return?'汽車'; ????} } $car?=?new?Car(); echo?$car->getName();
使用關鍵字static修飾的,稱之為靜態方法,靜態方法不需要實例化對象,可以通過類名直接調用,操作符為雙冒號::。
class?Car?{ ????public?static?function?getName()?{ ????????return?'汽車'; ????} } echo?Car::getName();?//結果為“汽車”
查看全部 -
訪問控制的關鍵字代表的意義為:
public:公開的
protected:受保護的
private:私有的查看全部 -
//定義一個類 class?Car?{ ????//定義屬性 ????public?$name?=?'汽車'; ????//定義方法 ????public?function?getName()?{ ????????//方法內部可以使用$this偽變量調用對象的屬性或者方法 ????????return?$this->name; ????} }
$car?=?new?Car(); //也可以采用變量來創建 $className?=?'Car'; $car?=?new?$className();
查看全部 -
<?php
//定義一個類
class Car {
? ? var $name = '汽車';
? ? function getName() {
? ? ? ? return $this->name;
? ? }
}
//實例化一個car對象
$car = new Car();
$car->name = '奧迪A5'; //設置對象的屬性值
echo $car->getName();? //調用對象的方法 輸出對象的名字
查看全部 -
class?Car?{ ????$name?=?'汽車'; ????function?getName()?{ ????????return?$this->name; ????} ????}
類是一類東西的結構描述,而對象則是一類東西的一個具體實例,例如汽車這個名詞可以理解為汽車的總類,但這輛汽車則是一個具體的汽車對象。
對象通過new關鍵字進行實例化:
$car?=?new?Car(); echo?$car->getName();
查看全部 -
$fruit=array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");foreach($fruit?as?$k=>$v){ ????echo?'<br>水果的英文鍵名:'.$k.',對應的值是:'.$v; }
查看全部 -
$fruit?=?array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");? $fruit0?=?$fruit['banana']; print_r($fruit0);
查看全部 -
$fruit=array('蘋果','香蕉','菠蘿'); foreach($fruit?as?$k=>$v){ ????echo?'<br>第'.$k.'值是:'.$v; }
查看全部 -
$fruit=array('蘋果','香蕉','菠蘿'); for($i=0;?$i<3;?$i++){ ????echo?'<br>數組第'.$i.'值是:'.$fruit[$i]; }
查看全部 -
PHP中的重載指的是動態的創建屬性與方法,是通過魔術方法來實現的。屬性的重載通過__set,__get,__isset,__unset來分別實現對不存在屬性的賦值、讀取、判斷屬性是否設置、銷毀屬性。class?Car?{ ????private?$ary?=?array(); ???? ????public?function?__set($key,?$val)?{ ????????$this->ary[$key]?=?$val; ????} ???? ????public?function?__get($key)?{ ????????if?(isset($this->ary[$key]))?{ ????????????return?$this->ary[$key]; ????????} ????????return?null; ????} ???? ????public?function?__isset($key)?{ ????????if?(isset($this->ary[$key]))?{ ????????????return?true; ????????} ????????return?false; ????} ???? ????public?function?__unset($key)?{ ????????unset($this->ary[$key]); ????} } $car?=?new?Car(); $car->name?=?'汽車';??//name屬性動態創建并賦值 echo?$car->name; 方法的重載通過__call來實現,當調用不存在的方法的時候,將會轉為參數調用__call方法,當調用不存在的靜態方法時會使用__callStatic重載。class?Car?{????public?$speed?=?0;????????public?function?__call($name,?$args)?{????????if?($name?==?'speedUp')?{????????????$this->speed?+=?10;????????}????}}$car?=?new?Car();$car->speedUp();?//調用不存在的方法會使用重載echo?$car->speed;
<?php
class Car {
? ? public $speed = 10;
? ? //在這里使用重載實現speedDown方法
? ? public function __call($name,$arg){
? ? ? ? if($name=='speedDown')
? ? ? ? {$this->speed-=10;}
? ? }
}
$car = new Car();
$car->speedDown(); //調用不存在的speedDown方法
echo $car->speed;?>
查看全部 -
分割符后面可以使用模式修飾符,模式修飾符包含:i,m,s,x? ?i修飾符忽略大小寫
查看全部 -
PHP異常處理之獲取錯誤發生的所在行
在異常被捕獲之后,我們可以通過異常處理對象獲取其中的異常信息,前面我們已經了解捕獲方式,以及獲取基本的錯誤信息。
在實際應用中,我們通常會獲取足夠多的異常信息,然后寫入到錯誤日志中。
通過我們需要將報錯的文件名、行號、錯誤信息、異常追蹤信息等記錄到日志中,以便調試與修復問題。
查看全部 -
PHP異常處理之捕獲異常信息
在了解了異常處理的基本原理之后,我們可以通過try catch來捕獲異常,我們將執行的代碼放在try代碼塊中,一旦其中的代碼拋出異常,就能在catch中捕獲。
這里我們只是通過案例來了解try catch的機制以及異常捕獲的方法,在實際應用中,不會輕易的拋出異常,只有在極端情況或者非常重要的情況下,才會拋出異常,拋出異常,可以保障程序的正確性與安全,避免導致不可預知的bug。
查看全部 -
PHP異常處理之異常處理類
PHP具有很多異常處理類,其中Exception是所有異常處理的基類。
Exception具有幾個基本屬性與方法,其中包括了:
message 異常消息內容
code 異常代碼
file 拋出異常的文件名
line 拋出異常在該文件的行數其中常用的方法有:
getTrace 獲取異常追蹤信息
getTraceAsString 獲取異常追蹤信息的字符串
getMessage 獲取出錯信息如果必要的話,可以通過繼承Exception類來建立自定義的異常處理類。
查看全部 -
PHP異常處理之拋出一個異常
從PHP5開始,PHP支持異常處理,異常處理是面向對象一個重要特性,PHP代碼中的異常通過throw拋出,異常拋出之后,后面的代碼將不會再被執行。
既然拋出異常會中斷程序執行,那么為什么還需要使用異常處理?
異常拋出被用于在遇到未知錯誤,或者不符合預先設定的條件時,通知客戶程序,以便進行其他相關處理,不至于使程序直接報錯中斷。
當代碼中使用了try catch的時候,拋出的異常會在catch中捕獲,否則會直接中斷。
?
1、基本語法
? ? ? ? try{
? ? ? ? ? ? //可能出現錯誤或異常的代碼
? ? ? ? ? ? //catch表示捕獲,Exception是php已定義好的異常類
? ? ? ? } catch(Exception $e){
? ? ? ? ? ? //對異常處理,方法:
? ? ? ? ? ? ? ? //1、自己處理
? ? ? ? ? ? ? ? //2、不處理,將其再次拋出
? ? ? ? }
2、處理處理程序應當包括:
Try - 使用異常的函數應該位于 "try" ?代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。
Throw - 這里規定如何觸發異常。注意:每一個 "throw" 必須對應至少一個 "catch",當然可以對應多個"catch"
Catch - "catch" 代碼塊會捕獲異常,并創建一個包含異常信息的對象。查看全部
舉報