Перейти к содержимому
Русский язык для Invision Community 5

Return value of none returned

Здравствуйте. Почему не возвращает значения из \IPS\sharedstats\Records\ScoredGame?

 

    /**
    * @param array $game
    * @param string $type
    * @return StatsGamesScored
    */
   protected function createGameEntity(array $game, $type): \IPS\sharedstats\Records\ScoredGame {
       $scoredGame = new \IPS\sharedstats\Records\ScoredGame();
       #$scoredGame->gameid = $game['id'];
       $scoredGame->setGameid($game['id']);
       $scoredGame->setGamename($game['gamename']);
       $scoredGame->setDuration($game['duration']);
       $scoredGame->setUuid($game['uuid']);
       $scoredGame->setMap($game['map']);
       $scoredGame->setSaved(new \DateTime($game['datetime']));
       $scoredGame->setScored(new \DateTime());
       $scoredGame->setType($type);
       #$scoredGame->setTeam1win(50.00);
       #$scoredGame->setTeam2win(50.00);
       $scoredGame->setLobbyChats(json_encode([]));
       $scoredGame->setGameChats(json_encode([]));
       $scoredGame->setPlayerawards(json_encode([]));
       $scoredGame->setWinner(0);

       $scoredGame->save();
   }

Рекомендованные сообщения

protected function createGameEntity(array $game, $type): \IPS\sharedstats\Records\ScoredGame {

Вы указали, что должен вернуться объект класса \IPS\sharedstats\Records\ScoredGame, но ничего не возвращаете.

       $scoredGame->save();
      return $scoredGame;

  • Автор

Вы указали, что должен вернуться объект класса \IPS\sharedstats\Records\ScoredGame, но ничего не возвращаете.

 

Значит это не то. Я во всём разобрался, у меня всё отлично работает, данные собираются между функциями, сохраняются - всё отлично.

 

Т.е если взять вот эту строку:

 

$scoredGame->setGameid($game['id']);

 

Работать не будет, функция не работает, она в прикрепленном файле. Если использовать значение передаваемое в таске между функциями то всё работает отлично:

 

$scoredGame->gameid = $game['id'];

 

Этот весь функционал с другого движка, на котором всё работало, помогите разобраться с функциями в файле ScoredGame, почему не возвращает нужные значения. Т.е если в функции прописать return 1; то вернет всё как надо, не работают именно переменные почему-то.

ScoredGame.php

Что именно не работает?

 

.е если в функции прописать return 1; то вернет всё как надо, не работают именно переменные почему-то
Где прописать?
  • Автор

Вот на скрине, если вернуть просто 1 то оно вернет, а через this не работает почему-то.

post-60255-0-90280400-1535530966_thumb.png

А дальше? Где Вы эту единицу используете?

 

В каком конкретно месте происходит не то, что ожидаете?

  • Автор
$scoredGame->setGameid($game['id']);

  • Автор

Еще раз попробую объяснить.

 

    /**
    * @param array $game
    * @param string $type
    * @return StatsGamesScored
    */
   protected function createGameEntity($game, $type): StatsGamesScored {
       $scoredGame = new StatsGamesScored();
       #$scoredGame->gameid = $game['id'];
       $scoredGame->setGameid($game['id']);
       $scoredGame->setGamename($game['gamename']);
       $scoredGame->setDuration($game['duration']);
       $scoredGame->setUuid($game['uuid']);
       $scoredGame->setMap($game['map']);
       $scoredGame->setSaved(new \DateTime($game['datetime']));
       $scoredGame->setScored(new \DateTime());
       $scoredGame->setType($type);
       #$scoredGame->setTeam1win(50.00);
       #$scoredGame->setTeam2win(50.00);
       $scoredGame->setLobbyChats(json_encode([]));
       $scoredGame->setGameChats(json_encode([]));
       $scoredGame->setPlayerawards(json_encode([]));
       $scoredGame->setWinner(0);

       $scoredGame->save();

       return $scoredGame;

   }

 

Вот в этом коде возвращаем значения из файла - функций (StatsGamesScored)

$scoredGame->setGameid($game['id']);

 

Я пробую сейчас вернуть просто двойку, оно не возвращает, почему?

 

    /**
    * Set gameid
    *
    * @param integer $gameid
    *
    * @return StatsGamesScored
    */
   public function setGameid($gameid)
   {
       return 2;
   }

Покажите, где Вы пытаетесь получить двойку

  • Автор
/**

* @param array $game

* @param string $type

* @return StatsGamesScored

*/

protected function createGameEntity($game, $type): StatsGamesScored {

$scoredGame = new StatsGamesScored();

#$scoredGame->gameid = $game['id'];

$scoredGame->setGameid($game['id']);

$scoredGame->setGamename($game['gamename']);

$scoredGame->setDuration($game['duration']);

$scoredGame->setUuid($game['uuid']);

$scoredGame->setMap($game['map']);

$scoredGame->setSaved(new \DateTime($game['datetime']));

$scoredGame->setScored(new \DateTime());

$scoredGame->setType($type);

#$scoredGame->setTeam1win(50.00);

#$scoredGame->setTeam2win(50.00);

$scoredGame->setLobbyChats(json_encode([]));

$scoredGame->setGameChats(json_encode([]));

$scoredGame->setPlayerawards(json_encode([]));

$scoredGame->setWinner(0);

 

$scoredGame->save();

 

return $scoredGame;

 

}

Этот код чуть ли не в каждом посте.

$scoredGame->setGameid($game['id']);

Здесь идет присваивание $scoredGame->gameid = $game['id'];

Где Вы хотите получить двойку, не понятно.

 

Чтобы получить двойку

    public function setGameid($gameid)
   {
       return 2;
   }

и

$two = $scoredGame->setGameid($game['id']);

Тогда значение переменной $two будет 2

  • Автор

Хорошо, вот такой код почему возвращает null?

 

$scoredGame->setGameid($game['id']);

 

    /**
    * Set gameid
    *
    * @param integer $gameid
    *
    * @return StatsGamesScored
    */
   public function setGameid($gameid)
   {
       $this->gameid = $gameid;

       return $this;
   }

Изменено пользователем TemKa_SD

Хорошо, вот такой код почему возвращает null?

Как Вы определяете, что NULL?

  • Автор

В БД идет стандартное значение "0" при сохранении $scoredGame->save();.

В БД идет стандартное значение "0" при сохранении $scoredGame->save();.

Из-за

    protected $poolid;

  • Автор

Понял, из-за

 

    /**
    * @var integer
    */
   protected $gameid;

 

Так и что? у всех переменных убирать это?

Изменено пользователем TemKa_SD

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.