包含 vgotfaster 标签的文章

VGOTFASTER 更新数据库操作层

最近一直准备把公司的所有 PHP 环境统一升级到 5.5,目前使用的是 5.2 与 5.3,而现在 5.3 都已经 EOL 了,5.4 性能有较大的提升,5.5 对内存占用上也有很多优化,作为一个互联网公司目前我们在用的版本有点不够与时俱进了,所以升级成了必然。

升级除了 preg_replace() 中 e 修饰符开始弃用以外最主要就是数据库问题了,虽然编译进 mysql 模块仍然可以继续使用原来的 mysql 驱动,但原来的 mysql 驱动官方早就开始声明要废弃,并且在 5.5 中默认是不启用的。

目前有一个项目使用的是我的 vgotfaster 框架,所以就改了改把框架的数据库操作类改使用 mysqli 驱动,由于之前我已经做了一个由 pdo 驱动的类,所以干脆抽了些时间把 pdo 与 mysqli 驱动的数据库全部抽出来成为数据库操作层,并且可以由数据库配置中的 use_pdo_driver 来指定是否使用 PDO 驱动,把 ActiveRecord 类也抽出来统一为共用的类,再把两个驱动的数据库类方法统一。

唯一的问题是 pdo 驱动没有类似于 mysql*_ping() 的方法,在 pdo 中只能写一个不具任何功能的方法,不过除非在 CLI 计划任务中需要长时间运行并且用 mysql*_ping() 来实现保持 MySQL 不超时断开,其它情况都可正常使用。现在可自由通过配置切换驱动,而且用法也完全无需修改程序的其它地方。

这里是下载:[attach=256]

详细的更新日志可以见包内的 changelog.txt 文件

最近大 OSChina 上建了个 git 仓,地址是 http://git.oschina.net/pader/vgotfaster

其实我这个 vgotfaster 框架是借鉴 CI 框架的思路,目的是为了学习学习这种框架的实现并且用在自己的一些项目中,当然仅仅是借鉴了他的结构思想,除了在单例模式的实现上参考过它的代码外,其它的代码基本都是自己写的,个人网站许久不维护了,做的一些其它的东西都落在硬盘的角落里,搞了这么多年 PHP 也就剩下这点东西了

纵观前面的几篇文章,质量真低啊,一直琢磨着把 ideawind 做出来,然后把个人主页做成一个纯粹的博客,到底什么时候会实现?大约在冬季。。

Pader 2014-9-4 0

发现一个PHP框架 symfony

今天在浏览合肥一门户网站时发现此站不是生成静态的,一开始以为是用 DedeCMS 之类做的,不过看地址像是某种程序框架,我试在后面随便输了个相对地址,结果出现的no found页面告诉我了这是用一款叫作 symfony 的框架开发的站。Google了下这个框架,貌似不错,值的研究。

PS: 下载下来研究了下,官方只有英文文档,看起来有些困难,感觉有点像国内的 FleaPHP 和 QeePHP,有些数据库间的通信和表格输出不知道怎么的就默名其妙生成了。。看来,以后我还必须得学会这些莫名其妙的东西。我的 VgotFaster 也不能只过于精简,一款飞沫斯的框架还是得莫名其妙的。

Pader 2009-9-28 1

VgotFaster 路由转换功能

今天给我的 VgotFaster 框架增加了路由转换功能,特记录一下,写下方法中的核心部分。

下面是路由中的配置:

  1. $routes = array(  
  2.     'readid/(\d+).html' => 'test/route/readid/$1' 
  3. ); 

路由类中转换方法核心部分:

  1. preg_match_all("|^$exp$|",$uri,$export,PREG_SET_ORDER);  
  2.  
  3. if(isset($export[0]) and count($export[0]) > 1) {  
  4.     unset($export[0][0]);  //卸载解释出的原值,preg_match_all [0][0] 为匹配的原值,之后为匹配出的值  
  5.       
  6.     $replace = $replaceTo = array();  
  7.     foreach($export[0] as $key => $replaceVal) {  
  8.         $replace[] = '$'.$key;  //$1  
  9.         $replaceTo[] = $replaceVal;  
  10.     }  
  11.     return $route = str_replace($replace,$replaceTo,$route);  
  12.       

最主要是依靠 preg_match_all 进行正则匹配并且解出其中的值,然后使用 str_replace 对 $1、$2.. 进行替换。

就是这么简单。

Pader 2009-9-26 0

VgotFaster 开发,解决所有类库,模型相互间的继承问题

前些日子说到开发的 VgotFaster PHP 框架已经因继承问题拖下N天了,最近仔细研究了 CodeIgniter 的源码,我在想是不是我使用 CI 框架导致思想受 CI 的制约了,为啥非得参考 CI 呢。通过研究 CI 得出了其对于类库和属性在控制器和模型之间的继承方法,然后再经过一翻改进 VgotFaster 在类库,模型,视图,模板引擎和配置里的自动载入完全解决了,现在可以说框架已经成形了,剩下就是各种功能类库和辅助函数的增加以及相关提示的增强啦,这次是真的了。
演示:http://www.vgot.net/new_vgot/
这是用 VgotFaster 制作的站,虽然只用到了模板引擎啦。这个界面也将会是我的新首页,不过有时候我总是会很懒r。。。

Pader 2009-9-10 0

解决php类继承关键性问题

这段时间一直被 PHP 的类的属性的方法的继承而困扰,VgotFaster 的开发也因这个问题被卡住了,这两天放下了 VgotFaster 框架的开发在做自己的个人主页的页面,估计 VgotFaster  不会马上出来了,我就随便写一个主页的简单的 PHP 对象来作为主页主站的框架了,结果写着写着也就不那么简单了,完全就是一个框架了,晕呼,我怎么搞的到处都是面向对象和框架啊,不过在视图对控制器的属性和方法访问时也就是类的属性和方法继承时还是碰到这个问题,今晚不知为何心平气也和,终于把这个问题给搞定,让视图可以直接访问控制器的属性和方法了,这次主页的框架写的没有 VgotFaster 那么强的自定义和功能,但是却解决了关键性问题,所以 VgotFaster 得重构了,汗呀,第一个版本还没出来就重来了。继续等待吧。

关于这个框架已经抛弃了对 PHP4 的支持,下面发上主页小框架解决关键性问题的 PHP5 的 __get 和 __call 魔术方法吧。

PHP代码片段

/*  
    关键性控制器属性获取  
    @ create 0:29 2009-7-29  
*/  
public function __get($kName)   
{   
    if(isset($this->V->controller->$kName)) {   
        return $this->V->controller->$kName;   
    } else {   
        return $this->V->$kName;   
    }   
}   
  
/*  
    关键性控制器方法调用  
    @ create 1:05 2009-7-29  
    @ update 1:22 2009-7-29  
*/  
public function __call($kName,$kValues)   
{   
    if($kValues) {   
        $vCounts = count($kValues);   
        $argEval = '';   
        for($i=0;$i<$vCounts;$i++) {   
            $argEval .= ',$kValues['.$i.']';   
        }   
        $argEval = substr($argEval,1);   
        eval('$a = $this->V->controller->$kName('.$argEval.');');   
        return $a;   
    } else {   
        return $this->V->controller->$kName();   
    }   
}


Pader 2009-7-29 2