めも。
| ショートカットキー | 挙動 | 
|---|---|
| 現在の行を下の行へコピー | Ctrl + Alt + ↓ | 
| 現在の行を上の行へコピー | Ctrl + Alt + ↑ | 
| 行を削除 | Ctrl + D | 
| 行の末尾まで削除 | Ctrl + Shift + Delete | 
| 現在の行の上に行を挿入 | Ctrl + Shift + Enter | 
| 現在の行の下に行を挿入 | Shift + Enter | 
| 現在の行を1行上に移動 | Alt + ↑ | 
| 現在の行を1行下に移動 | Alt + ↓ | 
めも。
| ショートカットキー | 挙動 | 
|---|---|
| 現在の行を下の行へコピー | Ctrl + Alt + ↓ | 
| 現在の行を上の行へコピー | Ctrl + Alt + ↑ | 
| 行を削除 | Ctrl + D | 
| 行の末尾まで削除 | Ctrl + Shift + Delete | 
| 現在の行の上に行を挿入 | Ctrl + Shift + Enter | 
| 現在の行の下に行を挿入 | Shift + Enter | 
| 現在の行を1行上に移動 | Alt + ↑ | 
| 現在の行を1行下に移動 | Alt + ↓ | 
めも。
下記のようにANSI エスケープシーケンスを用いる。
以下例。
$str = 'ほげ'; // 文字を赤くする echo "\033[0;31m$str\033[0m"; // 文字の背景を赤くする echo "\033[41m$str\033[0m" // 文字の色を反転させる echo "\033[7m$str\033[0m";
といった感じ。
ルールは下記の通り。
\033[コードm文字列\033[0m
コードの部分は下記のようなものが指定可能
■文字色
| Black | 0;30 | 
| Blue | 0;34 | 
| Green | 0;32 | 
| Cyan | 0;36 | 
| Red | 0;31 | 
| Purple | 0;35 | 
| Brown | 0;33 | 
| Light Gray | 0;37 | 
| Dark Gray | 1;30 | 
| Light Blue | 1;34 | 
| Light Green | 1;32 | 
| Light Cyan | 1;36 | 
| Light Red | 1;31 | 
| Light Purple | 1;35 | 
| Yellow | 1;33 | 
| White | 1;37 | 
■背景色
| Black | 44 | 
| Cyan | 46 | 
| Red | 41 | 
| Purple | 45 | 
| Brown | 43 | 
| Light Gray | 47 | 
■その他
| 下線 | 4 | 
| 色の反転 | 7 | 
めも。
// 警告文を出す際のなんらかの条件式
if(true) {
	// コンソール上に表示する出力文
	echo '警告文 [y/n] : ';
	$input = null;
	while(1) {
		$input = fgets(STDIN, 4096);
		if($input == "n\n" || $input == "no\n") {
			// 処理を終了する
			die();
		}
		if($input == "y\n" || $input == "yes\n") {
			// 処理を続行する
			break;
		}
		echo '[y] [yes] [n] [no] のいずれかを入力してください : '; 
	}
}
こんな感じでOK。
ちなみにSTDINはstdinへのオープン済みストリーム。そのためfopenなどでのストリームオープン無しに利用することが可能。
fgets(STDIN)とするとその地点で入力待機状態になるため、コンソール上から値を入力することができる。
めも。
前回のエントリ←で書いたディレクトリ内再帰取得関数などでファイルリストを取得した後に。
$list = glob('/path/to/dir');
$list = array_filter($list, 'is_file');
シンプルだね。
めも。
下記の再帰関数にパスを渡せばOK。
function scanDir($dir) {
	$list = $tmp = array();
	foreach(glob($dir.'*/', GLOB_ONLYDIR) as $child) {
		if ($tmp = self::scanDir($child)) {
			$list = array_merge($list, $tmp);
		}
	}
	foreach(glob($dir.'{*.*}', GLOB_BRACE) as $file) {
		$list[] = $file;
	}
	return $list;
}
めも。
$q = array( 'hoge' => 'foo', 'piyo' => 'var', 'fuga' => 'baz' ); var_dump(Router::queryString($q)); ↓ string(27) "?hoge=foo&piyo=var&fuga=baz"
めも
・APP
/home/…/app/
・APPLIBS
/home/…/app/Lib/
・CAKE_VERSION
例)2.4.2
・WWW_ROOT
/home/…/app/webroot/
・CSS
/home/…/app/webroot/css/
・IMAGES
/home/…/app/webroot/img/
・JS
/home/…/app/webroot/js/
めも。
コントローラーにて。
$this->response->type('application/json');
$this->response->send();