我有以下代码,我使用的是PHP 5.5.6
product.php
class product {
const STATUS = status;
function __construct(){}
public function printStatus($status){
echo $status;
}
}
final class status {
const BROKEN = "br";
const AVAILABLE = "av";
}
的index.php
include("product.php");
$pr = new product();
$st = product::STATUS;
$pr->printStatus($st::BROKEN);
上面的代码给出了输出br
,这是预期的
index2.php
include("product.php");
$pr = new product();
$pr->printStatus(product::STATUS::BROKEN);
上面的代码提供了以下错误Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in ...
,这意味着行$pr->printStatus(product::STATUS::BROKEN);
有谁知道为什么会这样?有限制吗?
答案 0 :(得分:0)
以下代码错误:
$pr->printStatus(product::STATUS::BROKEN);
您无法在运行时设置常量。也许你更好地使用类product
中的变量,如:
public $STATUS = status::AVAILABLE;
然后你可以这样做:
<?php
include("product.php");
$pr = new product();
$pr->STATUS = status::BROKEN;
$pr->printStatus($pr->STATUS);
?>
通过它,您可以随时设置产品对象的状态。