将constant赋值给final类并调用其常量


Assign constant to a final class and call its constants

我有以下代码,我使用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。