2017-02-09 5 views
-1

これは簡単な質問ですが、私はPHPを初めて使いこなしているため、理解できません。私は正しく動作する.iniファイルを解析しようとしていますが、どういうわけか値にアクセスできません。メッセージファイルは$messages = parse_ini_file("msg/messages.ini");init.phpで解析し、このようindex.phpに含まれているPHP:インポートされたini値にアクセスできない

project/ 
    index.php 
    inc/ 
     init.php 
     classes/ 
      frontend.php 
    msg/ 
     messages.ini 

::私はindex.phpからのメッセージの配列を印刷する場合

<?php 
require_once('inc/init.php'); 

//printing the array here works! 

$html = new frontend(); 

私のサイトはこのように構成されていますすべて正常に動作します。

しかし、index.phpnew frontend();を構築するとき、$messagesアレイは利用できません。 frontend自体はinit.phpにロードされ、iniファイルなしで正常に動作します。

したがって、インポートまたは可変スコープの問題があると想定していますが、わかりません。誰かが私を正しい方向に向けることができますか?

+0

は 'frontend()'のコードを表示します –

+0

@MArcinOrlowski正しく動作するフロントエンドを構築しています。私はいくつかの(現在はハードコーディングされた)メッセージを外部に出そうとしています。 – user8793

+0

スコープスコープスコープhttp://php.net/manual/en/language.variables.scope.php – RiggsFolly

答えて

1

の代わりに:

$html = new frontend(); 

...ような何か:

$html = new frontend($messages); 

PHP variable scopeはとにかくかなり単純です:変数は、関数/メソッドにグローバルまたはローカルのいずれかです。

+0

私は引数として配列を渡すことを考えましたが、index.phpに含まれていればフロントエンドと少なくとも同じスコープを持つべきではありませんか? – user8793

+0

範囲はあまり複雑ではありません。ブロック単位またはファイル単位のスコープはありません。 –

+0

ありがとう、私は今働くようになった。これもまた助けました:http://stackoverflow.com/questions/16959576/reference-what-is-variable-scope-which-variables-are-accessible-from-where-and – user8793

-1

$messagesをグローバルでfrontend()と宣言してください。

+1

「グローバル」は使用しないでください。これは悪いコーディングスタイル –

+0

私はそれを試みた、それは動作しませんでした。 – user8793

+0

なぜそれは悪いコーディングスタイルですか? – Condorcho

関連する問題