php全局变量的关键字,php的static关键字和全局变量
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."加入了玩游戲
";
}
}
$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();
靜態方法的特點:
靜態方法只能操作靜態變量
靜態方法不能操作非靜態變量
普通成員方法可以操作靜態變量也可以操作普通變量,但是不能訪問靜態方法,靜態方法也不能訪問靜態方法
總結
以上是生活随笔為你收集整理的php全局变量的关键字,php的static关键字和全局变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php如何解决报错,php 启动报错如何
- 下一篇: mysql 组合查询_MySQL组合查询