_onichannn

【PHP】全アルファベット文字列をスマートに取得する方法。

配列として取得するやーつー。

for($i = 0; $i < 26; $i++){
	$alphabet[] = chr(ord('a') + $i);
}

大文字で取得したければ下記のようにすればOK

for($i = 0; $i < 26; $i++){
	$alphabet[] = strtoupper(chr(ord('a') + $i));
}

ord()は指定した文字列をASCII値にしてくれる関数。これにより開始ASCII値を求める。あとはアルファベッドの記号数分ループし、都度chr()で文字列に戻すという感じ。

 

【CakePHP】ファイル名とクラス名が異なるファイルをインポートする方法。

ファイル名、クラス名が一致している場合は「App::uses()」を用いてクラスの読み込みを行っていたが、それらが異なる場合はうまく読み込めず頓挫していた。
しかし「App::import()」を用いることで上手に読み込めることが確認できたのでメモ。

例えば「app/Vendor」にライブラリを設置したとすると、読み込み方は下記の通り

App::import('Vendor', 'ClassName', array('file' => 'PATH'.DS.'TO'.DS.'CLASSFILE'.DS.'hoge.php'));

公式ドキュメントは下記を参照↓

http://book.cakephp.org/2.0/ja/core-utility-libraries/app.html#vendor

これで正しくインポートが行える。

 

【CakePHP2.4】CakePHPで動的にDBの接続先を変更する。

めも。
モデルごとにDBの接続先を変更したい時に便利。

まずは「app/Config/database/php」に接続情報の追加を行う

class DATABASE_CONFIG {

	public $default = array(
			'datasource' => 'Database/Mysql',
			'persistent' => false,
			'host' => '',
			'login' => '',
			'password' => '',
			'database' => '',
			'prefix' => '',
			'encoding' => 'utf8',
	);

	// 追加のDB接続情報
	public $hoge = array(
			'datasource' => 'Database/Mysql',
			'persistent' => false,
			'host' => 'xxxx',
			'login' => 'xxxx',
			'password' => 'xxxx',
			'database' => 'xxxx',
			'prefix' => '',
			'encoding' => 'utf8',
	);

}

次にモデルにてDBの接続先情報を指定する。

class Example extends AppModel {
	
	public $useDbConfig = 'hoge';
	
}

これでモデルの接続先DBを動的に変更することが出来る。

めっちゃ便利だね。

 

【PHP】シングルクオート、ダブルクオート、速度比較。

めも。

シングルクオートとダブルクオートはシングルクオートの方が処理速度が速い模様。
意味合いも違うしちゃんと使い分けるのが吉。

 

【PHP】スクリプト実行時間を取得する。

メモ。

現在の時間を取得したい場合、time()関数をコールするよりも$_SERVER変数の定義済み値を参照するほうが処理速度的にベター。

echo $_SERVER['REQUEST_TIME'];

これでスクリプト実行時間のタイムスタンプが取得できるので、あとはdate()関数になげるなり好きにすればOK。

【PHP】class内のメンバ変数の最適化。

classを定義する際、メンバ変数に定数としてしか用いない変数がある場合はconstとして定義したほうが高速になる。

下記例。

class hoge {
	// こうするより
	public $param = 'hoge';
	// こうしたほうが速い
	const PARAM = 'hoge';
}

これは使えるプチ情報。

 

【Javascript】location.hrefとlocation.replace()の違い。

めも。

■location.href
この変数を用いてリダイレクトを行うとブラウザに履歴が残るためブラウザバックが出来る。

■location.replace()
replace()関数を用いたリダイレクトを行った場合、ブラウザに履歴が残らず元いたページにブラウザバックできなくなる。

下記実装例。

<button onclick="location.href='http://www.yahoo.co.jp'">load</button>
<button onclick="location.replace('http://www.yahoo.co.jp')">load</button>

 

【Javascript】Javascriptが実行できない環境でのみリダイレクトを行う。

メモ。

headタグ内にnoscriptタグを記述し、その中でmetaタグのリダイレクトを記述してやればよい。

<noscript>
<meta http-equiv="refresh" content="0; URL=http://example.com" />
</noscript>