gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:54:15 27 4
gpt4 key购买 nike

我最近创建了一个类来创建 HTML 元素。我没有为每个现有的 HTML 元素和属性创建一个方法,而是决定使用魔法方法 __get 和 __call。所以用我的代码我基本上可以做到这一点:

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

等等

但由于我决定保持这种“魔法”和简单,我也可以这样做:

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

<magic trick='rabbit' accessory='hat'>

这一切都很好,因为在我看来,它减少了很多样板代码,并且完全满足了我的需要。我不想要一个类来执行 HTML 标准,我想要一个类来促进 HTML,前提是您知道如何使用它(老实说,执行此操作的代码很小)

所以我的问题是,考虑到这个类可以接受任何未定义的属性或方法,有没有办法在 PHPDoc 中指定这种行为?我尝试了以下但没有任何运气:

/**
* @property HtmlElementAttribute * Insert a new HTML element attribute
* @method HtmlElementAttribute * Insert a new HTML element attribute
*/

我不知道这是否只是 PHPStorm 的问题,但我在任何地方都找不到任何类似的场景......

此外,如果您想知道我为什么要做这样的事情,那是为了跟踪我的 PHP 代码中的某些 HTML 方面(例如,在表单中声明的​​ ID,或表单中的元素)。这可以让我在将 HTML 发送给最终用户之前了解它。

最佳答案

这个问题还在未回答列表中,所以我要回答它。

PhpStormSublime 中使用像 __get()__call(),您需要为您添加的每个隐式属性或方法包含一个 @property@method 行。我知道这很糟糕,但这是使用这种方法的成本。

请考虑在使用 __get() 时是否真的物有所值。它可能适合您的应用程序,在这种情况下它很好。我们通常在尝试对对象数据进行进一步处理或抽象时使用它(例如驼峰命名转换)。您保存了一些代码(无论如何 PhpStorm 都会为您编写)但是您需要在类中编写 PhpDoc DocBlock 行。

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

关于动态魔术属性(或方法)的 PHPdoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336499/

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