-
類屬性必須定義為公有、受保護(hù)、私有之一
(為兼容PHP5以前的版本,如果采用 var 定義,則被視為公有。)
類中的方法可以被定義為公有、私有或受保護(hù)。如果沒有設(shè)置這些關(guān)鍵字,則該方法默認(rèn)為公有。
查看全部 -
構(gòu)造函數(shù):__construct()
子類中如果定義了__construct則不會(huì)調(diào)用父類的__construct,如果需要同時(shí)調(diào)用父類的構(gòu)造函數(shù),需要使用parent::__construct()顯式的調(diào)用。
析構(gòu)函數(shù):__destruct() ——銷毀函數(shù)
查看全部 -
方法就是在類中的function,
類的方法也具有public,protected 以及?private 的訪問控制。
查看全部 -
類中定義的變量,通常屬性跟數(shù)據(jù)庫中的字段有一定的關(guān)聯(lián),因此也可以稱作“字段”。
屬性聲明是由關(guān)鍵字 public,protected 或者 private 開頭,后面跟一個(gè)普通的變量聲明來組成。
public:公開的
protected:受保護(hù)的
private:私有的查看全部 -
類通過關(guān)鍵字class開頭,然后是類名與花括號(hào),
在花括號(hào)中定義類的屬性與方法。
類名必須是字母或下劃線開頭,后面緊跟若干個(gè)字母、數(shù)字或下劃線,
類名最好能夠表意,可以采用名詞或者英文單詞。
查看全部 -
看了一遍大家的評(píng)論 筆記 ?代碼 ?無不是為了湊這個(gè)60而強(qiáng)行解釋
這里重寫父類方法了 ?實(shí)例化的也是子類對(duì)象 ?強(qiáng)行parent又何必呢?而且你們理解的累加不是+=?學(xué)習(xí)不能自欺欺人如果為了跳過檢查,完成本節(jié)代碼驗(yàn)證,這樣做也可:
<?php
class Car {
??? public $speed = 0; //汽車的起始速度是0
?? ?
??? public function speedUp() {
??????? $this->speed += 10;
??????? return $this->speed;
??? }
}
//定義繼承于Car的Truck類
class Truck extends Car{
??????? //public $speed = 0; //汽車的起始速度是0
?? ?
??? public function speedUp() {
??????? $this->speed = 60;
??????? return $this->speed;
}
}
$car = new Truck();
$car->speedUp();
echo $car->speed;查看全部 -
//在這里設(shè)置name的session值為jobs
session_start();
$_SESSION['name']='jobs';
查看全部 -
<?php
//開始使用session
session_start();
//設(shè)置一個(gè)session
$_SESSION['test'] = time();
//顯示當(dāng)前的session_id
echo "session_id:".session_id();
echo "<br>";
//讀取session值
echo $_SESSION['test'];
//銷毀一個(gè)session
unset($_SESSION['test']);
echo "<br>";
var_dump($_SESSION);
查看全部 -
Cookie是存儲(chǔ)在客戶端瀏覽器中的數(shù)據(jù),我們通過Cookie來跟蹤與存儲(chǔ)用戶數(shù)據(jù)。一般情況下,Cookie通過HTTP headers從服務(wù)端返回到客戶端。多數(shù)web程序都支持Cookie的操作,因?yàn)镃ookie是存在于HTTP的標(biāo)頭之中,所以必須在其他信息輸出以前進(jìn)行設(shè)置,類似于header函數(shù)的使用限制。
PHP通過setcookie函數(shù)進(jìn)行Cookie的設(shè)置,任何從瀏覽器發(fā)回的Cookie,PHP都會(huì)自動(dòng)的將他存儲(chǔ)在$_COOKIE的全局變量之中,因此我們可以通過$_COOKIE['key']的形式來讀取某個(gè)Cookie值。
PHP中的Cookie具有非常廣泛的使用,經(jīng)常用來存儲(chǔ)用戶的登錄信息,購物車等,且在使用會(huì)話Session時(shí)通常使用Cookie來存儲(chǔ)會(huì)話id來識(shí)別用戶,Cookie具備有效期,當(dāng)有效期結(jié)束之后,Cookie會(huì)自動(dòng)的從客戶端刪除。同時(shí)為了進(jìn)行安全控制,Cookie還可以設(shè)置域跟路徑。
<?php
setcookie('test', time());//cookie設(shè)置
ob_start();
print_r($_COOKIE); //任何從瀏覽器發(fā)回的Cookie都存儲(chǔ)在$_COOKIE的全局變量
$content = ob_get_contents();
$content = str_replace(" ", ' ', $content);
ob_clean();
header("content-type:text/html; charset=utf-8");
echo '當(dāng)前的Cookie為:<br>';
echo nl2br($content);
查看全部 -
3-3元字符與轉(zhuǎn)義和3-5及之后第三章跳過
查看全部 -
對(duì)象比較,當(dāng)同一個(gè)類的兩個(gè)實(shí)例的所有屬性都相等時(shí),可以使用比較運(yùn)算符==進(jìn)行判斷,當(dāng)需要判斷兩個(gè)變量是否為同一個(gè)對(duì)象的引用時(shí),可以使用全等運(yùn)算符===進(jìn)行判斷。
class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '=='; ? //true
if ($a === $b) echo '==='; //false對(duì)象復(fù)制,在一些特殊情況下,可以通過關(guān)鍵字clone來復(fù)制一個(gè)對(duì)象,這時(shí)__clone方法會(huì)被調(diào)用,通過這個(gè)魔術(shù)方法來設(shè)置屬性的值。
class Car {
? ?public $name = 'car';
? ?
? ?public function __clone() {
? ? ? ?$obj = new Car();
? ? ? ?$obj->name = $this->name;
? ?}
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);對(duì)象序列化,可以通過serialize方法將對(duì)象序列化為字符串,用于存儲(chǔ)或者傳遞數(shù)據(jù),然后在需要的時(shí)候通過unserialize將字符串反序列化成對(duì)象進(jìn)行使用。
class Car {
? ?public $name = 'car';
}
$a = new Car();
$str = serialize($a); //對(duì)象序列化成字符串
echo $str.'<br>';
$b = unserialize($str); //反序列化為對(duì)象
var_dump($b);查看全部 -
__call實(shí)現(xiàn)方法的重載
public function __call($name, $args) {
? ?if ($name == 'speedDown') {
? ? ? ?$this->speed -= 10;
? ?}
}$args不能少
查看全部 -
屬性的重載通過__set,__get,__isset,__unset來分別實(shí)現(xiàn)對(duì)不存在屬性的賦值、讀取、判斷屬性是否設(shè)置、銷毀屬性
方法的重載通過__call來實(shí)現(xiàn),當(dāng)調(diào)用不存在的方法的時(shí)候,將會(huì)轉(zhuǎn)為參數(shù)調(diào)用__call方法,當(dāng)調(diào)用不存在的靜態(tài)方法時(shí)會(huì)使用__callStatic重載。
class?Car?{ ????public?$speed?=?0; ???? ????public?function?__call($name,?$args)?{ ????????if?($name?==?'speedUp')?{ ????????????$this->speed?+=?10; ????????} ????} } $car?=?new?Car(); $car->speedUp();?//調(diào)用不存在的方法會(huì)使用重載 echo?$car->speed;
查看全部 -
foreach($fruit as $key=>$value){
? ? echo '<br>鍵是:'.$key.',對(duì)應(yīng)的值是:'.$value;
}
查看全部 -
/**
* 新建一個(gè)Car類,舉例說明 動(dòng)態(tài) 靜態(tài) 的區(qū)別(感覺也有權(quán)限控制)。 公開 私有 受保護(hù) 的訪問控制(感覺是控制訪問權(quán)限)
靜態(tài)屬性與方法可以在不實(shí)例化類的情況下調(diào)用,直接使用類名::方法名的方式進(jìn)行調(diào)用。
靜態(tài)屬性不允許對(duì)象使用->操作符調(diào)用。
動(dòng)態(tài)方法和靜態(tài)方法,從形式上來看區(qū)別在于,有無static修飾
靜態(tài)方法常駐內(nèi)存,只能訪問靜態(tài)屬性。效率高,內(nèi)存占用高
動(dòng)態(tài)方法,可以訪問靜態(tài)屬性,也可以訪問非靜態(tài)屬性。使用后消毀比靜態(tài)多一步,所以效率低于靜態(tài),內(nèi)存占用低
*/
class Car
{
public $name = '汽車';//定義一個(gè) 公開 動(dòng)態(tài) 屬性名字是 汽車
//public $price = '100000';//定義一個(gè) 私有 動(dòng)態(tài) 屬性價(jià)格為100000
protected $corlor = '白色';//定義一個(gè) 受保護(hù) 動(dòng)態(tài) 屬性顔色是 白色
private $price = '100000';//定義一個(gè) 私有 動(dòng)態(tài) 屬性價(jià)格為100000
public static $speed = '10' ;//定義一個(gè) 私有 靜態(tài) 屬性初始速度值為10
public function getPrice()
{
return $this->price;
}
public function getName()
{
return $this->name;
}
public function getSpeed()
{
return $this->speed;//靜態(tài)方法中,$this偽變量不允許使用??梢允褂胹elf,parent,static在內(nèi)部調(diào)用靜態(tài)方法與屬性。
}
public function getSpeed_d()
{
//動(dòng)態(tài)方法、普通方法、非靜態(tài)方法 都是一種方法!
echo self::$speed."<br />";//普通方法調(diào)用靜態(tài)屬性,同樣使用self關(guān)鍵詞
echo $this->name;
}
public static function getSpeed_j()
{
echo self::$speed."<br />";
//echo $this->name;//錯(cuò)。靜態(tài)方法不能調(diào)用非靜態(tài)屬性 Fatal error: Using $this when not in object context in /var/www/example.com/public_html/index2.php on line 56? //因?yàn)?$this代表實(shí)例化對(duì)象,而這里是類,不知道 $this 代表哪個(gè)對(duì)象
}
}
echo Car::$speed;//靜態(tài)屬性與方法可以在 不實(shí)例化類 的情況下調(diào)用,直接使用 類名::方法名 的方式進(jìn)行調(diào)用。不允許(實(shí)例化)對(duì)象使用 -> 操作符調(diào)用。
echo "<br />";
$car = new Car();//實(shí)例化 Car類 為 對(duì)象
//echo Car->speed; 不對(duì)
//echo $car->speed;也不對(duì)只能用下面的方式
echo Car::$speed;//靜態(tài)屬性使用::雙冒號(hào)進(jìn)行訪問
echo "<br />";
echo $car->name;//公開外部可以訪問
echo "<br />";
//echo "出錯(cuò)了,錯(cuò)誤原因如下,".$php_errormsg."之后的程序不能執(zhí)行";
//echo $car->corlor;//受保護(hù)外部不可訪問 無結(jié)果? ?報(bào)錯(cuò)后 之下的所有 方法不能使用 屬性不可調(diào)用 不清楚為什么
echo $car->speed;//靜態(tài)屬性不允許(實(shí)例化)對(duì)象使用 -> 操作符調(diào)用。 無結(jié)果
echo "出錯(cuò)了,錯(cuò)誤原因是:".$php_errormsg;
echo "<br />";
//echo $car->price;//私有外部不可以訪問,無結(jié)果.只能用下面的方式,公開方法訪問 私有 受保護(hù)的屬性
echo $car->getPrice();
echo "<br />";
//當(dāng)然公開方法也可以訪問公開屬性
echo $car->getName();
echo "<br />"."到此就講明了公開、私有、受保護(hù)的訪問控制";
echo "<br />";
echo $car->getSpeed_d()."<br />"."普通方法調(diào)用 動(dòng)態(tài) 靜態(tài)屬性";
echo "<br />";
echo $car->getSpeed_j()."<br />"."靜態(tài)方法調(diào)用靜態(tài)屬性,不能調(diào)用非靜態(tài)屬性";
echo "<br />"."到此就講明了動(dòng)態(tài) 靜態(tài) 的區(qū)別";
echo "<hr />";
查看全部
舉報(bào)