Как определить состояние экземпляра DB_DataObject? - PullRequest
0 голосов
/ 16 февраля 2010

Когда я добавляю методы к различным классам DB_DataObject, я склоняюсь к

Class Example extends DB_DataObject {
function methodx() //start fresh
{
    $newObject = DB_DataObject::factory($this->__table);
    /* do stuff with $newObject */
}

вместо

function methodx() //use current instance
{
    /* do stuff with $this */
}

Я понял, что делаю это, потому что не знаю, как определить состояние $ this. Код вызова мог выполнить любое из следующих действий:

$e = DB_DataObject::factory('Example'); $e->get(16); $e->methodx();
$e = DB_DataObject::factory('Example'); $e->somekey=$value; $e->methodx();
$e = DB_DataObject::factory('Example'); $e->somekey=$value; $e->find(); $e->methodx();

Как я могу определить состояние "$ this", когда я получаю его?

Существуют ли практические правила или дизайн для использования текущего экземпляра и создания нового экземпляра класса?

1 Ответ

0 голосов
/ 27 марта 2017

Если вашему методу требуется «чистое состояние» (переменные класса установлены в значения по умолчанию), просто создайте новый экземпляр.

Все, что вы хотели бы сохранить, это создание объекта, что дешево.


Вы можете определить, изменилось ли состояние, используя [ReflectionClass::getDefaultProperties()][1] и сравнив их с текущими значениями свойств. И тогда вам нужно будет проверить, были ли какие-либо новые свойства добавлены динамически.

Либо создайте новый экземпляр и сравните все свойства с текущим:)

...