2011-06-23 3 views
0

私はKohanaのコントローラーを使いこなそうとする以前に質問を書いていましたが、私は与えてファイルを書き換えました。だから今、私はKohanaコントローラの中にこのPHPスクリプトを持っています。私がいくつかのサードパーティの機能を実行できるように、コントローラがレンダリングしているビューはPHPファイルを必要としています。私はそれに大きな問題を抱えていて、デバッグする必要がありました。問題は、インクルードされたファイル内の関数は、同じファイル内から関数外の変数にアクセスすることができないようです。それはコハナが何とかグローバルをクリアしているようですか?Kohanaグローバルはクリアされていますか?

例:

//controller.php 
require_once("ccfunctions.php"); 

//ccfunctions.php 
$test = 'something'; 
function test(){ 
    global $test; 
    echo $test; 
} 
test(); 
//This does not produce anything 

この1上の任意の考え?

EDIT: 実際には、上記の例はレンダリングされているビューファイルからも機能しません。インクルードファイルは忘れてしまいます。私はKohanaがMVCモデルを強制しようとしていることを知っていますが、これはばかげています。なぜ、関数を作成せず、ビューファイルからグローバル変数を呼び出せないのですか?

+0

することができます...何か間違っている必要があります。あなたが何を記述しているかは、ヘルパーファイルが行うことです。なぜそれがあなたのために働いていないのかは、おそらくKohanaに関連しない問題によって引き起こされますが、私は間違っている可能性があります。問題がどちらの方法であるかを知ることに興味があります。 'test'関数で文字列リテラルをエコーし​​て、関数自体が呼び出されているかどうか確認してみましたか? – Endophage

+0

@Endophage:文字列リテラルは、関数内から罰金を表示します。奇妙な。ここで私の髪を引き裂く;)私は前にKohanaを使用していない、これは買収プロジェクトです。これまでのところうまくいきましたが、これは本当に私を悩ましています。 –

+0

あなたの問題は特にkohanaとは関係ありませんが、変数の可視性の範囲の理解と関係しています。 – zerkms

答えて

2

あなたはどちらの場合も、変数のglobalを指定する必要があります。

//controller.php 
require_once("ccfunctions.php"); 

//ccfunctions.php 
global $test; 
$test = 'something'; 
function test(){ 
    global $test; 
    echo $test; 
} 
test(); 
//This does not produce anything 

ところで、それは本当に奇妙な習慣があると私はglobal

+0

文字列宣言から "global"を指定すると、解析エラーが発生します。 –

+0

@Senica Gonzalez:コードを修正しました – zerkms

+0

ああ、そうです! ;)パーフェクト! –

2

は使用しないでください グローバルを使用せずに、どのような場合のための回避策があると信じて。グローバルを使用するときにOOPフレームワークを使用する理由

+0

私の選択ではありませんでした。 MVCモデルに合うようにコードを修正するのに数時間を費やさなければならないのであれば、フレームワークを使用するのはなぜですか? –

+0

@Senica Gonzalez:kohana ** does not ** MVCモデル – zerkms

+0

私は同意します、多分あなたはMVCフレームワークを使用すべきではありません;) – zombor

関連する問題