Archives by date

You are browsing the site archives by date.

【CakePHP2.3】Modelクラスのアソシエーション挙動まとめ。

自分用。

hasOne:
(A hasOne B)
1対1の関係。Aモデルの1行に対してBモデルの1行が結びつく。外部キーはBテーブル内に存在。
hasMany:
(A hasMany B)
1対多の関係。Aモデルの1行に対して、Bモデルの複数行が結びつく。外部キーはBテーブル内に存在。
belongsTo:
(A belongsTo B)
多対1の関係。Aモデルの複数行が、Bモデルの1行と結びついている。外部キーはAテーブル内に存在。
hasAndBelongsToMany:
(A HABTM B)
複数対複数の関係。AテーブルにもBテーブルにも外部キーは存在せず、A_Bという中間テーブルを作成しそこでレコードの結びつきを管理する。

 

【CakePHP2.3】Controllerクラスの全プロパティまとめ。

自分用。

プロパティ(変数) デフォルト 説明
$autoLayout true 自動でレイアウトとビューを結合するか否か
$autoRender true 自動でビューをレンダリングするか否か
$cacheAction false ビューキャッシュを用いる場合に指定
$components array(‘Session’) コントローラー内で使用するコンポーネントを指定
$Components null コンポーネントを管理するクラスのインスタンス
$ext ‘.ctp’ ビューファイルの拡張子を指定
$helpers array() コントローラー内で使用するヘルパーを指定
$layoutPath null レイアウトファイルを格納するパス
$layout ‘default’ レイアウトとして使用するファイル名
$methods array() Controllerクラス以外に作成されたメソッドが格納される
$modelClass null コントローラー名に対応するモデル名が格納される
$modelKey null $modelClassに対応するキー名が格納される
$name null コントローラー名を指定
$passedArgs array() URLに含まれるパラメーターが格納される
$plugin null 指定されたプラグイン名が格納される
$request N/A CakeRequestクラスのインスタンス
$response N/A CakeResponseクラスのインスタンス
$scaffold false scaffold機能を使用するか否か
$uses true コントローラー内で使用するモデル名を指定
$validationErrors null バリデーションエラーメッセージが格納される
$view null 利用するビューのテンプレート名を設定
$View N/A ビュークラスのインスタンス
$viewClass ‘View’ ビュークラス名を指定する
$viewPath null ビューテンプレートを格納するパス
$viewVars array() set()関数で登録された値が格納される
$_eventManager null イベントマネージャークラスのインスタンス
$_mergeParent ‘AppController’ 親クラスと値をマージする際の、親クラス名
$_responseClass ‘CakeResponse’ レスポンス情報の格納されたクラスの名前

 

【Javascript】IEにおけるObject.keys関数について。

http://forum.jquery.com/topic/object-keys-fails-in-ie8

 

Object.keys does not exist in IE 8.

 

Object.keys does not exist in IE 8!!!

 

そんな関数IE8では存在しましぇぇぇぇえええん!!!ということらしい。

 

通りでエラーになるわけだ。しかしどうしてIE8のみなのか。もうほんとにこの問題児はいろいろと理解し難い。IEが消えてなくなってくれる日を夢に見て明日も生きてゆこうと思う。

 

【jQuery】IE9以降とIE6, 7, 8を判別する方法。

IEはゴミ。産廃。異論は認めない。

ということでどうにもこうにも判別しなきゃいけない場面がやってきたので調べてみた。

if(!$.support.opacity){
	// IE6, 7, 8
}else{
	// gt IE9
}

「$.support」はブラウザごとにサポートしている機能をブーリアンで返却してくれるとっても素敵なAPI。なのでIE9からサポートしているopacityの実装状況を判定することで上記のような分岐が可能になるんだね。そうだね。プロテ(ry
意外と簡単にできちゃうんだね。jQueryがつくづく最強だと感じざるを得ない。

そんなことよりIEは氏ん(ry。

 

【Eclipse】複数行をまとめてコメントアウトするショートカット。

メモ。

コメントアウトしたい行を選択した後。

■コメントアウトしたい場合

Ctrl + Shift + /

■コメントアウト解除したい場合。

Ctrl + Shift + \

 

【CSS】transitionプロパティのeasingアニメーション早見表。

理想の挙動を実現しようとすると一苦労なeasingアニメーション。しかしこの難解なベジェ曲線を一瞬で生成してくれる(されてる)神サービスを見つけたのでメモ。

http://easings.net/

もうドメインからしてeasingのためだけに存在してる気合の入りよう。

アクセスすると下のような図と共にeasingアニメーションの名前一覧が表示される。マウスオーバーでアニメーションの挙動をその場で確認でき、クリックするとそのアニメーションの実装方法が詳細に表示される。

f13bb931f15f665caf339e6d8909c441

解説はそれぞれ、JS、SCSS、CSS、3つでの実装方法が記載されており、全てコピペで動いてしまうという神仕様。特にCSSでの実装はベジェ曲線を自分で描画しないといけないため知識がないと一苦労だが、このチートシートさえあれば自分のような情弱でもサクっとリッチなアニメーションを作成できてしまうのである。

これは今後ほんとにお世話になりそうだ。

 

【CakePHP】ビューブロックを使ってみる。

例えばページごとに読み込むスクリプトを減らしたり追加したかったりするのをスマートに書きたいときなどに便利。

レイアウトファイルのヘッダー内に以下を記述。

echo $this->fetch('script');

次に各ビューファイルで以下を記述。

$this->append('script');
echo $this->element('elementFileName');
$this->end();

するとヘッダー内に記述したfetch(‘script’)の部分に呼び出したエレメントを挿入してくれるのである。
ちなみにHTMLヘルパーで読み込んだスクリプトファイルもfetch(‘script’)に渡すことが可能。

例えば以下のような感じ。

echo $this->Html->script('//www.google.com/jsapi', array('inline' => false));

HTMLヘルパー、script()メソッドの第二引数に「’inline’ => false」を渡してやると、その場ではなくビューブロック内に追加してくれる。
jsapiを必要なページのみで読み込みたい場合など、状況に応じてブロック内を簡単に書き換えられるため非常に便利。

 

【PHP】数列を特定の桁数までゼロ埋めする。

数値を2桁にそろえたい場合が意外に多いのでメモ。

一桁だった場合先頭をゼロで埋める処理(ゼロパディング)を行う。

$num = '5';
$num = sprintf('%02d', $num);
var_dump($num);
↓
string(2) "05"

第一引数のフォーマットを「’%05d’」、「’%07d’」とかにすれば任意の桁数まで0で埋めてくれるので便利。