美文网首页
PHP变量与常量

PHP变量与常量

作者: 码一 | 来源:发表于2022-05-30 10:38 被阅读0次

    本文是复习所写,并不会涵盖一些基础知识点

    变量

    命名

    有数字、字母、下划线组成,不能以数字开头,用正则表达式描述为^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。这大概是所有语言通用的规则,只不过PHP中变量名前要加上$

    赋值

    变量有两种赋值方式:传值赋值引用赋值

    默认是传值赋值

    预定义变量

    PHP提供了大量的预定义变量,这些变量被分别放到几个数组中,称为预定数组。这些数组在全局范围内生效,所以也被称为超全局变量

    1. $GLOBALS

    2. $_SERVER

    3. $_GET

    4. $_POST

    5. $_REQUEST

    6. $_SESSION

    7. $_COOKIE

    8. $_ENV

    9. $php_response_header - HTTP 响应头,当使用HTTP包装器时将会被HTTP响应头信息填充

    10. $argc

    11. $argv

    作用域

    <?php
    /*
     * 当前文件范围内生效
     * 包括require、include进来的文件
     */
    $a = 1;
    
    include 'b.php';
     
    function c()
    {
        /*
         * 函数内部的变量是跟函数外部的隔离的
         * 通过global关键字可以将函数外部的变量引用进来
         */
        global $a;
        
        $d = 2;
        $d += $a;
        $d += $GLOBALS['a']; // 也可以通过这种方式来访问$a变量
    
        /*
         * 也可以将变量声明为静态的
         * 静态变量是在编译阶段就分配到特殊的内存空间,称为静态空间
         * 静态变量只会初始化一次,并且不会随着函数的退出而销毁
         * 千万不要引用赋值给静态变量,不会报错但是会跟预期不一致
         */
        static $e = 0;
        $e += 1;
    }
    

    可变变量

    <?php
    $a = 'hello';
    $b = ['hello'];
     
    /*
     * 等价于${$a}
     * {}是限定符,用来明确范围
     * $a的值是纯数字的话也可以正常执行
     */
    $a = 'hi';
    ${$b[0]} = 'hi';
     
    // 类属性也可以通过这种方式访问
    class Test
    {
        public $hello = 'class inner';
    }
    (new Test())->$a;
    (new Test())->{$b[0]};
    

    常量

    命名

    常量命名跟变量命名一样,只不过不需要前面带$

    定义常量

    <?php
    /*
     * 可以使用define()、const定义常量
     * 常量值只能是标量或数组,一但被定义,其值便无法更改
     *
     * const定义常量是在预编译阶段执行的,所以必须处于最顶端的作用域。这就是说不能在函数、循环、try/catch语句内使用
     */
    const BOOK_TOTAL = 20;    
    define('PRICE', 200);
     
    class Test
    {
        const BOOKS = [];
    }    
     
    $a = 'PRICE';
    echo constant($a); // 当需要动态获取变量的时候,建议使用这种方式
    get_defined_constants(); // 获取所有已定义常量列表
    

    作用域

    常量的作用域是全局的

    预定义常量

    魔术常量

    1. __LINE__

    2. __FILE__

    3. __DIR__

    4. __FUNCTION__

    5. __CLASS__

    6. __TRAIT__

    7. __METHOD__

    8. __NAMESPACE__

    9. ClassName::class

    相关文章

      网友评论

          本文标题:PHP变量与常量

          本文链接:https://www.haomeiwen.com/subject/ufkoprtx.html