Consider this code: Controller Code <?php App::uses('AppController', 'Controller'); class UsersController extends AppController { public $components = array( 'Security', 'Session' ); public function example() { if ($this->request->is('post')) { $this->set('some_var', true); } } } View Code <?php echo $this->Form->create(); echo $this->Form->input('name'); echo $this->Form->end('Submit'); Since I h
毎年恒例のCakePHPの公式カンファレンス、CakeFestが2014年8月21日にスペイン、マドリードにてワークショップ2日間、カンファレンス2日間の合計4日間で開催されました。 今回も講演を採択されたので参加してきましたが、ハイライトをご紹介します。 スペイン開催により欧州参加者多数 今回はスペイン、マドリードが開催地に選ばれました。ヨーロッパで開催される場合はイギリス、マンチェスターが直近では3回連続で選ばれていました。 目新しい開催地という事でやはり地理的に近いスペインやヨーロッパ諸国からの参加者が多く非常に活況でした。 エストニアやフィンランド、ノルウェーなどから来た開発者の方に会うことができ面白い話を聞くことができました。 ウェブサイトなどを見ていても感じにくい点ですが、CakePHPの利用者は多様性が実に高くさまざまな国で利用が進んでいます。 参加者数も130人弱という事で
PHPUnit has hinted at parallelism since 2007, but, in the meantime, our tests continue to run slowly. Time is money, right? ParaTest is a tool that sits on top of PHPUnit and allows you to run tests in parallel without the use of extensions. This is an ideal candidate for functional (i.e Selenium) tests and other long-running processes. ParaTest at your Service ParaTest is a robust command line to
こんにちは。前回のPhakeのモックでCakePHPをテスト コントローラ篇にもレスポンスが頂けて嬉しいです。天の声に耳を傾けていると(ただのエゴ・サーチです…)素敵なご指摘が聞けたので、改訂版として掲載します。予定していた「コンポーネント篇」は改訂版のおかげで不要になりました! 準備も少なくて済む画期的な方法です。 ControllerでPhakeモックを使いたいという背景については前回の記事をそのまま残しますのでご参照ください。 -- ※本記事ではCakePHPにPhakeを導入する手法について解説しています。Phake自体の使い方やPHPUnit標準モックとの比較は過去の記事にて紹介しています。 2段階のサブクラスを作成する 前回と同じく、CakePHPのControllerTestCaseから機能を拡張するためMyControllerTestCaseを作成します。abstract
140313追記: 以下の方法を使わずに更にシンプルに準備できる改訂版を掲載しました。以下は古い内容をそのまま載せています。 -- 前回のPhakeのモックでCakePHPをテスト モデル篇の続きです。PhakeはPHPUnit標準のモック機構と違いWhen, Verifyに分けて定義を記述できる点が特徴で、流れを追いやすく一行もシンプルで済む今おすすめのモック・フレームワークです。 さて、このPhakeをCakePHPのController Testで活用しようとすると、いきなり壁にブチ当たります。 CakePHPはPHPUnitを標準採用している 幸か不幸かCakePHPはPHPUnitを標準で採用しており、高い親和性で書けるのが特徴ですが、Phakeといった外部テスト・フレームワークの入る余地は少なくなっています。 どうにかPhake一本でControllerのモック化が出来ないもの
nojimage/cakephp-environment 環境に応じた設定を行うためのプラグインを公開しています。 環境はファイルベースで判別するので、開発環境と本番環境の切り替えをスムーズに行うことができます。 また、各環境ごとに設定を別ファイルとして管理するので、本番環境では開発環境の設定情報を含めないといった運用が容易にできます。 開発環境、本番環境でのデータベース設定やメール設定の変更、デバックモードの切り替えなどに利用できます。 導入方法などは、以下のWikiを参考にしてください。 Home · nojimage/cakephp-environment Wiki コード自体は3年ほど前からあったんですが、なんだかんだで公開していませんでした。
https://github.com/primeminister/cake-master-slave-setup こちらをCakePHP 2.xに対応させたものです。 ついでに色々いじったのでオリジナルとは使い方が違います。 app/Model/Datasource/Database/MysqlMasterSlave.php <?php App::uses('Mysql', 'Model/Datasource/Database'); /** * https://github.com/primeminister/cake-master-slave-setup をCake 2.xに対応させたもの。 */ class MysqlMasterSlave extends Mysql { public $description = "MySQL DBO Driver with support for
便利らしい。調べよう。fileBinderの例文で使われているので調べた。多分これだろう。 24時間cakePHP Transitionコンポーネント1.0 24時間cakePHPといのはいい名前だな。 ↓TransitionComponentの紹介記事 TransitionComponent for CakePHPで簡単確認画面実装 Transition Componentは、セッションと、主にCakePHPのモデルバリデーションの機能を利用してページ遷移を管理しており、 使いこなすとページ遷移管理を非常にすっきりとしたコードで実現することができます。 これはフォーム入力→確認画面→完了画面みたいなやつをすっきりと書けるということだなー!いいねえ。 追記:cakePHP2.3でTransitionコンポーネントを使ってみる 使ってみたらかなり便利だった。まだ初歩的な使い方しかしてないけど
Introduction - FriendsOfCake/crud 「FriendOfCake/crud」ってなに? とりあえずこのスライドを見て欲しい。 まぁ要するに、今までのごちゃごちゃしてたControllerがスッキリして、API化させるのもめっちゃ楽になるよ!っていうPluginです。 わたしが注目してるところはココ! 今までは、Controllerでの処理をPlugin化するのは難儀だった。Controllerから呼び出されるViewはApplicationごとに違ってくるし、むりやりComponent化してみたけどしっくりこない感じで、どう実装しようか悩んでいたところこのPluginが登場! Class EditCrudAction | FriendsOfCake/crud (develop) 上のコードを見て欲しいんだけど、Controllerでの処理の流れはCrudAct
概要 CakePHP + DebugKit で開発しているときに、 「このSQLどこで発行されているの?」となることがあるので、 ActiveRecordのSQLの実行箇所をSQLのコメントに入れる - I sort my thought... を参考にして簡単なプログラムを作成しました。 但し、DebugKit で使うには、DebugKit の仕様上中途半端になってしまいました。 環境 PHP 5.4.11 debug_backtrace の 第2引数 limit は 5.4.0 で追加され、このパラメータを使ってスタックフレームの数を制限できます。 今回はこれを利用しているので、PHP5.4以上である必要があります CakePHP 2.4.8 2.4以降なら動作可能 2.3未満は未確認 仕様 DboSource::execute を拡張 SQLの最後に、debug_print_back
Opera requests that the EU General Court secure the DMA’s promise of free browser choice... July 12th, 2024 Opera is appealing the EU Commission’s decision not to designate Microsoft Edge as a gatekeeper, and requesting to keep freedom... AI, Gaming, Opera GX Aria gets Buffed in Opera GX July 1st, 2024 Aria gets buffed in Opera GX. New features are being added to improve Aria's capabilities. Deskt
概要 PHPのViewテンプレートをtoken_get_all(指定したソースを PHP トークンに分割する)と自前のhtml-minifier により、事前にHTML圧縮を行い、その結果をキャッシュすることで、5~10%程度のHTML容量の削減を行うことができました。 詳細 ※CakePHP の View テンプレートは、テンプレートエンジンを使用せず、素のPHPを使用します。 IDE等の支援を受けながら、View テンプレートを作成しますが、人間向けに可読性を持たせようとすると、ブロック要素毎にインデントを行いながら作成することになります。インデントに使用される(半角空白やタブ)は人間の可読性のためだけにあり、デメリットとして通信量の増大(ブラウザのHTMLパースは体感できない程高速に行われる)やサーバー側のキャッシュの非効率化などがあります。 PHPのテンプレートによるレンダリング後
大分時間も経ってしまい今更ではありますが、先日行われた第67回 PHP勉強会で「CIを半年間まわしてみて」というお題でLTをしてきました。 昨年の11/30に、当時ちょうど開発が始まった案件の開発環境に関して「今時なCakePHPでの開発環境!?」というエントリーを書いて、初のホッテントリ入りしました。4月末でこのプトジェクトが始まって半年という事で、実際にCIをまわしている中で起こった事や、試行錯誤しつつどうやって解決したかなどを簡単にまとめてお話ししました。 LT用に作った資料ではちょっと伝わりにくいので、以下にまとめ直しました。 成長の軌跡 Jenkinsサーバーを立ち上げた時は、UnitTestのテストケースが10個だけだったのですが、4/30現在 UnitTestのテストケースが467件、受入れテストのシナリオ数が292件とものすごい成長っぷりです。 この半年間に起こった事 テス
CakePHP 2.xで、セッションタイムアウトの時間を指定しようとすると、下記のように書くと思います。 Config/core.php Configure::write('Session', array( 'defaults' => 'php', 'timeout' => 1440, //1days ←単位は分 )); しかし、これだけではダメだったりするのです。 具体的には、1日経たなくてもセッションタイムアウトしてしまいます。 その理由は、PHPでのセッションファイルのガベージコレクションにあります。 PHPでは、セッションを開始すると(session_start())、ふつうはセッションファイルを作成します。 CentOS6.2にyumでPHPを入れた場合は、/var/lib/php/sessionあたりです。 CakePHPのcore.phpで、Session.defaultsを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く