
æ°å¹ŽåãBadooã¯åŸæ¥å¡æ°ã20人ãã100人以äžã«å€§å¹
ã«å¢å ãå§ããŸããã ããã«ã¯ãå€ãã®éçºããã»ã¹ã®å€§å¹
ãªèŠçŽããå¿
èŠã§ããã ç§ãã¡ãééããåé¡ã®1ã€ã¯ããã¹ãŠã®éçºè
ãåäžã®ã³ãŒãã£ã³ã°æšæºã«åŸãããã«ããŠããã¹ãŠã®ã³ãŒããäžè²«æ§ââããããç°¡åã«ä¿å®ã§ããããã«ããæ¹æ³ã§ãã
ãã®åé¡ã解決ããããã«ã次ã®ããšãã§ããã³ãŒããã©ãŒãããããŒã«ãå®è£
ããããšã«ããŸããã
- ãã¡ã€ã«èªäœã«è§Šããããšãªãããªã¹ãã®åœ¢åŒã§ãã©ãŒãããæšæºã®éæºæ ã«é¢ããã¡ãã»ãŒãžã衚瀺ããŸãã
- èŠã€ãã£ããã¹ãŠã®ãã©ãŒãããã®åé¡ãèªåçã«ä¿®æ£ããŸãã
- ãã¡ã€ã«ã®äžéšã®ã¿ããã©ãŒãããã§ããŸãïŒå±¥æŽã倱ããªãããã«ããªããžããªå
šäœãããã«åãã©ãŒãããããå¿
èŠã¯ãããŸããïŒã
ãã®ãããªããŒã«ãäœæããããã®åºç€ãšãªã2ã€ã®ãããžã§ã¯ããPHP BeautifierãšPHP Code Snifferãæ€èšããŸããã 1ã€ç®ã¯ã³ãŒãããã©ãŒãããã§ããŸãããã蚺æãå°å·ã§ããŸããã§ããã2ã€ç®ã¯ãå察ã«ã蚺æãå°å·ã§ããŸãããããã¡ã€ã«ããã©ãŒãããã§ããŸããã§ããã æ®å¿µãªããããããã®ãããžã§ã¯ãã¯äž¡æ¹ãšããç§ãã¡ã®æšå®ã§ã¯ããããã«æ¬ ããŠããæ©èœã远å ããã®ã«ããŸãé©ããŠããªããããæ°ãããŠãŒãã£ãªãã£-phpcfïŒPHP Code FormatterïŒãäœæãããŸããã éå»2幎éãgit pre-receiveããã¯ãšããŠæ©èœããŠãããã³ãŒãã£ã³ã°æšæºã«åŸã£ãŠãã©ãŒããããããŠããªã倿ŽãæåŠïŒïŒïŒããããã«æ§æãããŠããŸãã
æåŸã«ããŠãŒãã£ãªãã£ã®ãœãŒã¹ã³ãŒããäžè¬å
¬éããŸãïŒ
github.com/badoo/phpcfæ©èœæ§
ãã©ãŒããã¿ã¯ãåºæ¬çã«ç©ºçœã倿Žããããã«äœæãããŸããïŒæ¹è¡ãã€ã³ãã³ããæŒç®åã®åšãã®ã¹ããŒã¹ãªã©ã ãããã£ãŠãphpcfã¯ãåè¿°ã®PHP Code Snifferã
Fabien Potencierã®PHP Coding Standards Fixerãªã©ã®ä»ã®åæ§ã®ãŠãŒãã£ãªãã£ã眮ãæããŸããã ããã¯ããããè£å®ãããã¡ã€ã«å
ã®ã¹ããŒã¹ãšæ¹è¡ã®æ£ããé
眮ã§ãæ±ãäœæ¥ããå®è¡ããŸãã ãŠãŒãã£ãªãã£ããã¡ã€ã«ã®åæãã©ãŒããããèæ
®ããéžæããæšæºã«å¯Ÿå¿ããªãã¹ããŒã¹ã®ã¿ã倿Žããããšã«æ³šæããããšãéèŠã§ãïŒæåã«ãã¹ãŠã®ç©ºçœããŒã¯ã³ãåé€ããŠãããã©ãŒããããéå§ããä»ã®ãœãªã¥ãŒã·ã§ã³ãšã¯ç°ãªããŸãïŒã
ãã®ãŠãŒãã£ãªãã£ã¯æ¡åŒµå¯èœã§ãããã«ã¹ã¿ã ã¹ã¿ã€ã«ã»ããããµããŒãããŠããŸãã ç¬èªã®ãã©ãŒãããã¹ã¿ã€ã«ãéåžžã«ç°¡åã«å®çŸ©ã§ããŸããããã«ãããåœç€Ÿãšã¯ç°ãªãæšæºãå®è£
ãããŸãïŒåœç€Ÿã®ã³ãŒãã£ã³ã°æšæºã¯PSRã«éåžžã«è¿ãïŒã
䜿çšäŸïŒãphpcf apply <filename>ãã³ãã³ãã¯æå®ããããã¡ã€ã«ããã©ãŒããããããphpcf check <filename>ãã¯ãã©ãŒãããããã§ãã¯ããæªãã©ãŒãããã®ãã©ã°ã¡ã³ããããå Žåã¯ãŒã以å€ã®çµäºã³ãŒããè¿ããŸãïŒïŒ
$ cat minifier.php <?php $tokens=token_get_all(file_get_contents($argv[1]));$contents='';foreach($tokens as $tok){if($tok[0]===T_WHITESPACE||$tok[0]===T_COMMENT)continue;if($tok[0]===T_AS||$tok[0]===T_ELSE)$contents.=' '.$tok[1].' '; else $contents.=is_array($tok)?$tok[1]:$tok;}echo$contents."\n"; $ phpcf apply minifier.php minifier.php formatted successfully $ cat minifier.php <?php $tokens = token_get_all(file_get_contents($argv[1])); $contents = ''; foreach ($tokens as $tok) { if ($tok[0] === T_WHITESPACE || $tok[0] === T_COMMENT) continue; if ($tok[0] === T_AS || $tok[0] === T_ELSE) $contents .= ' ' . $tok[1] . ' '; else $contents .= is_array($tok) ? $tok[1] : $tok; } echo $contents . "\n"; $ phpcf check minifier.php; echo $? minifier.php does not need formatting 0
ãã¡ã€ã«å
šäœã®ãã©ãŒãããã«å ããŠããŠãŒãã£ãªãã£ã¯ãã¡ã€ã«ã®äžéšããã©ãŒãããããæ¹æ³ãç¥ã£ãŠããŸãã ãããè¡ãã«ã¯ãã³ãã³ã§è¡çªå·ã®ç¯å²ãæå®ããŸãã
$ cat zebra.php <?php echo "White "."strip".PHP_EOL; echo "Black "."strip".PHP_EOL;
ãŠãŒãã£ãªãã£ã¯PHPã§èšè¿°ãããŠããŸãããã»ãšãã©ã®ãã¡ã€ã«ã¯äžç¬ã§ãã©ãŒããããããŸãã ãããã倧ããªãªããžããªãšå€æ°ã®ã³ãŒãããããããæ¥ç¶ãããšçç£æ§ã100åã«åäžããæ¡åŒµæ©èœãäœæããŸããã200äžè¡ã®ãªããžããªå
šäœããããŒãããã¯ãCore i7ã§8ç§ã§ãã©ãŒããããããŸãã æ¡åŒµæ©èœã䜿çšããã«ã¯ããext /ããã£ã¬ã¯ããªããåéããã€ã³ã¹ããŒã«ããphp.iniã§ãenable_dl = Onããæå¹ã«ããããæ¡åŒµæ©èœãšããŠç»é²ããå¿
èŠããããŸãã
phpcfã¯ãŸãæåã«ç©ºçœã倿Žããã³ãŒãäžã§æãåçŽãªå€æããã§ããªãããšãããäžåºŠåŒ·èª¿ããããšæããŸããããšãã°ãçãéå§ã¿ã°ãé·ãã¿ã°ã«çœ®ãæãããããã¡ã€ã«ããæåŸã®çµäºã¿ã°ãåé€ããŸãã ããã«ãphpcfã¯ãè±èªã®æåã®é¢æ°åã®ããªã«æåãèªåçã«ä¿®æ£ã§ããŸãã ãŸããã¹ããŒã¹ã§æåã§é
眮ãããåŒã¯åœ±é¿ãåããŸããã ããã¯ã¢ãŒããã¯ãã£ãŒã«ãããã®ã§ã-ãã©ãŒããã¿ãŒã¯ãããŒãã³ãŒãããã眮æã®ã»ãããšããŠã§ã¯ãªãããŠãŒã¶ãŒãèšå®ããã«ãŒã«ãæã€ã¹ããŒããã·ã³ãšããŠæ©èœããŸãïŒãã©ãŒããã¿ãŒã«ã¯ããã©ãŒãããã«ãŒã«ã«äžèŽãããããã©ã«ãæ§æããä»å±ããŸãïŒã ãããã£ãŠããvarãããpublicããŸãã¯åæ§ã®ãã®ã«èªåçã«çœ®ãæããå Žåã¯ãPHP-CS-Fixerã«æ³šæããããšããå§ãããŸã-phpcfãšã¯ç°ãªããç©ºçœæåã«ã¯ã»ãšãã©æ³šæãæããŸããããããŒã¯ã³ãæžãæããããšãã§ããŸãã
PHPããŒãžã§ã³ã®ãµããŒã
åœåããã©ãŒããã¿ã¯PHP 5.3ã§åäœããããã ãããµããŒãããŠããŸããã çŸæç¹ã§ã¯ãPHP 5.4ããã³5.5ã®æ§æãå®å
šã«ãµããŒãããŠããããã©ãŒããã¿ãŒãæ©èœããã«ã¯ã5.4以äžã®PHPããŒãžã§ã³ãå¿
èŠã§ãã PHPã®ä»¥åã®ããŒãžã§ã³åãã®ã³ãŒãããã©ãŒãããããå Žåã¯ããããè¡ãããšãã§ããŸãããphpcfèªäœã¯PHP 5.4+ã䜿çšããŠèµ·åããå¿
èŠããããŸãã
phpcfã¯ãããšãã°äžåè¡¡ãªæ¬åŒ§ãå«ããæªå®æããã¡ã€ã«ããã©ãŒãããã§ããªãããšã«æ³šæããŠãã ããããã®å Žåããšã©ãŒã¡ãã»ãŒãžã衚瀺ããããã¡ã€ã«ã¯åã«ãã©ãŒããããããŸããã ããã«ãå Žåã«ãã£ãŠã¯ããã©ãŒããã¿èªäœããã¡ã€ã«ã®æ§æããã§ãã¯ããªããããã€ã³ã¿ãŒããªã¿ãŒã®èгç¹ãããç¡å¹ãªãã³ãŒãããã©ãŒãããã§ããŸãã
PHPã®å°æ¥ã®ããŒãžã§ã³ã®ãµããŒãã«é¢ããŠãphpcfã¢ãŒããã¯ãã£ã¯ããã¡ã€ã«ã«ããªãã¿ã®ãªããããŒã¯ãŒããšããŒã¯ã³ã远å ãŸãã¯äŒè°ãããšããããããåã«ç¡èŠããŠãã®ãŸãŸã«ãããããªãã®ã§ãã ãããã£ãŠãphpcfã¯ãã§ã«PHPã®å°æ¥ã®ããŒãžã§ã³ããµããŒãããŠããŸãããæªç¥ã®ããŒã¯ã³ã«ã¯ãã©ãŒãããã«ãŒã«ãé©çšãããªãããšã«æ³šæããŠãã ããã
Gitçµ±åãµããŒã
ãŠãŒãã£ãªãã£ãããŠã³ããŒããããšãããã§ãã¯ããããã¬ãã¥ãŒãããé©çšãã¢ã¯ã·ã§ã³ã ãã§ãªããã-gitããµãã£ãã¯ã¹ãä»ããåãã¢ã¯ã·ã§ã³ãããããšã«æ°ä»ãã§ãããã Badooã§ã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ãšããŠGitã䜿çšããŸããããã©ã«ãã§ã¯ã倿Žãããè¡ã®ã¿ããã§ãã¯ããã³ãã©ãŒããããããŸãã éçºè
ã«å€æŽãããè¡ã®çªå·ãæãåºãããªãããã«ã次ã®ããã«æ©èœããã* -gitãã³ãã³ããäœæããŸããã
- ã€ã³ããã¯ã¹ã«è¿œå ããããã³ããããããŠããªãã倿Žã衚瀺ããŸãã
- çŸåšã®ãã©ã³ãã§è¡ãããããorigin / masterããã³origin / <current-branch>ã«ååšããªã倿Žã衚瀺ããŸãïŒå¯Ÿå¿ãããã©ã³ãã¯git push / git pullã§æŽæ°ãããŸãïŒãã€ãŸãããŸã ãªããžããªã«éä¿¡ãããŠããŸããã
- ïŒ1ïŒããã³ïŒ2ïŒã«ããè¡ã«ã®ã¿æžåŒèšå®ãé©çšããŸãã
æ©èœãã©ã³ãã§éçºã䜿çšããåæã«ãã¹ã¿ãŒãã©ã³ãã«è£œåã³ãŒãããããããã-gitãã³ãã³ãã¯ãã®ãããŒã«åãããŠèª¿æŽãããäžèšã®ã¢ã«ãŽãªãºã ã«åŸã£ãŠå€æŽãããè¡ã決å®ããŸãã
䜿çšäŸïŒ
(master) $ git checkout -b some_feature (some_feature) $ vim test.php
phpcfã¯ã©ã¹ãçŽæ¥äœ¿çšãã
ãŠãŒãã£ãªãã£ãšããŠphpcfã䜿çšããããšã«å ããŠãæ¡åŒµæ©èœæ¡åŒµãå«ããphpcfã¯ã©ã¹ãçŽæ¥äœ¿çšããããšãã§ããŸãã ãã®æ©èœã¯ãPHPãã¡ã€ã«ããã©ãŒãããããããã®WebãµãŒãã¹ãäœæãããªã©ãããŸããŸãªã¿ã¹ã¯ã«åœ¹ç«ã¡ãŸãã å¿
èŠã«å¿ããŠãã³ãŒãã¬ãã¥ãŒããã»ã¹ã§äœ¿çšããŸãããã©ã³ãã§è¡ããã倿Žã衚瀺ããå Žåããã©ãŒãããã«ã®ã¿é¢é£ãã倿Žã衚瀺ããªãæ¹æ³ã¯ããããŸããïŒãã®ããããã¡ã€ã«ã®2ã€ã®ããŒãžã§ã³ã¯å®å
šã«ãã©ãŒããããããå€ããã®ãšæ°ãããã®ãããããã®åŸããããã®éã®å·®åãèæ
®ãããŸãïŒ
phpcfã¯ã©ã¹ãçŽæ¥äœ¿çšããäŸïŒ
<?php
PHPStormã®äŸã§ã®IDEãšã®çµ±å
PHPStormã®äœ¿çšäžã«ãã©ãŒããã¿ã䜿çšããŠPHPã³ãŒãããã©ãŒãããã§ããããã«ããå Žåã¯ãæ¬¡ã®æé ãå®è¡ã§ããŸãã
1.git clone https://github.com/badoo/phpcf.git
2. PHPStormã§ãèšå®ã«ç§»åãããå€éšããŒã«ãã»ã¯ã·ã§ã³ãèŠã€ããŸãã
3. [远å ...]ãã¯ãªãã¯ããŠããã£ãŒã«ãã«å
¥åããŸãã
ååïŒãã¡ã€ã«å
šäœããã©ãŒããããã
ã°ã«ãŒãïŒphpcf
ãã³ã³ãœãŒã«ãéããã®ãã§ãã¯ãå€ããŸãïŒéªéã«ãªããªãããã«ïŒ
ããã°ã©ã ïŒphp
ãã©ã¡ãŒã¿ãŒïŒpath_to_phpcf.git / phpcf apply $ FilePath $
äœæ¥ãã£ã¬ã¯ããªïŒä»»æ
ååïŒåœ¢åŒã®éžæ
ã°ã«ãŒãïŒphpcf
ãã³ã³ãœãŒã«ãéããã®ãã§ãã¯ãå€ããŸãïŒéªéã«ãªããªãããã«ïŒ
ããã°ã©ã ïŒphp
ãã©ã¡ãŒã¿ãŒïŒpath_to_phpcf.git / phpcf apply $ FilePath $ïŒ$ SelectionStartLine $-$ SelectionEndLine $
äœæ¥ãã£ã¬ã¯ããªïŒä»»æ
ãã®åŸããããããŒã察å¿ããã¢ã¯ã·ã§ã³ã«æ·»ä»ãããã¡ã€ã«å
šäœãŸãã¯éžæãããã©ã°ã¡ã³ãã®ã¿ããã©ãŒãããã§ããŸãã
ããã«ããphpcf check-git --emacsãã®æäœãåãæ¹æ³ã§èšå®ã§ããŸãããã®ã¢ãŒãã§ã¯ãphpcfã¯ãã¡ã€ã«åãè¡çªå·ãšãšãã«emacsã¹ã¿ã€ã«ã§åºåããŸããããã«ããããªã³ã¯ãã¯ãªãã¯ããŠåºåã§æå®ãããè¡ã«ç§»åã§ããŸãã
å®è£
äœæ¥ã®éçšã§ããã©ãŒããã¿ã¯æ¬¡ã®æé ãå®è¡ããŸãã
- ãã©ãŒããããããã¡ã€ã«åãšè¡çªå·ã®ãªã¹ããæºåããŸãã
- token_get_allïŒprepareTokensïŒãåŒã³åºããŠããã¡ã€ã«ã®ããŒã¯ã³ã®ãªã¹ããååŸããŸãã
- ããã¯ãå®è¡ããæ©èœã䜿çšããŠããŒã¯ã³ãåäžã®åœ¢åŒã«å€æããäžéšã®ããŒã¯ã³ãä»ã®ããŒã¯ã³ã«çœ®ãæããããšãã§ããŸãã
- ããã»ã¹ïŒïŒã¡ãœããã®åŒã³åºããããã¯ãç¶æ
ãã·ã³Phpcf \ Impl \ Fsmã䜿çšããŠãã¹ãŠã®ããŒã¯ã³ãæž¡ãããã©ãŒãããã¢ã¯ã·ã§ã³ïŒexecïŒã®é
åãæ§æããŸãã
- execïŒïŒã¡ãœããã®åŒã³åºããçæãããã¢ã¯ã·ã§ã³ã®é
åãåŠçãããæçµçãªæååã«å€æãããŸãã
詳现ã¯ã©ã¹Phpcf \ Impl \ Fsmã®èª¬æ-ããŒã¯ã³ãè§£æããããã®ã¹ããŒããã·ã³
ã¯ã©ã¹Phpcf \ Impl \ Fsmã¯ãç¶æ
ãã¹ã¿ãã¯ïŒé
åïŒãšããŠè¡šãããæéç¶æ
ãã·ã³ã§ãã ã¹ã¿ãã¯ã®äžçªäžã®èŠçŽ ã¯ãç¶æ
é·ç§»èŠåã«äœ¿çšãããŸãã
<?php $fsm_context_rules = array( 'CTX_SOMETHING' => array(
äžè¬çã«ãã¹ããŒããã·ã³ã®ã«ãŒã«ã¯æ¬¡ã®ãšããã§ãã
<?php $fsm_context_rules = array( '<context_name>[ ... <context_name>]' => array( '<token_code>[ ... <token_code>]' => <context_rule>, ), ); $context_rule = '<context_name>';
ãã©ãŒãããèŠåã®é
åïŒ$ã³ã³ãããŒã«
ãã©ãŒããã¿ã¯åºæ¬çã«èšèšãããŠããã®ã§ã空çœããŒã¯ã³ã®å
容ã®ã¿ãå¶åŸ¡ããŸãïŒããã¯ãé€ãïŒã ãã¹ãŠã®ãã©ãŒãããèŠåã¯ã$ controlsé
åã§å®çŸ©ãããæ¬¡ã®åœ¢åŒã§æç€ºãããŸãã
<?php $controls = array( '<token_code>[ ... <token_code>]' => array(
ããšãã°ãã$ a = $ b;ããªã©ãåãã¹ããŒã¹ã«å¯ŸããŠç°ãªãã«ãŒã«ãå®çŸ©ãããŠããå Žå "="ã®åŸãã¹ããŒã¹ã1ã€å
¥ããå¿
èŠãããã$ bã®å-ãã¹ãŠã®ã¹ããŒã¹ãåé€ããŸããã«ãŒã«ã®é©çšé åºã¯åªå
é äœã«ãã£ãŠç°ãªããŸãã æäœã®åªå
床ã«ã€ããŠã¯ããPHPCF_EX-constantsãã»ã¯ã·ã§ã³ã§èª¬æããŠããŸããã«ãŒã«ãé«ãã»ã©ãåªå
床ãé«ããªããŸãã
ããŒã¯ã³ããã¯
$ token_hook_namesããããã£ã¯ãprepareTokensã¡ãœããããã®ããŒã¯ã³ãæ€åºãããšãã«åŒã³åºãå¿
èŠãããã¡ãœããã®ååãå®çŸ©ããŸãã ããã¯ã¯æ¬¡ã®ããã«å®çŸ©ãããŸãã
<?php namespace Phpcf\Impl; class Pure implements \Phpcf\IFormatter { private function tokenHookDoNothing($idx_tokens, $i_value) { if (is_array($i_value)) { $this->current_line = $i_value[2]; return array( array( PHPCF_KEY_CODE => $idx_tokens[$i_value[0]], PHPCF_KEY_TEXT => $i_value[1], PHPCF_KEY_LINE => $this->current_line, ) );
ããŒã¯ã³ã®ããã¯ã®èª¬æ
ããŒã¯ã³ã®ããã¯ã®ç°¡åãªèª¬æãšãããã¯ã®åºçŸçç±ãšãã®ã¢ã¯ã·ã§ã³ã®èª¬æïŒ
- tokenHookHeredocãtokenHookStrïŒããã©ã«ãã§ã¯ãPHPã¯HEREDOCãäºéåŒçšç¬ŠãæãåŒçšç¬Šå
ã®ããã¹ãããããŒã¯ã³åãããããã§å€æ°ãéžæããŸãã ãã©ãŒããã¿ã¯è¡ã«è§ŠããŠã¯ãªããªããããå
容ã¯1ã€ã®ããŒã¯ã³ã«çµåãããŸãã
- tokenHookOpenBraceã¯ãæ¬åŒ§å
ã®åŒãé·ãïŒããã©ã«ãã§ã¯120æåïŒããåŒã§æ¹è¡ã䜿çšãããŠããå ŽåãããŒã¯ã³ "ïŒ"ã "ïŒ_LONG"ã«å€æããŸãããlongãé
åãšãshortãé
åãåºå¥ããããã«äœ¿çšããã颿°ã®åŒã³åºããšå®çŸ©;
- tokenHookCheckUnaryã¯ãæŒç®åãåé
æŒç®åïŒããšãã°ãã+ããã-ããïŒïŒãã©ãããå€å¥ããŸãã ã«ãŒã«å
ã®ã³ã³ããã¹ãéã®é·ç§»ã®æ°ãæžããã®ã«åœ¹ç«ã¡ãŸãã
- tokenHookStaticã¯ããstatic :: HELLOãã®ãããªåŒã³åºãããpublic static functionããšããŠã®äœ¿çšããåé¢ããŸãã ãŸããç¶æ
é·ç§»ã®ããžãã¯ãç°¡çŽ åããã®ã«ã圹ç«ã¡ãŸãã
- tokenHookClassdefã¯ãããŒã¯ãŒãã®åŸã«æ¹è¡ ïŒããšãã°ããconst \ nãïŒããããšå€æãããconst \ n var1 = 1ã\ n var2 = 2;ããªã©ã®æ§é ãæ£ãããã©ãŒãããããããã«äœ¿çšãããããšã決å®ããŸãã
- tokenHookOpenTagã¯ãéå§ã¿ã°ãé·ãããšã確èªããéå§ã¿ã°ãã空çœãåé¢ããŸãïŒã<ïŒphp \ nãã2ã€ã®ããŒã¯ã³ã«å€æããŸãïŒã<ïŒphpããšã\ nãïŒã
- tokenHookCloseTagã¯ããã¡ã€ã«ã®æåŸã«çµäºã¿ã°ããªãããšã確èªããŸãã
- tokenHookIncrementã¯ã倿°ã®ã©ã¡ãåŽãæŒç®åã++ããŸãã¯ã-ãã§ããããæ±ºå®ããŸãã ã³ã³ããã¹ãéã®é·ç§»ã®ããžãã¯ãç°¡çŽ åããããã«äœãããŸããã
- tokenHookWhiteSpaceã¯ãåŒãã¹ããŒã¹ã§æ£åœåãããããšã決å®ããT_WHITESPACEãT_WHITESPACE_ALIGNEDã«çœ®ãæããŸããT_WHITESPACE_ALIGNEDã¯ããã©ãŒãããæã«å€æŽãããŸããã
- tokenHookElseã¯ãelseãåäžè¡ããããã¯ãå«ãããæ±ºå®ããŸãã ããžãã¯ãç°¡çŽ åããããã«äœãããŸããã
- tokenHookCommentã¯ãåäžè¡ã®ã³ã¡ã³ããã//ãã§å§ãŸãããšã確èªããããŒã¯ã³ããæ¹è¡ãåé¢ããŸãïŒã// something \ nãã¯ã// somethingããšã\ nãã«ãªããŸãïŒã
- tokenHookTStringã¯ããã®T_STRINGãã¡ãœãããŸãã¯é¢æ°ã®ååã§ããå ŽåãT_STRINGã®ååãT_FUNCTION_NAMEã«å€æŽããŸãã ã³ã³ããã¹ãéã®é·ç§»ã®ããžãã¯ãç°¡çŽ åããããã«äœãããŸããã
- tokenHookBinaryã¯ãã¹ããŒãã¡ã³ããæ¬¡ã®è¡ã«è»¢éããç¶æ³ãåŠçããããã«äœ¿çšãããŸãã
- tokenHookCommaã¯ãé·ãé
åã®æ°ããè¡ã«ã©ããã§ããã³ã³ãã®å Žåããããããã_LONGãã«å€æããŸãã
- tokenHookFunctionã¯ãå¿å颿°ãšéå¿å颿°ãäºãã«åé¢ããŸãã
ããã¯ãããŒã¯ã³ã®å
容ã倿Žããå Žåã¯ããããè¡ãæš©å©ããããã©ããã確èªããå¿
èŠããããŸã
($can_change_tokens = !isset($this->lines) || isset($this->lines[$this->current_line]))
ã ããã§ãªãå Žåãããã¯ã¯ããŒã¯ã³ã®å
容ã倿Žããã¹ãã§ã¯ãããŸãããããã®çªå·ã倿ŽããããŒã¯ã³ããã®ã³ã³ããŒãã³ãéšåã«åå²ã§ããŸãã äŸã¯tokenHookOpenTagã§ãããŠãŒã¶ãŒããã¡ã€ã«ã®äžéšã®ã¿ããã©ãŒãããããããã«èŠæ±ããå Žåãéå§ã¿ã°ã®å
容ã¯ãã§ãã¯ããŸããããéå§ã¿ã°ãã空çœãåé¢ããŸãã éå§ã¿ã°ãšåäžè¡ã³ã¡ã³ãã®åŸã®è¡æ°ïŒããã³ã€ã³ãã³ãïŒãæ£ããèæ
®ããããã«ã空çœã®åé¢ãå¿
èŠã§ãã
åç
§è³æ
PHP
Beautifier-pear.php.net/package/PHP_BeautifierPHPã³ãŒãã¹ããã¡ãŒ
-pear.php.net/package/PHP_CodeSnifferPHP CS
Fixer-github.com/fabpot/PHP-CS-FixerphpcfãŠãŒãã£ãªãã£
-github.com/badoo/phpcfç§ãã¡ã®èšäºãèªãã§ãããŠããããšããç§ãã¡ã¯ããªãã®ææ¡ãã³ã¡ã³ããèãæºåãã§ããŠããŸãã ãã®ãŠãŒãã£ãªãã£ã®äœ¿çšããæ¥œãã¿ãã ããã
Yuri youROCK NasretdinovãPHPéçºè
Badoo
Alexander Alexkrash Krasheninnikov ãPHPéçºè
Badoo