尝试连接到数据库
Trying to connect to database
我正在从头开始重写一个项目,我想我会尝试学习 MVC。在这种情况下,我选择了 Phalcon,并且仍在研究将教程转换为我自己的项目的基础知识。
我有两个 "configuration" 设置需要考虑。首先,我需要读取具有数据库凭据的配置文件(这可以正常工作)。
require_once('../fileconfig.php'); // Read config file
$init = new Phalcon\Config\Adapter\Php("../fileconfig.php"); //Convert it to array
但是一旦我有了它,我如何实际连接到数据库并将其添加到 $di->(如果我理解正确的话,它实际上是全局 class?最终,我想将 "select * from config" 的内容拉入数组并将其用于应用程序配置。在本例中,var_dump($dbh) returns "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-> 部分,数组 returns 我需要的数据,但它仍然无法帮助我弄清楚如何连接到数据库并使其在全球范围内可用模型中的其他功能:
$dbh = new \Phalcon\Db\Adapter\Pdo\Mysql([
"host" => $init->database->host,
"username" => $init->database->username,
"password" => $init->database->password,
"dbname" => $init->database->dbname
]);
Returns:
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 似乎接近我的要求,但更多的是关于错误处理而不是实际连接,我在那里没有看到我的问题的答案。
要解析您的数据库,您需要解析您的 di。您可以使用
解析您在其中声明的文件
$di->getShared('db')
但是请注意,您不想那样做。您希望您的文件与其职责分开。
在继承 \Phalcon\Mvc\Controller 的 class 内部,您可以使用
$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 开始,然后继续
我正在从头开始重写一个项目,我想我会尝试学习 MVC。在这种情况下,我选择了 Phalcon,并且仍在研究将教程转换为我自己的项目的基础知识。
我有两个 "configuration" 设置需要考虑。首先,我需要读取具有数据库凭据的配置文件(这可以正常工作)。
require_once('../fileconfig.php'); // Read config file
$init = new Phalcon\Config\Adapter\Php("../fileconfig.php"); //Convert it to array
但是一旦我有了它,我如何实际连接到数据库并将其添加到 $di->(如果我理解正确的话,它实际上是全局 class?最终,我想将 "select * from config" 的内容拉入数组并将其用于应用程序配置。在本例中,var_dump($dbh) returns "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-> 部分,数组 returns 我需要的数据,但它仍然无法帮助我弄清楚如何连接到数据库并使其在全球范围内可用模型中的其他功能:
$dbh = new \Phalcon\Db\Adapter\Pdo\Mysql([
"host" => $init->database->host,
"username" => $init->database->username,
"password" => $init->database->password,
"dbname" => $init->database->dbname
]);
Returns:
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 似乎接近我的要求,但更多的是关于错误处理而不是实际连接,我在那里没有看到我的问题的答案。
要解析您的数据库,您需要解析您的 di。您可以使用
解析您在其中声明的文件$di->getShared('db')
但是请注意,您不想那样做。您希望您的文件与其职责分开。
在继承 \Phalcon\Mvc\Controller 的 class 内部,您可以使用
$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 开始,然后继续