我有以下代码,我使用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);
行
有人知道为什么会这样吗?php有限制吗?
以下代码是错误的:
$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);
?>
可以随时设置产品对象的STATUS。