私はかなり長い間これを探しています。 似たような疑問がいくつか見えましたが、doctrine2とこの問題が適用されるかどうかはわかりません。 私はCodeIgniter2とDoctrine2を使い始めていますが、いくつか問題があります。私はPHPでOOPの達人ではありません。 私はMainObjectをCRUDなどのメソッドを含むようにしたいと思います。オブジェクトにそのクラスを拡張して親のメソッドを使用させたいが、子のプロパティを使用したい。 Doctrine2はオブジェクトのプライベートプロパティを使用するので、親クラスからこれらのメソッドにアクセスすることはできません。たとえば:doctrine2とcodeigniter2、親クラスが子プロパティとやりとりするための正しいアプローチ
Class MainObject{
public function validateFields(){
//go over each field and validate/update if needed
}
public function store(){
// do some validation, some logic, store, etc...
}
}
Class User extends MainObject{
/**
* @Column(type="string", length=32, unique=true, nullable=false)
*/
private $username;
/**
* @Column(type="string", length=64, nullable=true)
*/
private $email;
}
今、私はちょうど
$user = new User();
//set properties, somehow
$user-__set($something);
//call validation or store or some method from the parent that will interact with child properties
$user->validate();
$user->store();
$user->uploadImage();
$user->formatPropertiesForSomethingSpecial();
を呼び出すしたいと思い、私はReflectionClassを使用してこれを行うことはほとんどありだが、私はこれをやっていることはよく分かりません正しい方法? また、MainObjectにすべてのメソッドを持たせる方法があります。ユーザーに渡すべきことを行うためにUserを渡すだけです。これはおそらく「ライター」アプローチですか?私はそれが私のプライベートプロパティで何かをすることをユーザーから許可するとは思わないが、私はUserが自分のゲッターとセッターを持つことができると思いますか?
私は半年でPHPで何年も働いていますが、これは私のために何か新しいものなので、アドバイス、チュートリアル、URL、批評など何でもありがとう。
ありがとう、私はこれを使いたいと思っています。私は何をしたいのか分かりましたが、これはプライベートプロパティのためにはうまくいかず、うれしく思います。 致命的なエラー:プライベートにアクセスできないプロパティモデル\ User :: $ username in e:www \ application \ models \ object.php on line 80 このように、単純なVarとしてプロパティを作成すると、これは機能します。 クラスユーザーがメインオブジェクトを拡張します{ var $ username; var $ email; おそらく主な質問は、私が公開としてプロパティを設定するか、doctrine2が正しく動作するためにプライベートでなければならないことと、コードが安全であること、または何が起こる可能性があるかです。 ありがとう! – Dalibor
保護された作品が期待通りに動作しました。ありがとうございました!私は保護されているという印象を受けました。 私はProtectedで作業を続け、計画通りにすべてがうまくいくことを願っています:) – Dalibor
可視性の階層はPrivate
Stephen