在类中使用MySQLi的最佳方法

时间:2013-02-15 04:52:21

标签: php class mysqli

目前我正在这样做:

function __construct( $mysqli_connection )
{
    if( ! empty($mysqli_connection) && is_object($mysqli_connection) && ! $mysqli_connection->connect_error )
    {
        //Make the $mysqli universal to the class equal the given connection
        $this->mysqli = $mysqli_connection;
    }
    else
    {
        die("An invalid MySQLi connection was given.\n");
    }

}//function __construct

启动课程:

new className( $mysqli );

它工作正常,但在我看来:

  • 不需要额外的代码
  • 用于占用MySQLi资源的内存最终加倍(一个在类的内存中,但主代码中仍有一个)

我的上述观点是否正确,如果是,是否有更好的方法可以在类中使用MySQLi资源?上面的方法是我从搜索中找到的唯一方法。

1 个答案:

答案 0 :(得分:3)

首先,您的代码可以简化为:

private $mysqli;

function __construct(mysqli $conn)
{
    $this->mysqli = $conn;
}

您的班级不应该担心连接是否已建立,它应该能够假设它是。此外,类型提示有助于指示在调用构造函数时预期的类。

其次,当您在另一个对象中使用它时,mysqli对象不会重复;相反,它的引用计数增加了。一旦计数降至零,对象就会被删除。如果总是复制一个对象,那么执行依赖注入将变得非常昂贵。