+ -
当前位置:首页 → 问答吧 → walu开发结构和它的类自动加载机制

walu开发结构和它的类自动加载机制

时间:2011-07-01

来源:互联网



walu_framework,是采用php语言编写,只面向web开发的一个框架。我的目标有三个,保留习惯、快、简约到极致。
这个东东目前没有应用类的类库,所以只能算是个开发结构,但是结构这个词不好听,就权称为框架吧。
看前提醒:别打口水仗

下午优化了一下类自动加载机制中提取类名的部分,说之前先描述下我的autoload原理如下:
先扫面顶端library文件夹里文件定义的类名、接口名,再扫描app里model文件夹定义的类名、接口名,最后缓存在文件里供autoload用。

在以前的时候是通过正则来提取类名和接口名的,但它会导致误提,如果一个字符串正好符号规范就完蛋了,今天下午用php的token重新做了这一块,算是彻底解决了这个问题。

大致思路如下:
提取出文件内容,先转为php-token,然后根据token来分析php语法找出类和接口名称。

具体代码如下:
        private static function find_object_in_file($path)
        {
                $object_path=array();
                $content=file_get_contents($path);
                $token_array=token_get_all($content);

                $prev_1=$prev_2=false;
                foreach($token_array as $value)
                {
                        if(!is_array($value))
                        {
                                continue;
                        }
                        //T_CLASS:353 T_WHITESPACE:371 T_INTERFACE:354 T_STRING:307
                        if( ($prev_2==353 || $prev_2==354) && $prev_1==371 && $value[0]==307  )
                        {
                                $object_path[$value[1]]=$path;
                        }

                        $prev_2=$prev_1;
                        $prev_1=$value[0];

                }
                return $object_path;
        }



今天刚把walu传到github上,欢迎围观。
https://github.com/walu

尾声:ppc,你可否换个好用的代码编辑器,还是我不会用?

作者: cnan   发布时间: 2011-07-01

这个不错

作者: kernel   发布时间: 2011-07-01

围观

作者: rickykurt   发布时间: 2011-07-01