如何在 PHP 中从外部类访问 MySQLi:通过依赖注入克服内部服务器错误

DDD
发布: 2024-10-28 14:32:02
原创
792 人浏览过

How to Access MySQLi from External Classes in PHP: Overcoming Internal Server Errors with Dependency Injection

在 PHP 中从外部类使用 MySQL

从 PHP 5.6 迁移到 7.0,并进行相应的数据库调整,从 MySql 到 Mysqli 已经揭示了某些挑战。在这里,我们将深入研究根本问题并提供替代解决方案。

理解结构

首先,您设计了一个具有私有属性和构造函数的数据库类建立连接。但是,此设置在从其他类访问时会造成断开连接。

其次,您有一个旨在与数据库交互的 API 类,但它在其构造函数中使用单独的新实例化来进行数据库连接。

错误根源:内部不一致

当您从 API 类引用 $this->db->conn 时,它会检索 null,从而导致内部服务器错误。发生这种情况是因为 $this->db 仅在对象创建时初始化,并且它不保留任何连接数据。

建议的解决方案:依赖注入

相反每个类的单独实例化,请考虑依赖注入。操作方法如下:

  1. 使用必要的连接设置代码创建一个独立的数据库类。
  2. 将此数据库对象的实例作为构造函数参数传递给任何需要数据库访问的类。

通过遵循这些原则,您可以在 PHP 应用程序中跨多个类有效地利用 MySQLi。

示例实现

数据库.php:

<code class="php">$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');</code>
登录后复制

myapi.php:

<code class="php">class MyAPI {
    protected $db;
    
    public function __construct($db) {
        $this->db = $db;
    }
    
    // ... Rest of your code
}</code>
登录后复制

app.php:

<code class="php">require 'database.php';
require 'myapi.php';

$api = new MyAPI($db);
// Utilize the API as intended</code>
登录后复制

这种重组可确保整个应用程序对数据库资源的访问一致,从而减少您遇到的内部服务器错误。

以上是如何在 PHP 中从外部类访问 MySQLi:通过依赖注入克服内部服务器错误的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板