[PHP] オーバーロードとマジックメソッド

[PHP] PHPオブジェクトと配列の変換まとめでは、存在しないプロパティに値を設定すると、プロパティが追加されるのを見た。
class A {}
$a = new A();
$a->foo = 'f';
var_dump($a);
// object(A)#1 (1) {
//   ["foo"]=>
//   string(1) "f"
// }
でも、この操作を行ってもオブジェクトにプロパティが追加されない場合がある。

[bash] 配列をset(集合)として扱いたい

[bash] 配列をソート、検索でbashの配列操作について書いたけど、配列をset(集合)として取り扱いたい場合の操作について。
※bash4以降では連想配列が使えるので、bash4前提であれば、そっちを使ったほうがいいかも。

配列をユニークにする

まずは配列から重複している要素を削除して、ユニークにする。
要素の順序は気にしない。

[bash] 配列をソート、検索

シェルスクリプトでは標準入力から読み込んで、標準出力に書き込むフィルターパターンが多いので、配列を使う機会はあまりないかもしれない。
でも、配列を使っている場面で配列をソートしたくなる時もある。
そんな時も簡単にやりたい。

もちろんsortコマンドで

シェルスクリプトはいろんなコマンドを組み合わせて、処理できるのがいいところなので、sortコマンドを使ってソートする。

[PHP] compact, extractと変数のスコープ

[PHP] PHPオブジェクトと配列の変換まとめでは、オブジェクトと配列の変換を取り扱ったけど、スコープ内の変数を配列として取り出すにはどうすればいいか。

globalキーワード

その前にPHPでのスコープとグローバル変数の関係について。

PHPではローカル変数を宣言するためのキーワードはなく、逆にグローバル変数にアクセスするためのglobalキーワードが存在する。
関数内でグローバル変数にアクセスするためにはこんな感じにする。

[Java] 既存のクラスを(擬似的に)拡張したい

サブクラスしか持っていないメソッド

Javaでサブクラスがスーパークラスが持っていないメソッドを持っているときに統一的に取り扱おうとすると面倒なことが多い。
本来はサブクラス側を直した方がいいのかもしれないけど、既存のクラスでこちらが修正できない場合も多々ある。

例えば、SQLExceptionはExceptionが持っているgetMessageだけではなく、getErrorCodeやgetSQLStateを持っているけど、これらを統一的にログに出力したかったりする。

[PHP] PHPオブジェクトと配列の変換まとめ

ファイルから読み込んだ値をオブジェクトにしたり、逆に外部に渡したい時にはオブジェクトのプロパティを連想配列にしたい場合は結構ある。
DBの場合はPDOなどフレームワークがやってくれることも多いけど、自分でやりたい場合はどうすればいいか。

配列からオブジェクトを生成する

新しくオブジェクトを作りたい場合は配列をobject型にキャストするだけ。
$obj = (object)[ 'foo' => 'orange', 'bar' => 'green' ];
var_dump($obj);

[MySQL] MySQLのキーワード、予約語

MySQLの予約語?

SQLでは基本的に予約語をテーブル名やカラム名に使うことはできない。

MySQL 5.6 9.3 予約語
https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html

"IN"や"FROM"をカラム名に使うことはないと思うけど、"RANGE"とか"REPEAT"とか"SEPARATOR"なんかは使ってしまいそうな気がする。

例えば、カラム名に"repeat"を使ってテーブルを作成しようとすると以下のようになる。