程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中$this、static、final、const、self 等幾個關鍵字的用法

php中$this、static、final、const、self 等幾個關鍵字的用法

編輯:關於PHP編程

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

$this

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

$this->屬性

$this->方法

舉例如下:

<?php
class 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 PHP");
$myclass->printName();//輸出:I Like PHP
?>

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

static

關鍵字可以是self(在類內部調用靜態成員時所使用)靜態成員所在的類名(在類外調用類內部的靜態成員時所使用)

聲明一個靜態變量如下:

static $val='';

只存在於函數作用域的變量,函數執行之後變量的值不會丟失,只會初始化一次,初始化靜態變量不能使用表達式,不用全局變量代替是因為全局變量會被所有函數訪問容易造成維護不宜。

在類中使用static有兩種主要用途、定義靜態成員和定義靜態方法。靜態成員只保留一個變量的值,這個值對所有實例都是有效的,如下:

<?php
class 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
<?php
class 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 class MyClass{//此類將不允許被繼承
	final function fun1(){......}//此方法將不允許被重寫
}

const

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

<?php
class 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中在變量和函數前加static關鍵字之後的區別
  • PHP中return 和 exit 、break和contiue 區別與用法
  • php提示PHP Warning: date(): It is not safe to rely on the......錯誤的解決辦法
  • php提示Maximum execution time of 30 seconds exceeded...錯誤的解決辦法
  • PHP中跳出多重循環使用break,continue,goto,return,exit的用法和區別
  • window.navigate 與 window.location.href 的使用區別詳解
  • php中echo,print,print_r,var_export,var_dump 的用法與區別
  • php提示Call to undefined function curl_init() 錯誤的解決辦法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved