Пожалуйста, посмотрите на мой databaseClass. Я использовал открытое свойство, называемое «connection», но я не могу получить доступ к этому свойству к другим файлам .php. Я учусь ООП PHP. Пожалуйста, помогите мне.
Вот другая ссылка на файл http://pastebin.com/0Nh1uc8D
<?php
require_once('config.php');//calling config.php
class Database{
public $connection;//property
//__construct();
public function __construct(){
$this->openDbConnection();
}
//method
public function openDbConnection(){
$this->connection = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if (mysqli_connect_errno()) {
# code...
die("Database Connection Failed Badly" . mysqli_error());
}else{
echo "DB Connected Successfully.";
}
}
}
//instance of the class
$database = new Database();
?>
Вот мой код файла confi.php
http://pastebin.com/wQ9BFGf4
Заранее спасибо.
Для глобального доступа к классам и свойствам вы можете использовать его как статические свойства и методы:
class Database
{
public static $connection;//property
//method
public static function openDbConnection()
{
self::$connection = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if (mysqli_connect_errno()) {
# code...
die("Database Connection Failed Badly" . mysqli_error());
}else{
echo "DB Connected Successfully.";
}
}
}
// once "create" connection
Database::openDbConnection();
// and for all other files
var_dump(Database::$connection);
Проблема в том, что $database
строка 16 вообще не определяется adminContent.php
, если это действительно весь код этого файла в Pastebin.
Вы отвлекаетесь на область публичной собственности, которая работает как есть. Публичные свойства определенно доступны из других файлов, не включенных в другие области функций или классов, но только если вам на самом деле требуется файл, который создает экземпляр $database
Объект на первом месте.
Не показывая нам больше кода о том, как adminContent.php
включается, мы не можем отладить почему $database
не создается в строке 16.
Используйте отладчик для отслеживания потока выполнения кода или просто добавьте echo или error_log как в файл создания базы данных, так и в код adminContent.php и запустите его. Я думаю, вы найдете это $database
не создается вообще, или, по крайней мере, прежде чем вы получите доступ к нему в adminContent.php