从常量类文件中访问常量

时间:2013-04-10 07:52:18

标签: php

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

我想从类中访问常量,但我不能做到。 我该怎么办?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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();

答案 2 :(得分: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();
    ?>