试图连接到数据库

时间:2015-01-10 18:24:43

标签: php phalcon

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

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

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

但是一旦我知道了,我如何实际连接到数据库并将其添加到$ di-> (如果我理解正确的话,它实际上是全局类的?最终,我想把" select * from config"的内容拉到一个数组中并将其用于应用程序配置。在这种情况下,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)

This question似乎与我提出的问题很接近,但更多的是错误处理而不是实际连接,我没有看到我的问题的答案。

1 个答案:

答案 0 :(得分:1)

要解决您的数据库,您需要解决您的di。您可以使用

将其声明的文件解析出来
$di->getShared('db')

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

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

$this->db->

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

通过其他phalcon项目并了解一切如何协同工作真的很有帮助。请参考此处的来源并查看项目的设置方式:

https://github.com/phalcon/invo

https://github.com/phalcon/vokuro

https://github.com/phalcon/forum

这些是按复杂程度排名的,所以先从invo开始,然后再继续