質問

い抽象的な"オブジェクト"を提供するクラスの基本CRUD機能性とバリデーション、等。一般的に混雑して待たされることに__変化($名)マジック機能をクラスをロードが存在し、そのファイル名と同じクラスのいlazy負荷時のものです。のコードがるとこんな感じになると想像できなか繰り返す.

final class bicycle extends object {
    public function __construct($id=null) {
      parent::__construct($id, __CLASS__);
    }
    public function __toString() {
      return($this->name);
    }
}

私の質問は、かないのでなんとか動作するこれらのクラスは、フライとは思えない作りと同じ機能や性架設ます。なPHP5でも支援するのは僕だけでoverestimatingの力OO PHP?

よろしく!

役に立ちましたか?

解決 3

この機能は、PHP5には存在しません。これは、PHP6で利用可能かもしれないが、Ubuntuのためのパッケージはまだありませんので、私は進まないだろう。

他のヒント

の代わりにコピー-貼り付けこんだ、コードの __construct__toString 方法の定義にお object クラス?

のようなことをなすべき:

class object {
    public function __construct($id = null) {
        $this->name = get_class($this);
    }
    public function __toString() {
      return($this->name);
    }
    protected $name;
}

final class bicycle extends object {

}

とを出したそうです。:

$a = new bicycle();
var_dump($a);

す:

object(bicycle)[1]
  protected 'name' => string 'bicycle' (length=7)

このクラスのインスタンス bicycle, の名称 property 右の値です。

必要なコピー-ペーストの任意のコードを除の定義 bicycle クラス自体です。


としてsidenoteは、生成するクラスを動的にできるのではないでしょうかを使うようになります:

$code = 'final class bicycle extends object {}';
eval($code);

るためには、ただひたすらの構築 $code 変数ます。

私はこの暗号通信の使用を推奨 :

  • いないコードの一助とIDEでにないクラス
  • なくなりまphpdocをクリック (原因)
  • あるいはその前に"<エバール>が悪"もするというのはなかなか真の、少なくともこの状態です。
  • 用"new bicycle"なしで宣言されたのだと感じ。
  • いのちの一意義の利用 eval

を宣言する新しいクラスではありませんの痛み、と私は確認コードが正好みのコピー-貼り付け-修正数回線を使う。

さて、__toStringのために、あなただけの親クラスにそれを置きます。例は次のとおりです。     

class BaseObject {
    public function __toString() {
        return $this->name;
    }
}

class bicycle extends BaseObject {
}

$b = new bicycle();
$b->name = 'foo';
echo $b;

私はあなたが合格するためにコンストラクタをオーバーライドして達成しようとしているのかを正確にはわからないの CLASS の。

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