gpt4 book ai didi

php - NetBeans 自动完成和 PHP;强制 __get() 类型

转载 作者:可可西里 更新时间:2023-11-01 12:35:50 27 4
gpt4 key购买 nike

快速了解 NetBeans 7.0 和 PHP 的自动完成功能;

我正在尝试弄清楚(如果可能)如何强制在类中实现的 __get() 返回(引用 ) 某种类型,该类型始终是实现 __get() 的同一类。

现在,我有(View 中):

/**
* @param string $key
* @return View
*/
public function __get($key){
return $this->getView($key);
}

这样访问:

$view->foo-> // should populate with methods from View
^

现在我一直在阅读关于 @property 的内容,但我不确定这是否适合我正在做的事情。另一件事是(如果可能的话,这将是一个不错的功能)通常 View 是嵌套的,因此在我的实现中看到这个并不罕见:

$view->foo->bar->baz-> // should populate with methods from View
^

关于如何强制执行此操作的任何想法,还是我卡住了?


更新:

所以 @property 似乎朝着正确的方向前进,但是似乎不支持通配属性名称。因此,为了详细说明我的问题,有没有人知道任何 NetBeans 插件或未记录(或很难找到)支持通配符 @property 名称的 PHPDoc 语法?

我正在考虑以下方向之一:

/**
* @property View *
* @property View ...
* @property View $var,...
*/

当然,这些变体都不起作用,但最后一个似乎最合乎逻辑,因为它们似乎支持可变函数参数列表的类似语法。

最佳答案

Netbeans 可以使用 @property 为您施展魔法,如下例所示。

正如您已经知道的,您必须在文档 block 中定义每个属性。

下面列出了您的 $x->y->z->view 示例的另一种可能的解决方案。

将其复制并粘贴到 Netbeans 中,它将显示 Bar 类的方法:

<?php

/**
* @property Bar $prop
*/
class foo {

}

class bar {
public function xyz() {

}

public function abc() {

}
}

$x = new foo();
$x->prop->

当您将光标移到此处并按 ctrl+space 时,您将看到:

netbeans intellisense with @property


如果你想自动完成更长的结果链,你也可以使用

/** @var Viewclass $foo */
$foo = $x->y->z->view;
$foo->autoCompleteWorksNow();

代码中的任何位置。

关于php - NetBeans 自动完成和 PHP;强制 __get() 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com