1

いくつかの値を配列にチャージする関数を作成しました。問題は、別の関数からその配列 (関数内にある) を取得する必要があるということです。

パラメータの処理方法がわかりません。

これは、アレイを充電する関数です:

public function loadStates(){
    $states = array(
        "Buenos Aires" => "label label-success",
        "Catamarca" => "label label-info",
        "Chaco" => "label label-warning",
        "Chubut" => "label label-danger";
    );

    return $states;
}

これは他の関数です (現在の関数で使用するデータをロードできるように、配列を作成する関数を呼び出すふりをします):

public function countUsers() {
    //breadcrumb
    $this->data["states"] = loadStates();
    var_dump('$this->data["states"]');die();
    //$this->data['totUsers'] = UsersDs::getInstance()->count();
    //$this->parser->parse('admin/usuarios/totales/totalRegUsers.tpl',$this->data);
} 

これらの関数は同じ php ファイルにあります。すべての関数引数を消去したので、明らかにこれは機能していません

4

2 に答える 2

1

ここにはいくつかのオプションがあります....

1) 最初の関数から配列を返す

public function loadStates(){
return array(
    "Buenos Aires" => "label label-success",
    "Catamarca" => "label label-info",
    "Chaco" => "label label-warning",
    "Chubut" => "label label-danger";
             );
}

これにより、loadStates が呼び出されるたびに配列が再作成されて返されます。

2) 関数内で静的代入を使用してから戻ります。

public function loadStates(){
static $states = array(
    "Buenos Aires" => "label label-success",
    "Catamarca" => "label label-info",
    "Chaco" => "label label-warning",
    "Chubut" => "label label-danger";
             );
    return $states;
}

これにより、関数が初めて呼び出されたときに配列が作成され、その後の呼び出しで保存されたコピーが返されます。

3) オブジェクトの構築中に $states をプロパティに割り当て、プロパティ アクセサーを使用して配列を取得します。

public function __construct(){
$this->states = array(
    "Buenos Aires" => "label label-success",
    "Catamarca" => "label label-info",
    "Chaco" => "label label-warning",
    "Chubut" => "label label-danger";
             );
}

次に、コードで

$this->data["states"] = $this->states();

4) 構築時に静的なプロパティを遅延ロードします。

static protected $states;

public function __construct(){
if (!is_array(self::$states)) 
    self::$states = array(
    "Buenos Aires" => "label label-success",
    "Catamarca" => "label label-info",
    "Chaco" => "label label-warning",
    "Chubut" => "label label-danger";
    );
}

次に、次のような構文を使用してプロパティにアクセスする場合:

self::$states["Buenos Aires"]

他にもいくつかのオプションがありますが、どのオプションを使用するかは、特定のユース ケースに完全に依存します。

于 2013-09-11T18:55:13.427 に答える