【问题标题】:Get directory path in PhpStorm Live Template获取 PhpStorm Live Template 中的目录路径
【发布时间】:2023-03-20 04:19:01
【问题描述】:

我正在尝试通过 PhpStorm 的模板系统(文件和代码模板)生成命名空间,但我无法通过 PhpStorm 的文档看到任何帮助/方法。

我想知道是否有一种方法可以根据目录自动定义命名空间:

<?php
// I'm wanting to apply to $namespace
namespace $namespace;

class ${NAME} implements
    \Zend\Mail\Mailable
{
    /** \Zend\Mail\Factory */
    private $factory;
...

}#set( $factory = "factory" ) #set( $this- = "this-" ) #set( $directory = ?)

如果我的目录/文件名是zend/mail/model/notice/send.php,我希望这样生成Zend\Mail\Model\Notice; 的命名空间,我可以通过${NAME} 变量获取类名。

我知道我可以让模板在创建文件时通过对话框请求命名空间,但是我想知道是否可以自动执行此操作?

【问题讨论】:

  • namespace ${NAMESPACE}; 不起作用吗?
  • 确实如此-但是它要求我在创建对话框中手动输入名称空间,我想我可以通过将 / 替换为 \ 并将每个目录的第一个字母替换为大写来替换路径目录字符。
  • 那么如果你创建一个普通的类,它会问你吗?
  • 不,除非我指定应该存在命名空间,否则它不会要求我提供命名空间。我可以从要添加的文件的文件目录生成命名空间,但是我不知道如何使用模板变量获取该目录。 @AdamForbis

标签: phpstorm


【解决方案1】:

文件路径没有预定义的变量,请投票给IDEA-136387,以便在此功能的任何进展上得到通知。

【讨论】:

【解决方案2】:

如果需要,可以使用 groovyScript。

例如,您可以创建一个变量 $FOLDER_OF_FILE$ 并将此 groovyScript 设置为获取文件的文件夹。

groovyScript("String[] p=_editor.getVirtualFile().getPath().split('/');String prevLast = p[p.length-2];")

您可以根据自己的需要更改和调整我的示例

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2023-03-02
    相关资源
    最近更新 更多