私はPHPアプリケーションにコレクションクラスを実装しようとしていましたが、クラスの使用についていくつか質問がありました。PHPコレクションクラスメソッド内の非ローカル変数
私はLaravel Collection Class(https://laravel.com/docs/5.2/collections)に私のメソッドのいくつかを基づいています。
私は.eachメソッド使用していた場合:私はコールバックで非ローカル変数を使用するにはどうすればよい
public function each($callback)
{
foreach ($this->items as $key => $item) {
if ($callback($item, $key) === false) {
break;
}
}
return $this;
}
を?たとえば、コースコレクションとユーザーコレクションがあります。
$courses = new Collection($this->getCourses());
$users = new Collection($this->getUsers());
// I need to loop through all courses and within each course, loop through
// all users
$courses->each(function($course, $courseKey) {
// How can I make it so $users is available here?
$users->each(function($user, $userKey) {
// How can I make it so $course is available here?
// ...
});
});
私は悪い習慣を達成しようとしていますか? global
キーワードを使用する必要がありますか、それとも悪い習慣ですか?
これは私が探していたものです。使用可能なuse()構文はPHPのどのバージョンです。この特定のアプリケーションでは、私はPHP 5.3.3に固執しているので、私はちょうど確かめたいと思っていました。 – Sean
私はあまりよく分かりませんが、5.3で匿名の機能が利用できるようになったと思いますので、これも同様だと思います。私は試してみるとダブルチェック –
私はPHP 5.3.3でそれをテストし、それが働いた。 – Sean