配置文件主要存放连接数据库地址、用户、密码、数据库等相关信息。为什么要把这些写到配置文件中呢?
配置文件存放在哪里,主要看项目的需要和自己的喜好。我们在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等框架,现在要把里面的来龙去脉弄清楚。