class Constants
{
public static $url1 = "http=//url1";
public static $url2 = Constants::$url1."/abc";
}
我想从类中访问常量,但我不能做到。 我该怎么办?
答案 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();
?>