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