欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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里面只有全局作用域和函数作用域,没有块作用域.

相关标签: PHP前后端交互