ãã®PHPãã©ãŒããã¿ãŒã䜿çšããçç±
- ã¢ãã³ãªPHPã³ãŒãããŒã¹åãPSR-12æºæ ã®ãã©ãŒããã
- Prettier + @prettier/plugin-phpã«ããå®å®ãããªãããªã³ä»ãåºå
- ã€ã³ãã³ããµã€ãºãã¹ããŒã¹ vs ã¿ããæãè¿ã/è¡é·ã®ãªãã·ã§ã³
- ã¹ããŒã¹ãã€ã³ãã³ããé åãå¶åŸ¡æ§é ããã¬ãŒã¹ã®æ£èŠå
- .phpã.phtmlã.php5ã.php4ã.incãã¡ã€ã«ã«å¯Ÿå¿
- é«éãªãã©ãŠã¶å ãã©ãŒããããå¿ èŠæã«å®å šãªããã¯ãšã³ããžèªåãã©ãŒã«ããã¯
- LaravelãSymfonyãWordPressãã«ã¹ã¿ã ãã¬ãŒã ã¯ãŒã¯ãã¬ã¬ã·ãŒã¢ããªã«æé©
ð§ 4ã¹ãããã§PHPã³ãŒããçŸããæŽåœ¢ for php-formatter
1. ã³ãŒãã貌ãä»ããŸãã¯ãããã
PHPã³ãŒãããšãã£ã¿ãŒã«è²Œãä»ãããã`.php`/`.phtml`/`.inc`ãã¡ã€ã«ããã©ãã°ïŒããããããŠãã ãããããŒã«ã¯PHPæ§æãèªåæ€åºãããã©ãŒãããã®æºåãããŸãã
2. ãã©ãŒããããªãã·ã§ã³ãèšå®
ã€ã³ãã³ããµã€ãºãã¹ããŒã¹ãŸãã¯ã¿ãã®äœ¿çšãåžæã®æãè¿ã/è¡é·ãéžæããŠãã ãããããã©ã«ãã¯ã»ãšãã©ã®PSR-12ã¹ã¿ã€ã«ãããžã§ã¯ãã«é©ããŠããŸãã
3. ããã©ãŒãããããã¯ãªãã¯
**ãã©ãŒããã**ãã¯ãªãã¯ããŠãPrettierã®PHPãšã³ãžã³ã§ã³ãŒããå®è¡ããŸããéåžžãçµæã¯ã»ãŒç¬æã«è¡šç€ºãããŸãã
4. 確èªãã³ããŒãã³ããã
ãã©ãŒããããããåºåã確èªãããšãã£ã¿ãŒã«ã³ããŒããã`.php`ãã¡ã€ã«ãšããŠããŠã³ããŒãããŠãã ãããã¯ãªãŒã³ãªããŒãžã§ã³ãã³ãããããŠãå°æ¥ã®å·®åãæŽçãããç¶æ ã«ä¿ã¡ãŸãã
æè¡ä»æ§
æšæº & æ§æãµããŒã
PHPãã©ãŒããã¿ãŒã¯ãã¢ãã³ãªãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã«åãããŠèª¿æŽãããåŸæ¥ã®æ§æãã¹ã ãŒãºã«åäœããŸãã
| æ©èœ | ãµããŒã | åè |
|---|---|---|
| PSR-12æºæ | â ã¯ã | PSR-12ãšäžè¬çãªã³ãã¥ããã£æ £è¡ã«åºãæºæ ãããªãããªã³ä»ãã¹ã¿ã€ã«ã |
| PHP 7+ æ§æ | â ã¯ã | åå空éãã¹ã«ã©ãŒåãã³ããæ»ãå€ã®åãnull蚱容åãªã©ã |
| PHP 8+ æ©èœ | â ã¯ã | 屿§ããŠããªã³åãã³ã³ã¹ãã©ã¯ã¿ããã¢ãŒã·ã§ã³ãmatchåŒãã¢ããŒé¢æ°ã |
| çãé åæ§æ | â ã¯ã | é©åãªå Žåã«é åãçŸä»£çãª`[...]`ã¹ã¿ã€ã«ã«æ£èŠåããŸãã |
| ãã¢ããã¥ã¡ã³ã / ããŠããã¥ã¡ã³ã | â ã¯ã | åšå²ã®ã€ã³ãã³ããæŽçããªããå 容ãä¿æããŸãã |
| PHPãšHTMLã®æ··å | â ã¯ã | åã蟌ã¿HTMLãå«ãå žåçãª`.php`ãã³ãã¬ãŒãããã©ãŒãããã§ããŸãã |
ã¯ãªãŒã³ã¢ãã & ã¬ã€ã¢ãŠãã«ãŒã«
Prettierã®PHPãšã³ãžã³ã¯ã¬ã€ã¢ãŠãã®ã¿ã«çŠç¹ãåœãŠãŠããŸãâã³ãŒãã®åäœã¯å€ãããŸããã
| é å | äœãæ£èŠåãããŸããïŒ | å©ç¹ |
|---|---|---|
| ã€ã³ãã³ã | èšå®ã«åºã¥ããã¹ããŒã¹ãŸãã¯ã¿ãã«ããäžè²«ããã€ã³ãã³ããµã€ãº | æéã®çµéã«ããæäœæ¥ã®ã€ã³ãã³ãã®ãããé€å»ããŸãã |
| ã¹ããŒã¹ | æŒç®åãã«ã³ããå¶åŸ¡æ§é ãããŒã¯ãŒãåšèŸºã®ã¹ããŒã¹ | åŒãšæ¡ä»¶ã®èªã¿ããããåäžãããŸãã |
| ãã¬ãŒã¹ãšããã㯠| ã¯ã©ã¹ã颿°ãå¶åŸ¡ãããŒã®ããã®å®å®ãããã¬ãŒã¹é 眮 | ã¹ã¿ã€ã«è«äºãé²ããå·®åãäºæž¬å¯èœã«ä¿ã¡ãŸãã |
| é å | å¿ èŠã«å¿ããŠè€æ°è¡ã§ã®èŠçŽ ãäžè²«ããæ«å°Ÿã«ã³ãã«ãŒã« | å€§èŠæš¡ãªèšå®é åãšãã€ããŒããæ¹åããŸãã |
| ç©ºè¡ | 颿°ãã¡ãœãããã¯ã©ã¹éã®é©åãªã°ã«ãŒãå | ãã¡ã€ã«ã«æç¢ºã§èªã¿ãããæ§é ãäžããŸãã |
å®è¡ã¢ãã« & å¶é
ãã©ãŠã¶ç°å¢ã§é«éãã€å®å šã«åäœããããã«èšèšãããŠããŸãã
| åŽé¢ | å€ / åäœ | åè |
|---|---|---|
| å®è¡ãšã³ãžã³ | Prettier + @prettier/plugin-php | ãã©ã°ã€ã³ãå©çšå¯èœãªå Žåã¯ãã©ãŠã¶å ã§å®è¡ãããŸãã |
| ãã©ãŒã«ãã㯠| å®å šãª`/api/php-formatter`ããã¯ãšã³ã | PHPãã©ã°ã€ã³ãã¯ã©ã€ã¢ã³ããµã€ãã§èªã¿èŸŒããªãå Žåã«ã®ã¿äœ¿çšãããŸãã |
| ã¿ã€ã ã¢ãŠã | çŽ25ç§ | ãã©ãŒãããã«æéãããããããå Žåããªã¯ãšã¹ãã¯äžæ¢ãããŸãã |
| æå€§å ¥åãµã€ãºïŒããã¹ãïŒ | çŽ2 MB | ãã©ãŒããã¿ãŒããžãã¯å ã®ããŒãã¬ãŒãã¬ãŒã«ã |
| æå€§ãã¡ã€ã«ãµã€ãºïŒã¢ããããŒãïŒ | çŽ5 MB | ããŒã«ã®`maxFileSizeBytes`èšå®ã§å®çŸ©ãããŸãã |
ãã©ã€ãã·ãŒãšã»ãã¥ãªãã£
ãã®ããŒã«ã¯ã髿©å¯ãªæ¬çªã³ãŒãã§ã¯ãªããæ¥åžžçãªéçºã¹ããããã察象ãšããŠããŸãã
| åŽé¢ | åäœ | |
|---|---|---|
| ã¯ã©ã€ã¢ã³ããµã€ããã©ãŒããã | ãã©ãŠã¶ã®Prettierã©ã³ã¿ã€ã ã䜿çšããæšå¥šãã¹ã | éåžžã®ç¶æ ã§ã¯ã³ãŒãããããã¯ãŒã¯çµç±ã§éä¿¡ããŸããã |
| ããã¯ãšã³ããã©ãŒã«ãã㯠| PHPãã©ã°ã€ã³ãèªã¿èŸŒããªãå Žåãã³ãŒãã¯HTTPSçµç±ã§å®å šãªãã©ãŒããããšã³ããã€ã³ãã«éä¿¡ãããŸãã | ãã©ãŒãããã®ã¿ã®äžæçãªå ¥åãšããŠåŠçãããŸãã |
| ã¹ãã¬ãŒãž | çã®å ¥åããŒã¿ãé·æéä¿åããæå³ã¯ãããŸããã | éçŽããããšã©ãŒ/ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã®ã¿ãåéãããå¯èœæ§ããããŸãã |
| ãã¹ããã©ã¯ãã£ã¹ | ã·ãŒã¯ã¬ãããã¢ã¯ã»ã¹ããŒã¯ã³ããã¹ã¯ãŒãããªã³ã©ã€ã³ãã©ãŒããã¿ãŒã«è²Œãä»ããªãã§ãã ããã | ã»ãã¥ãªãã£äžéèŠãªã³ãŒãã¯ããŒã«ã«ããŒã«ãšCIã§ç®¡çããŠãã ããã |
ã³ãã³ãã©ã€ã³PHPãã©ãŒãããïŒPrettier & PHP-CS-FixerïŒ
ãããžã§ã¯ãå ã§äœæ¥ããéã¯ãããŒã«ã«ããŒã«ããªããžããªå šäœã§äžè²«ããã¹ã¿ã€ã«ãé©çšããæé©ãªæ¹æ³ã§ãã
Node / npm
PrettierãšPHPãã©ã°ã€ã³ãã€ã³ã¹ããŒã«
npm install --save-dev prettier @prettier/plugin-phpPrettierãšãã®PHPãã©ã°ã€ã³ããããžã§ã¯ãã«è¿œå ããŸãã
åäžã®PHPãã¡ã€ã«ããã©ãŒããã
npx prettier --write src/Example.php --parser phpãã®ãªã³ã©ã€ã³ããŒã«ãšåãã¹ã¿ã€ã«ãé©çšããŸãã
ãããžã§ã¯ãå ã®ãã¹ãŠã®PHPãã¡ã€ã«ããã©ãŒããã
npx prettier "src/**/*.php" --parser php --writeã³ãŒãããŒã¹å šäœãäžè²«ããŠãã©ãŒãããããŸãã
PHP-CS-Fixer
Composerã§PHP-CS-Fixerãã°ããŒãã«ã«ã€ã³ã¹ããŒã«
composer global require friendsofphp/php-cs-fixerCLIããŒã«ãããã«åŒ·åãªPHPå°çšã¹ã¿ã€ã«ä¿®æ£ããŒã«ã远å ããŸãã
PSR-12ã«ãŒã«ã§å®è¡
php-cs-fixer fix src --rules=@PSR12`src`以äžã®ãã¹ãŠã®PHPãã¡ã€ã«ã«PSR-12ãé©çšããŸãã
PHPãã¥ãŒãã£ãã¡ã€ã¢ã®äžè¬çãªäœ¿çšäŸ
Laravel / Symfony / APIããã¯ãšã³ã
ãªãã¡ã¯ã¿ãªã³ã°ãã³ãŒãã¬ãã¥ãŒã®åã«ãã³ã³ãããŒã©ãŒããµãŒãã¹ãDTOãæŽçããŸãã
- HTTPã³ã³ãããŒã©ãŒãšãã©ãŒã ãã³ãã©ãŒã®ãã©ãŒããããæ£èŠåããŸãã
- ããŒã éã§å ±æããããµãŒãã¹ã¯ã©ã¹ãšãªããžããªãã¯ãªãŒã³ã¢ããããŸãã
- ãã€ã¯ããµãŒãã¹ãšAPIå šäœã§äžè²«ããã¹ã¿ã€ã«ã確ä¿ããŸãã
// Before
class OrderController extends Controller{public function store(Request $request){$order=$this->service->create($request->all());return response()->json($order,201);}}
// After
class OrderController extends Controller
{
public function store(Request $request)
{
$order = $this->service->create($request->all());
return response()->json($order, 201);
}
}
WordPress & ã¬ã¬ã·ãŒã³ãŒãããŒã¹
ãã¹ãŠãæžãçŽãããšãªããå€ãPHP 5 / 7ãããžã§ã¯ããçŸä»£çãªæšæºã«è¿ã¥ããŸãã
- ãããã°åã«ããŒããšãã©ã°ã€ã³ã®ã³ãŒããæŽåœ¢ããŸãã
- ãã¥ãŒããªã¢ã«ããã³ãããããä¹±éãªã¹ãããããã¯ãªãŒã³ã¢ããããŸãã
- ã¬ã¬ã·ãŒãã¡ã€ã«ã段éçã«PSR-12èŠçŽã«ç§»è¡ããŸãã
æè² & ã³ãŒãã¬ãã¥ãŒ
ãã©ãŒãããã䜿çšããŠããã¬ãŒã¹ã®é 眮ã§ã¯ãªãããžãã¯ãšã¢ãŒããã¯ãã£ã«çŠç¹ãåœãŠãŸãã
- äžè²«ããã¹ã¿ã€ã«ãå¯èªæ§ãåäžãããæ¹æ³ãåŠçã«ç€ºããŸãã
- ãã«ãªã¯ãšã¹ãã«ååŸã®äŸãæ·»ä»ããŠæ¹åç¹ã匷調ããŸãã
- ããã°èšäºãããã¥ã¡ã³ãã®ã³ãŒããµã³ãã«ã®ç°¡åãªå¥å šæ§ãã§ãã¯ãšããŠäœ¿çšããŸãã
// Example exercise: ask students to predict the formatted result
if($user&&$user->isAdmin()){logAction($user,"login");}
â Frequently Asked Questions
âãã®ããŒã«ã¯ã¢ãã³ãªPHP 8æ©èœããµããŒãããŠããŸããïŒ
ð§ã¿ãå¹ ã倿Žããããã¹ããŒã¹ã®ä»£ããã«ã¿ãã䜿çšã§ããŸããïŒ
ðè¡ã®æãè¿ãã¯ã©ã®ããã«åŠçãããŸããïŒ
ðç§ã®ã³ãŒãã¯ãµãŒããŒã«ã¢ããããŒããããŸããïŒ
APIã«ãã©ãŒã«ããã¯ããŸããã©ã¡ãã®å Žåããå
¥åã¯äžæçãªãã®ã§é·æçã«ä¿åãããããšã¯æå³ãããŠããŸããããæ©å¯æ
å ±ãé«åºŠã«ã»ã³ã·ãã£ããªããŒã¿ã®è²Œãä»ãã¯é¿ããã¹ãã§ããð§®ãã©ãŒãããã¯PHPã³ãŒãã®å®è¡æ¹æ³ã倿ŽããŸããïŒ
âïžãããžã§ã¯ãã§åãã¹ã¿ã€ã«ã匷å¶ããã«ã¯ã©ãããã°ããã§ããïŒ
Pro Tips
CIãã€ãã©ã€ã³ã«ãã©ãŒãããã¹ãããïŒPrettierãŸãã¯PHP-CS-FixerïŒã远å ããŠããã©ãŒããããããŠããªãPHPã`main`ãã©ã³ãã«å°éããªãããã«ããŸãããã
ãã«ãªã¯ãšã¹ããéãåã«ãã©ãŒããã¿ãå®è¡ããå·®åã空çœã§ã¯ãªãåäœå€æŽã«éäžããããã«ããŸãããã
å€§èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°ã§ã¯ãå°çšãã©ã³ãã§ãããžã§ã¯ãå šäœãäžåºŠãã©ãŒãããããããŒãžããåŸãè«ççãªå€æŽãå¥ã ã®PRã§è¡ããŸãããã
ãªã³ã©ã€ã³ããŒã«ã¯å ±æç«¯æ«ã®ããã«æ±ããŸãããïŒæ¬çªç°å¢ã®ã·ãŒã¯ã¬ãããå éšããŒãWebãã©ãŒã ã«è²Œãä»ããã®ã¯é¿ããŠãã ããã
Additional Resources
Other Tools
- CSSãã¥ãŒãã£ãã¡ã€ã¢
- HTMLãã¥ãŒãã£ãã¡ã€ã¢
- JavaScriptãã¥ãŒãã£ãã¡ã€ã¢
- PHPãã¥ãŒãã£ãã¡ã€ã¢
- ã«ã©ãŒããã«ãŒ
- ã¹ãã©ã€ãæœåºããŒã«
- Base64ãã³ãŒããŒ
- Base64ãšã³ã³ãŒããŒ
- C#ãã©ãŒããã¿
- CSVãã©ãŒããã¿
- Dockerfile Formatter
- Elmãã©ãŒããã¿
- ENVãã©ãŒããã¿
- Goãã©ãŒããã¿
- GraphQLãã©ãŒããã¿
- HCLãã©ãŒããã¿
- INIãã©ãŒããã¿
- JSONãã©ãŒããã¿
- LaTeXãã©ãŒããã¿
- Markdownãã©ãŒããã¿
- Objective-Cãã©ãŒããã¿
- Protoãã©ãŒããã¿
- Pythonãã©ãŒããã¿
- Rubyãã©ãŒããã¿
- Rustãã©ãŒããã¿
- Scalaãã©ãŒããã¿
- ã·ã§ã«ã¹ã¯ãªãããã©ãŒããã¿
- SQLãã©ãŒããã¿
- SVG ãã©ãŒããã¿
- Swift ãã©ãŒããã¿
- TOML ãã©ãŒããã¿
- Typescript Formatter
- XML ãã©ãŒããã¿
- YAML ãã©ãŒããã¿
- Yarn ãã©ãŒããã¿
- CSSãããã¡ã€ã¢
- Html Minifier
- Javascript Minifier
- JSONãããã¡ã€ã¢
- XML ãããã¡ã€ã¢
- HTTPããããŒãã¥ãŒã¢
- PDFããããã¹ããž
- æ£èŠè¡šçŸãã¹ã¿ãŒ
- SERPã©ã³ã¯ãã§ãã«ãŒ
- Whois ã«ãã¯ã¢ãã