Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态魔术属性(或方法)的PHPdoc_Php_Phpstorm_Phpdoc_Phpdocumentor2 - Fatal编程技术网

动态魔术属性(或方法)的PHPdoc

动态魔术属性(或方法)的PHPdoc,php,phpstorm,phpdoc,phpdocumentor2,Php,Phpstorm,Phpdoc,Phpdocumentor2,我最近创建了一个类来创建HTML元素。我没有费心为每个现有的HTML元素和属性创建一个方法,而是决定使用神奇的方法——get和调用。因此,通过我的代码,我基本上可以做到: $signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled $signUpForm->insert->input->type('email')->name(

我最近创建了一个类来创建HTML元素。我没有费心为每个现有的HTML元素和属性创建一个方法,而是决定使用神奇的方法——get和调用。因此,通过我的代码,我基本上可以做到:

$signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled
$signUpForm->insert->input->type('email')->name('emailAddress')->maxlength(100)
等等

但既然我决定保持这种“魔力”和简单,我也可以这样做:

$signUpForm->insert->magic->trick('rabbit')->附件('hat')
,这将导致:

<magic trick='rabbit' accessory='hat'>
我不知道这是否只是PHPStorm事件,但我在任何地方都找不到类似的场景


另外,如果您想知道我为什么要这样做,那就是跟踪PHP代码中的某些HTML方面(例如表单中声明的ID或表单中的元素)。这可以让我在发送给最终用户之前在HTML中保持可见性。

这个问题仍在未回答列表中,因此我将回答它

要在使用自动魔法方法(如
\u get()
\u call()
)时在PhpStormSublime中获得良好的代码智能,需要为添加的每个隐式属性或方法包含一行
@property
@method
。我知道这很糟糕,但这是使用这种方法的成本

<>请考虑使用SyGET()/<代码>如果你真的得到足够的BUG。它可能适合您的应用程序,在这种情况下就可以了。我们通常在试图对对象数据进行进一步处理或抽象时使用它(例如驼峰大小写名称转换)。您保存了一些代码(无论如何,PhpStorm都会为您编写),但是您需要在类中编写PhpDoc DocBlock


考虑包括所有的行,如果没有其他原因,只是为了记录您的类。使用隐式属性,不仅让IDE很难知道哪些方法和属性是有效成员,而且让下一个维护人员很难知道。那些docblock行可能看起来多余,但它们是很棒的文档。

1)PHPDoc本身根本不支持方法/属性名的通配符。因此,您必须手动声明每个方法2)在PhpStorm中,您可以降低此类警告消息的优先级或禁用此类检查completely@LazyOne谢谢你的确认!谢谢你的迟来的回答-我现在有点明白了,忘记了这个问题:)对于我的特定用例,将所有内容添加到docblock中是相当困难的,所以我接受IDE集成不是完美的,因为代码简单。明白了。我发现有时候我有一些类,比如session或post变量抽象,在这些类中添加所有@properties是很荒谬的。然而,在其他时候,这是好的。如果有一个regex选项来定义有效的属性名,那当然很好。至少我们可以从o型检测中获益。绝对同意!同时,我会尽量忽略Php风暴中的红线,并希望一切顺利:)
/**
 * @property HtmlElementAttribute *    Insert a new HTML element attribute
 * @method   HtmlElementAttribute *    Insert a new HTML element attribute
 */