是的,都说PHP写框架门槛低,我觉得这是个好事,框架的目的是更高效率的开发,门槛低为高效率提供了更多基础。有这么好的基础没有理由不自己也尝试写个框架,这里整理下自己要写框架的规划。
基于PHP5.3.X
这个都出来几年了,一些新特性的确能提高代码效率。
CLASS不是全部
OOP编程方式是非常可取的,一说OOP,直接对应的就是CLASS化,但是我们还需要独立的函数,PHP有命名空间,这些函数可以用命名空间包装起来,达到包化
CLASS风格封装配置和常量定义
虽然命名空间隔离了代码,但是隔离不了常量定义,比如
/**
* JingYes 框架使用的基本函数
* 使用者可以预先定义这些函数
* @author Yu HengChun
* @copyright Copyright © 2011 Yu HengChun
* @license http://www.opensource.org/licenses/bsd-license.php
*/
namespace JingYes;
/**
* JingYes class风格配置
* 其它类里面也采用这种风格
*/
final class Config
{
public static $conf=array(
);
/**
* 配置扩展
* @param string $key 键
* @param array $val 值
*/
public static function extend($key,$val){
if(is_array(self::$conf[$key]) and is_array($val))
self::$conf[$key]=array_merge(self::$conf[$key],$val);
else
self::$conf[$key]=$val;
}
}
if(!function_exists('JingYes\ThrowException')){
/**
* 抛出异常信息
* @param string $type 错误类型信息
* @param string $message 错误细节信息模板
* @param integer $code 错误类型代码,采用http错误代码
* @param array $args 传递给 $message的参数,用于生成最终信息
*/
function ThrowException($type,$message,$code=501,array $args=array()) {
$type=Config::$conf['error'][$type]?:$type;
$message=message($message,$args);
throw new \Exception($type.':'.$message,$code);
}
}
if(!function_exists('JingYes\message')){
/**
动态加载js的方法
* 对提示信息进行转换翻译
* @param string $message 错误细节信息模板
* @param array $args 传递给 $message的参数,用于生成最终信息
*/
function message($message,array $args=array()) {
$message=stripslashes($message);
$message="\$message=\"$message\";";
extract($args);
eval($message);
return $message;
}
}