class Constants
{
public static $url1 = "http=//url1";
public static $url2 = Constants::$url1."/abc";
}
我想在课堂上访问常量,但我做不到。我该怎么做 ?
class Constants
{
public static $url1 = "http=//url1";
public static $url2 = Constants::$url1."/abc";
}
我想在课堂上访问常量,但我做不到。我该怎么做 ?
而不是使用Constants::
你应该使用self::
来访问类变量。例如:
public static $url2 = self::$url1 . "/abc";
这不是一个常数。这是一个静态属性。
您也不能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();
只需查看以下代码。
从类定义之外
<?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();
?>