2

PHPでクラスを作成していますが、クラス変数の1つに問題があります。プライベート変数を宣言し、コンストラクターで設定します。ただし、クラスの後半で、その変数を使用するメソッドがあります。この場合の変数は配列です。ただし、このメソッドは配列が空白であると言っていますが、コンストラクターでチェックすると、すべて正常に機能します。だから本当に問題は、コンストラクターの後で、なぜ私の配列がクリアされるのか、またはクリアされるように見えるのかということです。

<?php
class Module extends RestModule {
    private $game;
    private $gamearray;

    public function __construct() {
        require_once (LIB_DIR."arrays/gamearray.php");
        $this->gamearray = $gamesarray;
        $this->game = new Game();
        $this->logger = Logger::getLogger(__CLASS__);
        $this->registerMethod('add', array(Rest::AUTH_PUBLIC, Rest::AUTH_USER, Rest::AUTH_ADMIN), true);
        $this->registerMethod('formSelect', array(Rest::AUTH_PUBLIC, Rest::AUTH_USER, Rest::AUTH_ADMIN), false);
    }

    public function add(){
        $game = Utility::post('game');        
    }

    public function formSelect(){
        $gamename = Utility::get('game');
        $this->$gamearray[$gamename];
    }
}

配列には多くのテキストが含まれているため、配列は別のファイルから取得されます。コンストラクターで宣言された巨大な配列でこのファイルをマッシュアップしたくありませんでした。スクロールは途方もないでしょう。どんな説明でもいいでしょう、私はただemを修正するだけでなく、私の問題を理解したいです。

4

1 に答える 1

1

タイプミスがあります:

public function formSelect(){
    $gamename = Utility::get('game');
    $this->gamearray[$gamename]; // Remove the $ before gamearray
}

さらに、あなたの場合、includeは よりも優れていrequire_onceます。

さらに深く掘り下げたい場合は、$gamearray割り当てを次のように書き換えることができます。

// Module.php 
$this->gamearray = include LIB_DIR.'arrays/gamearray.php';

// gamearray.php
return array(
    // Your data here
);
于 2012-07-11T15:21:13.023 に答える