Your SlideShare is downloading. ×
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

CakePHPで開発する時に統一しておきたいコーディング内容(080316)

7,368

Published on

一六社で行った第2回SE勉強会の資料です

一六社で行った第2回SE勉強会の資料です

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,368
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. 第 2 回勉強会  2008/3/16 (日)
    • 2. CakePHP で開発する時に 統一しておきたいコーディング内容
    • 3. コーディング内容を統一すると・・・
    • 4. 他人のソースでも解読しやすくなり、 開発効率もアップ
    • 5. これから紹介する内容は、 あくまで提案です。 みんなでより良い方法を 模索できれば良いかな。
    • 6. DocumentRoot について if (!defined('ROOT')) { define('ROOT', ‘path/to/cakephp/'); } if (!defined('APP_DIR')) { define('APP_DIR', 'app'); } DocumentRoot 内に app/webroot/ 以下を移動させます。 移動させた DocumentRoot 内の index.php の先頭に下記を追加します。 参考:「 CakePHP ガイドブック P.299 15-1-3 」 フォルダ名はそれぞれ下記の通りとします。 DocumentRoot => public_html   /   CakePHP => cakephp
    • 7. URL の最後にスラッシュを付けよう [app/app_controller.php] class AppController extends Controller { function beforeFilter() { if (isset($this->params['url']['url'])) { $uri = $this->params['url']['url']; if (substr($uri, -1) != '/') { $this->redirect($uri . '/', 301); exit; } }     } } 参考: (D×D) CakePHP で URI の形式を統一する http://dxd8.com/archives/4/
    • 8. Smarty について Smarty は使わない
    • 9. title タグ・ meta タグを各コントローラで指定しよう [app/controllers/tests_controller.php] class TestsController extends AppController { function index() { // ページタイトル $this->pageTitle = ‘ 勉強会ブログ’ ; // メタタグキーワード $keywords = ‘CakePHP,php,JavaScript’; $this->set(‘keywords’, $keywords); // メタタグ概要 $description = ‘SE 勉強会を一緒にやりませんか??’ ; $this->set('description', $description);     } } title タグ・ meta タグを直接ビューに書く場合を除き、 各コントローラ(アクション)で指定できるようにしよう。
    • 10. title タグ・ meta タグを各コントローラで指定しよう(続き) [app/app_controller.php] class AppController extends Controller { function beforeFilter() { // ページタイトル(デフォルト) $this->pageTitle = ‘ 勉強会ブログ’ ; // メタタグキーワード(デフォルト) $keywords = ‘CakePHP,php,JavaScript’; $this->set(‘keywords’, $keywords); // メタタグ概要(デフォルト) $description = ‘SE 勉強会を一緒にやりませんか??’ ; $this->set('description', $description);     } } 各コントローラ(アクション)の指定方法は前のページの通り。 全てのページで書くのは面倒なので、デフォルト値を設定しておこう。
    • 11. title タグ・ meta タグを各コントローラで指定しよう(続き 2 ) <title><?php echo $title_for_layout; ?></title> <meta name=&quot;keywords&quot; content=&quot;<?php echo $keywords; ?>&quot; /> <meta name=&quot;description&quot; content=&quot;<?php echo $description; ?>&quot; /> ビューの書き方は下記の通り。
    • 12. バリデーション(テキスト) if (empty($user_name)) { $this->invalidate('user_name'); $validate_flg = 1; } elseif (mb_strlen($user_name) > 100) { $this->invalidate(‘user_name_mojisuu'); $validate_flg = 1; }
    • 13. バリデーション(メールアドレス) if (empty($mail)) { } elseif (mb_strlen($mail) > 500) { $this->invalidate('mail_mojisuu'); $validate_flg = 1; } elseif (!preg_match('/(?:^([a-z0-9][a-z0-9_]*)@([a-z0-9][a-z0-9]{0,63}(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)/i', $mail)) { $this->invalidate('mail_pattern'); $validate_flg = 1; } else { $mail_array = explode('@', $mail); if (!checkdnsrr($mail_array[1], 'MX') && !checkdnsrr($mail_array[1], 'A')) { $this->invalidate('mail_pattern'); $validate_flg = 1; } }
    • 14. バリデーション( URL ) if (empty($url)) { } elseif (mb_strlen($url) > 2000) { $this->invalidate('url_mojisuu'); $validate_flg = 1; } elseif (!preg_match('/^https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+$/', $url)) { $this->invalidate('url_pattern'); $validate_flg = 1; }
    • 15. バリデーション(郵便番号) if (empty($zip)) { } elseif (!preg_match('/^[0-9]{7}$/', $zip)) { $this->invalidate('zip_pattern'); $validate_flg = 1; }
    • 16. バリデーション( TEL ) if (empty($tel)) { $this->invalidate('tel'); $validate_flg = 1; } elseif (!preg_match('/^[-0-9]{10,13}$/', $tel)) { $this->invalidate('tel_pattern'); $validate_flg = 1; }
    • 17. バリデーション if ($validate_flg == 0) { return true; } else { return false; } 下記のように、バリデーションの戻り値は最後に返す。 まとめて返す事で利用者に分かりやすくするため。 (うまくまとめられないので、口頭で補足します)
    • 18. コーディング( PHP の終了タグ) PHP のみで書いたソースでは終了タグ( ?> )を書かない。 LF にしていれば問題は無いが、習慣として書かないようにする。
    • 19. コーディング(字下げ) 字下げをする時に、タブは使わない。 空白の半角 4 文字を使う。
    • 20. コーディング(文字列) 文字列がリテラルの場合はシングルコーテーションで囲む。 $value = ‘ 一六社’ ; 変数の展開の場合はダブルコーテーションで囲む。 $message = “{$value} へようこそ” ;
    • 21. コーディング(文字列の連結) 文字列の連結はピリオドを使う。 また、コードを読みやすくするためにピリオドの前後に半角スペースを入れる。 $value = ‘ かしも’ . ‘ ソフトウェア’ ;
    • 22. コーディング(条件式) If 文などの条件式で条件を指定する括弧の前に空白をひとつ入れる。 また、条件指定の括弧を閉じた後にも空白をひとつ入れる。 括弧で囲まれた条件文の中では、演算子の前後にも空白を入れる。 波括弧は if 文の同行に記載する。 if ($value == ‘PHP’) { $message = ‘GOOD’; } else { $message = ‘BAD’; }
    • 23. コーディング( class ・ function ) class と function の波括弧は 改行して記載する。 class TestsController extends AppController { function index() { } }
    • 24. コーディング(コメント) コードの始めにページ概要・ URL ・最終更新者名・最終更新日を記載する。 /* * テストページ * * http://www.16g.jp/tests/ * * @modifiedby $LastChangedBy: あつ $ * @lastmodified $Date: 2008-03-16 10:00 $ */ class TestsController extends AppController { }
    • 25. 終わり

    ×