使用chatgpt从PHP注释迁移到属性
#php #chatgpt #attributes #annotation

如果您将PHP项目从PHP 7.x迁移到8.x,则可能遇到了必须更改所有使用注释来使用属性的模型的情况。
这可能是一项艰巨而艰巨的任务,特别是当您的项目有许多使用注释(例如实体,域模型等)的类别时。

在这篇简短的帖子中,我想与您分享一个chatgpt提示,这为我节省了很多时间进行重复的任务。

让我们看看提示:

The following piece of php code use doctrine annotations to define fields metadata:
    ```


    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"list"})
     */
    private ?int $id = null;

    /**
     * @ORM\Column(type="string", length=100)
     * @Groups({"list"})
     */
    private string $username;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private string $password;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     * @Groups({"list"})
     */
    private ?string $name = null;

    /**
     * @ORM\Column(type="datetime")
     * @Gedmo\Timestampable(on="create")
     */
    private ?DateTimeInterface $createdAt = null;

    /**
     * @ORM\Column(type="json", nullable=true)
     * @Groups({"list"})
     */
    private array $roles = [];

    /**
     * @ORM\Column(type="boolean")
     * @Groups({"list"})
     */
    private bool $enabled;



    ```

Your task is to transform it to use attributes instead using the following rules: 
    - Avoid writing "use" statements
    - Avoid class name and curly braces

让我们逐步检查及时的及时:

The following piece of php code use doctrine annotations to define fields metadata:

我通过告诉chatgpt of the Bellow代码代表什么来开始提示。然后,我在三个引号之间包装代码,以便chatgpt可以区分代码启动和结束的位置。

Your task is to transform it to use attributes instead using the following rules: 
    - Avoid writing "use" statements
    - Avoid class name and curly braces

最后,我们告诉chatgpt它要做什么(将其转换为使用属性),然后我们用一些规则指示它:避免写入“使用”语句 避免使用班级名称和卷曲括号。该规则很有用,因为它们删除了我不需要复制的所有元素,并且当Chatgpt返回结果时,我直接从“ copy Copy Code ”按钮中复制内容。

下图显示了最后一个提示的结果:

ChatGPT prompt

如上图中所示,我只需要按复制代码按钮,然后用chatgpt返回的class属性替换我的带注释的类属性。

就是全部:),我希望它可以为其他人提供节省时间的重复任务。