尝试连接到数据库

智者

我正在从头开始重写一个项目,并认为我将一路尝试学习MVC。在这种情况下,我选择了Phalcon,并且仍在研究将教程转换为自己的项目的基础知识。

我需要考虑两个“配置”设置。首先,我需要读取一个具有数据库凭据的配置文件(这可以正常工作)。

require_once('../fileconfig.php'); // Read config file
$init = new Phalcon\Config\Adapter\Php("../fileconfig.php"); //Convert it to array

但是一旦有了,我该如何实际连接到数据库并将其添加到$ di->(如果我正确理解的话,它实际上是全局类吗?最终,我想从配置中提取“ select *”的内容”放入数组,并将其用于应用程序配置。在这种情况下,var_dump($ dbh)返回“ null”

//Connect to database
$di->set('db', function() use ($init) {
    $dbh = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host" => $init->database->host,
        "username" => $init->database->username,
        "password" => $init->database->password,
        "dbname" => $init->database->dbname
    ]);
    return $dbh;
});
var_dump($dbh);  //returns null

如果删除$ di->部分,该数组将返回所需的数据,但仍然无法帮助我确定如何连接数据库并使其可全局用于模型中的其他函数:

    $dbh = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host" => $init->database->host,
        "username" => $init->database->username,
        "password" => $init->database->password,
        "dbname" => $init->database->dbname
    ]);

返回值:

object(Phalcon\Db\Adapter\Pdo\Mysql)[28]
  protected '_descriptor' => 
    array (size=4)
      'host' => string 'localhost' (length=9)
      'username' => string 'testuser' (length=8)
      'password' => string 'testpass' (length=8)
      'dbname' => string 'testdb' (length=6)

这个问题似乎与我要问的问题很接近,但更多的是关于错误处理,而不是实际的连接,我在那儿看不到我的问题的答案。

戴维·邓肯

要解析数据库,您需要解析di。您可以使用它声明的文件来解析它

$di->getShared('db')

但是请注意,您不想这样做。您希望文件与它们的职责分开。

在继承\ Phalcon \ Mvc \ Controller的类中,可以使用

$this->db->

请参阅http://docs.phalconphp.com/en/latest/reference/di.html,以了解为什么使用DI以及访问它的所有细微差别

确实有助于完成其他Phalcon项目,并研究一切如何协同工作。请参考此处的源代码,并查看项目的设置方式:

https://github.com/phalcon/invo

https://github.com/phalcon/vokuro

https://github.com/phalcon/forum

这些按复杂度排名,因此先从invo开始,然后继续

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章