symfony — Свободный установщик, возвращающий нулевое значение на фабрику

В проекте Symfony я создал Фабрику ниже:

<?php

namespace Company\MyBundle\Factory;

use Company\MyBundle\Entity\ParentRequest;
use Company\MyBundle\Entity\ChildRequest;
use Company\MyBundle\Entity\Foo;
use Company\MyBundle\Entity\Bar;

/**
* Class ChildRequestFactory
*
* Factory instanciating  ChildRequest with several values
* @package Company\MyBundle\Factory
*/
class ChildRequestFactory extends AbstractRequestFactory
{

/**
* @param \DateTime $date
* @param Bar|null $bar
* @param Foo|null $foo
* @return ChildRequest
*/
public function createRequest(\DateTime $date, Bar $bar
= null, Foo $foo = null)
{
$childRequest = new ChildRequest();
$childRequest
->setDateValidation($date)
->setIsValid(ParentRequest::IS_VALIDATED)
->setFoo($foo)
->setBar($bar)
->setBaz('baz')
->setOrigin('Manager')
;

return $childRequest;
}

Эта фабрика используется обслуживание используется Symfony команда.
Давайте объясним проблему прямо сейчас:

  • При выполнении команды в локальной среде разработчика с помощью приборов dev, фабрика правильно создает и возвращает объект.
  • При выполнении команды в локальной среде разработчика с базой данных preprod, фабрика правильно создает и возвращает объект.
  • При выполнении команды в среде preprod с использованием базы данных preprod возникает следующая ошибка:

Неустранимая ошибка PHP: вызов функции-члена setFoo () для null в /var/www/application/src/Company/MyBundle/Factory/ChildRequestFactory.php в строке 37

[Symfony \ Component \ Debug \ Exception \ FatalErrorException] Ошибка: вызов функции-члена setFoo () в null

Трассировка исключения:
() в /var/www/application/src/Company/MyBundle/Factory/ChildRequestFactory.php:37

Эта ошибка появляется только в среде preprod.
Я уже проверил версионирование, код находится в одной ветке git в локальной среде и в среде preprod.
Кеш уже был удален в preprod.
Синхронизация базы данных / обновление схемы: ОК

Версия Symfony: 2.7.13 (местный и препрод)
Версия PHP: 5.6.17 (местный) / 5.6.23 (Preprod)

Когда я не использую беглые сеттеры, это решает проблему в preprod env.

Любая идея ?

Примечание: я изменил имя пакета и некоторые переменные / классы / методы для конфиденциальности.

Обновить :

Это setIsValid setter, возвращающий ноль.

/**
* Set is_valid
*
* @param integer $isValid
*/
public function setIsValid($isValid)
{
$this->isValid = $isValid;

return $this;
}

1

Решение

Итак, я нашел источник проблемы. Я обычно выполняю такие операции, как перебазирование, интерактивное перебазирование или деление пополам с командной строкой, но я использую GitKraken для простых фиксаций и нажатий. Я предполагаю, что были некоторые проблемы с его использованием, потому что изменения, в том числе приведение всех установщиков в свободное состояние, не были перенесены в среду preprod. Как жаль, что я этого не увидел … все новые изменения присутствовали в среде preprod, кроме этих. Спасибо всем.

3

Другие решения

Может быть setIsValid не возвращайся $this другой объект?

1

По вопросам рекламы [email protected]