CakePHP

CakePHPで開発しているけれどもMigrationsは捨ててRidgepoleを使っているはなし

タイトルは若干釣りです。 CakePHPにはマイグレーションツールとして、CakeDC/Migrations(CakePHP2)や、Phinxベースのcakephp/migrations(CakePHP3)があります。 とても有用ですし、CakePHP Bakerはみんな知っているツールです。自分もずっとお世話になって…

CakePHP3にステートマシンなEnumの仕組みを組み込むStatefulEnumを作った

k1low.hatenablog.com と、CakePHP3にEnumの仕組みを組み込んだのですが、 さらに、ActiveRecord::Enumにステートマシンの仕組みを組み込むgemが github.com 「これは便利そう!!!全ての機能をポートするのは難しそうだけど、Enumで管理されているフィール…

CakePHP3でもActiveRecord::Enumを使いたいので、CakeDC/EnumベースでPropertyEnumを作った

k1low.hatenablog.com CakePHP2では GitHub - k1LoW/Enumm: Enumm: Enum(model) plugin for CakePHP を作って使っていたのですが、CakePHP3では動きません。 CakePHP3で使える同じようなPluginを探して、CakeDC/Enum を見つけたのですが、CONSTベースとConfi…

CakePHP3でもバリデーションをパターンでまとめられるようにPatternableValidatorを作った

CakePHP3になって、CakePHP2では MultivalidatableBehavior などで実現していたバリデーションのルールセットの切り替えがコア機能に入りました。これはうれしい。 ただ、Kagasawa-sanが作っていたcakeplus/ValidationPatternsBehavior.php で実現していたバ…

今日のCakePHP3

初めてのfind()。 logQuery(true) 良い。 logQueries(true); namespaceによるいい感じのクラスの差し替え良い。holiday_jp-php を使って、Timeクラスに isHoliday() メソッドを生やすなどした。 Collection良い。 HtmlHelper::tableCells() とかと合わせても…

遅れに遅れて今更CakePHP3を触りはじめた

まだまだ、全然わかっていない状況です。 社内では既にいろいろと地雷は踏み潰され、さらにPluginもいろいろできている状況からの最後尾スタート。 とりあえず、今日の感想は ビルドインサーバ最高。Vagrantがいらない。Mac上でカジュアルに開発できるの面白…

Railsのchankoが欲しい。或いはCakePHPプロトタイプ開発プラグイン "Ya"について

PHPカンファレンス福岡2015で、「CakePHPを業務で使ってみた(7年ほど)」というタイトルで発表させてもらいました。 結局、 #phpconfuk から帰って来た新卒のLaravel熱がスゴイらしい。 ということで、私の発表内容は皆さん忘れて下さい。— k1LoW (@k1LoW) Ju…

CakePHP2.6.0からModel::save()時にデフォルトでBEGIN〜COMMITのトランザクション処理が入るようになっていた

あああぁぁぁぁあああぁぁぁぁぁああああぁぁああああぁぁぁぁぁぁああぁぁあぁ リリースノート CakePHP 2.6.0 Released :: The Bakery: Everything CakePHP Model::save() had the atomic option back-ported from 3.0. 該当コミット add 'atomic' option t…

いまさらSecurityComponent::requireSecure()がCakeRequest::is('ssl')で判定していることに気づいた

AWSのELB/SSL Termination配下や、ロードバランサ配下にCakePHPなシステムを設置するとき、 なんとなく SecurityComponent::requireSecure() を使わず、独自のSslComponentをつくることが多かったのですが、 これはSSLの判定条件がELB/SSL Termination配下だ…

Po plugin for CakePHP にスキーマ情報からschema.potファイルを生成する機能がつきました

Po pluginってどれくらいの人が使っているんですかね? poファイルのマージに使えるPo pluginですが、いつも面倒だなーと思っていたのが、 __()で囲まれたソースコードが存在しないとpoファイルに追加されない ということでした。どういうことかというと For…

