- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近从 Slim 2.X 迁移到 Slim 3.X,我发现了一个可能有点愚蠢但在某些方面让我烦恼的问题。
新的 Slim 3.X,作为与旧 2.X 版本的区别,它使用基于 Pimple 构建的依赖注入(inject)容器 (DIC) 实现了一个新的容器系统。 .
正如我一直在阅读的那样,我发现这是一个非常重要的改进,因为它允许您以多种不同的方式管理您的 PHP 应用程序。
当我开始玩弄它的新东西时,我发现了一些令人困惑的东西,这可能是我遗漏的东西。
我使用 PHPStorm;我喜欢这个 IDE 的地方之一是它的代码完成以及编写代码和理解类的便利(我实际上是一名学生,所以这对我有很大帮助)。
当我编写 Slim 路由时,如果我想访问存储在容器内的 View 对象,我必须使用 $this->view
变量来引用它。问题是,通常情况下,当我提到某个对象时,PHPStorm 会列出该对象内的方法和属性,但 $this
对象不会发生这种情况。
我想,在路由内部,Slim 将所有路由功能和所有容器对象存储到 $this
分配器中。
$container = $app->getContainer();
$container['view'] = new \Slim\Views\PhpRenderer('protected/views/');
$app->get('/products', function(Request $request, Response $response) {
$response = $this->view->render($response, 'products.php');
return $response;
})->setName('products');
当我访问我的 /products
路径时,它成功地呈现了我的产品模板并显示了预期显示的内容,所以没有问题。
问题是我希望 PHPStorm 知道路由中的 $this
变量存储了调用路由之前之前设置的所有容器。
我想过 /* @var */
和 /* @global */
或类似的东西但是在搜索了一段时间并尝试了不同的东西之后,我还没有' 找到任何可以工作的东西。
总而言之,我想说的是 PHPStorm 是否可以像这样列出容器对象的属性和方法:
谢谢!
最佳答案
最简单的方法是使用单独的 Action 类而不是使用闭包。这还具有更易于测试的好处。
首先创建你的 Action ,将它的依赖注入(inject)到它的构造函数中,并编写一个将被 Slim 调用的 `__invoke`` 方法:
class ProductsListAction {
protected $view;
public function __construct(\Slim\Views\PhpRenderer $view) {
$this->view = $view;
}
public function __invoke($request, $response, $args) {
$response = $this->view->render($response, 'products.php');
return $response;
}
}
为此,您现在需要一个 DIC 工厂:
$container['ProductsListAction'] = function ($c) {
return new ProductsListAction($c['view']);
};
您现在可以将新操作注册为可调用路由:
$app->get('/products', 'ProductListAction');
现在,PhpStorm 将在您的 ProductsListAction
类中正确地自动完成。
关于PHPStorm 和 Slim 3.X DIC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532754/
自从我开始使用 PhpStorm 以来,我在编辑器中间有一条非常微妙的垂直线,表示 120 个字符的行长度限制。 那太棒了,所有的爵士乐,直到最近我开始有第二行,这表明 80 个字符的限制。 我的问题
PhpStorm 保留一个 Local History所有文件。 有谁知道这些文件存储在哪里? 最佳答案 本地历史记录与其他索引/缓存文件一起存储 -- 如果您想单独复制/备份它,您将无法自己阅读它
经过多次搜索,似乎我没有选择在PHP中对齐变量的连续分配。我可以在数组中对齐键/值对,仅此而已。 似乎旧版本的PHPStorm都有它。 PHPStorm 9有可能吗?如果是这样,怎么办?如果不是,它真
我已经在PHPStorm中安装了nodejs插件,并设置了yuicompressor npm来最小化css / js。 我使文件监视程序正常工作,以便每当我对项目中的.css / .js文件进行更改时
有没有办法让phpStorm更新docblock的内容?例如,如果我有以下代码 //----------------------------------------------------------
有没有简单的方法可以在 phpStorm 中将制表符转换为空格?目前我使用正则表达式替换\t->\s\s\s\s 并想知道是否有简单的方法可以做到这一点,因为我与 magento 合作并且扩展开发人员
我使用 PhpStorm。我想制作代码片段,然后为它们分配快捷方式。我可以在 NetBeans 中做到这一点,但在 PhpStorm 中我不知道如何制作它们。 例如,要在 NetBeans 中添加 c
PhpStorm 会警告 PHP 代码中的许多问题(潜在的或实际的问题)。我经常看到这样的代码: function doSomething($a, $b) { // ... } $value
PhpStorm 在土耳其语单词下方显示黄线。 如何忽略评论中的所有拼写错误。 最佳答案 设置(Mac 上的首选项)|检查 |拼写 |拼写错误 您可以配置此检查以忽略评论。 但是理想情况我建议添加该
在大多数 Windows 应用程序中,我可以使用组合 Shift + F10 来复制鼠标右键单击。 Shift + F10 被映射为在 PHPStorm 中调试当前文件的快捷方式。我查看了设置中的映射
是否可以在 Phpstorm 中启用水平滚动? 我在搜索设置时什么也没找到。 最佳答案 您是否尝试过按住 SHIFT + 鼠标滚动? 我从版本 8.0.3 到 9.0.2 对其进行了测试,它工作得很好
PhpStorm 中是否可以有多个窗口(对于同一项目)?如果是,怎么做? 最佳答案 PhpStorm 仅支持每个项目一个框架。 请注意,您可以将编辑器选项卡拖到主窗口之外以为编辑器创建另一个窗口。如果
在 PhpStorm 中,有一个扩展选择 ctrl + w 的快捷方式。有没有选择当前所有行的快捷方式?我在 Sublime 中寻找类似于 ctrl + l 的东西? 最佳答案 此类操作可用.....
我在 PhpStorm 中定义了几个命令行工具。 有没有办法创建自定义按钮来调用这个脚本? 我在首选项面板中找不到任何设置。 最佳答案 创建命令并在 Show in 部分选中所有内容。您可以在菜单 T
最近在一个全新的 Ubuntu 安装上,突然 PHPStorm 停止允许我使用带有葡萄牙语口音的单词。 例如: Trying TILDE+A should result in: ã Instead i
我使用 include 在我的 php 脚本中包含了一些文件并且我正在使用我包含的文件中定义的变量和函数。有没有办法以这种方式配置 PhpStorm 以在建议列表中显示此类变量? 最佳答案 2021
我正在尝试将 Phalcon 开发人员工具与 phpstorm 集成。有一个video here ,但由于我所在的位置,我无法查看它。 我在文档中找不到任何其他可用的引用,如何实现此目的? 最佳答案
在 PhpStorm(和其他 JetBrains IDE)中,是否可以将函数属性作为文件/资源路径? 例如在这个函数中: function mix($file): string { // ch
鉴于 PhpStorm 提供的出色的编码指导,我对字符串中使用的变量缺乏变量名称建议感到有些困惑。 $variable = "something"; // A: $variable; // B: $s
目标很简单 - 我想一次打开所有修改过的文件。有没有快速的方法来做到这一点? 目前我正在使用 Alt + 9 然后打开文件,但这还不够快(按快捷方式,全选,按 Enter,手动打开“未版本化”的文件)
我是一名优秀的程序员,十分优秀!