VgotFaster 支持在模型中加载模型并立即调用

模型的方法中支持实时加载其它模型并且立即调用,又一强大特性。

VgotFaster 和 CI 因为单例模式围绕着一个控制器的实例进行的,导致模型中要使用 $this->load 等类库实例需要用额外的方法去弥补,Model 里的 _assignLibraries() 方法便是实现将所有已加载的类库再赋给自己的作用。

而这些特性导致在模型的具体方法中调用 $this->load->model('someModel'); 的时候,不能立即通过 $this->someModel->bar() 去调用刚加载的模型的方法,因为 _assignLibraries() 只能将所有的类库加载到正在加载的模型中,而无法负责将自己注入进加载自己的模型中,只能通过先在另一个方法里加载,比如构造函数,然后才能通过 $this 调用,或者使用 getInstance() 获得控制器实例后从控制器实例中加载。

现在 VgotFaster 使用注入广播的形式弥补了这个缺陷,在模型的方法中,你可以直接加载另一个模型并调用其中的方法。

阅读全部内容 >>

关于 Nginx 和 PATH_INFO 以及 PHP 的 cgi.fix_pathinfo 解析问题

wait me to write

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 做出来,然后把个人主页做成一个纯粹的博客,到底什么时候会实现?大约在冬季。。

Ubuntu 内核引导错误和误删 /etc/grub.d/ 的解决办法

前段时间从 Ubuntu 13.04 升级到 13.10 后,发现 /boot 下多了个 3.11 的内核,但当前内核仍然使用的 3.5 的内核,于是想修改内核到使用 3.11 内核,但由于没注意到当前的 grub 已经是版本 2 了,使用 update-grub 却只更新了 menu.lst,而且我还过河拆桥的把 3.5 内核的相关文件都删了,重启后杯具了,无法引导内核,启动不了了。

然后各种搜索,发现当前系统居然是使用 grub.cfg 这个配置文件,menu.lst 实际上是老版本 grub1 的残留,而且 update-grub 也是老版本的 grub 工具。再经搜索在一篇 IBM 的文章中发现可以在 grub 界面按 E 进入引导配置文件临时修改,然后进入了系统。

进入系统后我一通折腾,把所有的 grub (1 和 2 版) 都卸载了,然后阴差阳错的胡闹把 /etc/grub.d/ 也删除了,重新安装后,发现怎么也无法生成正确的 grub.cfg 配置,生成的 grub.cfg 总是空的,原因就是因为没有了 /etc/grub.d/,寻思未果,各种重装也是无法解决,最后找到的办法是从 grub-common.deb 包中提取出来 grub.d 目录,然后复制到 /etc 中,再执行 update-grub 后 grub.cfg 终于正常了。

ChinaListStable

因为近期 Adblock 里的 ChinaList 规则无法再对优酷广告进行屏蔽,造成优酷基本无法正常观看,所以推出这个 ChinaListStable,基于 ChinaList(https://code.google.com/p/adblock-chinalist/),仅仅是移除了里面一些不稳定的导致网站功能无法正常使用的规则,目前只是移除了优酷的广告规则。

ChinaListStable+EasyList