программист на PHP, специализация 1C-Bitrix
Контакты
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (27)
  • Как работает функция построения дерева?

    судя по распечатке массива, где-то ошибка: функция предполагает, что в неё передаётся хэш ( то есть массив, у которого ключи - значимы), а у вас приведён список ( ключи не несут информации ).
    Может, поэтому и непонятен результат работы функции. $arr должен быть таким:
    $arr = [685 => [
        'id' => 685,
        'title' => 'Комплектующие к Apple',
        'parent' => 0
      ],
      691 => [
        'id' => 691,
        'title' => 'Запчасти к iPad',
        'parent' => 685
      ],
      692 => [
        'id' => 692,
        'title' => 'Запчатси к iPhone',
        'parent' => 681
      ]
    ];

    Плюс в последнем элементе подозрительное значение у ключа parent ( больше подходит 685 ).
    Ответ написан
    Комментировать
  • Как сделать рерайт на папку с имненм домена в nginx?

    location /resources/ {
        alias /srv/web/split/storage/markets/$host/;
    }

    У меня нет опыта работы с $host - возможно, вам придется текущую конфигурацию развернуть в 4 отдельных.

    С отсутствующим файлом, думаю, надо решить через try_files $uri @named_location
    Ответ написан
    1 комментарий
  • Как в битриксе добавить значение в множественное свойство элемента?

    Самый очевидный вариант - сначала считать старые данные (например, через CIBlockElement::GetProperty() ). Насколько помню, сами битриксоиды в админке делают так же.
    Ответ написан
    Комментировать
  • Как передать ошибку пользователю из класса?

    ПО-моему, исключения обычно используют по-другому: в одном месте их кидают, а в другом - ловят. Вот вам пример:
    class A {
    
        /**
         * A constructor.
         * @throws Exception
         */
        public function __construct()
        {
            // $cnt откуда-то берется...
            $cnt = 0;
            if ( $cnt < 1 ) {
                throw new Exception("нулевое количество");
            }
        }
    }
    
    class B {
    
        private $errors = array();
    
        public function run()
        {
            try {
                $a = new A();
            } catch (Exception $e) {
                $this->errors[] = $e->getMessage();
            }
    
            return array("errors"=>$this->errors);
        }
    }

    Если по какой-то причине нельзя кидать исключение из конструктора ( уже не помню, но может быть для старых версий PHP это было плохо), то просто выносите код инициализации объекта в другой метод, а конструктор делаете пустым:
    class A {
        /**
         * A constructor.
         */
        public function __construct()
        {
        }
    
        /**
         * @throws Exception
         */
        public function init()
        {
            // $cnt откуда-то берется...
            $cnt = 0;
            if ( $cnt < 1 ) {
                throw new Exception("нулевое количество");
            }
        }
    }
    
    class B {
    
        private $errors = array();
    
        public function run()
        {
            try {
                $a = new A();
                $a->init();
            } catch (Exception $e) {
                $this->errors[] = $e->getMessage();
            }
    
            return array("errors"=>$this->errors);
        }
    }
    Ответ написан
    1 комментарий
  • Везде ли нужно проверять на существование элемента в массиве?

    иногда такие проверки бессмысленны. Допустим, Вы обращаетесь к функции, которая возвращает список, каждый элемент которого - массив определённой структуры, например ['id'=> ..., 'name' => ..., 'timestamp'=> ...,]
    Понятно, что не надо у каждого элемента проверять, есть ли там эти ключи - функция-источник гарантирует это.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)