动态魔术属性(或方法)的PHPdoc
我最近创建了一个类来创建HTML元素。我没有费心为每个现有的HTML元素和属性创建一个方法,而是决定使用神奇的方法——get和调用。因此,通过我的代码,我基本上可以做到:动态魔术属性(或方法)的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(
$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()
)时在PhpStorm或Sublime中获得良好的代码智能,需要为添加的每个隐式属性或方法包含一行@property
或@method
。我知道这很糟糕,但这是使用这种方法的成本
<>请考虑使用考虑包括所有的行,如果没有其他原因,只是为了记录您的类。使用隐式属性,不仅让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
*/