const PHP Parse错误


const PHP Parse error

1
2
3
4
5
// define('DOCROOT', realpath(dirname(__DIR__)));
// good

const DOCROOT = realpath(dirname(__DIR__));
// PHP Parse error:  syntax error, unexpected '(', expecting ',' or ';' in

为什么会出错?


常量可以用两种方法在PHP中定义,

  • 使用const关键字

    您不能用这种方式将函数的结果,甚至变量赋给常量。常量的值(以这种方式定义)必须是固定值,如整数或字符串。

  • 使用定义()

    通过这种方式,可以将任何值、变量或任何函数的结果赋给常量。

  • 重要提示:define()在类定义之外工作。

    实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $var ="String";
    const CONSTANT = $string;                        //wrong
    const CONSTANT = substr($var,2);                 //wrong
    const CONSTANT ="A custom variable";            //correct
    const CONSTANT = 2547;                           //correct
    define("CONSTANT","A custom variable");         //correct
    define("CONSTANT", 2547);                        //correct
    define("CONSTANT", $var);                        //correct
    define("CONSTANT", str_replace("S","P", $var));  //correct

    class Constants
    {
      define('MIN_VALUE', '0.0');  //wrong - Works OUTSIDE of a class definition.
    }

    类常量必须是固定值。不是某种功能的结果。只有由define设置的全局常量才能包含函数的结果。

    全局常量:http://www.php.net/manual/en/language.constants.php

    类常量:http://www.php.net/manual/en/language.oop5.constants.php

    全局常量的示例:

    1
    2
    define("FOO",    "something");
    echo FOO;

    类常量的示例:

    1
    2
    3
    4
    5
    class Test {
        const FOO ="Hello";
    }

    echo Test::FOO;


    请访问以下网站:http://www.php.net/manual/en/language.constants.php

    const定义必须在一个类的范围内。