配置文件主要存放连接数据库地址、用户、密码、数据库等相关信息。为什么要把这些写到配置文件中呢?
配置文件存放在哪里,主要看项目的需要和自己的喜好。我们在index.php入口文件中,能正确引入配置文件就可以了。
<?php
//配置文件
return [
'db' => [
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'myschool',
],
'defaultController' => 'index',
'defaultAction' => 'index',
];
分析一下,我们把连接数据库的地址,用户名等,都写进了数组中,然后返回给调用者。
我们看index.php中,如何使用这个配置文件的。
// 加载配置文件 $config = require(__DIR__ . '/../config/config.php'); // 实例化框架类 (new fastphp\Fastphp($config))->run();
真正地使用配置文件,实际上在fastphp.php文件中,下面是代码片断
class Fastphp
{
// 配置内容
protected $config = [];
public function __construct($config)
{
$this->config = $config;
}
// 运行程序
public function run()
{
$this->setDbConfig();
}
// 配置数据库信息
public function setDbConfig()
{
if ($this->config['db']) {
define('DB_HOST', $this->config['db']['host']);
define('DB_NAME', $this->config['db']['dbname']);
define('DB_USER', $this->config['db']['username']);
define('DB_PASS', $this->config['db']['password']);
}
}
}
我们把index.php文件和falstphp.php文件结合起来看,能否看懂如何加载配置文件的?最后配置文件中的数组又变成了什么呢?
这两个问题通过阅读代码,就可以找到答案。
如果你能回能这些问题,说明你的基础比较牢固,可以继续学习。
那么,这些配置文件中的数据最后在哪里使用呢?因为大部分数据是关于数据库相关的,可以在数据库操作的文件中找到。
下面是db.php文件的部分代码
class Db
{
private static $pdo = null;
public static function pdo()
{
if (self::$pdo !== null) {
return self::$pdo;
}
try {
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8', DB_HOST, DB_NAME);
$option = array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
return self::$pdo = new PDO($dsn, DB_USER, DB_PASS, $option);
} catch (PDOException $e) {
exit($e->getMessage());
}
}
}
上在代码中的DB_HOST,DB_NAME,就是来自于fastphp.php定义的常量。
通过以上代码的分析 ,配置文件从定义到最终的使用,经历了若干个文件。
这样做的目的,是为了方便MVC框架的使用者,只需要改一改config.php文件即可,不需要到代码中修改。
当然对于我们初学者来说,为了更好的把控以后用到的thinkphp, yii, ci等框架,现在要把里面的来龙去脉弄清楚。