タグ

cakePHPに関するjoan9のブックマーク (16)

  • CakePHP Modelとの付き合い方(CakePHP Advent Calendar 2010 3日目)

    CakePHPのModelに悩む人が多いようなので、自分なりの付き合い方(考え方)をご紹介します。 CakePHP Advent Calendar 2010の3日目です。 前日の k1LoW さんのエントリ、参考になりますね。GETのフォームをdata[]でやるとURLがすんごいことになるので、ウチでは別途対応できるライブラリを作ったりしてます。 さて、3日目の今日は書きたいネタは幾つかあったのですが、「君の当たり前に僕らは感嘆させられるんだ」の精神に従って、自分なりのModelの使い方、考え方を書いてみます。 1. 適正なインターフェイスを用意して処理をカプセル化 まず基的な考え方。 Model(に限らずですが)では、処理単位でインターフェイス(メソッド)を用意して、実装はカプセル化しておきます。 こうすることによって、Modelを利用する側(Controllerや他のModel等)は

  • Cake php + php unitによる実践的ユニットテスト

    18. 変更への強さ コードの変更 バグの発見 厳密なテスト 変更に弱い より多くのバグを発見できる 寛容なテスト 変更に強い 発見できるバグは限られる テストの厳密性と発見できるバグの関係 19. 具体例:アサートの使い分け $actual = $this->Sample->getSomething(); $this->assertInternalType("array", $something); $this->assertEquals($expected, $something); 寛容なアサート:戻り値の型チェックのみ 厳密なアサート:等価かどうかのチェック 実行

    Cake php + php unitによる実践的ユニットテスト
  • CakePHP2のテストで、$defaultのDBを見に行ってしまう話し – 5丁目通信(仮称)

    とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。 CakePHP2でテストするときに、/app/Config/database.phpの$testではなくて$defaultで指定したDBを見に行ってしまいます。こちらの対処方法のメモ。 テーブルにtext型の項目があると、memoryではなくてMyISAMでテストのテーブルを自動的に作りに行きます。この辺りが関係しているかもしれません。こちらはbakeすると、Fixtureの$fieldsの中にtableParametersに設定されています。 テストの途中でexit()して上げると、$testのほうのDBにテストのためのテーブルをFixtureからcreate tableしてくれていることを確認できます。しかし、テストケースでは、$defaultのほうのDBを見

    CakePHP2のテストで、$defaultのDBを見に行ってしまう話し – 5丁目通信(仮称)
  • CakePHP/Jenkins/Phing - Run all unit tests

    I'm in the middle of my first ever stab at setting up Jenkins to build and run unit tests /code coverage with my CakePHP project. So far I have successfully got Jenkins fetching and building automatically from my BitBucket repository - a small victory in itself. Next thing I want to happen is for the unit tests to run and code coverage reports to be populated. Here is my build.xml, which is being

    CakePHP/Jenkins/Phing - Run all unit tests
  • 「CakePHP2+Jenkinsで継続的インテグレーション」について話してきました - kaz29

    週末に行われた「(CakePHPとか)PHPのテストについての勉強会」@Co-Edoで、「CakePHP2+Jenkinsで継続的インテグレーション」について話してきました。 今回は、CIの概念とかメリットに関してはこことか、ここなど先人のすばらしい資料に丸投げし(^^;、実際にCakePHP2でCIする際の流れやビルドの設定方法などを中心に話しました。割と突発的に行われた勉強会だった印象なのに非常に中身の濃い勉強会で僕自身もとても勉強になりました! 僕の発表は資料だけみてもちょっと分かりにくそうなので以下補足です。 Jenkinsの設定 実際の設定は以下を見て、このページに紹介されている「Job Template」をコピーする方法を使えば、あとで紹介するbuildファイル用の設定が一通り完了しているJobを簡単に作れるかと思います。 CakePHP2用のBuildファイル サンプル(An

    「CakePHP2+Jenkinsで継続的インテグレーション」について話してきました - kaz29
  • 俺のコントローラのprotectedがpublicなわけがない | GeNERACE labo

    こんにちは。 最近、東北TECH道場(仙台道場)でAndroidの講師してます、GeNERACE CTOけんたろです。 今回は東北TECH道場で行なっている活動やハックについて書こうと思いましたが、弊社の仕事でCakePHP(v2.3.1)を使っていて気になったことについてメモします。 突然ですが・・・PHPのアクセス修飾子は4つあります 種類 アクセス範囲 public どこからでもアクセス可 protected 親子関係のあるクラスからアクセス可 private 記述したクラスからのみアクセス可 (なし) publicと同じ 例えば以下のようにコードを書いて実行した場合、 TestClass1.class.php <?php class TestClass1 { protected $test = 1; } TestClass2.class.php <?php require_once

  • CakePHPの組み込みバリデーションルールを理解する(email編) | バシャログ。

    CakePHPを使ったアプリケーションを開発する中で、メール送信用データのモデルを作成していたときのこと。 CakePHP1.2で追加された強力なValidation機能を使って、データの入力チェックを作成していました。 メールアドレスを格納するフィールドに対しては、もちろんValidation::emailを利用。 デフォルトのルールで大丈夫でしょう、と深く考えずマニュアルのサンプルのように単に「 var $validate = array('email' => array('rule' => 'email')); 」としたところ、実際のデータがたくさんエラー判定されてしまいました。それらはすべて携帯メールアドレス。 理由がわからなかったので、ここでようやく Validation::email 体を覗いてみることに。 ソースコードの場所は (インストールdir)/cake/libs/v

    CakePHPの組み込みバリデーションルールを理解する(email編) | バシャログ。
  • CakePHPでユニットテストする際に気をつけること

    今やっている案件ではCakePHPを使ったアジャイル開発で、当然テストも自動化している。 テストの自動化を徹底的にやったので楽なんだけど、次回の案件のためにどういう観点でテストを組んでおくと良いか、またどこに嵌りがあるかメモとして残しておく。 CakePHPに限らない話 テストしやすい実装にする。例えばメソッドに複数の異なる役割を持たせない。引数と戻り値が明確。適切な行数など MVCの複数レイヤーにまたがる処理を書かない。例えばコントローラの中でSQLじゃぶじゃぶ投げたり、バリデーションチェックをぐちゃぐちゃやったりしない 自動でテスト実行できる仕掛け作り。例えばPHPならphpUnderControl。JAVAならCruiseControlとかHudson。 基に返って、テストを先に書くという意識付け テストがいっぱいありすぎたら今度はテストのリファクタリング。似たようなテストがコピペ

    CakePHPでユニットテストする際に気をつけること
  • CakePHPでSQLエラーメッセージを取得する - 看招 血染東方一片紅

    SQLエラーで判定をしたかったんだけどModelにメソッドがなくてハマった。 調べたのでメモ。 $db =& ConnectionManager::getDataSource($this->useDbConfig); $message = $db->lastError(); APIのページはすごく使える。 参考にしたページ CakePHP DboSourceをPHP5らしく使う

    CakePHPでSQLエラーメッセージを取得する - 看招 血染東方一片紅
  • CakePHPで複合ユニークキーのバリデーションを行う方法 - (DxD)∞

    データベースのユニークキー制約 データベースにおいて、複数のフィールド(カラム)値の組み合わせがユニークであることを保証するためには、データベーステーブルのカラムにユニークキー制約を定義します。 CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) unsigned NOT NULL auto_increment, `first_name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `first_name_last_name` (`first_name`,`last_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; これで「first_

  • CakePHP2.0のキャッシュとレスポンス(CakePHP Advent Calendar 2011 8日目)

    この記事はCakePHP Advent Calendar 2011に参加しています。 cakephp2.0でmodelキャッシュやviewキャッシュってあるけど、実際使ったらレスポンスってどうなるの?というのを検証してみたいと思います。 前提 環境は以下で試しております。 さくらVPS512(512M) centOS 5.6 apache 2.2.3 mysql 5.5 php 5.2 cakephp 2.0.4 apc 3.1.9 今回初めてcakephp2.0触ったのですが、これを期にcakephp.orgに寄付しました(ドヤッ(キリッ 円高の今がチャンスです! 検証方法 簡単なページ(レコード10万件から10件ランダムに抽出して一覧表示するページ)を作って、abを使ってRequests per secondの値を見て、比較していきます。 比較順は以下 デフォルト(そのまま) mod

    CakePHP2.0のキャッシュとレスポンス(CakePHP Advent Calendar 2011 8日目)
  • CakePHPのコーディング規約違反をPHP_CodeSnifferでチェックする #CakephpAdvent2011 : candycane development blog

    この記事はCakePHP Advent Calendar 2011に参加しています。 記述したコードの表記ゆれを防ぐ為の手法としてコーディング規約があります。見通しが良く一貫性のあるスタイルで記述されたコードはメンテナンス性を維持する助けになり、コードレビューの際の不毛な論争を少し減らす手助けになります。今回はCakePHPでアプリケーションを開発する際にコーディング規約を適用する方法を検討してみます。 どのコーディング規約を適用するか PHPではPEARのコーディング規約が一般的に知られていますが、PEARはライブラリという事もありこの規約をそのままアプリケーションの実装に適用するのは冗長かもしれません。また同様にZendフレームワークやSymfonyもコーディング規約を持っています。 CakePHPでアプリケーションを実装する場合を考えてみても、PEARのスタイルはCakePHPが採

  • http://atnd.org/events/22721

    http://atnd.org/events/22721
  • CakePHPで簡単にメンテナンスモードを実装するMaintenanceコンポーネントを書いてみたよ。

    INSPIRE TECH > その他 > CakePHPで簡単にメンテナンスモードを実装するMaintenanceコンポーネントを書いてみたよ。 CakePHPで開発したアプリケーションを公開する際、たとえばバグの修正やデータベースのアップデートを行う場合など、サイトの全機能をいったん止めて、バックエンドで作業したいことがあるかと思います。 エントリポイントであるAPP/webroot/index.phpを差し替えるという強硬手段もあるかと思いますが、もっと手軽に実現するためのMaintenanceコンポーネントを作成してみたので公開します。 利用可能な環境 下記環境で作成・テストを行っています。 PHP 5.3.1 CakePHP 1.3.11 PHP4系列では動作しません。 また、CakePHP1.2以前では動作するかわかりません。 ダウンロードと設置 下記ソースコードを、mainte

    CakePHPで簡単にメンテナンスモードを実装するMaintenanceコンポーネントを書いてみたよ。
  • 【戯れ言】PHPフレームワーク選択のベストプラクティス - yandod's blog

    【戯れ言】symfonyはCakePHPよりは大規模向けです - ぷぎがぽぎ すでに過去の資料に言及されていますが、敢えて釣られてみます。 自分の基的なスタンスとしては大規模であろうと小規模であろうと好きなフレームワークを使って開発するのが良いと思います。 結局のところ同じ程度に成熟していればどのフレームワークを使っても、レアなケースを除いて望んだアウトプットが得られると思います。 ただそれぞれのフレームワークにベストプラクティスというか勝ちパターンのようなものはあると思います。 業務での利用について自分なりに知っていると思えるCakePHPとsymfonyについて勝ちパターンを考えてみました。 CakePHPのベストプラクティス PHPのコーディングかRailsの経験者がチームに居る 連想配列が中心となるデータモデルに慣れる 各種日語書籍で全体感をつかんでおく 開発のイメージにフレー

    【戯れ言】PHPフレームワーク選択のベストプラクティス - yandod's blog
  • へぼへぼCTO日記 - そろそろCakePHPについて一言言っておくか

    前回のエントリを見てくれた人がCakePHPのtracにこれ脆弱性じゃね?ってチケットを立ててくれたよ!で、見に行ってみたらCakePHPのエライ人がこんな回答をしてくれてたよ! #5842(getClientIP() possiblly return false IP address) this is not a security exploit in Cake, but should certainly be something to be aware of when building an application. 超意訳: CakePHPの脆弱性ではありません。「仕様です」。だからアプリケーション構築するさいはちゃんと知っとくべきことだよね! オーケー、分かった。確かにこれはCakePHPの脆弱性ではなかった。CakePHPを使っていた僕らの脆弱性だったんだ。オーケー、前言は撤回す

    joan9
    joan9 2009/04/14
    > 超意訳: CakePHPの脆弱性ではありません。「仕様です」。だからアプリケーション構築するさいはちゃんと知っとくべきことだよね! オーケー、分かった。確かにこれはCakePHPの脆弱性ではなかった。CakePHPを使っていた僕ら
  • 1