2012-05-11 10 views
0

私はオブジェクト指向プログラミングをかなり新しくしています。私はモデルから呼び出されるmysqlデータベースに接続するこのクラスを作った。私は、index.phpの中 「database.class.php」(私のデシベルクラスファイル)が含まれ、それがグローバルにし、そのようにオブジェクトを作成して別のオブジェクトで使用する

$object = new object; 
$object->dofunc(); 

のような任意のオブジェクトからアクセスすることができます任意の方法また別の質問がdofuncがあるがあります()は引数の配列を期待していますが、どのようにしてこの配列をグローバルにすることもできますので、どこからでもアクセスできます!

ここに私のDBクラス

<?php 

class Database { 

    private $db; 

    public function connect($config) { 
     if (is_array($config)) { 
      extract($config); 
      $db = mysqli_connect($host, $username, $password); 
      if ($db) { 
       echo "balbabla"; 
       if (mysqli_select_db($db, $database)) { 
       } 
       else { 
        throw new exception("<br/><strong>Could not connect to $database under $host</strong>"); 
       } 
      } 
      else { 
       throw new exception("<br/><strong>Could not connect to mySQL database! Please check your details</stromg>"); 
      } 
     } 
    } 
} 

?> 

はまた、これは使用、配列に関数内からグローバル変数にアクセスするには、事前

答えて

-1

<?php 

//Configuration for the MVC Framework 
$_SETTINGS = array(); 

//Routing settings! 

//Default controller(This controller will be loaded if there is none mentioned in the URI) 
$_SETTINGS['default_controller'] = 'User'; 
//Default method(This will be the default method run if no method is mentioned in the URI) 
$_SETTINGS['default_method'] = 'Register'; 

//Database settings 
$DB_SETTINGS['host']  = 'localhost'; 
$DB_SETTINGS['username'] = 'root'; 
$DB_SETTINGS['password'] = 'foobar'; 
$DB_SETTINGS['database'] = 'freelance'; 
?> 

感謝を含むファイルですglobalキーワードたとえば、あなたが行うことができ、Database::connect()から$ DB_SETTINGSにアクセスするには:

public function connect() { 
    global $DB_SETTINGS; 
    ... 

配列は、その関数内でアクセス可能になります。

グローバルにアクセス可能なクラスの場合、自動的にそのクラスにアクセスできます。クラスを定義することでどこでも利用できます。

+0

私はspl_autoloadを持つ既存のオブジェクトにインクルードするか、\ をインクルードする必要があります。たとえばindex.phpにロードしてから、それを使用するクラスを使用します。私はあなたが私が意味するものを得ることを願っています –

1

私はあなたがすることができますが、あなたはいけない、それグローバル

行い、index.phpの中で「database.class.php」(私のデシベルクラスファイル)を含めることができる方法はあります。

また、dofunc()は引数の配列を期待していますが、どのようにしてこの配列もグローバルにすることで、どこからでもアクセスできます。

もう一度しないでください。

Dependency injectionです。

+0

提案のおかげで、あなたはチュートリアルにリンクすることはできますか? –

+0

または私に例を教えてください、本当に失われた.. :( –

+0

@LukeNukem [私が書いているチュートリアル](https://gist.github.com/2362466)(進行中)をチェックしてください。 – PeeHaa

関連する問題