PHPでOOPを使用してmysqlクエリを作成しようとしています。下のコードでは、クラス "database_disconnection"はエラーや注意を投げませんが、最後のクラス "database_query"は$ database_handleが未定義であることを通知します。私はdatabase_connectionの派生クラスとしてdatabase_queryクラスを作成したので、何が原因か分かりません。このクラスには$ database_handle変数がprivateとして含まれています。どんな助けでも大歓迎です!未定義の変数PHPのプライベート変数を持つ派生クラスですか?
オブジェクトのインスタンス化:
include("includes/database_classes.php");
new database_connection;
new database_query('SELECT * FROM users');
とクラス:あなたのdatabase_query
コンストラクタで
<?php
/*----------------------------------------------------------------------------------------------------*/
class database_connection
{
private $username = 'root';
private $password = '';
private $hostname = 'localhost';
private $database = 'assistant';
private $database_handle;
function connect()
{
try
{
$database_handle = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch (PDOException $e)
{
print "Error!: " . $e ->getMessage() . "<br/>";
die();
}
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_disconnection extends database_connection
{
function disconnect()
{
$database_handle = null;
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_query extends database_connection
{
private $mysql_statement;
function __construct($mysql_statement)
{
$this->mysql_statement = $mysql_statement;
foreach($database_handle->query("$mysql_statement") as $row) {
print_r($row);
}
}
}
/*----------------------------------------------------------------------------------------------------*/
?>
'$ database_handle'はローカルスコープの変数です。 '$ this-> database_handle'はクラスプロパティ –
を参照します。また、プライベート属性は子クラスでは使用できません。 – dan08
Dan08 - ありがとう、私はプライベートと保護を混乱させる!メモをありがとう。しかし、誘導体を許可している保護されたアクセス制限を使用することはまだ機能していません。 Mark Baker'sとのあなたのコメントは、それを通知するために働いた。ありがとうございました! – user4333011