タグ

ブックマーク / www.1x1.jp (6)

  • 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等)は

    kathew
    kathew 2016/07/06
    アクション毎にモデルを作るのは大事。1つのモデルが肥大化するのはそれ自体問題が山積み(保守性の悪化とか、過度な共通化とか) / try句の中には正常系しか書かないのはわかりやすくて良いなぁ
  • CakePHP モデルのvalidates()に注意

    Model#validates()ですが、「ちょっとどうなの?」な仕様になってます。 このメソッドはModel#save()内で自動的に呼ばれるのか、コントローラのアクションメソッド内で呼ばれるのが一般的な使い方だと思います。 問題が起こるのは後者の方で、空の配列をvalidates()に渡すと、Userl#$validateで何を定義していてもtrueが返ってきます。 下のソースならUserモデルの$validateに入力チェックをいれておけば「ng」が表示されそうですが、実はUser#$validateに関わらず「ok」が表示されてしまいます。 <?php class FooController extends AppController { var $uses = array('User'); function blank() { $this->data = array(); if

    kathew
    kathew 2015/11/26
    更新したい項目値しかsaveに投げられないわけだから、これは仕様的にも問題ないかと
  • CakePHP $_GET/$_POSTの値はどこに?

    PHPのスーパーグローバルの値をどのように参照すれば良いかまとめてみました。 Controller#dataやアクションメソッド引数のようにフレームワークで想定された使い方をしている分には特に問題無いのですが、ちょっと他のことをやろうとすると、どこに値が格納されているか分からず困った事がありました。 # もちろん$_GET/$_POSTを使えば値は取れますが、せっかくのフレームワークなのでなるべくその中で値を使いたいものです。 1. $_GET $_GETの値はController#params[‘url’]に格納されます。 ちなみに$_GET[‘url’]はURLルーティング(リクエストURIからコントローラ・モデル等を決定)で、$_GET[‘file’]は[app/webroot/js/vendors.php]で参照されています。 [http://example.com/foo/ind

  • vagrant-serverspec で TDD ライクにサーバ構築を行う

    Shin x blog Advent Calendar 2013 の 24 日目です。 先日リリースされた vagrant-serverspec を使って、テストドリブンなサーバ構築を行ってみました。 vagrant-serverspec は、サーバ、インフラの状態をテストするツール serverspec を Vagrant のプロビジョナとして実行できるプラグインです。これを使うことで、vagrant コマンドから、serverspec のテストを実行することができます。 詳しくは、@ryuzee さんの下記エントリを参照して下さい。 vagrant-serverspecを使ってプロビジョニング結果をテストする | Ryuzee.com 仕様 今回構築するサーバの仕様は下記です。PHP 5.5.x をインストールして、ビルトインサーバを起動するというものです。(※ちなみにビルトインサーバ

  • CakePHP Modelに関する6つの誤解

    CakePHPのModelはActiveRecordライクなDBアクセス方法を提供しており、さらにアソシエーションを設定することにより複数テーブルの値を同時に操作できるなど、DB操作に対するインターフェイスが数多くあります。 ただ「手軽にDB操作ができる」という印象が先行しているゆえ誤解を招くことがあるようです。 1. クラス名に対応したテーブルしか操作できない Modelのクラス名とテーブルを自動でマッピングするのはフレームワークのいわば便利機能です。デフォルトでそのような動作をするだけで、容易に変更することができます。 Model#$useTableにテーブル名を指定すれば任意のテーブルを操作できます。 <?php class Foo extends AppModel { public $useTable = 't_user'; // t_userテーブル } ?> 2. DBを使わな

  • Google+を2週間使って分かったこと、感じたこと15

    Googleが開始したSNSGoogle+にすっかりはまっています。ここ2週間ほど使ってみて分かったTipsを書いてみます。 Google+(グーグルプラス)は、Googleが運営してるソーシャルサービスです。 Googleのソーシャルサービスといえば、これまで幾つかありましたが、どれもいまひとつ盛り上がり切らなかった感があり、2011/06/29 にクローズドテストが始まった直後は静観していました。 しかし、せっかく招待状を頂いたので、登録して使っていくうちにどっぷりハマっていくことになりました。 ここ 2 週間使ってみた中で、見えてきた点を書いてみます。 このエントリは、2011/07/14 時点の内容です。Google+は日々改良が重ねられていますので、もしかするとあなたが読んでいる今は内容が変わっているおそれがあります。ご注意を。 1. どうやってはじめれば良い? 現在はクローズ

    kathew
    kathew 2011/07/16
    サークルはTwitterで言う所のリストに当たるのかしら..._φ(・ω・` )
  • 1