2016-10-12 6 views
1

私は、というクラスを持っていると言うことができますClass_Tool_RandomColor。それはすべてランダムな色を返します。 というメソッドがあります。getValue() もう1つはClass_Tool_RandomLineTypeです。これは実線、点線などのようにラインタイプを返します。getValue()他のクラスの中でPHPクラスを使用する最も良い方法は?

ここでは、ランダムな色とランダムラインタイプが必要な多くのクラスがあります。 Class_Square、Class_Circle、Class_Triangleのように...

/* First I create my Class_Tool_RandomColor on top of my php file */ 
$colorObj = new Class_Tool_RandomColor(); 
$lineObj = new Class_Tool_RandomLineType(); 

... ... ... ...

/* Now when I created my other classes I pass the object to them */ 
$squareObj = new Class_Square($colorObj,$lineObj); 

... ... 
$circleObj = new Class_Circle($colorObj,lineObj); 

... ... 

は、これが最善の方法ですか?または他の方法がありますか? 私は延長を使うことができると思いますか?

class Class_Tool_RandomColor extends Class_Square{ 

しかし、私は拡張を使用する場合、どのような複数のクラスを使用すると、クラスを拡張する場合は、派生クラスのインスタンスが作成されたとき、それは同時にロードすることを意味し

+0

*「これが最善の方法ですか?」*は、SOのための良い質問ではありませんが、私はこのための構成をお勧めします。あなたの継承の例は動作しません – Phil

+0

より良いオプションのインターフェイスを使用する、PHPは複数の継承をサポートしていない、あなたはインターフェイスを使用する必要がある問題を克服する –

+0

したがって、複数のクラスを親クラスに渡すことはおすすめしません?何故なの? 私はそれを理解しやすいチュートリアルを見つけることができると仮定して、私はインターフェイス上でお読みになります。 – Lixo

答えて

0

...それを拡張できるかどうかについてと、メモリを消費します。親クラスが派生クラスのすべてのメソッドで主に必要な場合は、extendsを使用できます。しかし、クラスメソッド内にインスタンスを作成すると、他のクラスからの最小限の呼び出しが必要な場合に便利です。 それは、他のクラスがどれほど重要であるかによって異なります。

+0

また、任意のクラスの単一インスタンスにゲッターセッターを使用し、必要なときにすべてのメソッドを共有できます。 – Veer

0

IoC、Inversion of Controlですが、歩く前にクロールしてDependency InjectionFactoriesというデザインパターンがあります。あなたはもっと深い水を歩いているので、泳ぐ準備をしてください。

service containerを使用してアプリケーション内のクラス[オブジェクト]を管理するメリットは膨大です。 service containerクラスをオブジェクトの依存関係をインスタンス化します。

いくつかの簡単なGoogleの検索結果は、あなたが始めるために:

いくつかの図書館:

新しいPHPフレームワークのほとんどは、あなたが上から読んものを実装するサービス層のいくつかの並べ替えが含まれています。

関連する問題