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