深入php面向对象和模式
生活随笔
收集整理的這篇文章主要介紹了
深入php面向对象和模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前兩章是php歷史和概論,略過。
第三章 對象基礎
3.1 類和對象
類,是用于生成對象的代碼模版。
public 公有的,都可調用。protected 保護的, 只有本類和子類可以調用。private 私有的, 只有本類可以調用,子類也不能。?
使用->來調用類的屬性和方法: $product->title?
構造方法:__construct() 會被自動調用。?
繼承: extends子類繼承父類會在實例化的時候自動調用所有public 和 protected方法。要引用一個類而不是對象的方法,可以使用::而不是->, 所以 parent::__construct()
?
靜態方法: static 以類作為作用域的函數。 class StaticExample {static public $num=0;static public function sayHello() {print "hello";} }print StaticExample::$num; StaticExample::sayHello();要從當前類(不是子類)中訪問靜態方法或屬性,可以使用self關鍵字 self::$num;根據定義, 我們不能在對象中調用靜態方法, 因此靜態方法和屬性又被稱為類變量和屬性。因此不能在靜態方法中使用偽變量$this?
常量屬性: const 一般只能用大寫字母來命名常量 const AVAILABLE = 0;像靜態屬性一樣, 只能通過類而不能通過類的實例訪問常量屬性。?
抽象類: abstract 抽象類不能直接被實例化,抽象類中只定義(或部分定義)子類需要的方法。子類可以繼承它并且通過實現其中的抽象方法,使抽象類具體化。 abstract public function write(); 抽象類的每個子類都必須實現抽象類中的所有抽象方法。?
接口: interface 接口職能定義功能,而不包含實現的內容。 interface Chargeable {public function getPrice(); } 任何實現接口的類都要實現接口中所定義的所有方法。?
拋出異常: 使用throw 和 Exception對象來拋出異常,這會停止執行當前方法。 if($i=0){throw new Exception('this is a error message'); }或 try{ ... } catch (Exception $e) { ... }?
析構方法: 在對象被垃圾收集器收集前(即對象從內存中刪除之前)自動調用。 __destruct()?
__clone()復制對象class CopyMe {} $first = new CopyMe(); $second = $first; //php4: $second和$first是兩個完全不同的對象。 //php5: $second和$first指向同一個對象。 php中對象的賦值和傳遞都是通過引用進行的。回調?
一個簡單的回調案例
function f1($arg1, $arg2){echo __FUNCTION__.'exec, the args is:'.$arg1.' '.$arg2;echo "<br>";}call_user_func('f1', 'han', 'wen');call_user_func_array('f1', array('f1', array('han', 'wen')));目前在我看來回調函數就是通過函數call_user_func和call_user_func_array來指定函數名和參數來調用函數,具體用途還不太清楚。
匿名函數和閉包Closure
$func = function() {}; //帶結束符$func = function( $param ) {echo $param; };$func( 'some string' );//輸出: //some string
?這篇文章不錯http://www.cnblogs.com/melonblog/archive/2013/05/01/3052611.html
?順便發現一個強大函數preg_replace_callback
?對象與設計
內聚: 是一個模塊內部各成分之間相關聯程度的度量。
耦合:緊密相連,依賴太重
轉載于:https://www.cnblogs.com/derrck/p/4439027.html
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的深入php面向对象和模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计师Yoyo:为用户设计产品,让他们生
- 下一篇: nginx+php-fpm 502 ba