我正在处理具有复杂对象层次结构的现有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中获得此功能?
如果没有,你如何找到这样的项目?
答案 0 :(得分:2)
您的公共属性只是空变量:
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 是适合工作的正确工具,无论多么慢,无论你喜欢Vim。