
批改狀態(tài):合格
老師批語:
類是一個具有相同屬性和方法的集合,類成員屬性就類似于普通的php變量,類成員方法類似于普通的php函數(shù)。
如:NBA球員都是一類,有姓名、身高、球隊、球號、體重等屬性,還會跑步、投籃等方法,可以把這些屬性跟方法放到一個集合,如:
<?php //定義一個Player類 class Player{ //定義類的屬性 public $name; public $height; public $team; protected $playNum = 23; private $weight; //定義類的方法 方法這里public標(biāo)識不是必須的 但是一般還是建議加上,不加默認(rèn)是public標(biāo)識 public function jog() { //$this 特殊對象引用 永遠(yuǎn)代表本對象 總與當(dāng)前對象做一個綁定 屬于墻頭草 誰調(diào)用他往誰那里倒 return "$this->name is jogging,whose playNum is $this->playNum"; } public function shoot() { return "$this->name is shooting"; } } ?>
以上內(nèi)容中,public代表可公開訪問,protected 表示本類跟其子類可訪問,private 表示只有本類可以訪問,子類跟其他都無法訪問。
對象是類實(shí)例化的產(chǎn)物,定義好一個類以后,就可以使用new關(guān)鍵字實(shí)例化一個類,然后可以賦給一個變量即對象引用。所謂封裝性就是使用者不必要了解內(nèi)部細(xì)節(jié)及實(shí)現(xiàn)原理,將類封裝起來,隱藏屬性或方法(隱藏實(shí)現(xiàn)的細(xì)節(jié))使其不對外可見,使用者直接使用就可以,目的是為了控制在程序中屬性的讀寫(讀取或者修改)的訪問級別,使用者只需要通過外部接口以特定的權(quán)限來使用類成員
//實(shí)例化一個對象,賦值給$j這個變量,這里就是Player這個類已經(jīng)做好了封裝,$j直接去使用 $j = new Player; //使用->訪問符號訪問對象里的屬性或者方法,也可以后面加=給其進(jìn)行賦值,還需要注意訪問的時候去掉$符號 $j->name = "Jordan"; //方法同理 $j->jog();
構(gòu)造函數(shù)(構(gòu)造器)是一個魔術(shù)方法__construct(),除可以給public標(biāo)識的屬性初始化賦值外,還可以給protected、private標(biāo)識的屬性賦值,如最開始的文件中這些內(nèi)容可以用構(gòu)造器處理:
//聲明一個構(gòu)造器并將所有的屬性加進(jìn)去 初始化類成員 讓類的狀態(tài)穩(wěn)定下來 public function __construct($name,$height,$team,$playNum,$weight){ $this->name = $name; $this->height = $height; $this->team = $team; $this->playNum = $playNum; $this->weight = $weight; }
然后可以將shoot()方法進(jìn)行改進(jìn),調(diào)用$weight:
public function shoot() { //嘗試將weight屬性加進(jìn)去 return "$this->name is shooting,weighing $this->weight<br>"; }
重新實(shí)例化對象,并進(jìn)行調(diào)用,這里還需要注意,使用__construct()以后,__construct()中有幾個參數(shù),調(diào)用這個類的時候就需要往里面?zhèn)鲙讉€參數(shù):
//重新將類進(jìn)行實(shí)例化,并將參數(shù)按__construct()的要求傳入 $jordan = new Player('Jordan','203cm','Bulk',23,'80kg'); //輸出訪問上面的shoot方法返回的內(nèi)容 echo $jordan->shoot();
在類沒有自動加載的情況下,可以用require語句調(diào)用一個類文件
如:
require 'Player.php';
但是如果有多個類需要調(diào)用的時候就會很麻煩,這個時候可以用spl_autoload_register()聲明一個匿名函數(shù)做一個簡單的自動加載,下面以類跟需要調(diào)用的文件在同一文件夾下為例:
//使用spl_autoload_register()聲明一個匿名函數(shù),并將類的名稱作為參數(shù)傳入,這里需要注意,類名稱需要跟文件的名稱保持一致 spl_autoload_register(function($className){ //調(diào)用類名稱.php的文件 require $className .'php'; })
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號