echo $car->getName(); //調用對象的方法 輸出對象的名字 php
42. mysql
class Car { public function getName() { return '汽車'; } } $car = new Car(); echo $car->getName();
使用關鍵字static修飾的,稱之爲靜態方法,靜態方法不須要實例化對象,能夠經過類名直接調用,操做符爲雙冒號::。 正則表達式
class Car { public static function getName() { return '汽車'; } } echo Car::getName(); //結果爲「汽車」
43. sql
靜態屬性與方法能夠在不實例化類的狀況下調用,直接使用類名::方法名的方式進行調用。靜態屬性不容許對象使用->操做符調用。 設計模式
靜態方法也能夠經過變量來進行動態調用 數組
$func = 'getSpeed'; $className = 'Car'; echo $className::$func(); //動態調用靜態方法類和類中的方法均可以經過變量來動態調用
靜態方法中,$this僞變量不容許使用。可使用self,parent,static在內部調用靜態方法與屬性。 app
44,。 函數
類屬性必須定義爲公有、受保護、私有之一。爲兼容PHP5之前的版本,若是採用 var 定義,則被視爲公有。 fetch
若是構造函數定義成了私有方法,則不容許直接實例化對象了,這時候通常經過靜態方法進行實例化,在設計模式中會常常使用這樣的方法來控制對象的建立,好比單例模式只容許有一個全局惟一的對象。 ui
class Car { private function __construct() { echo 'object create'; } private static $_object = null; public static function getInstance() { if (empty(self::$_object)) { self::$_object = new Car(); //內部方法能夠調用私有方法,所以這裏能夠建立對象 } return self::$_object; } } //$car = new Car(); //這裏不容許直接實例化對象 $car = Car::getInstance(); //經過靜態方法來得到一個實例44.
PHP中的重載指的是動態的建立屬性與方法
(1)屬性重載:對不存在的屬性賦值,直接動態建立(這個動態建立是隻能被實例對象使用一次嗎,仍是能夠一次保留在類裏?)
(2)方法重載
方法的重載經過__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;能夠在_call方法裏面實現你想實現的不存在方法的內容
45.
(1)對象比較
當同一個類的兩個實例的全部屬性都相等時,可使用比較運算符==進行判斷,當須要判斷兩個變量是否爲同一個對象的引用時,可使用全等運算符===進行判斷。
(2)對象複製
$a = new Car(); $a->name = 'new car'; $b = clone $a; var_dump($b);(3)對象序列化
能夠經過serialize方法將對象序列化爲字符串,用於存儲或者傳遞數據,而後在須要的時候經過unserialize將字符串反序列化成對象進行使用。
$a = new Car(); $str = serialize($a); //對象序列化成字符串 echo $str.'<br>'; $b = unserialize($str); //反序列化爲對象 var_dump($b);
46.
單引號和雙引號到底有啥區別呢?
PHP容許咱們在雙引號串中直接包含字串變量。
而單引號串中的內容總被認爲是普通字符。
好比:
$str='hello'; echo "str is $str"; //運行結果: str is hello echo 'str is $str'; //運行結果: str is $str
47.
trim去除一個字符串兩端空格。
rtrim是去除一個字符串右部空格,其中的r是right的縮寫。
ltrim是去除一個字符串左部空格,其中的l是left的縮寫。
48.
$len = strlen($str);獲取含中文的字符串長度(獲取長度包括其中的英文字符)
$str = "我愛你"; echo mb_strlen($str,"UTF8");//結果:3,此處的UTF849.
$str='i love you'; //截取love這幾個字母 echo substr($str, 2, 4);二、中文字符串的截取函數mb_substr()
$str='我愛你,中國'; //截取中國兩個字 echo mb_substr($str, 4, 2, 'utf8');//50.
函數說明:strpos(要處理的字符串, 要定位的字符串, 定位的起始位置[可選])
$str = 'I want to study at imooc'; $pos = strpos($str, 'imooc'); echo $pos;//結果顯示19,表示從位置0開始,imooc在第19個位置開始出現51.
函數說明:str_replace(要查找的字符串, 要替換的字符串, 被搜索的字符串, 替換進行計數[可選])
$str = 'I want to learn js'; $replace = str_replace('js', 'php', $str); echo $replace;//結果顯示I want to learn php52.
一、php字符串合併函數implode()
函數說明:implode(分隔符[可選], 數組)
返回值:把數組元素組合爲一個字符串
例子:
$arr = array('Hello', 'World!'); $result = implode('', $arr); print_r($result);//結果顯示Hello World!
二、php字符串分隔函數explode()
函數說明:explode(分隔符[可選], 字符串)
返回值:函數返回由字符串組成的數組
例子:
$str = 'apple,banana'; $result = explode(',', $str); print_r($result);//結果顯示array('apple','banana')
53.
正則表達式是對字符串進行操做的一種邏輯公式,就是用一些特定的字符組合成一個規則字符串,稱之爲正則匹配模式。
$p = '/apple/'; $str = "apple banna"; if (preg_match($p, $str)) { echo 'matched'; }
其中字符串'/apple/'就是一個正則表達式,他用來匹配源字符串中是否存在apple字符串。
54.
常常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~)
55.
$time=time();
//date函數,第二個參數取默認值的狀況 echo date("Y-m-d"); //取得當前時間 //date函數,第二個參數有值的狀況 echo date("Y-m
56.
//建立可拋出一個異常的函數 function checkNum($number){ if($number>1){ throw new Exception("異常提示-數字必須小於等於1"); } return true; } //在 "try" 代碼塊中觸發異常 try{ checkNum(2); //若是異常被拋出,那麼下面一行代碼將不會被輸出 echo '若是能看到這個提示,說明你的數字小於等於1'; }catch(Exception $e){ //捕獲異常 echo '捕獲異常: ' .$e->getMessage(); }getMessage()是Exception裏面輸入的文字.
其中經常使用的方法有:
getTrace 獲取異常追蹤信息
getTraceAsString 獲取異常追蹤信息的字符串
getMessage 獲取出錯信息
57.
'<br>'爲PHP內的換行
58.建立一個二維數組
while($row =mysql_fetch_assoc($query)){ $data[] = $row; }$data[] 賦值表示每次加一個一維數組進去,最後結果是一個二維數組