this,parent,self都是在php中的class類中了,下面我來分別介紹this,parent,self在類中用應用與區別。
一,this
1,要用this,你必有是一個對像的形勢,不然它會報錯的,Fatal error: Using $this when not in object context.
2,this可以調用本類中的方法和屬性,也可以調用父類中的可以調的方法和屬性,代碼如下:
- <?php
- class UserName
- {
- //定義屬性
- private $name;
- //定義構造函數
- function __construct( $name )
- {
- $this->name = $name;
- //這里已經使用了this指針
- }
- //析構函數
- function __destruct(){}
- //打印用戶名成員函數
- function printName()
- {
- print( $this->name );
- //又使用了PHP關鍵字this指針
- }
- }
- //實例化對象
- $nameObject = new UserName
- ( "heiyeluren" );
- //執行打印
- $nameObject->printName();
- //輸出: heiyeluren
- //第二次實例化對象
- $nameObject2 = new UserName( "PHP5" );
- //執行打印
- $nameObject2->printName(); //輸出:PHP5
- ?>
我們看,上面的類分別在11行和20行使用了this指針,那么當時this是指向誰呢?其實this是在實例化的時候來確定指向誰,比如第一次實例化對象 的時候(25行),那么當時this就是指向$nameObject對象,那么執行18行的打印的時候就把print($this-><name )變成了print($nameObject->name),那么當然就輸出了"heiyeluren".
二,self
self是指向類本身,也就是PHP self關鍵字是不指向任何已經實例化的對象,一般self使用來指向類中的靜態變量.
1,self可以訪問本類中的靜態屬性和靜態方法,可以訪問父類中的靜態屬性和靜態方法。
2,用self時,可以不用實例化的,代碼如下
- <?php
- class Counter
- {
- //定義屬性,包括一個靜態變量
- private static $firstCount = 0;
- private $lastCount;
- //構造函數
- function __construct()
- {
- $this->lastCount = ++selft
- ::$firstCount;
- //使用PHP self關鍵字來調用靜態變量,使用self
- 調用必須使用::(域運算符號)
- }
- //打印最次數值
- function printLastCount()
- {
- print( $this->lastCount );
- }
- }
- //實例化對象
- $countObject = new Counter();
- $countObject->printLastCount();
- //輸出 1
- ?>
三,parent
parent:: 可用于調用父類中定義的成員方法。
parent::的追溯不僅于直接父類。
通過parent::調用父類方法,代碼如下:
- <!-- 聲明一個員工類,經理類繼承自員工類 -->
- <?
- class employee{
- protected $sal=3000;
- public function getSal(){
- $this->sal = $this->sal + 1200;
- return $this->sal ;
- }
- }
- class Manager extends employee {
- //如果想讓經理在員工工資的基礎上多發1500元.
- //必須先調用父類的getSal()方法.
- public function getSal(){
- parent::getSal();// 這里調用了父類的方法.
- $this->sal = $this->sal + 1500;
- return $this->sal ;
- }
- }
- $emp = new employee();
- echo "普通員工的工資是 " . $emp->getSal();
- echo "<br>";
- $manager = new Manager();
- echo "經理的工資是: " . $manager->getSal();
- ?>
parent是指向父類的指針,一般我們使用parent來調用父類的構造函數.
新聞熱點
疑難解答