2015-01-10 82 views
0

我正在从头开始重写一个项目,并认为我会尝试学习MVC。在这种情况下,我选择了Phalcon,并且仍在努力完成将教程转换为我自己的项目的基础知识。试图连接数据库

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

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

但是,一旦我有,实际上,我怎么连接到数据库,并把它添加到$二>(其中,如果我理解正确的话,实际上是全球一流的?最后,我想拉如果删除了$二 - >部分的“选择从配置*”为一个阵列并利用它来进行应用程序配置的内容。在这种情况下,后续代码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 

,所述数组返回我需要的数据,但它仍然无法帮助我弄清楚如何连接到数据库并使其可用于模型中的其他功能的全局数据:

$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

要解决您的数据库,您需要解决您的问题。你可以解决它你宣布的文件与

$di->getShared('db') 

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

里面继承\尔康\的mvc \控制器类的,你可以使用

$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第一,然后在

移动
+1

谢谢你的例子。 Phalcon网站上的教程很好,但您提供的示例帮助更多。 – Sage