我正在尝试通过 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}
变量获取类名。
我知道我可以让模板在创建文件时通过对话框请求命名空间,但是我想知道是否可以自动执行此操作?
如果你愿意,你可以使用groovyScript。
例如,您可以创建一个变量 $FOLDER_OF_FILE$ 并设置此 groovyScript 以获取文件的文件夹。
groovyScript("String[] p=_editor.getVirtualFile().getPath().split('/');String prevLast = p[p.length-2];")
您可以根据您的需要更改和调整我的示例
文件路径没有预定义变量,请投票给IDEA-136387,以便收到有关此功能的任何进展的通知。
我已经为 magento 模块创建了一个实时模板,并希望根据 php 文件的文件路径生成命名空间。这对我有用:
实时模板:
<?php declare(strict_types=1);
namespace $NAMESPACE$;
class $CLASSNAME$
{
}
变量CLASSNAME
fileNameWithoutExtension()
变量命名空间
regularExpression(regularExpression(regularExpression(fileRelativePath(),"src/app/code/",""),"/\\w+\.php",""),"/",escapeString("\\"))
我使用了 3 个正则表达式()替换