希望沧老大过来也发表下看法。
题外话
http://www.treacle.cn/这个好象是CI的一个改进版。但是,可惜的是,未能从根本上解决CI中众多的缺陷 那 CI 的分支 Kohana 怎么样呢?感觉 Kohana 很有前途。
Kohana 很有前途
从某种程度上来说,Kohana现在还未被国人完全接受。在国内比不上CI,但是,我想,随首PHP4的消失,真正的PHP5面向对象深入人心,那么,接受Kohana 的人会越来越多。最关键是代码给了用户多少信心?这是CI目前最为缺少的。当然,CI给了用户其它框架所不能给的很多东西。这不能不说是CI的长处。但是,请看:
class CI_Upload {
var $max_size = 0;
var $max_width = 0;
var $max_height = 0;
var $allowed_types = "";
var $file_temp = "";
var $file_name = "";
var $orig_name = "";
var $file_type = "";
var $file_size = "";
var $file_ext = "";
var $upload_path = "";
var $overwrite = FALSE;
var $encrypt_name = FALSE;
var $is_image = FALSE;
var $image_width = '';
var $image_height = '';
var $image_type = '';
var $image_size_str = '';
var $error_msg = array();
var $mimes = array();
var $remove_spaces = TRUE;
var $xss_clean = FALSE;
var $temp_prefix = "temp_file_";
/**
* Constructor
*
* @access public
*/
function CI_Upload($props = array())
{
if (count($props) > 0)
{
$this->initialize($props);
}
log_message('debug', "Upload Class Initialized");
}
// --------------------------------------------------------------------
/**
* Initialize preferences
*
* @access public
* @param array
* @return void
*/
function initialize($config = array())
{
$defaults = array(
'max_size' => 0,
'max_width' => 0,
'max_height' => 0,
'allowed_types' => "",
'file_temp' => "",
'file_name' => "",
'orig_name' => "",
'file_type' => "",
'file_size' => "",
'file_ext' => "",
'upload_path' => "",
'overwrite' => FALSE,
'encrypt_name' => FALSE,
'is_image' => FALSE,
'image_width' => '',
'image_height' => '',
'image_type' => '',
'image_size_str' => '',
'error_msg' => array(),
'mimes' => array(),
'remove_spaces' => TRUE,
'xss_clean' => FALSE,
'temp_prefix' => "temp_file_"
);
foreach ($defaults as $key => $val)
{
if (isset($config[$key]))
{
$method = 'set_'.$key;
if (method_exists($this, $method))
{
$this->$method($config[$key]);
}
else
{
$this->$key = $config[$key];
}
}
else
{
$this->$key = $val;
}
}
}
这一大段代码,充分表明,CI对代码的要求并不高,实现了,能跑不错就行。
但是,真正的大型项目的用户,还是希望框架能给用户信心。
CI中有开发者数组函数用得特好,但是,这里,是与类相关的数组,本来一行代码就够了,却用了一个很长的array()初始化,为什么不直接读出来?
一个 get_class_vars 就能让上面代码少20多行。
CodeIgniter缺陷探讨(四)
六、助手函数CI实质上并没有提供实用的助手函数。比如,美其名为文件名助手,但实际上根本没有什么函数可用,因为,针对文件目录操作的创建,删除,重命名,移动,列出清单这五大操作,文件是五个,目录也是五个,至少是10个函数,这在CI中,是没有提供的。CI如果是真的面向初学者,那么,应当考虑到这一点的。
但若你要仔细查看一下这些助手函数,就会发现,这些函数实际不是提供给用户用的。是CI本身就用到的。
同时,这些助手函数的代码算法仍不敢恭维。比如,求某年某月共有多少天,这么一个小小的问题,原本一行代码就能算出的,CI中却用了很多行代码,并且用上了历法知识。而现成的PHP函数放着却不会用。
至少,如果是我来管理CI开发,那么我会不留情地在get_nonth_days函数中,删除一切代码,贴上 return date("d",mktime(0,0,0,$month+1,0,$year));
因为,原有的代码,会让CI失去用户! 还有URL中中文字符的问题,也是BUG! 原帖由 ackiae86 于 2008-7-3 11:20 发表 http://codeigniter.org.cn/forums/images/common/back.gif
还有URL中中文字符的问题,也是BUG!
我觉得这不能算 BUG 吧?你可以修改正则表达式来达到你的目的。 关注。。。。 的确分析得透彻。