0
    class Constants
    {
            public static $url1      = "http=//url1";
            public static $url2       = Constants::$url1."/abc";
    }

我想在课堂上访问常量,但我做不到。我该怎么做 ?

4

3 回答 3

0

而不是使用Constants::你应该使用self::来访问类变量。例如:

public static $url2 = self::$url1 . "/abc";
于 2013-04-10T07:54:24.000 回答
0

这不是一个常数。这是一个静态属性。

您也不能self用作值:

public static $url2 = self::$url1."/abc"; // will throw error

您必须在构造函数中初始化:

class Constants
{
    public static $url1 = "http=//url1";
    public static $url2;

    public function __construct(){
        self::$url2 = self::$url1."/abc";
    }
}

$const = new Constants();
echo $const::$url2;
//or if the class is initialized
echo Constants::$url2;

另一种选择是制作一个静态方法:

class Constants
{
    public static $url1 = "http=//url1";        

    public static function getUrl2(){
        return self::$url1."/abc";
    }
}

echo Constants::getUrl2();
于 2013-04-10T07:57:03.920 回答
0

只需查看以下代码。

从类定义之外

    <?php
    class MyClass {
        const CONST_VALUE = 'A constant value';
    }

    $classname = 'MyClass';
    echo $classname::CONST_VALUE; // As of PHP 5.3.0

    echo MyClass::CONST_VALUE;
    ?>

从类定义内部

    <?php
    class OtherClass extends MyClass
    {
        public static $my_static = 'static var';

        public static function doubleColon() {
            echo parent::CONST_VALUE . "\n";
            echo self::$my_static . "\n";
        }
    }

    $classname = 'OtherClass';
    echo $classname::doubleColon(); // As of PHP 5.3.0

    OtherClass::doubleColon();
    ?>
于 2013-04-10T08:01:26.707 回答