|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言,
不晓得人人注重到没有,之前咱们导入一个设置装备摆设文件是经由过程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原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。 |
|