php|php 魔术方法,未声明属性,数组的注释 - 帮助ide跳转,提高可读性
本人使用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
* @param array
* @param array>
* @param array
* @param array{output:string,debug:string}
* @param array
*
* @param list
*
*/
public function f()
{}
编辑器效果: (注意不要有空格,否则颜色不会正确渲染)
文章图片
ps: 当数据结构过于复杂时,可不带*换行,此时颜色渲染会消失或报错,但使用tab正确处理层级结构,看着也挺清晰的,悬浮时编辑器也会对参数进行字符串的读取提示(个人观点)
文章图片
具体在以下链接,有对应说明和例子,此处不再搬运:
https://dev.to/suckup_de/modern-phpdoc-annotations-11d4
2.对collection注释
这个属于集合类,没找到很好的办法,可在代码段中使用@var显示定义
文章图片
文章图片
3.对子类定义
1) 同上,使用@var显示定义
【php|php 魔术方法,未声明属性,数组的注释 - 帮助ide跳转,提高可读性】2) 当使用instanceof后,编辑器会自动认为其为对应子类
文章图片
数组变量结构清晰,处处可自动提示,处处可跳转,太爽啦。
推荐阅读
- python|Python dataframe 多条件筛选/过滤数据的方法及函数isin,query,contains,loc的使用介绍
- 详解Java中的抽象类和抽象方法
- C#实现的4种常用数据校验方法小结(CRC校验|C#实现的4种常用数据校验方法小结(CRC校验,LRC校验,BCC校验,累加和校验)
- C#中关于序列化与反序列化的三种方法
- java9新特性Collection集合类的增强与优化方法示例
- 短信API接口demo示例-PHP/Message/XSend
- macOS|macOS Monterey 12.2 搭建 GO+PHP 开发环境
- sql|sql server数据库如何存储数组,int[]float[]double[]数组存储到数据库方法
- PendingIntent重定向(一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下))
- javascript学数组中的foreach方法和some方法