Posts Tagged ‘Eclipse’

PHP连贯接口

什么是连贯接口?经常用jQuery的朋友一定对下面的代码非常熟悉:

$('div').find('element').hide();

像上面这样,在一个方法后直接调用另一个同级方法,我们习惯上称其连贯接口。

连贯接口有什么好处呢?拿我们常用的工厂模式来举例:

$sql= new Joy_Db_SqlBuilder();
$sql->select();
$sql->table('test');
$sql->where('id' , '=' , '1');

换成连贯接口来实现的代码会是怎样呢?

$sql= new Joy_Db_SqlBuilder();
$sql->select()
    ->table('test')
    ->where('id' , '=' , '1');

可以看到在上面的代码中,相对以往的工厂模式的写法,使用连贯接口能稍微节省一些代码量,并且,代码逻辑性也更强。

如何实现连贯接口呢?这里我引用JoyPHP中的一段代码

class Joy_Db_SqlBuilder {
    /**
     * select方法
     * 
     * @return Joy_Db_SqlBuilder
     */
    public function select() {
        $this->_args    = array('method'=>'select');
        return $this;
    }
    /**
     * 定义所用的表名
     *
     * @param string $name
     * @param string $alias
     * @return Joy_Db_SqlBuilder|string
     */
    public function table() {                
        // @todo something
 
        // 返回this,实现连贯接口
        return $this;
    }
}

从代码中可以看到,每个方法都返回了$this,而$this表示的正式Joy_Db_SqlBuilder的实例,因此才可以继续调用其方法。

连贯接口很简单,写起来也很美,但是却遇到一个棘手的问题,类似ZendStudio,Eclipse之类的IDE似乎并不支持连贯接口的自动提示?其实结局的方法也很简单,只要像上面的代码注释那样,遵循PHPDoc的代码注释规范,在@return后注明返回的对象类型,这些IDE也同样能实现自动提示。

Eclipse加速技巧一则

网上摘来,不需要安装任何软件,简单易学,而且效果显著:

编辑eclipse.ini文件(在Eclipse安装目录下)

修改如下:

-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
-vmargs
-Xverify:none
-XX:PermSize=128M
-Xms256m
-Xmx384m

主要是以修改Eclipse内存占用来实现的加速,我4G内存,除去1G RamDisk,将最后一行改为768M,效果非常明显,原来至少20多秒的启动时间,瞬间缩短到数秒。

转战Eclipse

掰掰手指,从第一天接触PHP开始,少说有6,7年,期间开发工具换过不少,从最初的notepad、Dreamweaver到更为强大的UltraEdit,Zend Studio等深深体会到了一款优秀的开发工具对开发效率和质量的影响。

在此之前一直是ZDE,DW双枪作战,ZDE用来写PHP,DW用来写Html,Css,Js。这么多年倒也一直过来了。周末看新闻,ZendStudio6又发布了新版,相比之下,ZDE似乎有段时间没有更新过了,看来Zend有放弃ZDE,大举进军Eclipse的架势。看了看ZS6的相关介绍,核心也就是Eclipse+PDT,Eclipse和PDT都是免费的,但Zend整合的ZS6却是收费的(BS之)。虽然很容易在网上找到XX,但仍想自己动手整合一下,顺便熟悉熟悉Eclipse平台的Plugin机制,如果以后转Java的话,倒也能更快上手。

话说我这个整合过程可是千辛万苦,走了一对弯路,期间几度放弃,却又几度重拾信心,最终花了两天时间终于搞定了这破玩意。

我选用的是PDT 1.0.3,在其网页上看到需要依赖XSD,GEF,DTP,WTP四个插件,就是在这四个插件上浪费了我一天的时间,由于页面上原有链接已经失效,只得自己再去找相关文件,结果不是却这就是少那,总是装不成功。最后才发现,PDT正真依赖的是WTP,其余的都是WTP依赖的插件,找到WTP2.0.2页面,下载页面中的依赖插件,终于才搞定这个Eclipse+PDT。