Size: a a a

2020 May 12

А

Аль Пачино in Yii Framework 2
Дмитрий
_attributes это массив ?
object(Excel)[17]
 public '_attributes' =>
   array (size=5)
источник

Д

Дмитрий in Yii Framework 2
А какого тогда ляха ты юзаешь его как объект ??  _attrıbutes->$name ?
источник

Д

Дмитрий in Yii Framework 2
Может надо [$name] ?
источник

А

Аль Пачино in Yii Framework 2
Дмитрий
А какого тогда ляха ты юзаешь его как объект ??  _attrıbutes->$name ?
$tempArray = (array)$this->_attributes;
foreach($tempArray as $name => $value) {
 if (!empty($tempArray[$name])) {
   $array[$name] = $value;
 }
}
источник

Д

Дмитрий in Yii Framework 2
На ты спросил почему он ругался на строку. Я объяснил. Дальше сам.
источник

А

Аль Пачино in Yii Framework 2
Дмитрий
На ты спросил почему он ругался на строку. Я объяснил. Дальше сам.
Я это понял.
источник

А

Аль Пачино in Yii Framework 2
А так юзают $this->$name?
источник

Д

Дмитрий in Yii Framework 2
Аль Пачино
А так юзают $this->$name?
источник

A

Aleksandr in Yii Framework 2
Аль Пачино
А так юзают $this->$name?
да, но это другой случай. и этим лучше не злоупотреблять.
источник

O

OSW in Yii Framework 2
@rapniger reacted to a message from @viperawa (5)
источник

А

Аль Пачино in Yii Framework 2
Aleksandr
да, но это другой случай. и этим лучше не злоупотреблять.
В каких случаях пользуются?
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Лучше не переписывай так)
Это почему? Очень здорово получается.
источник

NO

Nex Otaku in Yii Framework 2
Tagil Steel
Это почему? Очень здорово получается.
Ну если у тебя проверка уникальности завязана на ошибку FOREIGN KEY в БД, ты во-первых, не сможешь этот кейс нормально протестировать без БД, во-вторых может очень неожиданно вылезти побочный эффект.

Например, кто-то добавил код отправки уведомления менеджеру при сохранении. Уведомление отправляется перед сохранением. При ошибке уникальности, у тебя отправится уведомление, а только потом сработает ошибка. Итого, пользователь 9 раз сохранил с ошибкой, один раз успешно, а уведомлений отправилось 10 вместо 1.

Гораздо лучше, если валидация идёт перед сохранением в БД, как в обычном валидаторе. В указанном примере, мы просто вызовем $model->validate() заранее, и в случае ошибки не будем ни уведомление отправлять, ни в базу записывать.
источник

NO

Nex Otaku in Yii Framework 2
В общем, ты что ты переписываешь, выглядит как замена здорового кода на костыли.
источник

NO

Nex Otaku in Yii Framework 2
И кстати непонятно зачем. Чтобы сэкономить 1 запрос к БД? )
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Ну если у тебя проверка уникальности завязана на ошибку FOREIGN KEY в БД, ты во-первых, не сможешь этот кейс нормально протестировать без БД, во-вторых может очень неожиданно вылезти побочный эффект.

Например, кто-то добавил код отправки уведомления менеджеру при сохранении. Уведомление отправляется перед сохранением. При ошибке уникальности, у тебя отправится уведомление, а только потом сработает ошибка. Итого, пользователь 9 раз сохранил с ошибкой, один раз успешно, а уведомлений отправилось 10 вместо 1.

Гораздо лучше, если валидация идёт перед сохранением в БД, как в обычном валидаторе. В указанном примере, мы просто вызовем $model->validate() заранее, и в случае ошибки не будем ни уведомление отправлять, ни в базу записывать.
Ну и что? Протестирую с БД. Тесты делаются для приложения, а не приложение для тестов.
То, что вызывать нужно в некоем контектсе - это да, но в фреймворке много чего нужно вызывать в жестком контексте.
Просто у нас несколько другой контекст, для на. более оптимальный.
Сэкономить можно не один, а под десяток запросов.
Данные у нас обычно очень ветвистые.
Так что,  у всего есть своя область применения...
источник

TS

Tagil Steel in Yii Framework 2
Кстати, совсем забыл - так сделать пришлось еще и потому, что на одной нагруженной системе были гонки - Там был сервер чтения и сервер записи, так вот были случаи, когда валидация проходила, в этот момент данные измнялись и запись падала.
источник

NO

Nex Otaku in Yii Framework 2
Даже если десяток... Никогда не встречал, чтобы это было узким местом в приложении.
источник

TS

Tagil Steel in Yii Framework 2
Nex Otaku
Даже если десяток... Никогда не встречал, чтобы это было узким местом в приложении.
Если стоит задача малого времени ответа - то это и есть узкое место. И дергать сервер ради проверки нерационально.
источник

NO

Nex Otaku in Yii Framework 2
Вообще стандартная практика при мастер-слейв, когда пишется в мастер БД, а читается со слейва БД (реплики), делается так.

Запросы (пользователя к приложению) делятся на два типа.

1. Первые - без побочных эффектов, только чтение. Они идут на слейв.

2. Вторые - с побочными эффектами, меняющие состояние системы. Там может быть как чтение, так и запись. Так как данные на слейве могут отставать от мастера, то все запросы к БД из запросов приложения второго типа идут на мастер. Как чтение, так и запись.
источник