目前我正在这样做:
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资源?上面的方法是我从搜索中找到的唯一方法。
答案 0 :(得分:3)
首先,您的代码可以简化为:
private $mysqli;
function __construct(mysqli $conn)
{
$this->mysqli = $conn;
}
您的班级不应该担心连接是否已建立,它应该能够假设它是。此外,类型提示有助于指示在调用构造函数时预期的类。
其次,当您在另一个对象中使用它时,mysqli
对象不会重复;相反,它的引用计数增加了。一旦计数降至零,对象就会被删除。如果总是复制一个对象,那么执行依赖注入将变得非常昂贵。