- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
$is_active = true;
try
{
$is_active = $this->getIsActive($this->pk_id, true);
}
catch (DBModelException $e)
{
$is_active = false;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+162
$is_active = true;
try
{
$is_active = $this->getIsActive($this->pk_id, true);
}
catch (DBModelException $e)
{
$is_active = false;
}
Довольно хитрый способ проверить является ли объект новым или уже присутствует в базе (название переменной, кстати, тоже крутое).
Если объект новый, то при обращении к this->pk_id будет брошен DbModelException, который бросается при доступе к несуществующим свойствам объекта. Подразумевается, что несохранённый в базе объект не имеет первичного ключа.
Lure Of Chaos 04.04.2011 16:09 # 0
eth0 04.04.2011 18:45 # +1
Spider 04.04.2011 23:16 # −2
Lure Of Chaos 04.04.2011 23:32 # +5
но я считаю дурным тоном обьявлять переменную в блоке (тем более в двух блоках), а пользоваться ею вне этого блока
guest 05.04.2011 14:56 # 0
ilovephp 06.04.2011 17:28 # 0
Где он вменяемый - непонятно.
На пальцах: метод getIsActive(почему не isActive?) принимает на вход данные, которые ему заранее могут быть известны, и являются свойством класса. Он нигде не вызывается с данными, отличными от this->pk_id (разумеется, это неочевидно из данного куска).
Казалось бы, можно жрат, но тут возникает очень интересный вопрос - если ожидается, что доступ к полю может вызвать исключение, то почему бы его не отловить на более низком уровне - в самом getIsActive?