タイトルには、インクルードファイルからクラス内の変数(連想配列)にアクセスする際に問題があると記載されています。以下は、クラスとインクルードファイルの両方のソースコードです:インクルードファイルから変数にアクセスできません
require("applications/cw_database.php");
require("config/dbConfig.php");
require("config/appConfig.php");
class APP_ASSESMENTS
{
private $dbObj;
private $DisplayOutput = "";
public function __construct($PageParams)
{
try
{
$dbObj = new CW_DB($dbConfig['hostname'],$dbConfig['username'],$dbConfig['password'],$dbConfig['name'],$dbConfig['port']);
} catch (Exception $e) {
throw new ErrorException($e);
}
}
...
他の部分は$ dbConfigとは関係ありません。
/*
Testing configuration for MySQL database
*/
$dbConfig['username'] = "phpcoursework"; // changed on demand
$dbConfig['password'] = "phpcoursework"; // changed on demand
$dbConfig['hostname'] = "localhost"; // changed on demand
$dbConfig['name'] = "students"; // changed on demand
$dbConfig['port'] = 3306; // default for MySQL
何らかの方法で '$ dbConfig'をクラスに渡さないと、あなたのクラスはそれが何であるかをどのように知っていると思いますか? Answersは 'global'キーワードを使うことを提案しています。これは可変スペースを汚染し、間違いを簡単に作り出すことができるため、ひどい習慣です。その変数が必要な場合は、コンストラクタに渡します。 –
ファイルをクラスの中に組み込み、変数をグローバルワークとして定義します。 – Tosh
それはあなたに良いデザインのように見える場合は、それを持っています。 –