php類中的$this,static,final,const,self這幾個關鍵字使用方法_php執行個體

來源:互聯網
上載者:User

本篇文章主要分項了一下關於php類中的$this,static,final,const,self這幾個關鍵字使用方法。

  $this

  $this表示當前執行個體,在類的內部方法訪問未聲明為const及static的屬性時,使用$this->value='phpernote';的形式。常見用法如:

  $this->屬性

  $this->方法

  舉例如下:

<?phpclass MyClass{ private $name; public function __construct($name){ $this->name=$name; } public function getname(){ return $this->name; } public function printName(){ echo $this->getname(); }}$myclass= new MyClass("I Like www.jb51.net");$myclass->printName();//輸出:I Like www.jb51.net?>

  在類裡面調用當前類的屬性和方法有三種方法,分別是self、parent、$this,這三個關鍵字的區別是:self用來指向當前的類;parent用於指向當前類的父類,可以使用該關鍵字調用父類的屬性和方法;$this用來在類體內調用自身的屬性和方法。

  static

  關鍵字可以是self(在類內部調用靜態成員時所使用)靜態成員所在的類名(在類外調用類內部的靜態成員時所使用)
  聲明一個靜態變數如下: 

static $val='';

  只存在於函數範圍的變數,函數執行之後變數的值不會丟失,只會初始化一次,初始化靜態變數不能使用運算式,不用全域變數代替是因為全域變數會被所有函數訪問容易造成維護不宜。
  在類中使用static有兩種主要用途、定義靜態成員和定義靜態方法。靜態成員只保留一個變數的值,這個值對所有執行個體都是有效,如下:

<?phpclass MyObject{ public static $myStaticVar=0; function myMethod(){ self::$myStaticVar+=2; echo self::$myStaticVar; }}$instance1=new MyObject();$instance1->myMethod();$instance2=new MyObject();$instance2->myMethod();  //結果將分別列印2、4

 代碼如下

<?phpclass Book{ static $num=0; public function showMe(){ echo"您是滴".self::$num."位訪客"; self::$num++; }}$book1=new Book();$book1->showMe();echo"<br>";$book2=new Book();$book2->showMe();echo"<br>";echo"您是滴".Book::$num."位訪客";?>

  結果將是:

  您是滴0位訪客
  您是滴1位訪客
  您是滴2位訪客

  另外需要注意的是如果類的方法是static的,他所訪問的屬性也必須是static的。

  final

  PHP final關鍵字可以修飾類同樣可以修改類中的方法,但它們的作用是差不多的,即如果你使用了final關鍵字來修飾了,那麼這個被修飾的類或者方法將不能被擴充或者繼承。你只能老老實實去引用它。如果你在類前面使用了final,這就是說明這個類不能使用繼承;如果你在方法前使用了PHP final關鍵字,這就是說明這個方法不能被覆蓋。道理就是這麼簡單,讓我們也看個簡單的樣本吧。

  最終的類和方法,不能繼承,該關鍵字修飾的方法不能被重寫。一般用法如下:

final class MyClass{//此類將不允許被繼承  final function fun1(){......}//此方法將不允許被重寫  }

  例

 < ?PHP    final class BaseClass {    public function test() {    echo "BaseClass::test() calledn";    }    final public function moreTesting() {    echo "BaseClass::moreTesting() calledn";    }    }    class ChildClass extends BaseClass {    public function moreTesting() {    echo "ChildClass::moreTesting() calledn";    }    }    // Results in Fatal error: Cannot override final method BaseClass::moreTesting()    ?> 

  const

  在類的內部方法訪問已經聲明為const及static的屬性時,需要使用self::$name的形式調用。舉例如下:

<?phpclass clss_a{ private static $name="static class_a";  const PI=3.14;  public $value;  public static function getName(){  return self::$name;  }  //這種寫法有誤,靜態方法不能訪問非靜態屬性  public static function getName2(){  return self::$value;  }  public function getPI(){  return self::PI;  }}

  注意const屬性的申明格式是const PI=3.14,而不是const $PI=3.14。

  self

  self表示類本身,指向當前的類。通常用來訪問類的靜態成員、方法和常量。

以上內容簡單給大家介紹了php類中的$this,static,final,const,self這幾個關鍵字使用方法,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.