Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

7,842 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. 第 2 回勉強会  2008/3/16 (日)
  2. 2. CakePHP で開発する時に 統一しておきたいコーディング内容
  3. 3. コーディング内容を統一すると・・・
  4. 4. 他人のソースでも解読しやすくなり、 開発効率もアップ
  5. 5. これから紹介する内容は、 あくまで提案です。 みんなでより良い方法を 模索できれば良いかな。
  6. 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. 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. 8. Smarty について Smarty は使わない
  9. 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. 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. 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. 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. 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. 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. 15. バリデーション(郵便番号) if (empty($zip)) { } elseif (!preg_match('/^[0-9]{7}$/', $zip)) { $this->invalidate('zip_pattern'); $validate_flg = 1; }
  16. 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. 17. バリデーション if ($validate_flg == 0) { return true; } else { return false; } 下記のように、バリデーションの戻り値は最後に返す。 まとめて返す事で利用者に分かりやすくするため。 (うまくまとめられないので、口頭で補足します)
  18. 18. コーディング( PHP の終了タグ) PHP のみで書いたソースでは終了タグ( ?> )を書かない。 LF にしていれば問題は無いが、習慣として書かないようにする。
  19. 19. コーディング(字下げ) 字下げをする時に、タブは使わない。 空白の半角 4 文字を使う。
  20. 20. コーディング(文字列) 文字列がリテラルの場合はシングルコーテーションで囲む。 $value = ‘ 一六社’ ; 変数の展開の場合はダブルコーテーションで囲む。 $message = “{$value} へようこそ” ;
  21. 21. コーディング(文字列の連結) 文字列の連結はピリオドを使う。 また、コードを読みやすくするためにピリオドの前後に半角スペースを入れる。 $value = ‘ かしも’ . ‘ ソフトウェア’ ;
  22. 22. コーディング(条件式) If 文などの条件式で条件を指定する括弧の前に空白をひとつ入れる。 また、条件指定の括弧を閉じた後にも空白をひとつ入れる。 括弧で囲まれた条件文の中では、演算子の前後にも空白を入れる。 波括弧は if 文の同行に記載する。 if ($value == ‘PHP’) { $message = ‘GOOD’; } else { $message = ‘BAD’; }
  23. 23. コーディング( class ・ function ) class と function の波括弧は 改行して記載する。 class TestsController extends AppController { function index() { } }
  24. 24. コーディング(コメント) コードの始めにページ概要・ URL ・最終更新者名・最終更新日を記載する。 /* * テストページ * * http://www.16g.jp/tests/ * * @modifiedby $LastChangedBy: あつ $ * @lastmodified $Date: 2008-03-16 10:00 $ */ class TestsController extends AppController { }
  25. 25. 終わり

×