狠狠撸
Submit Search
PSR-1 と PSR-2 を5分でざっくり理解する
?
Download as PPTX, PDF
?
7 likes
?
17,940 views
Wataru Terada
Follow
PHP の PSR-1 と PSR-2 を 5分 でざっくり理解するためのスライド。
Read less
Read more
1 of 57
Download now
More Related Content
PSR-1 と PSR-2 を5分でざっくり理解する
1.
PSR-1 と PSR-2
を 5分でざっくり理解する 2016-01-13 PHP BLT #2 GMOリサーチ 寺田 渉 Facebook: twitter: github: 寺田渉 @wa_terada waterada
2.
自己紹介(仕事) - PHP (CakePHP)
を主に使って開発 - 継続的インテグレーション - github + git flow で運用 - PHPUnit で カバレッジ 100% - Behat (Selenium Driver 経由の画面テスト) 利用 - vagrant で開発環境構築
3.
自己紹介(趣味) CakePHP 公式ドキュメント 翻訳
4.
自己紹介(趣味) ボードゲーム 翻訳
5.
自己紹介(趣味) TED 翻訳
6.
プログラミング & 翻訳 大好き人間です 自己紹介
7.
CakePHP に issue
を立てて、 修正を pull request してみた という記事を Qiita で公開致しました。 コーディングスタイル違反 の指摘が 結構ありまして、今一度、 PSR-1, PSR-2 を復習しておこう と思った次第です。
8.
PSR-1 基本コーディング規約 PSR-2 コーディングスタイル 今日、伝えたいこと! サクッと理解してしまおう。
9.
これから問題を出します。 2つの書き方が出ますので、 1 番が PSR
準拠 だと思ったら 手を挙げてください。 で、今日のルール
10.
PSR-1 基本コーディング規約 まずは
11.
<?php $text = "abc"; どっちが準拠? <? $text
= "abc"; 1. 2.
12.
<?php $text = "abc"; どっちが準拠? 1. <?php
か <?= のみ可!
13.
どっちが準拠? 1. 2. PHP ファイルは... BOM付き UTF-8 BOM無し
UTF-8
14.
どっちが準拠? PHP ファイルは... BOM無しで! 2. BOM無し
UTF-8
15.
<?php $aaa = 1; どっちが準拠? <?php $aaa
= 1; define('AAA', 1); 1. 2. aaa_config.php <?php define('AAA', 1); aaa_define.php aaa.php
16.
どっちが準拠? 呼んだだけで動く(副作用有)系 と、 宣言系 は一緒のファイルに書いちゃダメ。 1. <?php $aaa
= 1; aaa_config.php <?php define('AAA', 1); aaa_define.php
17.
class xAbc extends
... どっちが準拠? class XAbc extends ... 1. 2.
18.
どっちが準拠? クラス は 大文字始まり! class
XAbc extends ...2.
19.
public function getValue() どっちが準拠? public
function get_value() 1. 2.
20.
どっちが準拠? メソッド は 小文字始まりのキャメル。 public
function getValue()1.
21.
const MAX_VALUE =
1; どっちが準拠? const maxValue = 1; 1. 2.
22.
どっちが準拠? 定数 は 大文字! const
MAX_VALUE = 1;1.
23.
PSR-2 コーディングスタイル 次に
24.
$a = TRUE; どっちが準拠? $a
= true; 1. 2.
25.
どっちが準拠? 予約語 は 小文字で
! $a = true; 2.
26.
public function getValue() どっちが準拠? public
function getValue() 1. 2. ^^^^ スペース4つ でインデント ^^^^ TAB でインデント
27.
どっちが準拠? インデント は 半角スペース
で! 1. public function getValue() ^^^^ スペース4つ でインデント
28.
}[EOF] どっちが準拠? } [EOF] 1. 2. ファイルの末尾に改行なし ファイルの末尾に改行あり
29.
どっちが準拠? 末尾の改行 必須! } [EOF] 2. ファイルの末尾に改行あり
30.
namespace AaaBbb; use AaaCcc; class
Ddd extends ... どっちが準拠? namespace AaaBbb; use AaaCcc; class Ddd extends ... 1. 2. ← 空白行 ← 空白行 ← 空白行
31.
どっちが準拠? namespace、use、class の間には 空白行! 1. namespace AaaBbb; use
AaaCcc; class Ddd extends ... ← 空白行 ← 空白行
32.
class Foo { public function
get() { どっちが準拠? class Foo { public function get() { 1. 2.
33.
どっちが準拠? クラス, メソッド の
{ の前では 改行! 1. class Foo { public function get() {
34.
if ($aaa) { どっちが準拠? if ($aaa)
{ 1. 2.
35.
どっちが準拠? if の {
の前では改行 しない! if ($aaa) {2.
36.
$f = function() { どっちが準拠? $f
= function() { 1. 2.
37.
どっちが準拠? クロージャ の {
の前では改行 しない! $f = function() {2.
38.
$a = function()
{ return 1; }; どっちが準拠? 1. 2. $a = function() { return 1; };
39.
どっちが準拠? クロージャの { と
} が 同じ行ではダメ! 2. $a = function() { return 1; };
40.
public static function
is() どっちが準拠? 1. 2. abstract public function is(); static public function is() public abstract function is();
41.
どっちが準拠? この順 で! public static
function is()1. abstract public function is();
42.
if ($a) { どっちが準拠? 1. 2.
if($a){
43.
どっちが準拠? 空白必須! if ($a) {1.
44.
for ($i =
0 ; $i < 3 ; $i++) { どっちが準拠? 1. 2. for ($i = 0; $i < 3; $i++) {
45.
どっちが準拠? ; の前 に空白
不要! 2. for ($i = 0; $i < 3; $i++) {
46.
$a = function
($a, $b) use ($c) { どっちが準拠? 1. 2. $a = function($a, $b) use($c) {
47.
どっちが準拠? クロージャの function, use
の前後 に 空白 必須! $a = function ($a, $b) use ($c) { 1.
48.
class A extends
B implements C, D { どっちが準拠? 1. class A extends B implements C, D { 2.
49.
どっちが準拠? class, extends, implements
は 絶対に 同じ行 ! interface を改行で書くなら1行1つ! (※改行せずに全てを1行にしてもいい。) class A extends B implements C, D { 1.
50.
public function abc( $a,
$b) { どっちが準拠? 1. public function abc( $a, $b ) { 2.
51.
どっちが準拠? public function abc( $a, $b )
{ 2. 複数行にするなら 1行につき1引数まで!
52.
$array = array_map( function
($arg) use ($var) { // ... }, $array ); どっちが準拠?1. $array = array_map(function ($arg) use ($var) { // ... }, $array); 2.
53.
どっちが準拠? クロージャは 必ず改行することになる ので 上記のようなパターン
になる! $array = array_map( function ($arg) use ($var) { // ... }, $array ); 1.
54.
switch ($expr) { case
1: echo 'A'; // no break case 2: case 3: echo 'B'; break; } どっちが準拠? 1. 2. switch ($expr) { case 1: echo 'A'; case 2: case 3: echo 'B'; break; }
55.
どっちが準拠? 空でないcase でわざと breakしない
なら その旨の コメント必須 ! switch ($expr) { case 1: echo 'A'; // no break case 2: case 3: echo 'B'; break; } 1.
56.
以上、ご静聴ありがとうございました。 <?php か <?=
のみ BOM無し UTF-8 副作用有無でファイル分ける 大小文字: クラス名 大小文字: メソッド名 大小文字: 定数名 大小文字: true/false/null インデント ファイル末尾の改行 namespace 周りの空行 {}の改行: クラス/メソッド Facebook: twitter: github: 寺田渉 @wa_terada waterada {}の改行: if {}の改行: クロージャ { {}の改行: クロージャ } static/abstractの位置 前後の空白: if 前後の空白: for 前後の空白: クロージャ 複数行: クラス 複数行: 引数 複数行: 引数でクロージャ switch でコメント必須
57.
参考情報: ? 承諾された PSR
が置いてある公式github ? PSR-1 (英語) ? PSR-2 (英語) ? 上記を翻訳してくれているサイト (infinite loop様の技術ブログ) ? PSR-1 (日本語) ? PSR-2 (日本語)
Download