html — Открытое свойство не может получить доступ к объектно-ориентированному переполнению стека

Пожалуйста, посмотрите на мой 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

Заранее спасибо.

0

Решение

Для глобального доступа к классам и свойствам вы можете использовать его как статические свойства и методы:

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);
0

Другие решения

Проблема в том, что $database строка 16 вообще не определяется adminContent.php, если это действительно весь код этого файла в Pastebin.

Вы отвлекаетесь на область публичной собственности, которая работает как есть. Публичные свойства определенно доступны из других файлов, не включенных в другие области функций или классов, но только если вам на самом деле требуется файл, который создает экземпляр $database Объект на первом месте.

Не показывая нам больше кода о том, как adminContent.php включается, мы не можем отладить почему $database не создается в строке 16.

Используйте отладчик для отслеживания потока выполнения кода или просто добавьте echo или error_log как в файл создания базы данных, так и в код adminContent.php и запустите его. Я думаю, вы найдете это $database не создается вообще, или, по крайней мере, прежде чем вы получите доступ к нему в adminContent.php

0

По вопросам рекламы [email protected]