我正在尝试将值从静态数组复制到另一个类参数。所以,我不知道这是可能的,或者我只是在处理一个简单的错误。
class EstadosConstantes
{
const NO_APLICA = 0;
const LIBRE = 1;
public static $celdas = array(
self::LIBRE => array(
'id' => self::LIBRE ,
"estilo" => "libre"
),
self::NO_APLICA => array(
'id' => self::NO_APLICA,
"estilo" => "no-aplica"
),
);
}
这是另一个类:
class Reservacion
{
public static $estados = array(
\models\EstadosConstantes::LIBRE => \models\EstadosConstantes::$celdas[\models\EstadosConstantes::LIBRE],
);
如上所述,我想将LIBRE数组从EstadosConstantes
复制到Reservacion
类,但如果我尝试该选项,则会出现此错误:
解析错误:语法错误,意外T_VARIABLE,在第22行的/models/Reservacion.php中期待T_STRING
line 22
的位置:
\models\EstadosConstantes::LIBRE => \models\EstadosConstantes::$celdas[\models\EstadosConstantes::LIBRE],
我只需要集中EstadosConstantes
中的所有可能值,然后每个类都可以复制所需的值。
答案 0 :(得分:1)
因此,虽然您可以将静态属性初始化为整数或数组(例如),但您可能无法将其初始化为另一个变量,函数返回值或对象。
因此,你不能这样做,因为EstadosConstantes::$celdas
是一个变量
或者,正如Michel Feldheim在评论中建议的那样,您可以在构造函数中初始化它,但只有在您创建实例后它才可用
class Reservacion
{
public static $estados;
public function __construct() {
self::$estados = array(EstadosConstantes::LIBRE => EstadosConstantes::$celdas[EstadosConstantes::LIBRE]);
}
}
$reservacion = new Reservacion();
var_dump(Reservacion::$estados);
答案 1 :(得分:1)
那么,
这就是我的工作原理:只保留引用,而不是整个数组:
class Reservacion
{
public static $estados = array(
\models\EstadosConstantes::LIBRE
);
然后,如果想要一个特定的值,我可以这样做:
$estilo = models\EstadosConstantes::$celdas[models\Reservacion::$estados[\models\EstadosConstantes::LIBRE]]['estilo'];