首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VIM php omnicomplete -多级对象层次结构

VIM php omnicomplete -多级对象层次结构
EN

Stack Overflow用户
提问于 2012-04-09 17:01:09
回答 1查看 464关注 0票数 2

我正在使用复杂的对象层次结构处理现有的php项目。Netbeans在这方面帮了大忙,因为它的自动补全功能(它并不完美,但在许多情况下已经足够准确了)。几乎不可能记住所有这些属性、关系等。

但是,netbeans是用java编写的,它很慢,臃肿等等。最近,我一直在玩vim,并在考虑抛弃netbeans。我目前正在使用这个脚本:http://www.vim.org/scripts/script.php?script_id=3171

我遗漏的一件事是多级对象的自动补全,例如:

a.php

代码语言:javascript
复制
<?php
class A {

  /**
  * @var B
  **/
  public $b;

}

b.php

代码语言:javascript
复制
<?php
class B {

  /**
  * @var C
  **/
  public $c;

}

c.php

代码语言:javascript
复制
<?php
class C {

  /**
  * @var D
  **/
  public $d;

}

test.php

代码语言:javascript
复制
$a = new A();
$a-> //omni complete here works fine, it lists "b"
$a->b-> //displays 'b' again, instead of 'c'

所以,它只适用于第一级..有没有可能以某种方式在vim中获得此功能?

如果没有,你是如何在这样的项目中找到自己的方向的?

EN

回答 1

Stack Overflow用户

发布于 2012-04-09 21:51:43

您的公共属性只是一个空变量:

代码语言:javascript
复制
public $b;

因为您没有给它任何属性/方法或者使它成为B()的实例,所以您不应该期望Vim为$b->提供任何有用的完成。

通过以下方式:

a.php,

代码语言:javascript
复制
<?php
class A {
  public $b = new B();   
}

b.php,

代码语言:javascript
复制
<?php
class B {
  public $c = new C();
}

c.php

代码语言:javascript
复制
<?php
class C {
  public $c;
}

test.php

代码语言:javascript
复制
<?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是工作的合适工具,不管它有多慢,不管你喜欢

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10071034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档