February 13, 20197 yr Здравствуйте. Восстанавливаю приложение, подзабил на разработку, а тут вышла 4.4. Ошибка: Whoops\Exception\ErrorException: Undefined index: ActiveGamesWidgetType (8) Функции в виджете: public function configuration( &$form=null ) { if ( $form === null ) { $form = new \IPS\Helpers\Form; } $form->add( new \IPS\Helpers\Form\Radio( 'ActiveGamesWidgetType', isset( $this->configuration['ActiveGamesWidgetType'] ) ? $this->configuration['ActiveGamesWidgetType'] : '', TRUE, array( 'options' => array( -1 => 'Лобби && Игры', 0 => 'Игры', 1 => 'Лобби', ) ) ) ); return $form; } public function render() { $games = \IPS\wc3\ActiveGames\ActiveGames::getGamelist( $this->configuration['ActiveGamesWidgetType']); return $this->output( $games } Я так понимаю, нужно ISSET добавить, но он добавлен, что не так?
February 15, 20197 yr Author Что не так? Cannot use isset() on the result of an expression (you can use "null !== expression" instead) isset( implode(",", $this->configuration['ActiveGamesWidgetBots']) ) ? implode(",", $this->configuration['ActiveGamesWidgetBots']) : '*',
February 15, 20197 yr Нельзя использовать выражение в isset. Аргумент она принимает только переменную.
February 16, 20197 yr Author Блин, в 3.6 не было ошибок вообще. if ( count( $ids ) ) { foreach( $ids as $id ) { $botIds = array_filter( $ids, 'intval' ); } if ( count( $botIds ) ) { $where[] = array( \IPS\Db::i()->in( 'botid', array_filter( $botIds ) ) ); } } Whoops\Exception\ErrorException: You have used a function (count) that should be called from the root namespace for performance reasons
February 16, 20197 yr Нужно указать что count из глобальной области, а не из какого нибудь пространство имен (добавить обратный слеш перед функцией) \count( $var )
February 16, 20197 yr Там еще несколько ф-й IPS проверяют в 4.4 при включенном режиме разработчика. Если не хотите ставить слеш, то можно добавить в constants.php define( 'IN_DEV_STRICT_MODE', FALSE );Либо использовать какой-нибудь автоматический инструмент, который добавит слеши по всему коду.
February 16, 20197 yr Author Что не так? foreach( static::getUsers($g->getUsernames()) as $realm ) { isset( $realms ) ? $realms[ $realm['realm'] ]++ : ''; }
February 16, 20197 yr Что не так?А что не так? $realms = array(); foreach( static::getUsers($g->getUsernames()) as $realm ) { isset( $realms[ $realm['realm'] ] ) ? $realms[ $realm['realm'] ]++ : $realms[ $realm['realm'] ] = 1; }
February 16, 20197 yr Author Переменную в виде массива во всех случаях объявлять нужно? Ну всмысле там, где она используется в виде массива. isset( $realms[ $realm['realm'] ] ) ? $realms[ $realm['realm'] ]++ : $realms[ $realm['realm'] ] = 1; Это понятно, если существует $realms[ $realm['realm'] ] то выбрать $realms[ $realm['realm'] ]++ иначе $realms[ $realm['realm'] ] = 1. Зачем тут 1? И не правильно выбрались данные: http://prntscr.com/mlvepl Убрал: $realms = array();
February 16, 20197 yr Переменную в виде массива во всех случаях объявлять нужно? Ну всмысле там, где она используется в виде массива.Не только массив. Зачем тут 1?А что должно быть? Если еще нет $realms[ $realm['realm'] ], то создаем и присваиваем 1. Иначе количество для каждого индекса будет на единицу меньшеforeach (array(1,2,3,4,5,1,5,5) as $i) { isset($realms[$i]) ? $realms[$i]++ : $realms[$i] = 1; } две единицыодна двойкаодна тройкаодна четверкатри пятерки На выходе [1] => 2 [2] => 1 [3] => 1 [4] => 1 [5] => 3 И не правильно выбрались данные: http://prntscr.com/mlveplВам виднее. У вас там вообще цикл в цикле.
February 16, 20197 yr Author Не работает оно. Если в игре 0 игроков, т.е срабатывает именно $realms[ $realm['realm'] ] = 1 то ошибка Invalid argument supplied for foreach(). Хотя, это наверно в count надо оборачивать? Если count есть, то выводить данные.
February 16, 20197 yr В php 7 не знаю какой ревизии есть такая штука как ?? (объединения с null) $realms[ $realm['realm'] ] = $realms[ $realm['realm'] ] ?? 0; $realms[ $realm['realm'] ]++; Или по старинке $realms[ $realm['realm'] ] = isset( $realms[ $realm['realm'] ] ) ? $realms[ $realm['realm'] ] + 1 : 1;
February 24, 20197 yr Author Здравствуйте, чем оно отличается от этого? isset( $realms[ $realm['realm'] ] ) ? $realms[ $realm['realm'] ]++ : $realms[ $realm['realm'] ] = 1;
Здравствуйте. Восстанавливаю приложение, подзабил на разработку, а тут вышла 4.4.
Ошибка:
Функции в виджете:
public function configuration( &$form=null ) { if ( $form === null ) { $form = new \IPS\Helpers\Form; } $form->add( new \IPS\Helpers\Form\Radio( 'ActiveGamesWidgetType', isset( $this->configuration['ActiveGamesWidgetType'] ) ? $this->configuration['ActiveGamesWidgetType'] : '', TRUE, array( 'options' => array( -1 => 'Лобби && Игры', 0 => 'Игры', 1 => 'Лобби', ) ) ) ); return $form; }public function render() { $games = \IPS\wc3\ActiveGames\ActiveGames::getGamelist( $this->configuration['ActiveGamesWidgetType']); return $this->output( $games }Я так понимаю, нужно ISSET добавить, но он добавлен, что не так?