首页 / PHP / 在PHP中的类中使用全局DB变量
在PHP中的类中使用全局DB变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在PHP中的类中使用全局DB变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1265字,纯文字阅读大概需要2分钟。
内容图文
![在PHP中的类中使用全局DB变量](/upload/InfoBanner/zyjiaocheng/747/bc1684eb15a04025907b60fc7d309ca6.jpg)
如何在类中使用全局DB变量?
假设我在config.php中有这个
$dbh = new PDO("mysql:host=localhost;dbname=mydb", "root", "");
我想在这个$dbh内部类中使用如下(MyClass.php)
class MyClass
{
public function DoSomething($plogin_id)
{
$sql = "SELECT * FROM mytable WHERE login_id = :login_id";
$stmt = $dbh->prepare($sql); //line 14
$stmt->bindParam(':login_id', $plogin_id, PDO::PARAM_STR);
}
}
在我的index.php文件中,我使用这个MyClass如下:
include "config.php";
$MyObject = new MyClass();
$login_result = $MyObject->DoSomething("admin");
它给了我错误:
Fatal error: Call to a member function
prepare() on a non-object in
C:\xampp\htdocs\MyProject\admin\includes\classes\MyClass.php
on line 14
解决方法:
你必须以某种方式将$dbh对象传递给MyClass.既然你不想使用全局变量,我建议你把它传递给MyClass的构造函数.
你的MyClass和index.php看起来像这样:
class MyClass
{
protected $dbh = null;
public function __construct ( PDO $Pdh )
{
$this->dbh = $Pdh;
}
public function DoSomething($plogin_id)
{
$sql = "SELECT * FROM mytable WHERE login_id = :login_id";
$stmt = $this->dbh->prepare($sql); //line 14
$stmt->bindParam(':login_id', $plogin_id, PDO::PARAM_STR);
}
}
// in your index.php
$MyObject = new MyClass ( $dbh );
这基本上是一种称为依赖注入的模式.有关这是什么的更多信息,请参见this excellent tutorial.
内容总结
以上是互联网集市为您收集整理的在PHP中的类中使用全局DB变量全部内容,希望文章能够帮你解决在PHP中的类中使用全局DB变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。