PHP のシステム関数をよりオブジェクト指向にしようとした人はいますか?

StackOverflow https://stackoverflow.com/questions/61784

  •  09-06-2019
  •  | 
  •  

質問

PHP の組み込み関数のすべて (またはほとんど) をよりオブジェクト指向のクラス階層にグループ化しようとするプロジェクトが存在するかどうかに興味があります。たとえば、すべての文字列関数を単一の String クラスにグループ化するなどです。

すべての組み込み関数はグローバル名前空間で引き続きアクセスできるため、これで実際には何の問題も解決しないことは承知しています (PHP ソース コード レベルで変更が行われない限り)。ただし、使いやすさは確実に向上します。

役に立ちましたか?

解決

あなたの質問に答えると、はい、あなたが話していることを正確に実行するライブラリがいくつか存在します。どちらを使用したいかについては、まったく別の問題です。PHPClasses と pear.org は、そのようなライブラリを探すのに適した場所です。

アップデート:他の人が示唆しているように、SPLは優れたライブラリであり、組み込みのPHP関数の多くをラップしています。ただし、ラップされていない php 関数がまだたくさんあります。特効薬がないまま我々を放置する。

Cakephp や Zend などのフレームワーク (その他も同様) を使用すると、独自のライブラリを組み込み、DB 接続などの基本機能をフレームワークに組み込むことで、これらの問題の一部を解決しようとしていることに気づきました。したがって、フレームワークが別の解決策になる可能性があります

他のヒント

何度も。PHP に OO 機能があることを発見すると、すぐにすべてをクラスにラップしたくなります。

PHP の OO に関する重要な点は、希望する方法でソリューションを構築できるようにすることです。しかし、既存の関数をオブジェクトにラップしても、大きな利益は得られません。

そうは言っても、PHP のコアはすでにかなりオブジェクト指向になっています。を見てみましょう SPL.

PHP が前進するためには、このようなことが不可欠だと思います。私は主に .Net プログラマーなので、100 万個と 1 つのグローバル関数を扱う PHP を扱うのは苦痛だと感じています。PHP 5.3 に名前空間があるのは良いことですが、独自のライブラリがオブジェクト指向ですらない場合、ましてや名前空間を使用していない場合はあまり役に立ちません。私は言語として PHP をそれほど気にしませんが、その API はひどく整理されていないため、おそらく完全な見直しが必要です。VB が VB.Net になったときに経験したことと似ています。

私は同意しません。オブジェクト指向プログラミングは、本質的に手続き型プログラミングよりも優れているわけではありません。私は、ポリモーフィックな動作 (継承、メソッドのオーバーライドなど) が必要でない限り、OO を使用すべきではないと考えています。オブジェクトをコードの単純なコンテナとして使用することは、オーバーヘッドの価値がありません。これは 特に 文字列は頻繁に使用されるため、これは当てはまります (例:配列キーとして)。すべてのアプリケーションは通常、いくつかのポリモーフィックな機能から恩恵を受けることができますが、それは通常は高レベルです。String クラスを拡張したいと思ったことはありませんか?

また、PHP の奇妙な関数の名前を理解するには、少しの歴史が必要です。PHP は標準 C ライブラリと POSIX 標準に基づいており、同じ関数名 (strstr、getcwd、ldap_open など) を多く使用します。これは、言語バインディング コードの量を最小限に抑え、十分に考え抜かれた機能セット (C で実行できるほぼすべてのことを PHP で実行できる) を保証し、これらのシステム ライブラリが高度に最適化されるため、実際には良いことです (例:strchr は通常インライン展開されるため、約 10 倍高速になります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top