phpthisvar的簡單介紹

本文目錄一覽:

php中This關鍵字我不明白的地方

注意php是弱類語言。。

他不需要事先定義變數的類型也不須事先聲明才可以用。

所以$this-b=12 相當於你var $b=12。然後直接調用像你寫的echo $this-b;

你的例子裡面var $a=13; 就定義了a的值是13。在類裡面你用

$this-a就表明你調用$a這個值;

其實$this就是在本類中直接調用屬性。千萬不能在後面加$符號;

不知道我的理解對你是否有幫助。。我學PHP也不久。。

搞java其實不錯; java的面向對象這塊很完善。而php則是在php5後才更進一步,並沒有java的強

php中this的含義

下面定義了一個Cart類

?php

class Cart

{

var $items; // 購物車中的項目

// 把 $num 個 $artnr 放入車中

function add_item ($artnr, $num)

{

$this-items[$artnr] += $num;

}

// 把 $num 個 $artnr 從車中取出

function remove_item ($artnr, $num)

{

if ($this-items[$artnr] $num) {

$this-items[$artnr] -= $num;

return true;

} else {

return false;

}

}

}

?

以一段代碼說明問題,在一個類的定義內部,你無法得知使用何種名稱的對象是可以訪問的:在編寫 Cart 類時,並不知道之後對象的名稱將會命名為 $cart 或者 $another_cart。因而你不能在類中使用 $cart-items。然而為了類定義的內部訪問自身的函數和變數,可以使用偽變數 $this 來達到這個目的。$this 變數可以理解為「我自己的」或者「當前對象」。因而 ‘$this-items[$artnr] += $num’ 可以理解為「我自己的物品數組的 $artnr 計數器加 $num」或者「在當前對象的物品數組的 $artnr 計數器加 $num」。

PHP繼承的問題,調用父類的方法this指向問題。

我來說一說:

【一】…………public(僅有)屬性和方法的繼承…………

class a{

public $var = ‘var a br/’;

public function m(){

echo ‘fun a br/’;

}

public function run(){

echo $this-var;

$this-m();

}

}

class b extends a{

public $var = ‘var b br/’;

public function m(){

echo ‘fun b br/’;

}

}

$li = new b();

$li-run();

echo ‘hr’;

var_dump($li);

輸出:

var b 

fun b 

————————————————————————————

object(b)[1]

  public ‘var’ = string ‘var b br/’ (length=11)

在這段代碼中所表示的,是我們常見的一種繼承方式,同為公有屬性的$var 和公有方法m()

在這裡,$var和m()都被繼承並覆寫,實例化過後,內存中只有一個$var實例,通過var_dump($li);我們可以看到它。

【二】…………private(私有)屬性和方法的繼承…………

class a{

private $var = ‘var a br/’;

private function m(){

echo ‘fun a br/’;

}

public function run(){

echo $this-var;

$this-m();

var_dump($this);

echo ‘br/br/’;

}

}

class b extends a{

private $var = ‘var b br/’;

private function m(){

echo ‘fun b br/’;

}

public function run(){

echo $this-var;

$this-m();

var_dump($this);

echo ‘br/br/’;

parent::run();

}

}

$li = new b();

$li-run();

echo ‘hr’;

var_dump($li);

輸出:

var b 

fun b 

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

.

.

var a 

fun a 

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

.

————————————————————————————————

object(b)[1]

  private ‘var’ = string ‘var b br/’ (length=11)

  private ‘var’ (a) = string ‘var a br/’ (length=11)

這個時候,我們可以看到,在調用run方法時,首先它會調用到b類的私有屬性$var 和私有方法m(),隨後,又使用parent::run()調用父類的run()方法,我們可以看到,父類的run()方法調用後,它所調用的屬性和方法,都是a類的兩個私有屬性和方法,這種形式,和你的問題一致;

而它與$this指向無關,我們可以在這裡看到,兩個$this都是指向b類。

而最有意思的是,在$li句柄中,我們卻看到了兩個屬性!一個是b類的屬性,一個是a類的屬性,這兩個屬性同時存在著,那麼,私有方法也自然是同時存在著。

【三】…………私有屬性和方法能不能被繼承…………

class a{

private $var = ‘var a br/’;

private function m(){

echo ‘fun a br/’;

}

}

class b extends a{

public function run(){

echo $this-var;

$this-m();

}

}

$li = new b();

$li-run();

輸出:

Notice: Undefined property: b::$var in E: … on Line 9

Fatal error: Call to private method a::m() from context ‘b’ in E: … on Line 10

這可以證明,私有屬性和方法,無法被繼承,所以,你的代碼示例中所說,將a類的m()方法更改為private後,會顯示aa的屬性,也就可以理解明白了。

php代碼中的this什麼作用

$this-變數名或方法名,指向類中的定義的變數或方法。你這裡的var應該是一個變數,但是我們一般不用這個做變數名,因為var在php4中是關鍵字,php5之後用public代替var來申明一個公共變數。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245023.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:05
下一篇 2024-12-12 13:05

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27
  • 2的32次方-1:一個看似簡單卻又複雜的數字

    對於計算機領域的人來說,2的32次方-1(也就是十進位下的4294967295)這個數字並不陌生。它經常被用來表示IPv4地址或者無符號32位整數的最大值。但實際上,這個數字卻包含…

    編程 2025-04-27

發表回復

登錄後才能評論