PhalconPHP-getRouter在\Phalcon\Di中
我已经使用PhalconPHP 3.1.2创建了一个新项目。一切正常,但我对IDE有问题。在PhpStorm中,我从Phalcon开发工具3.1.2中添加了PhalconPHP-getRouter在\Phalcon\Di中,php,phpstorm,phalcon,Php,Phpstorm,Phalcon,我已经使用PhalconPHP 3.1.2创建了一个新项目。一切正常,但我对IDE有问题。在PhpStorm中,我从Phalcon开发工具3.1.2中添加了ide/stubs/Phalcon,作为外部库来处理警告和错误 但仍然有一个问题:在app/config/router.php(devtools创建的标准目录结构)中,我得到了一行$router=$di->getRouter()(也是由devtools创建的)带有警告:方法getRouter未在Phalcon\Di\FactoryDefaul
ide/stubs/Phalcon
,作为外部库来处理警告和错误
但仍然有一个问题:在app/config/router.php
(devtools创建的标准目录结构)中,我得到了一行$router=$di->getRouter()代码>(也是由devtools创建的)带有警告:方法getRouter未在Phalcon\Di\FactoryDefault中找到
这个类中确实没有方法:->
现在我没有自动完成路由器的方法,这是我的问题。我做错什么了吗?首先,我对法尔康不熟悉。以下是我根据PHP/PhpStorm的一般经验所作的评论
所以。。如果您查看最后一个链接()中的PHPDoc,您会注意到那里的代码示例有$request=$di->getRequest()代码>
如果你只是复制粘贴整个样本,你会得到相同的“找不到方法”错误。。。asgetRquest()
在运行时通过magic\uu get()
方法进行转换
这里可能的解决方案是为$di
创建自己的存根:
创建将扩展原始Di
的新类,例如
class MyDi extends \Phalcon\Di
在那里添加所有那些getRoute()
/getRequest()
etc方法(可能是像Phalcon的存根文件中那样具有空主体的真实方法..或者通过@method
PHPDoc标记)
将这样的文件放在项目中的任何地方——它将仅由IDE使用
当您使用$di
--在类中键入提示,例如
/** @var \MyDi $di */
$di = new Di();
在上面运行时的代码中,$di
将是di
的一个实例,但对于开发期间的PhpStorm,它将是MyDi
,因此所有类型提示都已就位
作为可能的替代方案--而不是通过$di->getRoute()使用magic。。尝试$di->getShared('route')
或类似方法
如果您使用它,将允许根据参数值获取正确的类型。$di->getRouter()
是一种神奇的方法,Phalcon\di
实现了\u call
方法,如果您使用getRouter()
,它将以这种方式获得路由器服务
如果需要,可以使用PHPStorm元数据并使用$di->get()