class 類
object 物件
new 例項化
member 類成員
method 方法,成員函式
property 屬性,成員變數
constant 類常量
class classnamestatic
function
fn1()
public
function __construct($var
)
public
function
__destruct()
public
function
__clone()
}$c = new classname('test'); //
物件例項化
echo
$c->var.'
'; //
訪問物件屬性$obj->var
$c->var = 'update'; //
修改物件屬性
$c->new_var = 'add'; //
新增物件屬性
var_dump($c);echo '
';
unset($c->new_var); //
刪除物件屬性
var_dump($c);echo '
';
$c->fn0(); //
呼叫成員方法
echo classname::pi.'
'; //
訪問類常量,使用:類名::類常量名
echo classname::$s_var.'
'; //
訪問靜態屬性,使用:類名::$靜態屬性名
classname::fn1(); //
呼叫靜態方法
3.1、關鍵字:
類常量,不可修改性const(修飾屬性),類常量只能通過類訪問:類名加範圍解析操作符(雙冒號::)
靜態成員-static(修飾屬性和方法),靜態成員只能通過類訪問
不可繼承性final(修飾類和方法)
3.2、訪問控制符
public:表示公有的,其修飾的屬性和方法可以在類內和類外訪問,可以被繼承
protected:表示受保護的,,其修飾的屬性和方法只可以在類內訪問,可以被繼承
privated:表示私有的,其修飾的屬性和方法只可以在類內訪問,不可以被繼承
屬性前一定要加乙個訪問控制修飾符,類常量不用加訪問控制修飾符,方法前可以不加訪問控制修飾符,預設是public
如果需要實現真正的複製,可以使用物件轉殖方法:$b = clone $a;
私有化__clone方法可以禁止物件被轉殖:private function __clone(){}
類的訪問必須保證類在記憶體中已經存在,所有在使用類之前需要將包含類的php檔案載入到記憶體,本質是檔案載入。
手動載入:
if(!class_exists('man'))new man();
自動載入:
php7以前:
function __autoload($class_name)
//再嘗試去b資料夾中尋找類
$file = 'b/'.$class_name.'.class.php';
if(file_exists($file
))
//以此類推,直到找到類或找完所有包含類的資料夾為止
}$d = new dog(); //
例項化dog類,系統自動呼叫__autoload函式
php7以後:
function my_autoload($class_name)
$file = 'b/'.$class_name.'.class.php';
if(file_exists($file))}
spl_autoload_register('my_autoload');
$d = new dog();
也可以分開多個載入函式:
function a_autoload($class_name)}function b_autoload($class_name)}
spl_autoload_register('a_autoload');
spl_autoload_register('b_autoload');
$d = new dog();
自動載入類:
classautoload
}public
static
function loadb($class_name
) }
}spl_autoload_register(
array('autoload','loada'));
spl_autoload_register(
array('autoload','loadb'));
$d = new dog();
單例模式:乙個類有且僅有乙個物件,例如作業系統中的資源管理器,目的是為了保護資源的唯一性
classsingleton
//類入口
public
static
function
getinstance()
return self::$object
; }
//私有化轉殖方法,防止轉殖產生新物件
private
function
__clone(){}}//
例項化兩個物件
$s = singleton::getinstance();
$s1 = singleton::getinstance();
var_dump($s,$s1); //
檢測到是同乙個物件
工廠模式factory:
由乙個地方生產物件,其他位置就不需要額外例項化物件,從而可以方便後期**統一維護(改名),方便隱藏真實的類結構。
工廠模式針對相似模型的統一產出,要有一批具有類似功能的類,其本質是相似的大類下的小類
靜態工廠(生產物件時需要知道類名):
classman}
class
woman
}class
child
}class
humanfactory
}$m = humanfactory::getinstance('man');
$w = humanfactory::getinstance('woman');
$c = humanfactory::getinstance('child');
$m->display();
$w->display();
$c->display();
匿名工廠(生產物件時需要知道類名對應的符號):
classhumanfactory
} }$m = humanfactory::getinstance('m');
$w = humanfactory::getinstance('w');
$c = humanfactory::getinstance('c');
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行 php的高階程式設計,對於提高 php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用 php的oop進行程式設計的實際意義和應用方法。我們通常在做乙...
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行php的高階程式設計,對於提高php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用php的oop進行程式設計的實際意義和應用方法。我們通常在做乙個有資...
PHP物件導向程式設計快速入門
物件導向程式設計 oop 是我們程式設計的一項基本技能,php4對oop提供了良好的支援。如何使用oop的思想來進行php的高階程式設計,對於提高php程式設計能力和規劃好web開發構架都是非常有意義的。下面我們就通過例項來說明使用php的oop進行程式設計的實際意義和應用方法。我們通常在做乙個有資...