php中self 、parent的用法
self: 本類(不要理解成本物件)
parent: 父類
在引入自身的靜態屬性/靜態方法,以及父類的方法時,可以用到.
用法:
self::$staticProperty
self::staticMothed;
parent::$staticProperty
parent::Mothed;
class Human {
static public $head = 1;
public function say() {
echo Human::$head,'<br />';
}
}
echo Human::$head,'<br />' ; // 1
$lisi = new Human();
$lisi->say();
// 某一天,類名要統一,規範化. Human不叫Human了,叫cHuman
// 導致類內部,凡引用到自身類名的也要改,邏輯類名我們需要改,而類內部的我們也都需要改,就會比較麻煩,self就是在這種情況下產生的
就會變成下面這種情況
class cHuman {
static public $head = 1;
public function say() {
echo self::$head,'<br />';
}
}
echo cHuman::$head ,'<br />'; // 1
$lisi = new cHuman();
$lisi->say();
//加一個繼承類
class Stu extends cHuman {
static public $head = 2;
public function say() {
echo self::$head,'<br />';
echo '父類只有',parent::$head,'<br />';
}
}
$ming = new Stu();
$ming->say();
========一位同學的疑問,用$this,還用parent====
class a{
public function a1(){
echo 'this is class function a1()';
}
}
class b extends a{
public function b1(){
$this->a1(); //class b中已經從a中繼承了方法a1()
}
public function b2(){
parent::a1();
}
}
$b = new b();
$b->b1();
$b->b2();
/**
分析:
上面2個呼叫,顯示效果一樣的,
如果從速度角度看,理論上parent::稍快一點點.
因為在子類尋找a1方法,尋找不到,再去其父類尋找.
但是從面向角度看,繼承過來的,就是自己的.
$this 更符合面向的思想.
例如;
class a {
}
class b extends a {
}
class c extends b {
}
...
...
class f extends e {
parent::parent::parent::
總不能這麼寫吧?
}
一個小例子
class Human {
protected $age = 23;
public function say() {
echo $this->age,'<br />';
}
}
class Stu extends Human{
protected $age = 15;
public function say1() {
$this->say();
}
public function say2() {
parent::say();
}
public function say3() {
echo $this->age;
}
}
$ming = new Stu();
print_r($ming);
$ming->say1(); // 15
$ming->say2(); // 15
$ming->say3(); // 15
相關推薦
php中self 、parent的用法
self: 本類(不要理解成本物件) parent: 父類 在引入自身的靜態屬性/靜態方法,以及父類的方法時,可以用到. 用法: self::$staticProperty self::st
PHP中this、self、parent的區別
參考: http://www.cnblogs.com/devcjq/articles/2424738.html http://www.cnblogs.com/alsf/p/9621002.html 1.PHP之$this解析 ①$this是指向當前物件(即類的例項化物件)的指標,靜態方法中不能使
php中self,this, parent 詳解
pre name 重寫 重新 調用父類 set 改變 col upload 1、前言 self,this,parent 這三個關鍵字在 類的使用中可謂屢見不鮮,那麽這三個關鍵字又有什麽區別;從字面意思理解: this 是指向當前類(就近原則,離誰近跟誰) self
PHP中VC6、VC9、TS、NTS版本的區別與用法詳解
進行 系統資源 stc 詳解 ron 線程安全 info 啟動 win 1. VC6與VC9的區別: VC6版本是使用Visual Studio 6編譯器編譯的,如果你的PHP是用Apache來架設的,那你就選擇VC6版本。 VC9版本是使用Visual Studio 20
PHP中MySQL、MySQLi和PDO的用法和區別
PHP的MySQL擴充套件(優缺點) 設計開發允許PHP應用與MySQL資料庫互動的早期擴充套件。mysql擴充套件提供了一個面向過程 的介面; 並且是針對MySQL4.1.3或更早版本設計的。因此,這個擴充套件雖然可以與MySQL4.1.3或更新的數 ;
php中print_r、var_dump和var_export幾個函式的用法區別 。php setcookie一些限制。php不同路徑cookies取值問題。PHP獲取站點根目錄
php中print_r、var_dump和var_export幾個函式的用法區別 print_r ( $array/$var ) print 是列印的意思,而r則取自Array的單詞,那麼該函式的功能就是列印陣列內容,它既可以列印陣列內容,也可以列印普通的變數
淺談PHP中pack、unpack的詳細用法
特殊 ++ 位置 per 小端 bsp 分享 .com 十六進制 轉自:https://segmentfault.com/a/1190000008305573 PHP中有兩個函數pack和unpack,很多PHPer在實際項目中從來沒有使用過,甚至也不知道這兩個方法是
PHP中try catch的用法
tro sta main 面向對象 and cau pub 展示 添加 異常(Exception)用於在指定的錯誤發生時改變腳本的正常流程。 什麽是異常? PHP 5 提供了一種新的面向對象的錯誤處理方法。 異常處理用於在指定的錯誤(異常)情況發生時改變腳本的正常流程
js中slice、splice用法與區別
delet 內容 title pan ont 指定 至少 一個 拷貝 1.slice(start,end)(參數可選) slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。原始數組不會被修改。 var a = [‘a‘, ‘b‘
php中$_REQUEST、 $_GET、 $_POST、 $_COOKIE 的關系和區別
one 相同 存取 dev efault light 變量 指定 request 看到REQUEST可以通吃GET 、POST 、COOKIE 後 感覺這個$_REQUEST太強大了是不是其他的幾個超級變量就沒有用了,下面對他們整體做個比較: 1.安全性 post>
PHP中self與static
php self static 所謂延遲靜態綁定,顧名思義,靜態調用時::符號左側的部分的的綁定是延遲,也就是說不再被解析為定義當前方法所在的類,而是在實際運行時計算的。 class A { public static function who() { echo __
8:self、parent、單例模式
self和parent的用法 self:本類,自身 parent:父類 使用場景: 首先請明確區分類和物件; 在使用本類/父類的,靜態屬性、方法時,會用到; self 在本類中使用,用於引用自身的靜態屬性和方法; parent 在子類中使用,用於引用父類
PHP中異常的基本用法
前言 本文 GitBook 地址: https://www.gitbook.com/book/leoyang90/laravel-source-analysis 對於一個優秀的框架來說,正確的異常處理可以防止暴露自身介面給使用者,可以提供快速追溯問題的提示給開發人員。本文會詳細的介紹&
在php中self與$this的分別
成員變量 static變量 stat func name 定義 聲明 aud new 在訪問PHP類中的成員變量或方法時,如果被引用的變量或者方法被聲明成const(定義常量)或者static(聲明靜態),那麽就必須使用操作符:: <?php class Ca
PHP中isset()、empty()函式中那些坑。。。
1,empty — 檢查一個變數是否為空,bool empty ( mixed $var ) 判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於false,那麼它會被認為不存在。如果變數不存在的話,empty(
php中self與static的區別
1、假設我們有個Car類,它有2個方法:model()和getModel()。 class Car{ public function model(){ //這裡我們使用了關鍵字self self::getModel(); } p
php中curl、fsocket、file_get_content三個函式的使用比較
php中curl和file_get_content的一些比較 主要區別: 學習才發現,curl支援很多協議,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是說,它能做到很多file_get_content做不到的事情。
PHP中echo、print、print_r、var_dump、var_export的區別
void echo ( string $arg1 [, string $... ] ) echo 是一個語言結構,可以不用括號包圍引數列表,在沒有括號情況下可接收多個引數並輸出 echo 'one'
PHP中Closure::bindTo的用法分析
最近使用laravel-admin開發一個後臺,過程中發現了這麼一個呼叫: 在display方法的閉包函式中,使用了$this去獲取值($this是laravel中的Model,這裡取的是資料庫中返回
淺談HTTP中GET、POST用法以及它們的區別
HTTP定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符。我們可以這樣認為: 一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源