簡體   English   中英

PhalconPHP-\\ Phalcon \\ Di中的getRouter

[英]PhalconPHP - getRouter in \Phalcon\Di

我使用PhalconPHP 3.1.2創建了新項目。 一切正常,但我在使用IDE時遇到問題。 在PhpStorm中,我從phalcon-devtools 3.1.2中添加了ide/stubs/Phalcon作為外部庫來處理警告和錯誤。

但是仍然存在一個問題:在app/config/router.php (由devtools創建的標准目錄結構)中,我得到了$router = $di->getRouter(); (也由devtools創建)並帶有警告: Method getRouter not found in Phalcon\\Di\\FactoryDefault

此類中確實沒有方法: https : //github.com/phalcon/phalcon-devtools/blob/3.1.x/ide/stubs/Phalcon/di/FactoryDe​​fault.php- > https://github.com/多爾康/多爾康-devtools /斑點/ 3.1.X / IDE /存根/多爾康/ Di.php

現在我沒有自動完成路由器的方法,這對我來說是個問題。 我做錯什么了嗎?

首先-我對Phalcon不熟悉。 這些是基於一般PHP / PhpStorm經驗得出的意見。

所以..如果您在給出的最后一個鏈接中查看該PHPDoc( Di.php的存根 ),您會注意到那里的代碼示例具有$request = $di->getRequest(); ;。

因為如果你只是復制粘貼整個樣本,你會得到相同的“未找到方法”錯誤... getRquest()時,透過魔術運行時轉換__get()方法。

可能的解決方案是為$di創建自己的存根:

  1. 創建將擴展原始Di新類,例如

     class MyDi extends \\Phalcon\\Di 
  2. 在那里添加所有這些getRoute() / getRequest()等方法(可能是帶有空主體的真實方法,如Phalcon的存根文件中的..或通過@method PHPDoc標記)

  3. 將此類文件放置在項目中的任何位置-僅將由IDE使用。

  4. 當您使用$di時,請在您的班級中鍵入提示,例如

     /** @var \\MyDi $di */ $di = new Di(); 

    在上面的代碼中,運行時$di將是Di的實例,但對於PhpStorm,在開發過程中它將是MyDi因此所有類型提示均已就緒。


可能的替代方法-而不是通過$di->getRoute()使用魔術。嘗試$di->getShared('route')或類似方法。

如果使用PhpStorm的高級元數據功能 ,它將允許根據參數值獲取正確的類型。

$di->getRouter()是魔術方法, Phalcon\\Di實現__call方法,如果使用getRouter() ,它將以這種方式獲取路由器服務。

如果需要,可以使用PHPStorm元數據並使用$di->get() https://www.google.pl/search?client=opera&q=phpstorm+metadata&sourceid=opera&ie=UTF-8&oe=UTF-8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM