请查看我的databaseClass我使用了一个名为“connection”的公共属性,但我无法访问该属性的其他.php文件。我正在学习OOP 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();
&GT;
这是我的confi.php文件代码 http://pastebin.com/wQ9BFGf4
先谢谢。
答案 0 :(得分: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);
答案 1 :(得分:0)
问题是$database
根本没有被第16行adminContent.php
定义,如果那确实是Pastebin中该文件的所有代码。
你被公共财产范围分散了注意力,现在工作正常。公共属性肯定可以从其他函数或类范围中未包含的其他文件访问,但如果您实际需要实例化$database
对象的文件,则仅首先。
如果没有向我们展示有关如何包含adminContent.php
的更多代码,我们无法调试第16行未实例化$database
的原因。
使用调试器跟踪代码执行流程,或者只将echo或error_log添加到数据库实例化文件和adminContent.php代码并运行它。我想你会发现$database
根本没有实例化,或者至少在你adminContent.php