首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用实心原则在我的索引上初始化对象的问题

使用实心原则在我的索引上初始化对象的问题
EN

Stack Overflow用户
提问于 2022-11-21 13:59:03
回答 1查看 20关注 0票数 0

我试图在我的index.php中初始化一个对象,但是它通常需要一个参数,所以我不能初始化和使用它。

我创建了一个由MYSQL函数实现的接口,该接口在执行“搜索”函数的“用户”模型中使用,之后我尝试将其保存在我的index.php中,但它需要参数。我应该传递什么样的参数来执行执行?我对数据库文件没有任何构造函数。只是一个MYSQL类,我想使用它与函数conectar()建立连接,并实现接口。

代码语言:javascript
复制
<?php

namespace Source\Model;
use Source\Controller\DatabaseInterface;

class User 
{

    private $dbConnection;


    public function __construct(DatabaseInterface $dbConnection)
    {
        $this->dbConnection = $dbConnection;
    }

    public function search($dbConnection)
    {
        $query="SELECT * from categoria";
        $queryrun=mysqli_query($dbConnection, $query);
        echo '<pre>';
        var_dump($queryrun);
        echo '</pre>';

    }


}

Index.php

代码语言:javascript
复制
<?php 

require __DIR__ . "./vendor/autoload.php";

use Source\Model\User;

$teste = new User();
EN

回答 1

Stack Overflow用户

发布于 2022-11-22 07:02:21

您不需要真正的数据库包装!不过,这里有两个有趣的资源:

你真的应该使用PDO而不是MySqli

这里是一个非常好的PDO教程。

下面是一个使用PDO实例而不是数据库包装器的例子。

index.php

代码语言:javascript
复制
<?php

require __DIR__ . "./vendor/autoload.php";

use Source\Model\User;

// Create a new database connection, e.g. a PDO instance.
$dbConnection = new PDO(
    'mysql:host=localhost;port=3306;dbname=guest;charset=utf8', // DSN
    'abc', // username
    'def', // password
    [
        PDO::ATTR_EMULATE_PREPARES => false,
        PDO::ATTR_PERSISTENT => false,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ], // connection options
);

// Pass the PDO instance to all objects that need it (like object User).
$user = new User($dbConnection);

// Get all categories.
$categories = $user->getAllCategories();

echo '<pre>' . var_dump($categories) . '</pre>';

User.php

代码语言:javascript
复制
<?php

namespace Source\Model;

use PDO;

class User {

    private $dbConnection;

    public function __construct(PDO $dbConnection) {
        $this->dbConnection = $dbConnection;
    }

    public function getAllCategories(): array {
        $sql = 'SELECT * FROM categoria';

        /*
         * Always prepare your sql statements to avoid SQL injections.
         * 
         * @link https://phpdelusions.net/pdo#prepared Prepared statements. Protection from SQL injections
         * @link https://phpdelusions.net/sql_injection The Hitchhiker's Guide to SQL Injection prevention
         */
        $statement = $this->connection->prepare($sql);
        $statement->execute();

        $categories = $statement->fetchAll(PDO::FETCH_ASSOC);

        return $categories;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74520071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档