栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

这是一个范围错误。您正在创建

$DBH
一个全局变量。因此,当您输入函数时,全局变量不可用。您有5个真实选择。

1.使用全局关键字

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.使用预先建立的课程/框架

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号