Я уже давно ищу это.Я видел несколько похожих вопросов, но не уверен, применимы ли они к доктрине2 и этой проблеме.Я пытаюсь начать работу с CodeIgniter2 и Doctrine2, и у меня возникают некоторые проблемы, я не гуру ООП в php.Я хотел бы иметь MainObject, который будет содержать методы для CRUD и несколько других, и я хочу, чтобы объекты расширяли этот класс и использовали методы родителя, но со свойствами дочернего элемента.Поскольку Doctrine2 использует Private Properties для объектов, я не могу получить доступ к этим методам из родительского класса.Например:
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, чтобы он мог делать то же, что и пользователь, возможно, это «правильный» подход?Я не думаю, что это позволит мне что-то делать с частными свойствами от пользователя, но я предполагаю, что у пользователя могут быть свои собственные методы получения и установки?
Я работаю с semi-oop в php в течение многих лет, но это что-то новое для меня, так что спасибо за любой совет, учебник, URL, критику, что угодно.