我正在使用复杂的对象层次结构处理现有的php项目。Netbeans在这方面帮了大忙,因为它的自动补全功能(它并不完美,但在许多情况下已经足够准确了)。几乎不可能记住所有这些属性、关系等。
但是,netbeans是用java编写的,它很慢,臃肿等等。最近,我一直在玩vim,并在考虑抛弃netbeans。我目前正在使用这个脚本:http://www.vim.org/scripts/script.php?script_id=3171
我遗漏的一件事是多级对象的自动补全,例如:
a.php
<?php
class A {
/**
* @var B
**/
public $b;
}b.php
<?php
class B {
/**
* @var C
**/
public $c;
}c.php
<?php
class C {
/**
* @var D
**/
public $d;
}test.php
$a = new A();
$a-> //omni complete here works fine, it lists "b"
$a->b-> //displays 'b' again, instead of 'c'所以,它只适用于第一级..有没有可能以某种方式在vim中获得此功能?
如果没有,你是如何在这样的项目中找到自己的方向的?
发布于 2012-04-09 21:51:43
您的公共属性只是一个空变量:
public $b;因为您没有给它任何属性/方法或者使它成为B()的实例,所以您不应该期望Vim为$b->提供任何有用的完成。
通过以下方式:
a.php,
<?php
class A {
public $b = new B();
}b.php,
<?php
class B {
public $c = new C();
}c.php
<?php
class C {
public $c;
}和test.php
<?php
$a = new A();
$a-> // proposes b
$a->b-> //proposes b
$b = $a-> // proposes b
$b = $a->b;
$c = $b-> // proposes c
$c = $b->c;
$d = $c-> // proposes d所以…PHP补全插件可能有点局限(这并不奇怪,Vim是一个文本编辑器,而不是IDE),但是如果您坚持使用更传统的(和可读的)编码风格,它看起来是可以工作的。
同样,Vim只是一个文本编辑器。一个非常强大的编辑器,但它仍然只是一个文本编辑器。有些情况下,臃肿的IDE是工作的合适工具,不管它有多慢,不管你喜欢。
https://stackoverflow.com/questions/10071034
复制相似问题