0

これは PHP 初心者の質問です。

インクルード ファイル ../config.inc で、クラスにデータベース資格情報へのアクセスを許可したいと考えています。

<?php
   $db_info['host']='localhost'; // and so forth 
   ...
 ?>

後で、クラスのソース ファイルに次のように記述します。

   <?php
      require_once('../config.inc'); // include the above file
      public class Foo {
         static function Host() {
            echo $db_info['host'];
         }
      }
   ?>

他のコードでクラスにアクセスしようとすると、$db_info が未定義であるというエラーが表示されます。クラス スコープ内で require_once を移動しようとすると (Foo { の後)、構文エラーが発生するため、クラス内で require_once を使用できないようです。インクルードされたデータへのアクセスが必要なクラスの静的メソッドを作成する際のベスト プラクティスは何ですか? ありがとう。

4

1 に答える 1

2

スコープに問題があります。含まれている変数は、クラス外では使用できますが、クラス内では使用できません。推奨される方法は、変数をクラスのコンストラクターに渡し、それをクラスのメンバー変数に格納することです。

ただし、関数を静的として使用しているため、使用できますglobalが、これはベストプラクティスではありません。または、関数にファイルを含めることもできます。

  public class Foo {
     static function Host() {
      require_once('../config.inc'); // include the above fil  
      echo $db_info['host'];
     }
  }
于 2013-08-29T03:33:26.973 に答える