2

$viewData をローカル変数に入れようとしています。これが私の機能です:

function view($layout, $view, $var)
{

    extract($var);
    include($layout);

}

これが私がそれを使用している方法です:

$viewData = array($hasImages->arr, $latest->arr, $mostViewed->arr, $all->arr, $this->error);

$this->view('/view/shared/layout.php', '/view/home.php', $viewData);

extract メソッドは、$this->error 文字列では正常に機能しますが、$hasImages->arr などの配列では機能しません。ローカルコンテキストで変数を作成していないようです。

配列を関数に入れるにはどうすればよいですか?

4

2 に答える 2

5

extract()は連想配列を想定しているため、呼び出されたスコープ内の変数名を導出するためのキーがあります。

// Pass in an associative array
$viewData = array(
  'hasImages' => $hasImages->arr,
  'latest' => $latest->arr,
  'mostViewed' => $mostViewed->arr,
  'all' => $all->arr, 
  'error' => $this->error
);

// After extract(), will produce
$hasImages
$latest
$mostViewed
$all
$error

ただし、使用の有用性についてextract()はまったく疑問があります。代わりに、上記のように連想配列を使用し、メソッド内のようにキーを介してアクセスする方が読みやすい場合があり$var['mostViewed']['something']ます。

于 2012-08-12T13:16:16.530 に答える
2

$viewData連想配列である必要があります。配列のキーは、変数が「抽出」されると変数の名前になります。

于 2012-08-12T13:16:27.543 に答える