@EASemashko

Как быть со статическими свойствами класса в PHP?

Всем привет!
Я немного запутался на счет статических свойств класса.
Реализовываю для Битрикс одну вещь. Так вот. Там при обновлении информационного элемента необходимо изменить значения свойств при его обновлении, что, в свою очередь, ведет к вызову этой же процедуры обновления.
В качестве "предотвратителя" мог бы использоваться какой-то флаг, который бы говорил, что мы вызвали процедуру второй раз, не надо ее выполнять.
Получилось что-то вроде того:

class UserHandlers
    {
        static $disableHandlerForUpdateOther = false;

        //UPDATE ACTION
        public static function OnAfterIBlockElementUpdateHandler(&$arFields) {          
        if (!self::$disableHandlerForUpdateOther) {
               ...
               self::$disableHandlerForUpdateOther = true;
               ...
        }


Правильно ли я понимаю, что при одновременном паралелльном обновлении нескольких элементов получится ситуация, что $disableHandlerForUpdateOther будет иметь, возможно, значение true в начале выполнения метода OnAfterIBlockElementUpdateHandler?
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Правильно ли я понимаю, что при одновременном паралелльном обновлении нескольких элементов получится ситуация, что $disableHandlerForUpdateOther будет иметь, возможно, значение true в начале выполнения метода OnAfterIBlockElementUpdateHandler?


В рамках одного запроса параллельного выполнения не будет. Вызовы произойдут поочередно. Первый вызов будет иметь false и выполнит содержимое метода. Остальные будут иметь true и ничего выполнить не смогут.

> Пожалуйста, по легче с длинной названия переменных

Куда лучше длинное и понятное название, чем короткое и непонятное. Основная идея в том, чтобы название метода\переменной полностью объясняло его содержимое\задачу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы