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";
}
我想在類中訪問常量,但我無法做到這一點。 我該怎麼做?從常量類文件中訪問常量
這不是一個常數。這是一個靜態屬性。
你也不能使用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();
class常量 { public static $ url1 =「http = // url1」; public static $ url2 = self :: $ url1。 「/ ABC」; } 是給symtax錯誤 – 2013-04-10 08:07:40
@Sheldon庫珀是啊,我測試過it..see我更新的答案 – bitWorking 2013-04-10 08:12:21
這不是GD的解決方案,u需要創建對象 – 2013-04-10 08:41:03
而不是使用Constants::
你應該使用self::
訪問類變量。例如:
public static $url2 = self::$url1 . "/abc";
我認爲它應該是自我:: – ITroubs 2013-04-10 07:55:38
'$ this-> url1'將不能用於靜態屬性。 – bitWorking 2013-04-10 08:01:38
只看到下面的代碼。
從類定義
<?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();
?>
爲什麼不u使用'定義( 'URL1',的 「http // = URL1」)的內部;'和'define('URL2',URL1。「/ abc」);'? – ITroubs 2013-04-10 07:56:41
它會使常量的使用更容易,實際上是默認的常量機制。 – ITroubs 2013-04-10 07:57:33