0

初投稿はこちら!さて、私はこのコードを含む関数を持っています:

require_once('../strap.php');

$admin = new Member;
$admin->setName($_POST['username']);
$admin->setPassword($hash);
$admin->setEmail($_POST['email']);
$admin->updateDatabase();

必要なファイルは次のようになります。

//define constants
define('ROOTPATH', __DIR__ . '/');
define('CLASSES', __DIR__ . '/classes/');

//Lazy load any required php classes
function __autoload($class_name) {
    $file = CLASSES . $class_name . '.php';
    if( file_exists($file) ) {
        require_once $file;
    } else {
        echo "Can't find ". $file;;
    }
}

//does config exist?
if (!file_exists('config.php')) {
    //redirect to install routine if config does not exist
    header(ROOTPATH . 'admin/install.php') ;
}

require('config.php');

//connect to the database
try {
    $pdo = new PDO('mysql:database='.$conf['database'].';host='.$conf['host'].';port='.$conf['port'].';', 
    $conf['username'], $conf['password']);
} catch(PDOException $e) {
    die('ERROR: Could not connect: ' . print_r($e->getMessage()));
}

その中の必要なファイル (config.php) は次のようになります。

$conf['username'] = 'root';
$conf['password'] = '';
$conf['host'] = 'localhost';
$conf['database'] = 'dddatabase';
$conf['port'] = '3306';
$conf['prefix'] = 'cms_';

私の問題は、次のエラーが発生することです: Notice: Undefined variable: conf in D:\wamp\www\testing\scripts\CMS\classes\Member.php on line 152

そしてまた

注意: 未定義の変数: D:\wamp\www\testing\scripts\CMS\classes\Member.php の 153 行目の pdo

新しい Member オブジェクトを初期化し、$conf[] 配列と $pdo オブジェクトを使用する updateDatabase() メソッドを呼び出すとき。

ただし、strap.php を再度インクルードすると、次のエラーが表示されます。D:\wamp\www\ で __autoload() (以前は D:\wamp\www\testing\scripts\CMS\strap.php:16 で宣言されています) を再宣言できません。 23 行目の testing\scripts\CMS\strap.php

ここで何がうまくいかないのか誰にも分かりませんか?

4

2 に答える 2

1

$pdo および $conf 変数にアクセスしようとする Member クラスでは、それらをグローバルとして宣言する必要があります。したがって、Member クラス内で、これらの変数を使用しようとしている関数で、関数の先頭 (または少なくともそれらを参照する前) に次を追加します。

global $conf, $pdo;
于 2013-02-08T21:15:29.417 に答える