今天正式开始使用Zend Studio for Eclipse里面使用PHP的coding,一上手就遇上了问题。
考虑如下的代码:
1: class TService {
2: public function DoSomething() {
3: echo "I've nothing to do ...";
4: }
5: }
6:
7: class TMyClass {
8: private $FService;
9: function __construct() {
10: $this->FService = new TService();
11: $this->DoSomething(); //这里键入[$this->]后,代码助手马上就正确的显示出来了。
12: }
13: function __destruct() {
14: $this->FService
15: //当你再想调用DoSomething(),而又想懒惰下少打几个字的时候,代码助手不睬你了~
16: }
17: }
可想而知,如果开发的时候都是像上面这样的情况肯定会累死人的…
起初的时候,我就想起了PHP这个不支持声明类型的坏特性,起码对于从Delphi转过来的我来说,这个让我有点讨厌PHP(我是逼迫的)
想想也是的,看TMylass的构造函数,这里明显有了new,等于告诉了ide在构造函数这个范围里面的FService是TService类型的,所以才会有代码助手出现,而在拆构函数中情况就不一样,因为ide不能辨认FService是什么类型的。
后来开始google,发现这个:http://codeutopia.net/blog/2007/12/30/how-to-get-code-assist-for-your-classes-in-zend-studio-andor-aptana/,才受到了启发,PHP不支持类型声明,那就借助一下PHPDoc,让它告诉ide到底变量是什么类型的。
后来我自己改了代码:
1: class TService { /*略*/ }
2:
3: class TMyClass {
4: /*
5: * @var TService
6: */
7: private $FService;
8: function __construct() { /*略*/ }
9: function __destruct() {
10: $this->FService
11: //可是代码提示还是不出来!?
12: }
13: }
奇怪了,明明有了@var了,怎么还是没有效果?仔细看看,这个@var没有语法着色。
后来发现这个:
于是,FService就有了PHPDoc,是这样的:
现在@var有了颜色,原来是注释第一行有两个星号[/**],不是前面的一个星号[/*],把unkown_type改成TService,好了,完美~