[PHP-users 18481]Re: はじめまして。

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 10月 16日 (木) 20:23:56 JST


重松です。こんにちは。

> 元々OOPは性能面のみを重視したプログラミング技法では無いの
> で、バランスが重要かと思います。パフォーマンスだけならCで
> CGI、と言うことになりますから。
> # PHPにもinline optimizationが必要かな...

私も大垣さんと同じ考えてで、過度の OOP (オブジェクト嗜好?) は、
PHP では、ちょっとパフォーマンスが低下し過ぎそうだと思っています。

かといって、パフォーマンスにはいろいろあって、実行速度だけでなくて、
メンテナンスの容易さ、コードの再利用のしやすさなど、開発速度、
いろいろあると思いますが、実行速度はハードの力で何とかなるので、
今後はどんどん比重が低下しそうです。

なので、別に普通に OOP なら、問題とならないと思いますし、
本当にシビアなら、そこだけ、DSO を C で書けばいいわけですし。

で、私が PHP 5 での期待する機能は、やはり例外処理ですね。

> 私もクラスは使っていますが過度なOOPはしていません。ネーム
> スペース代りに使うような使い方をよくしています。
> パフォーマンスがどうしても必要なサイトではOOPは使用しない
> よう、いつも提案しています。

名前空間代わりということではないのですが、スカラー値でないものの
定数をどうやって作るか、というテーマが個人的にあります。

で、ちょっと気になっているのは、const と final が両方あることなんですが、
Java の場合、final は method の場合, (1) のときですが、
継承 (して拡張) できない、で PHP と意味は同じだと思うんですが、

class Foo {
	final public void myMethod() { ; } // <- (1)
	final int MY_CONSTATS = 1; // <- (2)
	final Object obj;
}

(2) とか、(3) のような場合の扱いってどうなるのでしょうか?

(2) は単に C で書くと const int int MY_CONSTATS = 1; と等価だから、
PHP だと、define('MY_CONSTATS', 1) だと思いますし、クラスの中身だと、
const だろうな、と思うのですが、

(3) の意味は、一度だけ代入可能で、一度代入すると Object がさす物は
差し替えることはできない。(が、値を書き換えることは可能) ということで、
C では一度だけ代入可能の部分が実現できませんが、
Object *const obj という感じになりますよね?

いや、array() の返り値なんか、const にしたいなと思いまして。。。
pointer も pointee も、好きに。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>



PHP-users メーリングリストの案内