我正在处理具有复杂对象层次结构的现有 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;
}
测试.php
$a = new A();
$a-> //omni complete here works fine, it lists "b"
$a->b-> //displays 'b' again, instead of 'c'
所以,它只适用于第一级..是否有可能以某种方式在 vim 中获得此功能?
如果没有,您如何在此类项目中找到自己的出路?
最佳答案
你的公共(public)属性只不过是空变量:
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。
关于php - VIM phpomnicomplete - 多级对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071034/