PHP关键字
程序员文章站
2022-05-18 20:30:09
...
PHP关键字
global 的作用
global关键字主要使用于函数内声明变量为全局变量。
$a=10;
function test(){
global $a;
$a++;
}
test();
echo $a;
/*运行结果
11
*/
global 与 $GLOBALS 的区别
本质区别:
global 声明的变量只是全局变量的一个同名引用。
$GLOBALS 是全局变量本身。
$a=10;
function test(){
$GLOBALS['a']++;
}
test();
echo $a;
/*运行结果
11
*/
Static的作用
static:单独占据内存,只初始化一次,访问静态成员要用::,类中的静态成员和方法可以直接访问,不需要实例化。
- 1、static方法就相当于普通的方法一模一样,但是给方法分了个类。语义化代码。
- 2、实例化class时不会重新将static方法声明第二遍
- 3、静态方法不需要所在类被实例化就可以直接使用。
- 4、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
- 5、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
一、作用(4种)
- 1.static 放在函数内部修饰变量
- 2.static放在类里修饰属性,或方法
- 3.static放在类的方法里修饰变量
- 4.static修饰在全局作用域的变量
1 static 放在函数内部修饰变量
在函数执行完后,变量值仍然保存
function testStatic(){
static $val=1;
echo $val;
$val++;
}
testStatic();
testStatic();
testStatic();
/*运行结果
123
*/
2 static放在类里修饰属性,或方法
修饰属性或方法,可以通过类名访问,如果是修饰的是类的属性,保留值
class Person{
static $id=0;
function __construct(){
self::$id++;
}
static function getId(){
return self::$id;
}
}
echo Person::$id;//output 0
echo "<br/>";
$p1=new Person();
$p2=new Person();
$p3=new Person();
echo Person::$id; //output 3
3 static放在类的方法里修饰变量
class Person{
static function tellAge(){
static $age=0;
$age++;
echo "the age is".$age;
}
}
echo Person::tellAge();//the age is1
echo Person::tellAge();//the age is2
echo Person::tellAge();//the age is3
echo Person::tellAge();//the age is4
4 static修饰在全局作用域的变量
修饰全局作用域的变量,没有实际意义(存在着作用域的问题,详情查看)
<?php
static $name = 1;
$name++;
echo $name;
?>
另外:考虑到PHP变量作用域
<?php
include 'ChromePhp.php';
$age=0;
$age++;
function test1() {
static $age = 100;
$age++;
ChromePhp::log($age); //output 101
}
function test2() {
static $age = 1000;
$age++;
ChromePhp::log($age); //output 1001
}
test1();
test2();
ChromePhp::log($age); //outpuut 1
?>
可以看出:
这3个变量是不相互影响的,另外,PHP里面只有全局作用域和函数作用域,没有块作用域.
上一篇: uReplicator自动白名单