在我創建了下面的廠symfony項目:流利的二傳手在工廠返回空值 - PHP
<?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的命令使用服務。 我們現在解釋這個問題:
- 當執行在本地開發環境中開發燈具的命令,工廠正確地創建並返回一個對象。
- 在使用preprod數據庫的本地開發環境中執行命令時,工廠正確地創建並返回對象。
- 當使用preprod數據庫中preprod環境中執行的命令,以下引發錯誤:
PHP致命錯誤:調用一個成員函數setFoo()上的空在/ var /網絡/應用/ SRC /Company/MyBundle/Factory/ChildRequestFactory.php上線37
[Symfony的\元器件\調試\異常\ FatalErrorException] 錯誤:調用一個成員函數setFoo()上的空
異常跟蹤: ()在/var/www/application/src/Company/MyBundle/Factory/ChildRequestFactory.php:37
該錯誤只出現在preprod環境。 我已經檢查過版本,代碼位於本地和preprod環境的同一個git分支上。 緩存已經在preprod中刪除。 數據庫同步/架構更新:OK
Symfony的版本:2.7.13(本地和preprod) PHP版本:5.6.17(本地)/ 23年6月5日(preprod)
當我不使用流利的setters時,它解決了preprod env中的問題。
有什麼想法?
注意:我已經更改了包的名稱和一些變量/類/方法的機密性。
更新:
這是setIsValid二傳手返回null。
/**
* Set is_valid
*
* @param integer $isValid
*/
public function setIsValid($isValid)
{
$this->isValid = $isValid;
return $this;
}
告訴我們你的'setIsValid'方法 –
我賭的是,有一些錯誤'ParentRequest :: IS_VALIDATED' - 自動加載的一些問題,或者類似的東西,但它很難說是肯定的。你可以嘗試改變它到一個具體的價值,看看這是否有效? –
@TomaszMadeyski當傳遞像1這樣的具體值時它不起作用。同一問題 –