php的static關鍵字和全域變數

來源:互聯網
上載者:User

標籤:style   c   class   a   color   get   

1.全域變數[其不屬於物件導向的思想,因為其放在對象之外的],物件導向有一個特點,其實封裝的,php希望其所有的成員都應該放在類中;php的物件導向是基於物件導向的,不是純粹物件導向的;也就是其可以物件導向編程,也可以不物件導向編程。

     使用global定義全域變數,其放在記憶體的全域區/靜態區中,在代碼中其是放在class外面的。

global $global_a;

$global_a=8;//只能這樣給全域變數賦值,否則會報錯

//在函數中使用全域變數

function test(){

global $global_a;//global才能得到$a的地址

$global_a=90;//找到外層的$a的地址位置並將其值改成90

}

test();

echo $global_a;//輸出90,如果函數中在使用全域變數時沒有使用global關鍵字的話,輸出的值是8

2.static關鍵字的理解

注意:

    a.要在類中定義static變數

    b.使用static變數可以在類中也可以在類外使用(靜態對象不會依賴於對象的建立而建立,也就是說在訪問static變數時,不用去建立對象就可以直接方法:

class Person{

public static $a=90;

public function __construct(){

echo "你好";

}

}

echo Person::$a;

//沒有new Person();但是還是可以得到$a等於90。在php中new關鍵字才會調用__construct方法,如果沒有new就不會調用該方法;因此在這裡“你好”不會輸出

class Child{
public $name;
public static $num=0;//定義static屬性
function __construct($cname){
$this->name=$cname;
}
public function play_game(){
//使用static屬性,在類中,1.self::$類變數名 2. 類名::$類變數名(在類外部才用第二種方式使用)
self::$num+=1;//在類中使用static變數
echo $this->name."加入了玩遊戲<br/>";

}

}
$child1=new Child(‘倪華‘);
$child1->play_game();
$child2=new Child(‘萬鑫‘);
$child2->play_game();
$child3=new Child(‘盛盛‘);
$child3->play_game();
echo Child::$num;//在類外使用static屬性

3.static方法(靜態方法,注意:在類方法中不能使用非靜態屬性[變數],在使用靜態變數時往往採用靜態方法)

     靜態方法也叫類方法,靜態方法是屬於所有對象的執行個體的,其定義形式為:[修飾符] static  function 方法名(){}

     在類中使用類方法:self::類方法名   或者    類名::類方法名

     在類的外部使用:類名::類方法名  或者  對象名->類方法名


class Student{
public $name;
public static $fee;
function __construct($name){

$this->name=$name;

}
public static function enter_school($fee){
self::$fee+=$fee;
}

static function getFee(){
return self::$fee;
}
}
$stu=new Student("張三");
Student::enter_school(200);
$stu=new Student("張三333");
$stu->enter_school(300);
echo "總費用是".$stu->getFee();

靜態方法的特點:

        靜態方法只能操作靜態變數

       靜態方法不能操作非靜態變數

      普通成員方法可以操作靜態變數也可以操作普通變數,但是不能訪問靜態方法,靜態方法也不能訪問靜態方法

      

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.