2015年、Bakerは "CakePHPで学ぶ継続的インテグレーション" を読んでCI環境を導入しよう

個人的通称「CakeCI本」ですが、やっと年末に読み終わったので、CakePHP Bakerの視点から紹介したいと思います。 CakePHPで学ぶ継続的インテグレーション作者: 渡辺一宏,吉羽龍太郎,岸田健一郎,穴澤康裕,丸山弘詩出版社/メーカー: インプレス発売日: 2014/09…

YacsvがとうとうCSVインポートだけでなくCSVエクスポートにも対応しました!

Yacsvは、拙作のYet AnatherなCSVプラグインです。(使い方はこちら) 今まで数々のプロジェクトの「CSVインポート機能」で活躍してきました。個人的にはFilebinderの次によくできたと思っているプラグインです。 機能を追加するプラグインよりも、面倒な機能…

できる! Phinx

@hamaco フライングでPhinxだけ使い始めましたけど、普通にいい感じです。— k1LoW (@k1LoW) 2014, 11月 25 CakePHP3でも採用されるというDBマイグレーションツール "Phinx" について、CakePHP3の前にフライングで使い始めたので紹介します。 Phinxって何? h…

CakePHPでActiveRecord::Enumを使いたいので "Enumm" pluginを作った

もしかしたら、プルダウンが多い新規プロジェクトにjoinすることになりそうだったので、ソースコード上のプルダウンデータの配置を検討していたのですが、ActiveRecord::EnumをRailsな人たちに教えてもらったので、CakePHPでも($enumsの配置だけ)なんとなく…

ちょっと前からTravis CIにPHPUnit 3.7はありません

CakePHP de Travis CIな皆さんこんばんは。 タイトルのままなのですが、ちょっと前からTravis CIにはPHPUnit 3.7はありません。 なぜ「3.7」と言っているかというとCakePHPが4系ではなく3.7系でないとテストがうごかないからです。 https://github.com/cakep…

phpenv + php-fpm + nginxなVagrant + Ansible

GWノ成果デス https://github.com/k1LoW/phpenv-nginx-ansible-vagrant はじめてのnginx GWは技術調査と趣味を兼ねてnginxとかと戯れていました。 @cakephper 今ひとり社内でnginx本を探しているのです…— k1LoW (@k1LoW) 2014, 5月 2 @cakephper 教えてくれ…

dotcake organizationはじめました

2012年 @k1LoW ずいぶん昔の話ですいません!cake.elとcake.vimで参照する設定ファイルをapp/.cakeに置く案の話なのですが、json形式とかどうです?今ビルドパスにも飛ぼうとしててhttps://t.co/QBgBg7dT のようにできたらと思っています。— Yuhei Kagaya (@…

CakePHPにおける本番/開発環境の切り替え方法について再考

CakePHP3がそろそろ出る中、CakePHPにおける本番/開発環境の切り替え方法について再考です。 .htaccessに判定用の環境変数を設定 ここ数年、CakePHPにおける本番/開発環境の切り替え方法としてCAKE_ENV_MODEみたいな環境変数を.htaccessとかに設定して、それ…

"細かすぎて伝わらないCakePHP Pluginシリーズ"についてCakePHP勉強会 #2 でzenpre発表しました #ulurucake

