1

これで本題に入ります。インターネット上のどこにも見つからないようです。多分それは不可能です、私は知りません。私は自分で作成した「分割してルール化する」方法を使用するのが本当に好きです。管理しやすいようにできるだけ多くのファイルを分割します (小さなファイルなど)。

しかし、ここに私の問題があります:

私は5つのファイルを持っています:

index.php
inc/config.php
inc/Database.class.php
inc/sidebar.php
inc/forms.php

さて、私がやったことはこれです:

config.php ファイルに Database.class.php ファイルを含め、オブジェクトを作成しました。

include 'Database.class.php';

$user = "root";
$pass = "";
$host = "localhost";
$database = "blah blah";

$db = new Database($user, $pass, $host, $database);
$db->connect();

そこで、この config.php と sidebar.php を index.php ファイルに含めました。

(コードを短くしましたが、同じように機能します)

include 'inc/config.php';
include 'inc/sidebar.php';

私のサイドバーには、ユーザーがログインするためのフォームがあります。

これはforms.phpです:

function loginFormProcess($user, $pass)
{
    $db->select(blah blah some variables);
    $res = $db->getResult();
    print_r($res); 
}


if (!isset($_POST['submit'])) {
    loginFormShow();
} else {

    if ($_POST['user'] == "") 
    {
        loginFormShow(1);
    } 
    else if ($_POST['pass'] == "") 
    {
        loginFormShow(2);
    } 
    else 
    {
        $user = $_POST['user'];
        $pass = $_POST['pass'];
        loginFormProcess($user, $pass);
    }
}

したがって、問題は何ですか。関数 loginFormProcess を呼び出そうとすると、オブジェクト $db を使用できません。

これに1つのオブジェクトを使用できますか? インデックス ページでは、データベースから他のデータが必要になるためです。インデックス ページ用のオブジェクトとログイン フォーム用のオブジェクトを作成する必要がありますか?

他の解決策はありますか?よくわからない場合は、もう少し説明をしたいと思います。

乾杯、

クレメンツ

4

4 に答える 4

3

最善の解決策は、次のようにデータベース オブジェクトを関数の引数に渡すことです。

function loginFormProcess($user, $pass, Database $db) {

そして、適切なデータベース オブジェクトで呼び出します。として知られているものです。

于 2012-11-29T14:51:30.713 に答える
0

変数$dbは、config.phpファイルにグローバル変数として作成されます。これは、loginFormProcess関数の内部からは見えません。使用できるショットカットソリューションは、ステートメントglobal $ dbを追加することにより、グローバル変数を使用する意図を宣言することです。関数内の最初のステートメントとして

于 2012-11-29T14:54:42.283 に答える
0

global$dbとして宣言する必要があります。

これを試して:

function loginFormProcess($user, $pass)
{
    global $db;
    $db->select(blah blah some variables);
    $res = $db->getResult();
    print_r($res); 
}

参照: http://www.php.net/manual/en/language.variables.scope.php

于 2012-11-29T14:53:20.400 に答える
0

これを試して:

function loginFormProcess($user, $pass)
{
    global $db;
    $db->select(blah blah some variables);
    $res = $db->getResult();
    print_r($res); 
}

参考: http: //php.net/manual/en/language.variables.scope.php

于 2012-11-29T14:52:43.050 に答える