• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一步步编写PHP的Framework(六)_php

php 搞代码 7年前 (2018-06-21) 112次浏览 已收录 0个评论

 

不知道大家注意到没有,之前我们导入一个配置文件是通过include CONFIGS_PATH . '/config.php'来做的,这样做好吗?

       不忙回答,我可以提两个问题:

       1. 如果这个路径下面的config.php不存在会发生什么现象?

       2.如果我将PHP这种配置文件修改成为xml这种配置文件之后会发生什么现象?

       首先,如果文件不存在,那么PHP会抛出一个警告,但是程序继续执行;配置文件变成xml之后,入口文件处需要编写相应的读取xml的代码,而且需要把之前的include CONFIGS_PATH . '/config.php'这句代码修改掉。

        那么有没有方法能够实现配置文件的无缝切换呢?

        在具体讲解这些之前,我首先说一下工厂模式,现假设:A需要购买一辆红色汽车,他直接向B(一个生产汽车的工厂)提出需求,B按照A的需求,从仓库中选取一辆合适的汽车,然后交给A。整个过程,A只是提出需求,具体汽车的选取是由B工厂来确定的,这种方式就是工厂模式。

       举个例子:

01 <?php
02 public class Factory {
03     public static function factory($whichOneToChoose) {
04         $returnVal = 'Red';
05         switch($whichOneToChoose) {
06             case1 :
07                 $returnVal = 'Blue';
08                 break
09             case 2 :
10                 $returnVal = 'Green';
11                 break;
12             default :
13                 break;
14         }
15         return $returnVal;
16     }
17 }

       工厂模式一般都有一个静态的方法:factory负责逻辑的处理。

 

        现在我们可以新建一个专门处理配置文件的类:Config.php

01 <?php
02 class Config {
03     const XML = 1;
04     const INI = 2;
05     const PHP = 3;
06     public static function factory($which) {
07         switch($which) {
08             caseConfig::XML :
09                 return XmlConfig::parse(CONFIGS_PATH . '/config.xml');
10                 break;
11             case Config::INI :
12                 return IniConfig::parse(CONFIGS_PATH . '/config.ini');
13                 break;
14             case Config::PHP :
15                 //此处没有做文件是否存在的判定,你可以自己判定一下,我只是做一个例子
16                 return include CONFIGS_PATH . '/config.php';
17                 break;
18             default:
19                 return array();
20                 break;
21         }
22     }
23 }

 

       如果你要将配置文件修改成为xml这种方式,只需要在XmlConfig.php中实现即可,当然,为了简单,我在这儿只是实现ini配置文件的编写,xml的配置文件你可以自己去尝试一下,如果你想查看具体实现,可以查看Toper中的/Library/Toper/Config/XmlConfig.class.php的具体代码。

01 <?php
02 class XmlConfig {
03     public static function parse($file) {
04         if(!is_file($file)) {
05             throw new Exception('none exists xml config file');
06         } else {
07             return parse_ini_file($file,true);
08         }
09     }
10 }

        这个文件的代码是我随手写的,不保证代码的正确性,了解思路即可。

欢迎大家阅读《一步步编写PHP的Framework(六)_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一步步编写PHP的Framework(六)_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址