3

私は2つのクラスを持っています。どちらのクラスも同じプロパティのリストを使用します。このプロパティのリストは 75 行です。両方のクラスがアクセスできる別のファイルに入れたいと思います。しかし、私はインクルードを使用できません。

ファイルを短くし、変更があった場合にプロパティのリストをより柔軟にするにはどうすればよいですか?

自分の主張を伝えたかどうかわからないので、例を挙げます。

クラス fooクラス barがあります。

LIST OF FRUIT プロパティのprivate $applesprivate $bananas、およびprivate $grapesは、両方のクラスで使用されます。さらに、両方のクラスには、各クラスに固有のその他のプロパティがいくつかあります。

私はこのようなことをしたいと思います:

class foo 
{
 private $variable_one
 private $variable_two

 //DEFINE THE LIST OF FRUIT PROPERTIES HERE

 public function blahbla...
}

そして他のファイルで

class foo 
{
 private $variable_three
 private $variable_four

 //DEFINE THE LIST OF FRUIT PROPERTIES HERE

 public function gibberish...
}

将来、果物のリストを拡張してパイナップルとマンゴーを追加し、バナナを取り除く可能性があるため、そのリストを別の場所にファイルとして保存し、そこで変更したり、変更を加えたりできると便利です。果物のプロパティのリストを使用するすべてのクラスで採用されます。

また、ファイルの長さを減らすのにも役立ちます...前述のように、私の果物のリストは現在75行の長さです。両方のクラスの先頭にこの長い宣伝文句があるのはかなり面倒です.

これら 2 つの目標 (柔軟性と短いファイル) を達成する方法について、ご意見やご提案をいただければ幸いです。

どうもありがとう!

4

3 に答える 3

5

これらのクラスはどちらも、共通のプロパティを定義する基本クラスから継承する必要があるようです。オブジェクトの継承に関する PHP マニュアルを確認してください。

// The base class defines common properties
class FooBase {
  // protected properties will be available to extending classes
  protected $apples;
  protected $bananas;
  protected $oranges;
}
// Foo extends FooBase, inheriting its protected & public properties
class Foo extends FooBase {
  private $variable_one;
  private $variable_two;

  public function __construct() {
    // Initialize some stuff
    $this->apples = 3;
  }
  public function getApples() {
    // $this->apples inherited from FooBase
    echo $this->apples;
  }
}
// Bar also extends FooBase, and inherits the same 3 properties
class Bar extends FooBase {
  private $variable_three;
  private $variable_four;

  public function __construct() {
    $this->oranges = 9;
  }
  public function getOranges() {
    echo "I have {$this->oranges} oranges too!";
  }
}
于 2012-10-10T01:31:57.720 に答える
2

継承を使用できます:

class FruitObject {
    protected $apples;
    protected $bananas;
    // ...
}

class Foo extends FruitObject {
    private $var1;
    private $var2;
}

class Bar extends FruitObject {
    private $var1;
    private $var2;
}
于 2012-10-10T01:34:04.827 に答える