
git pushã®ãã³ã«å€æŽããã§ãã¯ããPHPã§500äžè¡ã®ã³ãŒãããŒã¹ã§5ã10ç§ã§ãããè¡ãã®ã«ååé«éã§ããããšãå€æãããªã³ã¿ãŒãã©ã®ããã«äœæãããã説æããŸãã ãããNoVerifyãšåŒã³ãŸããã
NoVerifyã¯ãå®çŸ©ãžã®ç§»è¡ã䜿çšã®æ€çŽ¢ãªã©ã®åºæ¬çãªããšããµããŒããã Language Serverã¢ãŒãã§åäœã§ããŸãã ãŸããããŒã«ã¯æœåšçãªãšã©ãŒã®æ€çŽ¢ã«çŠç¹ãåãããŠããŸãããã¹ã¿ã€ã«ããã§ãã¯ããããšãã§ããŸãã ä»æ¥ããã®ãœãŒã¹ã³ãŒãã¯GitHubã®ãªãŒãã³ãœãŒã¹ã«ç»å ŽããŸããã èšäºã®æåŸã«ãããªã³ã¯ãæ¢ããŠãã ããã
ãªã³ã¿ãŒãå¿ èŠãªçç±
2018幎åã°ã«ãPHPã³ãŒãã®ãªã³ã¿ãŒãå®è£ ããæãæ¥ããšå€æããŸããã 2ã€ã®ç®æšããããŸããããŠãŒã¶ãŒã«è¡šç€ºããããšã©ãŒã®æ°ãæžããããšãšãã³ãŒãã¹ã¿ã€ã«ãžã®æºæ ãããå³å¯ã«ç£èŠããããšã§ãã äž»ãªéç¹ã¯ãå žåçãªãšã©ãŒã®é²æ¢ã«ãããŸãããã³ãŒãå ã®å®£èšãããŠããªãå€æ°ãæªäœ¿çšã®å€æ°ãå°éäžèœãªã³ãŒããªã©ã®ååšã§ãã ãŸããéçã¢ãã©ã€ã¶ãŒãã³ãŒãããŒã¹ïŒå·çæç¹ã§500äžãã600äžè¡ã®PHPã³ãŒãïŒã§å¯èœãªéãè¿ éã«åäœããããšãæãã§ããŸããã
ãããããåç¥ã®ããã«ãã»ãšãã©ã®ãµã€ãã®ãœãŒã¹ã³ãŒãã¯PHPã§èšè¿°ããã KPHPã䜿çšããŠã³ã³ãã€ã«ãããŠãããã ããããã®ãã§ãã¯ãã³ã³ãã€ã©ã«è¿œå ããããšã¯è«ççã§ãã ããããå®éã«ã¯ããã¹ãŠã®ã³ãŒããKPHPãä»ããŠå®è¡ããæå³ããªãå ŽåããããŸããããšãã°ãã³ã³ãã€ã©ã¯ãµãŒãããŒãã£ã©ã€ãã©ãªãšã®äºææ§ã匱ãããããµã€ãã®äžéšã§ã¯éåžžã®PHPãåŒãç¶ã䜿çšãããŸãã ããããéèŠã§ããããªã³ã¿ãŒããã§ãã¯ããå¿ èŠããããããæ®å¿µãªãããKPHPã«çµ±åããæ¹æ³ã¯ãããŸããã
NoVerifyãéžã¶çç±
PHPã³ãŒãã®éãèãããšïŒ500äžãã600äžè¡ã§ããããšãæãåºããŸãïŒãããã«ãä¿®æ£ãããŠããªã³ã¿ãŒã§ãã§ãã¯ã«åæ Œããããšã¯ã§ããŸããã ããã§ããå€åããã³ãŒããåŸã ã«ã¯ãªãŒã³ã«ãªããã³ãŒãã£ã³ã°æšæºã«å³å¯ã«åŸãããšã©ãŒãå°ãªããªãããã«ããããšæããŸãã ãã®ããããªã³ã¿ãŒã¯ãéçºè ãèµ·åããå€æŽããã§ãã¯ã§ããæ®ããèªãå¿ èŠã¯ãªããšå€æããŸããã
ãããè¡ãã«ã¯ããªã³ã¿ãŒã¯ãããžã§ã¯ãå šäœã®ã€ã³ããã¯ã¹ãäœæããå€æŽååŸã®ãã¡ã€ã«ãå®å šã«åæããçæãããèŠåã®å·®ãèšç®ããå¿ èŠããããŸãã æ°ããèŠåã¯éçºè ã«è¡šç€ºãããŸããããã·ã¥ãè¡ãåã«ä¿®æ£ââããå¿ èŠããããŸãã
ãã ãããã®åäœãæãŸãããªãå Žåããããéçºè ã¯ããŒã«ã«ããã¯ãªãã§ããã·ã¥ã§ããŸã
git push --no-verify
ãŸãã ãªãã·ã§ã³
--no-verify
ããã³linterã«ååãä»ããŸãã:)
代æ¿æ¡ã¯äœã§ããã
VKã®ã³ãŒãããŒã¹ã¯ã»ãšãã©OOPã䜿çšãããåºæ¬çã«éçã¡ãœãããæã€é¢æ°ãšã¯ã©ã¹ã§æ§æãããŸãã PHPã®ã¯ã©ã¹ãèªåããŒãããµããŒãããå Žåãé¢æ°ã¯ãµããŒãããŸããã ãã®ãããå€§å¹ ãªå€æŽãå ããã«éçã¢ãã©ã€ã¶ãŒã䜿çšããããšã¯ã§ããŸãããããã¯ããªãŒãããŒãããã¹ãŠã®æ¬ èœã³ãŒããããŒããããšããäºå®ã«åºã¥ããŠäœæ¥ãè¡ããŸãã ãã®ãããªãªã³ã¿ãŒã«ã¯ãäŸãã°ã Vimeoã®è©© salãå«ãŸããŸãã
次ã®éçåæããŒã«ã調ã¹ãŸããã
- PHPStan-ã·ã³ã°ã«ã¹ã¬ããããªãŒãããŒããå¿ èŠãã³ãŒãããŒã¹åæã¯30åã§30ïŒ ã«éããŸããã
- ãã¡ã³ -20ããã»ã¹ã®ã¯ã€ãã¯ã¢ãŒãã§ãã20ååŸã«åæã5ïŒ åæ¢ããŸããã
- è©© sal-èªåèªã¿èŸŒã¿ãå¿ èŠã§ãåæã«ã¯10åããããŸããïŒããã«é«éã«ãªãããã§ãïŒã
- PHPCS-ã¹ã¿ã€ã«ããã§ãã¯ããŸãããããžãã¯ã¯ãã§ãã¯ããŸããã
- phpcf-ãã©ãŒãããã®ã¿ããã§ãã¯ããŸãã
èšäºã®ã¿ã€ãã«ããæšæž¬ã§ããããã«ããããã®ããŒã«ã¯ããããèŠä»¶ãæºãããŠããªããããç¬èªã®ããŒã«ãäœæããŸããã
ãããã¿ã€ãã¯ã©ã®ããã«äœæãããŸãããïŒ
ãŸããæ¬æ Œçãªãªã³ã¿ãŒãäœã£ãŠã¿ã䟡å€ããããã©ãããç解ããããã«ãå°ããªãããã¿ã€ããäœæããããšã«ããŸããã ãªã³ã¿ãŒã®éèŠãªèŠä»¶ã®1ã€ã¯ãã®é床ã§ãããããPHPã§ã¯ãªãGoãéžæããŸããã ãé«éããšã¯ãã§ããã ãæ©ããã§ããã°10ã20ç§ä»¥å ã«éçºè ã«ãã£ãŒãããã¯ãæäŸããããšã§ãã ããã§ãªããã°ããã³ãŒããä¿®æ£ãããªã³ã¿ãŒãå床å®è¡ããããµã€ã¯ã«ãéçºãèããé ããå§ãã人ã ã®æ°åãå°ç¡ãã«ããŸã:)
Goã¯ãããã¿ã€ãã«éžæãããŠãããããPHPããŒãµãŒãå¿ èŠã§ãã ãããã®ããã€ãããããŸããã php-parserãããžã§ã¯ãã¯ç§ãã¡ã«ãšã£ãŠæãæçããããã«èŠããŸããã ãã®ããŒãµãŒã¯å®å šã§ã¯ãªãããŸã å®æäžã§ãããç§ãã¡ã®ç®çã«ã¯éåžžã«é©ããŠããŸãã
ãããã¿ã€ãã®å ŽåãæãåçŽãªãäžèŠãããšãããæ€æ»ã®1ã€ã§ããæªå®çŸ©å€æ°ãžã®ã¢ã¯ã»ã¹ãå®è£ ããããšããããšã決å®ãããŸããã
ãã®ãããªæ€æ»ãå®è£ ããããã®åºæ¬çãªèãæ¹ã¯åçŽã«èŠããŸããåãã©ã³ãïŒããšãã°ãifïŒã«å¯ŸããŠãåå¥ã®ãã¹ããããã¹ã³ãŒããäœæãããã®åºå£ã§å€æ°ã®ã¿ã€ããçµã¿åãããŸãã äŸïŒ
<?php if (rand()) { $a = 42; // : { $a: int } } else { $b = "test"; $a = "another_test"; // : { $b: string, $a: string } } // : { $b: string?, $a: int|string } echo $a, $b; // , // $b
ã·ã³ãã«ã«èŠããŸãããïŒ éåžžã®æ¡ä»¶æã®å Žåããã¹ãŠãããŸãæ©èœããŸãã ãã ããããšãã°ããã¬ãŒã¯ãªãã§åãæ¿ããåŠçããå¿ èŠããããŸãã
<?php switch (rand()) { case 1: $a = 1; // { $a: int } case 2: $b = 2; // { $a: int, $b: int } default: $c = 3; // { $a: int, $b: int, $c: int } } // { $a: int?, $b: int?, $c: int }
$ cãå®éã«åžžã«å®çŸ©ãããããšã¯ãã³ãŒãããããã«ã¯ããããŸããã å ·äœçã«ã¯ããã®äŸã¯æ¶ç©ºã®ãã®ã§ããããªã³ã¿ãŒã«ãšã£ãŠïŒãããŠãã®å Žåã人ã«ãšã£ãŠïŒé£ããç¬éãã©ã®ãããªãã®ã§ãããããã瀺ããŠããŸãã
ããè€éãªäŸãèããŠã¿ãŸãããã
<?php exec("hostname", $out, $retval); echo $out, $retval; // { $out: ???, $retval: ??? }
execé¢æ°ã®ã·ã°ããã£ãç¥ããªããšã$ outãš$ retvalãå®çŸ©ããããã©ããã¯ããããŸããã çµã¿èŸŒã¿é¢æ°ã®çœ²åã¯ããªããžããªgithub.com/JetBrains/phpstorm-stubsããååŸã§ããŸãã ãã ããã«ã¹ã¿ã é¢æ°ãåŒã³åºããšãã«åãåé¡ãçºçãããã®çœ²åã¯ãããžã§ã¯ãå šäœã®ã€ã³ããã¯ã¹ãäœæããããšã«ãã£ãŠã®ã¿èŠã€ããããšãã§ããŸãã execé¢æ°ã¯ãåç §ã«ãã£ãŠ2çªç®ãš3çªç®ã®åŒæ°ãåããŸããã€ãŸããå€æ°$ outããã³$ retvalãå®çŸ©ã§ããŸãã ããã§ããããã®å€æ°ãžã®ã¢ã¯ã»ã¹ã¯å¿ ããããšã©ãŒã§ã¯ãªãããªã³ã¿ãŒã¯ãã®ãããªã³ãŒããèªãã¹ãã§ã¯ãããŸããã
åç §ã«ããæé»ã®åãæž¡ãã«é¢ããåæ§ã®åé¡ãã¡ãœããã§çºçããŸãããåæã«ãå€æ°ã¿ã€ããåºåããå¿ èŠæ§ãè¿œå ãããŸãã
<?php if (rand()) { $a = some_func(); } else { $a = other_func(); } $a->some_method($b); echo $b;
ãããã®ã¯ã©ã¹ã§some_methodãšããã¡ãœãããåŸã§èŠã€ããã«ã¯ãsome_funcïŒïŒããã³other_funcïŒïŒé¢æ°ãè¿ãåãç¥ãå¿ èŠããããŸãã ããããŠåããŠãå€æ°$ bãå®çŸ©ããããã©ãããå€æã§ããŸãã å€ãã®å ŽåãåçŽãªé¢æ°ãšã¡ãœããã«ã¯phpdocã¢ãããŒã·ã§ã³ããªããããç¶æ³ã¯è€éã§ãããã®ãããå®è£ ã«åºã¥ããŠé¢æ°ãšã¡ãœããã®ã¿ã€ããèšç®ã§ããå¿ èŠããããŸãã
ãããã¿ã€ããéçºãããšããæãåçŽãªæ€æ»ãæ£åžžã«æ©èœããããã«ããã¹ãŠã®æ©èœã®çŽååãå®è£ ããå¿ èŠããããŸããã
èšèªãµãŒããŒãšããŠåã
ãªã³ã¿ãŒã®ããžãã¯ããããã°ãããããããªã³ã¿ãŒãçºè¡ããèŠåãèŠãããããããã«ãPHPã®èšèªãµãŒããŒãšããŠåäœã¢ãŒããè¿œå ããããšã«ããŸããã Visual Studio Codeãšã®çµ±åã¢ãŒãã§ã¯ã次ã®ããã«ãªããŸãã

ãã®ã¢ãŒãã§ã¯ã仮説ããã¹ãããè€éãªã±ãŒã¹ããã¹ãããã®ã䟿å©ã§ãïŒãã®åŸããã¡ãããã¹ããæžãå¿ èŠããããŸãïŒã ããã©ãŒãã³ã¹ããã¹ãããããšãè¯ãã§ãïŒGoã®php-parserã倧ããªãã¡ã€ã«ã§ãã£ãŠãè¯ãé床ã瀺ããŸãã
èšèªãµãŒããŒã®ãµããŒãã¯ããªã³ã¿ãŒã«ãŒã«ããããã°ããããšãäž»ãªç®çã§ãããããçæ³ãšã¯ã»ã©é ããã®ã§ãã ããã§ãããã®ã¢ãŒãã«ã¯ããã€ãã®è¿œå æ©èœããããŸãã
- å€æ°åãå®æ°ãé¢æ°ãããããã£ãããã³ã¡ãœããã®ãã³ãã
- 掟çåã®å€æ°ã匷調衚瀺ããŸãã
- å®çŸ©ã«ç§»åããŸãã
- çšéãæ€çŽ¢ããŸãã
ãé 延ãåæšè«
èšèªãµãŒããŒã¢ãŒãã§ã¯ã次ã®äœæ¥ãå¿ èŠã§ãã1ã€ã®ãã¡ã€ã«ã®ã³ãŒããå€æŽããŠãããå¥ã®ãã¡ã€ã«ã«åãæ¿ãããšãé¢æ°ãŸãã¯ã¡ãœããã§è¿ãããåã«é¢ããæŽæ°æžã¿ã®æ å ±ãæäœããå¿ èŠããããŸãã ãã¡ã€ã«ã次ã®é åºã§ç·šéãããŠãããšæ³åããŠãã ããã
<?php // A.php, 1 class A { /** @var int */ public $prop; } // B.php, class B { public static function something() { $obj = new A; return $obj->prop; } } // C.php, $c = B::something(); // $c int // A.php, 2 class A { /** @var string <--- string */ public $prop; } // C.php, $c = B::something(); // $c string, B.php, C.php
éçºè ã«åžžã«PHPDocãæžãããšã匷å¶ããªãã®ã§ïŒç¹ã«ãã®ãããªåçŽãªå ŽåïŒãé¢æ°B :: somethingïŒïŒãè¿ãåã«é¢ããæ å ±ãä¿åããæ¹æ³ãå¿ èŠã§ãã ãã®ãããA.phpãã¡ã€ã«ãå€æŽããããšãC.phpãã¡ã€ã«ã®åæ å ±ã¯ããã«ææ°ã®ç¶æ ã«ãªããŸãã
èãããã解決çã®1ã€ã¯ããé 延åããä¿åããããšã§ãã ããšãã°ãB :: somethingïŒïŒã¡ãœããã®æ»ãå€ã®åã¯ãå®éã«ã¯åŒã®åïŒæ°ããAïŒ-> propã§ãã ãã®ãã©ãŒã ã§ã¯ããªã³ã¿ãŒã¯ã¿ã€ãã«é¢ããæ å ±ãä¿åããŸããããã«ãããåãã¡ã€ã«ã®ãã¹ãŠã®ã¡ã¿æ å ±ããã£ãã·ã¥ãããã®ãã¡ã€ã«ãå€æŽãããå Žåã«ã®ã¿æŽæ°ã§ããŸãã ããã¯ãã¿ã€ãã«é¢ãã誀ã£ãç¹å®ã®æ å ±ãã©ãã«ãæŒããªãããã«ãæ éã«è¡ãå¿ èŠããããŸãã ãŸããåæšè«ããžãã¯ãå€æŽããããšãã«ãã£ãã·ã¥ããŒãžã§ã³ãå€æŽããå¿ èŠããããŸãã ããã«ããããããããã®ãããªãã£ãã·ã¥ã¯ããã¹ãŠã®ãã¡ã€ã«ã®ç¹°ãè¿ã解æãšæ¯èŒããŠãã€ã³ããã¯ã¹äœæãã§ãŒãºïŒåŸã§èª¬æããŸãïŒã5ã10åé«éåããŸãã
äœæ¥ã®2ã€ã®ãã§ãŒãºïŒã€ã³ããã¯ã¹äœæãšåæ
èŠããŠãããšãããæãåçŽãªã³ãŒãåæã§ãã£ãŠããå°ãªããšããããžã§ã¯ãå ã®ãã¹ãŠã®é¢æ°ãšã¡ãœããã«é¢ããæ å ±ãå¿ èŠã§ãã ã€ãŸãããããžã§ã¯ããšã¯å¥ã«1ã€ã®ãã¡ã€ã«ã®ã¿ãåæããããšã¯ã§ããŸããã ãããŠãŸã -ããã¯1ã€ã®ãã¹ã§è¡ãããšã¯ã§ããŸãããããšãã°ãPHPã§ã¯ããã¡ã€ã«ã§ããã«å®£èšãããŠããé¢æ°ã«ã¢ã¯ã»ã¹ã§ããŸãã
ãããã®å¶éã«ããããªã³ã¿ãŒã®æäœã¯2ã€ã®ãã§ãŒãºã§æ§æãããŸãããã©ã€ããªã€ã³ããã¯ã¹äœæãšãå¿ èŠãªãã¡ã€ã«ã®ã¿ã®åŸç¶ã®åæã§ãã 次ã«ãããã2ã€ã®ãã§ãŒãºã«ã€ããŠè©³ãã説æããŸãã
ã€ã³ããã¯ã¹äœæãã§ãŒãº
ãã®ãã§ãŒãºã§ã¯ããã¹ãŠã®ãã¡ã€ã«ã解æãããã¡ãœãããé¢æ°ã®ã³ãŒããããã³ãããã¬ãã«ã®ã³ãŒãã®ããŒã«ã«åæãè¡ãããŸãïŒããšãã°ãã°ããŒãã«å€æ°ã®ã¿ã€ãã決å®ããããïŒã 宣èšãããã°ããŒãã«å€æ°ãå®æ°ãé¢æ°ãã¯ã©ã¹ãããã³ãããã®ã¡ãœããã«é¢ããæ å ±ãåéããããã£ãã·ã¥ã«æžã蟌ãŸããŸãã ãããžã§ã¯ãå ã®ãã¡ã€ã«ããšã«ããã£ãã·ã¥ã¯ãã£ã¹ã¯äžã®åå¥ã®ãã¡ã€ã«ã§ãã
ãããžã§ã¯ãã«é¢ãããã¹ãŠã®ã¡ã¿æ å ±ã®ã°ããŒãã«ãã£ã¯ã·ã§ããªã¯ãå°æ¥å€æŽãããããšã¯ãªããåã ã®ããŒã¹ããã³ã³ãã€ã«ãããŸãã
*èšèªãµãŒããŒãšããŠã®åäœã¢ãŒãã«å ããŠãå€æŽããããã¡ã€ã«ã®ã€ã³ããã¯ã¹äœæãšåæãç·šéããšã«å®è¡ãããŸãã
åæãã§ãŒãº
ãã®ãã§ãŒãºã§ã¯ãã¡ã¿æ å ±ïŒé¢æ°ãã¯ã©ã¹ãªã©ïŒã䜿çšããŠããã§ã«ã³ãŒããçŽæ¥åæã§ããŸãã 以äžã¯ãNoVerifyãããã©ã«ãã§ãã§ãã¯ã§ãããã®ã®ãªã¹ãã§ãã
- å°éäžèœã³ãŒã;
- é åãšããŠã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ã
- é¢æ°ãåŒã³åºããšãã®åŒæ°ã®æ°ãäžååã§ãã
- æªå®çŸ©ã®ã¡ãœãã/é¢æ°ãåŒã³åºã;
- æ¬ èœããŠããã¯ã©ã¹ããããã£/å®æ°ãžã®ã¢ã¯ã»ã¹ã
- ã¯ã©ã¹ã®æ¬ åŠ;
- ç¡å¹ãªPHPDoc
- æªå®çŸ©ã®å€æ°ãžã®ã¢ã¯ã»ã¹ã
- åžžã«å®çŸ©ãããŠããããã§ã¯ãªãå€æ°ãžã®ã¢ã¯ã»ã¹ã
- ã¹ã€ãã/ã±ãŒã¹æ§é ã«ãããã±ãŒã¹ã®åŸã®ããã¬ãŒã¯ãã®äžåš;
- æ§æãšã©ãŒã
- æªäœ¿çšã®å€æ°ã
ãªã¹ãã¯ããªãçãã§ããããããžã§ã¯ãåºæã®ãã§ãã¯ãè¿œå ã§ããŸãã
ãªã³ã¿ãŒã®æäœäžãæãæçšãªæ€æ»ã¯æåŸã®ïŒæªäœ¿çšã®å€æ°ïŒã ãã§ããããšãå€æããŸããã ããã¯ãã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ïŒãŸãã¯æ°ããã³ãŒããèšè¿°ïŒããŠå€æ°åã«å°å°ãããšããèµ·ãããŸãããã®ã³ãŒãã¯PHPã®èŠ³ç¹ããã¯æå¹ã§ãããããžãã¯ã«èª€ãããããŸãã
äœæ¥é床
ããã·ã¥ãããå€æŽã¯ã©ããããã®æéãã§ãã¯ãããŸããïŒ ããã¯ãã¹ãŠãã¡ã€ã«ã®æ°ã«äŸåããŸãã NoVerifyã䜿çšãããšãããã»ã¹ã«ã¯æ倧1åãããããšããããŸãïŒããã¯ãªããžããªå ã®1400ãã¡ã€ã«ãå€æŽãããšãã§ããïŒããç·šéãå°ãªãå Žåãéåžžãã¹ãŠã®ãã§ãã¯ã¯4-5ç§ã§åæ ŒããŸãã ãã®éããããžã§ã¯ãã¯å®å šã«ã€ã³ããã¯ã¹ä»ããããæ°ãããã¡ã€ã«ãšãã®åæã解æãããŸãã PHPçšã®ãªã³ã¿ãŒãäœæããããšãã§ããŸãããããã¯ã倧èŠæš¡ãªã³ãŒãããŒã¹ã§ããã°ããåäœããŸãã
çµæã¯äœã§ããïŒ
ãœãªã¥ãŒã·ã§ã³ã¯Goã§èšè¿°ãããŠããããããã¹ãŠã®é¢æ°ãšã¯ã©ã¹ã®å®çŸ©ãPHPã«çµã¿èŸŒãã«ã¯ã github.com / JetBrains / phpstorm-stubsãªããžããªã䜿çšããå¿ èŠããããŸãã ãã®èŠè¿ããšããŠãé«éãªäœæ¥ïŒ1ç§ããã100äžè¡ã®ã€ã³ããã¯ã¹ä»ãã1ç§ããã10äžè¡ã®åæïŒãåŸãããgit pushããã¯ã®æåã®ã¹ãããã®1ã€ãšããŠãªã³ã¿ãŒã䜿çšããŠãã§ãã¯ãè¿œå ã§ããŸããã
æ°ããæ€æ»ãäœæããããã®äŸ¿å©ãªããŒã¹ãéçºãããPHPStormã«è¿ãã¬ãã«ã®ã³ãŒãç解ãéæãããŸããã å·®åèšç®ã䜿çšããã¢ãŒããããã«ãµããŒããããŠãããšããäºå®ã«ãããã³ãŒããåŸã ã«æ¹åããæ°ããã³ãŒãã§æœåšçã«åé¡ã®ããæ°ããæ§æãåé¿ããããšãã§ããŸãã
diffã®ã«ãŠã³ãã¯çæ³çã§ã¯ãããŸãããããšãã°ã1ã€ã®å€§ããªãã¡ã€ã«ãããã€ãã®å°ããªãã¡ã€ã«ã«åå²ãããå Žåãgitããããã£ãŠNoVerifyã¯ã³ãŒãã移åãããããšãå€æã§ããããªã³ã¿ãŒã¯èŠã€ãã£ããã¹ãŠã®åé¡ãä¿®æ£ããå¿ èŠããããŸãã ãã®ç¹ã§ãå·®åèšç®ã¯å€§èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°ã劚ããããããã®ãããªå Žåãå€ãã®å Žåç¡å¹ã«ãªããŸãã
Goã§ãªã³ã¿ãŒãäœæããããšã«ã¯ãã1ã€ã®å©ç¹ããããŸããASTããŒãµãŒã¯PHPãããé«éã§ã¡ã¢ãªæ¶è²»éãå°ãªãã ãã§ãªããPHPã§å®è¡ã§ãããã®ã«æ¯ã¹ãŠåŸç¶ã®åæãéåžžã«é«éã§ãã ããã¯ããªã³ã¿ãŒãã³ãŒãã®ããè€éã§è©³çŽ°ãªåæãå®è¡ããªãããé«ãããã©ãŒãã³ã¹ãç¶æã§ããããšãæå³ããŸãïŒããšãã°ããé 延åãæ©èœã§ã¯ãåŠçäžã«ããªãã®æ°ã®èšç®ãå¿ èŠã§ãïŒã
ãªãŒãã³ãœãŒã¹
GitHubã®ãªãŒãã³ãœãŒã¹ã§å©çšå¯èœãªNoVerify
ãããžã§ã¯ãã§ã®äœ¿çšãã楜ãã¿ãã ããïŒ
UPDïŒ WebAssemblyã§æ©èœãããã¢ãæºåããŸããã ãã®ãã¢ã®å¯äžã®å¶éã¯ãphpstorm-stubsã®é¢æ°å®çŸ©ããªãããšã§ãããããã£ãŠããªã³ã¿ãŒã¯çµã¿èŸŒã¿é¢æ°ãèªããŸãã
VKontakteã€ã³ãã©ã¹ãã©ã¯ãã£éšéã®éçºè Yuri Nasretdinov