回答
我不知道從你的問題,你用靜態類/方法的意思,一些代碼示例可能會有幫助。但是你可以將這個類聲明爲一個服務,它聽起來好像它可能是無論如何,然後注入實體管理器作爲依賴。
services.yml
services:
my_service:
class: Acme\AppBundle\Services\MyService
arguments: ["@doctrine.orm.entity_manager"]
然後在你的類,你將不得不使用這樣的實體管理器:
<?php
namespace Acme\AppBundle\Services;
use Doctrine\ORM\EntityManager;
class MyService
{
/**
* Entity Manager
*
* @var Doctrine\ORM\EntityManager
*/
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
...
}
然後你就可以在你的控制器使用此服務,像這樣:
$this->get('my_service')->doSomething();
我知道這種方式來做到這一點,但我需要的是從靜態方法進行查詢,因爲我需要通過調用 $ myResult = MyStaticClass :: getMyValue($ params)來獲得結果。 。所以我需要使用類似於公共靜態函數getMyValue($ params){}的東西。我不希望被迫調用構造函數。謝謝。 – user3174311
實際上,隨後使用上面的服務,您只需向其中添加一個名爲getMyValue($ params)的方法並將其稱爲像''''myResult = this-> get('my_service') - > getMyValue($ params)'' '''。無需調用構造函數,因爲該服務將被實例化,並且實體管理器已經在該點自動注入。 如果你有這個靜態方法的原因是「能夠從任何地方方便地調用它」,那麼服務幾乎是Symfony的做法,我想。 – sekl
謝謝,我會盡快嘗試!我如何從擴展PHPUnit_Framework_TestCase的類調用該服務? – user3174311
您可以調用setter函數,注入實體管理器,在那裏調用stati C方法:
myController的
Class MyController extends Controller
{
public function newAction()
{
$entityManager = $this->getDoctrine()->getManager();
SomeClass::setEntityManager($entityManager);
$result = SomeClass::myStaticMethod();
}
}
SomeClass的
Class SomeClass
{
private static $entityManager;
public static function setEntityManager($entityManager)
{
self::$entityManager = $entityManager;
}
public static function myStaticMethod()
{
return $entityManager->getRepository(SomeEntity::class)->findAll();
}
}
- 1. 如何從靜態方法調用非靜態方法android
- 2. 如何從靜態方法調用非靜態方法
- 3. 如何從靜態方法調用非靜態方法?
- 4. 如何從一個靜態方法調用非靜態方法
- 5. 如何從靜態方法調用非靜態方法?
- 6. 如何從靜態方法輸入非靜態方法
- 7. 如何使用靜態方法調用非靜態方法(使用WebControl)?
- 8. 如何從靜態方法調用startActivityForResult?
- 9. 如何從靜態方法調用getSupportFragmentManager?
- 10. 如何從靜態上下文中引用非靜態方法
- 11. JS - 調用靜態方法與原型
- 12. 如何使用android.view.ViewDebug靜態方法?
- 13. 如何用非靜態方法覆蓋靜態方法?
- 14. 調用從靜態方法
- 15. 如何從C#中的靜態方法調用非靜態方法?
- 16. 如何從同一類的靜態方法調用非靜態方法?
- 17. 從Python中的靜態方法調用非靜態方法
- 18. 從靜態方法調用非靜態方法
- 19. 從另一個靜態方法中調用靜態方法
- 20. 從靜態基類方法調用靜態派生類方法
- 21. 從靜態方法調用非靜態方法
- 22. 從靜態Web方法調用ASP.NET頁面非靜態方法
- 23. 從靜態方法調用非靜態方法Objective C
- 24. 從另一個靜態方法中調用matlab靜態方法
- 25. 從靜態方法使用Log4j2日誌
- 26. 從靜態方法調用UserControl方法
- 27. 如何正確使用Mockito靜態方法包裝在非靜態方法中?
- 28. 如何使用與靜態方法衝突的非靜態方法的特質?
- 29. 如何在靜態主要使用非靜態方法(觀察者方法)
- 30. 使用方法調用靜態方法?
所提供的答案是錯的,因爲沒有關於靜態方法的解釋。請不要接受答案 – Trix