3

現在、サイトの一部をモダナイズしています。古いデータベース アクセス ルーチンは、ページ レンダリング ルーチンなどと一緒に安全にクラスにラップされます。

しかし、有用で一般的な関数の選択が残っており、すべてが 1 つの php ファイルに含まれています。

これらを匿名クラスに変換し、次のように参照する必要があることを読みました。

$output1 = myfuncs::function1(...);
$output2 = myfuncs::function2(...);

さて、他の誰かのコードを使用する必要がある場合、関数名の重複を防ぐためにこれを行うことは理にかなっていることを理解していますが、関数ライブラリに固執する代わりに、このようにする必要がある他の理由はありますか? 関数ライブラリは、最初はより高速です。私はこれがこの時代にはかなり無関係であることを知っていますが、次のコードもそれほど不格好に見えないと思います:

$output1 = function1(...);
$output2 = function2(...);

私は oop 自体に反対しているわけではありません。データ アクセスとレンダリングのための新しいクラスが気に入っていますが、すべてを oop にする必要があるのでしょうか?

4

3 に答える 3

3

これら(ジェネリック関数)を匿名クラスに変換する必要があることを読みました...

そうしないでください。これは、(最悪の種類の) クラス指向プログラミングと見なされます。これは、関数のラッパーである以外に、他の目的を果たさないためです。

代わりに、名前空間を使用して機能コードを整理します。

namespace Utils;

function foo() { }

function bar() { }

次に、それを使用するには:

require 'Utils.php';

use Utils\bar;

Utils\foo();
bar();

しかし、本当にすべてを oop にする必要があるのでしょうか?

いいえ。PHP ではさまざまな組み合わせが可能です。

于 2013-07-02T08:29:47.230 に答える
1

この質問への答えには哲学的な違いがあるだけで、コンピューターはあなたが指示を与えた方法には無関心です。

オブジェクトは、呼び出されたときに暗黙的に参照する状態情報をカプセル化します。これは、関数を呼び出して操作する構造を与えることと本質的に同じです。

関数型パラダイム コードをオブジェクト指向コードに変換することが役立つのは、非常によく似た動作を提供するが特定の動作を変更するサブクラスを作成する可能性がある場合だけです。

それ以外では、クラスは確かに名前空間に役立ちますが、前述のように、php は機能パラダイム php の名前空間を提供します。

于 2013-07-02T08:39:57.920 に答える