0

私はオブジェクト指向プログラミングにかなり慣れていません。モデルから呼び出されるmysqlデータベースに接続するこのクラスを作成しました。'database.class.php'(私の db クラス ファイル) を index.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>");
            }
        }
    }
}

?>

また、これは配列を含むファイルです

<?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';
?>

前もって感謝します

4

2 に答える 2

1

「database.class.php」(私の db クラス ファイル) を index.php に含めてグローバルにする方法はありますか

できますが、すべきではありません。

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

繰り返しますが、すべきではありません。

依存性注入がその方法です。

于 2012-05-11T21:21:02.420 に答える
-1

関数内からグローバル変数にアクセスするには、globalキーワードを使用します。たとえば、 から $DB_SETTINGS にアクセスするにはDatabase::connect()、次のようにします。

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

配列は、その関数内でアクセスできます。

グローバルにアクセス可能なクラスに関しては、それらは自動的にそれだけです。クラスを定義すると、どこでも使用できるようになります。

于 2012-05-11T20:57:34.177 に答える