萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php final static const成員屬性用法

php final static const成員屬性用法

首先來說說final
1.final不能用來修飾成員屬性
2.final只能修飾類和方法
作用:被修飾的類不能被子類所繼承;被修飾的方法不能被子類的方法覆蓋。

< ?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() 

?> 


然後來說說static
1.static用來修飾成員屬性和成員方法,但不能用來修飾類
2.用static修飾的成員屬性可以被同一個類的所有對象共享
3.靜態的數據是存在 內存中的 數據段中(初始化靜態段)
4.靜態的數據是在類在第一次加載時,分配到內存中的
5.什麼是類被加載?只要在程序中使用到這個類(有這個類名出現)
6.靜態的成員屬性都要用類名去訪問,不用創建對象,不用對象去訪問;在類裡邊可以用self代表本類($this)
7.靜態方法,不能訪問非靜態的成員屬性(但是,在非靜態方法卻能訪問靜態的成員屬性),非靜態的成員屬性,必須用對象訪問,在內部訪問非靜態成員屬性,用$this.
8.如果你確定一個方法中不需使用到非靜態的成員屬性,則可以將這個方法聲明為靜態方法,不需實例化對象,就可以訪問

例子 演示需要靜態變量的例子

<?PHP
   function Test()
   {
   $w3sky = 0;
   echo $w3sky;
   $w3sky++;
   }
   ?>

靜態變量與遞歸函數

<?PHP
   function Test()
   {
   static $count = 0;
  
   $count++;
   echo $count;
   if ($count < 10) {
   Test();
   }
   $count--;
   }
   ?>

注: 靜態變量可以按照上面的例子聲明。如果在聲明中用表達式的結果對其賦值會導致解析錯誤。

例子 聲明靜態變量

<?PHP
   function foo(){
   static $int = 0;// correct
   static $int = 1+2;   // wrong (as it is an expression)
   static $int = sqrt(121); // wrong (as it is an expression too)
  
   $int++;
   echo $int;
   }
   ?>


最後來說說const
1.它只能用來修飾成員屬性
2.在類中聲明常量必須使用const
3.訪問方式和訪問靜態成員屬性一樣(類外使用 類名::成員屬性,類裡邊則使用self::成員屬性)
4.常量一定要在聲明的時候就給初始值

<?php教程
class say_const{
const CHARSET=”中國”;
publice function say_hello(){
 echo slef::CHARSET;
}
}
$const1=new say_const()’
$const1->say_hello();
?>

常量只能包含標量數據(boolean,integer,float 和 string),不要定義 resource常量.
可以用函數 constant() 來讀取常量的值.get_defined_constants()可以獲得所有已定義的常量列表.
如果使用了一個未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字符串調用它一樣(CONSTANT 對應 “CONSTANT”),此時將發出一個 E_NOTICE 級的錯誤.

copyright © 萬盛學電腦網 all rights reserved