細かすぎて伝わらないCakePHP Pluginシリーズ、第4回目。 とうとう、"細かすぎて~"が東京の勉強会に進出しました。 正しくは、福岡からリニューアルしたばかりの zenpreで遠隔で発表させてもらいました。 (zenpreリニューアル日程を死守したのはこの発表の…

細かすぎて伝わらないCakePHP Pluginシリーズ "Yamd plugin"

好評の細かすぎて伝わらないCakePHP Pluginシリーズ、第3回目。 ちなみに好評かどうかの統計は非公開です。 今回はYamd pluginを紹介したいと思います。 k1LoW/Yamd - GitHub プログラマはHTMLよりもMarkdownが好き(なはず) Markdownいいですよね。 はてなブ…

開発中の簡単な情報共有のためにDebugMemo plugin for CakePHPを作ってみた

CakePHP 2.3.0がリリースされましたね。 今日の社内技術発表では、CakePHP2.3.0でのModel::find('first')の返り値の変更について紹介されていました。 CakePHP、ますます使いやすくなってように思います。 開発中システムのメモや気づいた点はどこで共有する…

細かすぎて伝わらないCakePHP Pluginシリーズ "Setting plugin" #cakeadvent2012 Day13

CakePHP Advent Calendar 2012 13日目の記事です。 12日は@Ugatsさんの「どこからCakePHPを使えるといっていいのか。」でした。 個人的には、(以前からPHPで開発されていた方限定ですが)「CakePHPを使って便利だなと思えたら使えている」んではないかと思っ…

"recipe - CakePHP CLI Package Installer -"とは何だったのか #cakeadvent2012 Day5

さてCakePHP Advent Calendar 2012 5日目の記事です。 昨日は@yandoさんのコールバックはもう古い!CakePHPのEventを使おうです。 個人的にまだ謎の多いCakeEventですが、ちょっと使う気になりました。 ちなみに自分は、Nodeを使っているとon()とかemit()と…

CakePHP PluginをTravis CIに載せる

せっかくTravis CIという面白いサービスがあってPHPの環境も用意されているのに、Travis CIに載っているCakePHP Pluginが見つからなかったので載せてみた。いろんなPluginを作ってた分、いろいろなパターンの.travis.ymlを書くことになったので、他のbakerの…

「ふつうのform」のためにFuzzy plugin for CakePHPを作ってみた

ふつうのformをつかいたい - はまちや2 - ニコニコ超会議2012を見て「確かになー」と思うところが多々あったので、 「ふつうのform」を作るための簡単なユーティリティをまとめる目的でFuzzy pluginを作ってみた。 k1LoW/Fuzzy · GitHub Fuzzy pluginって何…

CakePHP CLI Package Installer 'recipe' を開発中

CakePHP勉強会 2012春 @東京が、定員を増やしては上限オーバー、定員を増やしては上限オーバーと何回も繰り返した結果、大変な人数になってきている。 はじめは40人程度じゃなかったっけ? 当日たまたま東京にいるので、気軽に参加表明したら「プラグインバ…

CakePHPでの管理者機能の分け方いろいろ[CakePHP Advent Calendar 2011 Day6]

CakePHP Advent Calendar 2011の6日目です。 前回は@kachiokaさんでした。 CakePHPにおける複数形はCakePHP自体がどう判定するのかがInflectorクラス次第ですからね。 ちなみにcake.elはInflectorクラスをEmacs Lispでインプリメントして利用しているので安…

いつまでたってもゴールが見えないのでCalendar Plugin for CakePHPをアルファリリースした

いつまでたってもゴールが見えないのでCalendar Plugin for CakePHPをアルファリリースした。https://github.com/k1LoW/calendar Calendar Pluginって何? CakePHPでカレンダー機能を実装する時に便利になったらいいなと思って『作り始めた』プラグイン。 大…

root権限なしでCakePHP2 + PHPUnitを最速でインストールする方法

CakePHPはバージョン2系からテストスイートがSimpleTestからPHPUnitに変更になった。PHPUnitは通常PEARコマンドを利用してインストールするので、root権限がないと若干面倒だったりする。ただ、テストスイートはプロジェクトの最初のほうで設定しておきたい…

app/webroot以下のPHPファイルからCakePHPの機能を使いたい

CakePHPは、app/webroot以下のファイルはそのまま表示するような実装になっていて、静的ページしかないディレクトリなんかはapp/webroot以下に配置すると楽だったりする。特にcssやimg、jsなどもそのまま配置されているので、Dispacherを通った若干わかりに…