将常量赋给最终类并调用其常量

时间:2014-07-04 08:51:39

标签: php

我有以下代码,我使用的是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);

有谁知道为什么会这样?有限制吗?

1 个答案:

答案 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);
?>

通过它,您可以随时设置产品对象的状态。