ラオスの思い出その2 ラオスのクリスマス

ここの所どうしても平日は疲れがたまって、更新が土日のみになってしまうけど、まあ仕方ないか。
というわけで(だから何がというわけでなんだよ)、今回はラオスの思い出シリーズその2、ラオスのクリスマスについてです(何で3月にクリスマスの話題なんだというのはこの際置いておく)。
ラオスはご存知の通り(?)仏教国ですが、仏教以外は受け入れないわけでは決してなく、クリスマスの時期は普通にみんなお祝いしていました。

配属先のラオス国立大工学部IT学科ではプレゼント交換をやって、その後ケーキを食べたりみんなで盛り上がっていた思い出があります。
ラオスには2年間いたからクリスマスのプレゼント交換は2回やっていて、1回目は日本から持ってきていたもの(確か扇子だっけ?)を持って行って、2回目は確かコップを持って言った記憶があります。当たった方は、1回目がUSBで、2回目は写真立てでした。

その他にも、住んでいた場所から自転車で7分くらいのところにあった僕が夕食でたまに行っていたお店でもクリスマスパーティーをやっていました。
その時はお店に行ったらいつもと雰囲気が違うからどうしたのかと思ったら、「今日はクリスマスのパーティーだ、食べていけ」と言われて自分もパーティーに参加させてもらいました。
ブタの丸焼きとかビーフシチューとかワインとか豪華なごちそうを楽しみつつワイワイ盛り上がっていました。
ところでそのお店、普段はカオパット(チャーハン)とかのラオス料理屋でそこそこ美味しくたまに通っていたんですが、ある日潰れちゃったんですよねえ・・・ラオスにいた2年間の間に何度かそういうことはあったんですが、自分がよく行くお店が潰れると何ともやりきれない残念な気持ちになりました。

他にもビエンチャン市内では色々なところでクリスマスの装飾が飾ってあって、ラオスの人たちもクリスマスを楽しんでいるんだなあと思いました。1月下旬くらいまでクリスマスの飾りが残ってあったりして、そこがまたラオスらしいところでもありました。
ブタの丸焼き
クリスマスケーキ
クリスマスツリー

PHPのオブジェクト指向

うわー、2週間も更新が止まってしまったorz
というわけで、久々の更新はPHPのオブジェクト指向について。

PHPはオブジェクト指向のプログラミング言語です・・・って、今時使われる言語でオブジェクト指向じゃない言語って、C(C++じゃないC)の他に思い浮かばなかったり。Cでも構造体とか使ってオブジェクト指向っぽくできないこともないし。

なので、PHPのオブジェクト指向で他の言語と違うところを中心に簡単にまとめてみようかと。
例としてお客さんを表すCustomerというクラスを考えてみることにする。

メンバー変数、メソッドをpublic(どこからでもアクセス可能), protected(そのクラスと子クラスからのみアクセス可能), private(そのクラスからのみアクセス可能)の修飾子を付けて定義するというのは他の言語と変わらないかと。
上の例ではCustomerクラスの変数$customerを最初に宣言して、$customerの年齢ageに25を入れています。
気を付けるのは、コンストラクタを__construct()で定義すること。C++やJavaから来た人だと、慣れないうちはついpublic Customer()と書こうとしちゃうかもしれないですね(自分の事です)。
後はクラス内のメンバーやメソッドを呼び出すときでも$this->を忘れないようにしましょう(結構これでエラーになることは多いです)。

後は、通常のメンバー変数やメソッドの他に静的(static)なプロパティやメソッドというものもあります。

staticなプロパティやメソッドはクラス名::を付けることでオブジェクトを生成しなくても呼び出すことができます。
なお、クラス内でstaticなプロパティやメソッドを呼び出すときはself::を頭につけます。

次は、継承についてです。

見てのとおり、extendsを付けて継承します。Javaもそうでしたね。オーバーライトなんかも他の言語と同様にできます。
ちなみに、PHPでは多重継承は不可です。が、トレイトというものを使うことで多重継承のようなことができるようです。自分は使ったことはないので、こちらあたりを見てみてください。

後はabstractをつけて抽象クラスを定義できたり、interfaceをつけてインタフェースを定義できたりします。

フレームワークなんかはバリバリにオブジェクト指向を使っているので、フレームワークのソースを見てみると、オブジェクト指向の有用性を実感できると思います。

Javascriptのオブジェクト指向は普通のクラスベースではなくプロトタイプベースという独特なものなので、どこかでそれについても紹介しようと思います。