OOP PHP未定义变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OOP PHP未定义变量相关的知识,希望对你有一定的参考价值。
我正在使用这个库,当我穿上我的OOP项目时,它给了我一个错误https://github.com/lincanbin/PHP-PDO-MySQL-Class
注意:未定义的变量:第13行的E: Laragon www shop include category.php中的DB
致命错误:未捕获错误:在E: Laragon www shop include category.php中调用null上的成员函数query():13堆栈跟踪:#0 E: Laragon www shop admin category .php(8):类别 - > getAllCategories()#1 {main}在第13行的E: Laragon www shop include category.php中抛出
在我的类别课上
<?php
require_once('../vendor/autoload.php');
class Category {
function __construct()
{
$DB = new Db('localhost', '3306', 'shop', 'root', '');
}
public function getAllCategories()
{
$query = $DB->query("SELECT * FROM categories");
return $query;
}
...
}
在我的PHP前端
<?php
require_once('../include/category.php');
$test = new Category();
var_dump($test->getAllCategories());
?>
编辑Jite
每个查询如insert,getall,select,delete都需要添加closeConnection吗?我在这里找到了这个:https://stackoverflow.com/a/20492486/5406008 require_once('../ vendor / autoload.php');
class Category {
protected $DB;
function __construct()
{
$this->DB = new Db('localhost', '3306', 'shop', 'root', '');
}
public function __destruct()
{
$this->DB->closeConnection();
}
public function getAllCategories()
{
$query = $this->DB->query("SELECT * FROM categories");
return $query;
}
在类方法中创建新变量时,它只存在于该范围内,因此在构造函数中创建$DB
变量时,当到达构造函数的末尾时,它将超出范围。
要将变量作为成员字段存储在类中,您必须将其设置为$this
对象,最好先定义它:
class Category {
private $DB;
function __construct()
{
$this->DB = new Db('localhost', '3306', 'shop', 'root', '');
}
public function getAllCategories()
{
$query = $this->DB->query("SELECT * FROM categories");
return $query;
}
...
}
这样,该类将变量存储为成员,并使其在所有方法中可用。
请将$DB
定义为类变量,然后使用它。
<?php
require_once('../vendor/autoload.php');
class Category {
private $DB; // Define it here.
function __construct() {
$this->DB = new Db('localhost', '3306', 'shop', 'root', ''); // Set value here
}
public function getAllCategories() {
$query = $this->DB->query("SELECT * FROM categories"); // Get value here
return $query;
}
...
}
将您的班级更改为:
class Category {
protected $DB;
function __construct()
{
$this->DB = new Db('localhost', '3306', 'shop', 'root', '');
}
public function getAllCategories()
{
$query = $this->DB->query("SELECT * FROM categories");
return $query;
}
... }
以上是关于OOP PHP未定义变量的主要内容,如果未能解决你的问题,请参考以下文章