1

静的配列から別のクラスパラメータに値をコピーしようとしています。だから、それが可能かどうかわからないか、単純な間違いを扱っているだけです。

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],

で可能なすべての値を一元化するために1つだけでEstadosConstantes、各クラスは必要な値をコピーできます。

4

2 に答える 2

1

PHPマニュアルから

したがって、静的プロパティを整数または配列(たとえば)に初期化することはできますが、別の変数、関数の戻り値、またはオブジェクトに初期化することはできません。

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);
于 2013-03-03T22:04:42.827 に答える
1

上手、

これが私がそれを機能させる方法です:配列全体ではなく、参照を保持するだけです:

class Reservacion
{

     public static $estados = array(
        \models\EstadosConstantes::LIBRE
    );

次に、特定の値が必要な場合は、次のように実行できます。

$estilo = models\EstadosConstantes::$celdas[models\Reservacion::$estados[\models\EstadosConstantes::LIBRE]]['estilo'];
于 2013-03-05T20:26:52.753 に答える