あなたが提供した例に基づいてあなたの混乱を理解できます。それはクラスを使用する本当に悪い方法です...そしてクラスが使用されているという理由だけで、システムのOOPを作成しません。
Hybridの場合、クラスを使用して関数の名前空間を指定しているだけです。ハイブリッドがテーマフレームワークであると考えると、開発者が名前の衝突を心配することなく、子テーマが関数名を再利用できるようになります。多くの場合、テーマフレームワーク(親テーマ)は非常に複雑であるため、多くの子テーマ開発者は内部で何が起こっているかを正確に理解することはありません。
Hybridがクラス構造を使用しなかった場合、子テーマの開発者は、名前の再利用を避けるために、既存のすべての関数呼び出しが何であるかを知る必要があります。もちろん、すべての関数の前に一意のスラッグを付けることもできますが、同じ機能を使用したいシステムをさらに開発した場合、コードが読みにくくなり、保守が難しくなり、本質的に再利用できなくなります。
質問に答える
WTF?これを行う意味は何ですか?明らかに、同じテーマの複数のインスタンスを同時に使用することはありません。
いいえ、同じテーマの2つ以上のインスタンスを使用することはありません。しかし、私が言ったように、この場合のクラス構造は、従来のオブジェクトインスタンスを作成するのではなく、関数の名前空間と考えてください。クラス内のすべてをまとめ、インスタンス化してメソッドを呼び出す(myClass->method();
)か、メソッドを直接呼び出す(myClass::method();
)のは、読みやすく、再利用可能な方法で物事を名前空間にする非常にクリーンな方法です。
もちろんmyClass_method();
、代わりに次のようなものをいつでも使用できますが、別のテーマ、プラグイン、または他のフレームワークでこのコードを再利用する場合は、すべてのプレフィックスを変更して変更する必要があります。クラス内のすべてを保持することはよりクリーンであり、再開発と再デプロイをより迅速に行うことができます。
プラグインが名前空間(これはばかげている)に対してこれを行うと仮定しますが、テーマの言い訳は何ですか?何か不足していますか?
ほとんどの場合、私はあなたに同意します。ただし、その大半は急速に衰退しています。同じテーマのバリエーションを使用するMultiSiteインストールでいくつかのサイトをホストしています。同じテーマをわずかな違いで何度も再作成するのではなく、親テーマ用の単一の「クラス」があり、すべての子テーマがそのクラスを拡張します。これにより、各サイトのカスタム機能を定義しながら、ネットワーク全体で統一感を維持できます。
一方では、テーマ開発者はクラスベースのアプローチを選択して機能の名前空間を決定する場合があります(同じコードのチャンクを何度も再利用する環境で作業するのはばかげていません)。一方、テーマ開発者は、子テーマで簡単に拡張できるようにクラスベースのアプローチを選択できます。
このようなテーマをコーディングする利点は何ですか?
サイトでハイブリッドのみを使用している場合、エンドユーザーとしての利点を知ることはほとんどありません。Hybridの子テーマを構築している場合、名前空間と拡張性の利点があります。ThemeHybridで働いている場合、他のプロジェクト(Prototype、Leviathanなど)でのコードの迅速かつ効率的な再利用に利点があります。
そして、テーマ全体ではなくハイブリッドの特定の機能が好きなテーマ開発者であれば、非ハイブリッドプロジェクトでの迅速で効率的なコードの再利用に利点があります(GPLであると仮定)。