質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

2回答

2136閲覧

PHP 5.3とPHP 5.4での$thisの使い方について

kenshiro

総合スコア407

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2014/11/16 06:09

FuelPHPフレームワークで構築したウェブアプリがあります。

ローカルの開発環境はPHP 5.4を実行しており、検証サーバはPHP 5.3です。
開発環境で、メインのテンプレートファイルから、

lang

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

としてみました

この結果は、Fuel\Core\Request~ のリクエストデータがdumpされます。
しかし、検証サーバ(PHP 5.3)で同じスクリプトを実行しようとすると、
~ Using $this when not in object context
というエラーが出ます。

ここで気になったのは、PHPのバージョンが異なると
同じテンプレートファイルを異なるコンテキストとして扱うのでしょうか?
それとも、何か環境の設定の違いで動作が変わってしまうのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

FuelPHP はわかりませんが、そのテンプレートを次のようにインクルードすると PHP 5.3 と 5.4 で結果が変わります。

lang

1<?php 2class Hoge 3{ 4 private $active_request = "hogehoge"; 5 6 public function func() 7 { 8 call_user_func(function(){ 9 include __DIR__ . '/template.php'; 10 }); 11 } 12} 13 14$o = new Hoge; 15$o->func();

これは PHP 5.3 と 5.4 でインスタンスメソッドのコンテキストでの クロージャーの中の $this の扱いが異なるためです。

PHP 5.4 は クロージャーに $this が暗黙的に束縛されるため 5.3 と動作が異なってしまうことがある - ngの日記

投稿2014/11/27 14:38

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

直接の回答ではありませんが、PHPの詳細なバージョンとFuelPHPの詳細なバージョンがわからないと原因の特定が難しいかもしれません。
PHPのバージョン5.3.xはxが変わると割と動作が違うので…

投稿2014/11/17 07:24

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問