《php面向对象》第28课:封装复杂的MVC-配置文件

配置文件主要存放连接数据库地址、用户、密码、数据库等相关信息。为什么要把这些写到配置文件中呢?

配置文件存放在哪里,主要看项目的需要和自己的喜好。我们在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等框架,现在要把里面的来龙去脉弄清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值