• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php 魔术方法,未声明属性,数组的注释 - 帮助ide跳转,提高可读性 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本人使用vscode编辑器。其他编辑器未测试。

经过1:

  用laravel开发了一段时间,最麻烦的一点就是许多时候编辑器无法智能提示和辅助跳转。

  有一款ide-helper的插件,感觉不是很好用,经常会跳转到纯声明的文件中去,有时还会跳出两个选项。就想着自己写注释实现。

成果1:

  1.魔术方法(以laravel orm中query,scope等方法跳转举例)- 其中query返回,静态关键字写在类型前面

/**
 * @method static self query()
 * @method self find()
 * 
 * @method self active()
 */
class Order extends Model
{
    //此处写return,无法被编辑器正确识别
    public function scopeActive($query)
    {}

}

  2.未声明的属性(以laravel orm中字段举例) - 这个关键词找了好久

/**
 * @property int $id
 */
class Order extends Model
{}

  3.显式声明的注释(辅助跳转和智能提示)

  对属性: @var

  对方法: @return

var和property的区别,可参考:

  https://stackoverflow.com/questions/52982268/what-is-the-difference-between-method-property-and-variable-in-php

经过2:

    易得: @return的数据结构,如果是索引数组的形式,可以在数据类型后面加上[]来表示。

    这时我就在想,

        1.如何相对标椎的注释关联数组。

        2.对laravel orm查询出的结果集: collection,如何进行注释。

        3.以父类传输时,如何帮助编辑器确认子类(这是添头)

    百度没查到,满页相同内容的php注释基础知识=.=(查询时发现netbean似乎有独特的写法,未深入了解)

成果2:

    1.对数组的注释(phpdoc)

    /**
     * @param array<int|string,Order>
     * @param array<int|string,mixed>
     * @param array<int,array<int,string>>
     * @param array<int,string[]>
     * @param array{output:string,debug:string}
     * @param array<int,array{output:string,debug:string}>
     * 
     * @param list<array{output:string,debug:string}>
     * 
     */
    public function f()
    {}

编辑器效果: (注意不要有空格,否则颜色不会正确渲染)

ps: 当数据结构过于复杂时,可不带*换行,此时颜色渲染会消失或报错,但使用tab正确处理层级结构,看着也挺清晰的,悬浮时编辑器也会对参数进行字符串的读取提示(个人观点)

具体在以下链接,有对应说明和例子,此处不再搬运:

https://dev.to/suckup_de/modern-phpdoc-annotations-11d4

  2.对collection注释

      这个属于集合类,没找到很好的办法,可在代码段中使用@var显示定义

    3.对子类定义

        1) 同上,使用@var显示定义

        2) 当使用instanceof后,编辑器会自动认为其为对应子类

 

数组变量结构清晰,处处可自动提示,处处可跳转,太爽啦。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP高级教程-JSON发布时间:2022-07-10
下一篇:
json 格式与PHP json 格式 - zhexiao发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap