1

私はFuelPHPフレームワーク上に構築しているWebアプリケーションを持っています。サーバーがPHP5.3を実行している間、ローカル開発環境はPHP5.4を実行しています。私の開発環境では、メインのテンプレートファイルから次のことができます。

<?php var_dump($this->active_request); ?>

これにより、リクエストに関する一連のデータ(Fuel \ Core \ Requestオブジェクト)がモーダルダイアログボックスにダンプされ、参照できるようになります。ただし、本番サーバー(PHP 5.3)でまったく同じスクリプトを実行しようとすると、古い「ErrorException [Error]:オブジェクトコンテキストにないときに$thisを使用する」が表示されます。

インスタンス化されたオブジェクトと静的にアクセスされるメソッドの使用の違いを認識しています。私の質問は、PHPの異なるバージョンが同じテンプレートファイルを異なるコンテキストを持つものとして扱うのはなぜですか?または、2つの環境の機能が明らかに異なる結果となる他の構成のニュアンスはありますか?

4

2 に答える 2

2

FuelPHP はわかりませんが、テンプレートがクロージャーの中に含まれているようです。PHP 5.4 以降、クロージャーはオブジェクトにバインドでき、$this. デフォルトでは、クロージャーが作成されたオブジェクトです。参照: https://stackoverflow.com/a/5734109/664108

于 2013-02-05T01:16:14.113 に答える