データベースからデータを取得するためにphpオブジェクトを呼び出すhtmlページがあります。正常に動作しますが、スクリプトが扱いにくくなったため、一部の関数をいくつかの関数に分割することにしました。
だから私は次のファイルを持っています:
// htdocs/map.php
<?php
include("config.php");
include("rmap.php");
$id = 1;
$gamenumber = getGameNumber($id);
echo $gamenumber;
?>
// htdocs/config.php
<?php
$_PATHS["base"] = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"] = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
ini_set("display_errors", "1");
error_reporting(E_ALL);
include("prepend.php");
?>
// includes/prepend.php
<?php
include("session.php");
?>
// includes/session.php
<?php
includes("database.php");
class Session {
function Session() {
}
};
$session = new Session;
?>
// includes/database.php
<?php
include("constants.php");
class Database {
var $connection;
function Database() {
$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
function query($query) {
return mysql_query($query, $this->connection);
}
};
/* Create database connection */
$database = new Database;
?>
// includes/rmap.php
<?php
function getGameNumber($id) {
$query = "SELECT gamenumber FROM account_data WHERE usernum=$id";
$result = $database->query($query); // line 5
return mysql_result($result, 0);
}
?>
また、定数には多数の定義(DB_USERなど)が含まれています。
したがって、map.phpにはconfig.phpが含まれています。これには、session.phpを含み、database.phpを含むprepend.phpが含まれます。map.phpには、オブジェクトを使用しようとするrmap.phpも含まれていdatabase
ます。
問題は私が得ることです
致命的なエラー: 5行目のC:\ Develop \ map \ include\rmap.phpにある非オブジェクトのメンバー関数を呼び出します
これの通常の原因は、$ databaseオブジェクトが作成/初期化されていないことですが、コードを追加して、(およびを介しecho "DB connection created";
てecho "using DB connection";
)いつ呼び出されるかを示すコードを追加すると、正しい順序で呼び出されます(または少なくとも表示されます)。
include("database.php")
rmap.phpに追加すると、constants.phpの内容を再定義する際にエラーが発生します。使用するrequire_once
と、以前と同じエラーが発生します。
私はここで何が間違っているのですか?