php 调用成员函数,在非对象PHP帮助上调用成员函数prepare()

这是一个范围错误。你正在制作$DBH一个全局变量。因此,当您输入函数时,全局变量不可用。你有5个真正的选择。

1.使用global关键字function doSomething() {

global $DBH;

//...

这不是一个好主意,因为它可以维护和测试PITA。想象一下尝试调试该函数调用。你现在需要找出$DBH定义的地方,试图弄清楚发生了什么......

2. $DBH为函数创建一个参数function doSomething(MySQLi $DBH) {

它具有明确的优点。但它仍然不是很好,因为调用代码需要跟踪全局变量。

3.创建一个“获取” $DBH对象的函数function getDBH() {

static $DBH = null;

if (is_null($DBH)) {

$DBH = new mysqli(...);

}

return $DBH;}function doSomething() {

$DBH = getDBH();}

这具有完全绕过全局变量问题的优点。但是也很难有多个连接或重复使用任何代码用于其他连接。

4.创建一个包装数据库访问的类class Database {

public function __construct($host, $user, $pass) {

$this->DBH = new MySQli($host, $user, $pass);

}

public function doSOmething() {

$this->DBH->foo();

}}

这为您封装了一切。所有数据库访问都将通过单个类,因此您无需担心全局变量访问或其他任何问题。

5.使用预先构建的类/框架

这是最好的选择,因为您不必担心自己这样做。

数据库访问类:Doctrine ORM - 具有完整ORM(对象映射)的完整数据库访问库

ADODB - 与数据库无关的数据库访问库

Pear MDB2 - 另一个数据库访问库

完整框架:(真的还有很多,我不打算再费心了,因为这是另一个问题......)

真的,选择是无止境的。找到你喜欢的东西,并坚持下去。它真的会让你的生活更轻松......

祝好运!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值