質問
い抽象的な"オブジェクト"を提供するクラスの基本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 の。