@
YuJianrong 不是说让你每个文件都写进 meta 文件,类似于定义 namespace
对于 PHP 来说,常规的用法 IDE 自己就会识别,比方说:
$model = new MyClass ();
$model->doThis ();
你在运用的时候,觉得 doThis ()名字起得不好,要改成 doThat (),你直接在运用的地方改,其他所有地方都会自动改变。 IDE 还会进行分析,如果它没把握重构所有的地方,还会触发预览模式让你判断。
特别的调用格式,你只要描述特征,它自己会进行匹配。
例:项目有很多和 table 对应的 model ,一开始他们都有一个方法是 setName (),属于反射方法,自动对应表里的 column 名字
因为项目比较大, model 不能全放一个地方,而且为了区分名字很长
用 new LONG_NAME_MODEL_A ()写起来很不方便,于是开始使用统一的反射调用方法:
MYAPP::getModel ('a');
MYAPP::getModel ('b');
如果只是几个 model ,你还可以写在 phpdoc 里,进哪个参数,出哪个 model ,如果有几百个 model , phpdoc 就没办法了
@
gaitana 你可以参考这个
这个时候 model b 的 field 名字改了,从 name 变成了 firstname , setName 和 getName 都要重构, PhpStorm 在这个情况下是不会自动识别::getModel ()调用了哪个 class 的。为了开发方便,让 IDE 识别我们特别的方式
就要把这个特例写进 meta 文件:
项目根目录放文件 .myapp.meta.php
结构大致如下:
<? php
namespace = PHPSTORM_META {
$STATIC_METHOD_TYPES = [
\MYAPP::getModel ('') => [
'a' instanceof \LONG_NAME_MODEL_A,
'b' instanceof \LONG_NAME_MODEL_B
....
这样等 IDE 做完 index ,重构的时候就可以准确定位到某一个 model 的方法了