我有一个类的公共方法,我想记录该方法可以接受的可用字符串值。这是可以接受的吗:
/**
* Set size of photos
*
* @param string $size can be one of these options: url_sq, url_t, url_s, url_m, url_o
* @return void
*/
public function setSize($size){
$this->_size = $size;
}
Run Code Online (Sandbox Code Playgroud) 是否有一个功能或插件来创建这样的本地项目文件的链接:
/**
* @see ./views/templates/file.twig
*/
public function render()
{
..
}
Run Code Online (Sandbox Code Playgroud)
这对于在文件之间跳转非常有用.
我找到了这个插件,但似乎不再维护或不支持PhpStorm> 2016:
有没有办法记录某个类对另一个类中定义的每个方法都有魔术方法?
我正在使用 PhpStorm,所以我会对任何可以让自动完成功能正常工作的解决方案感到满意。
class A
{
// a bunch of functions go here...
}
/**
* Class B
* What should go here to make it work???
*/
class B
{
private $aInstance;
public function __construct() {
$this->aInstance = new A();
}
public function __call($name, $arguments) {
// TODO: Implement __call() method.
if(method_exists($this->aInstance, $name)) {
return $this->aInstance->{$name}(...$arguments);
}
throw new BadMethodCallException();
}
// a bunch more functions go here...
}
Run Code Online (Sandbox Code Playgroud) 我有一些问题让phpdoc正确运行.大部分文档都是成功生成的,但我多次收到以下警告:
警告:date():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或
date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们America/Los_Angeles在5064行的/Users/ben/bin/PhpDocumentor/phpDocumentor/Converter.inc中选择' '代表'PST/-8.0 /无DST'
和
警告:strftime():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或
date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们America/Los_Angeles在第370行的PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php中选择' '代表'PST/-8.0 /无DST'
我可以轻松地从代码中删除Smarty警告,因为它只是在渲染文档中的模板顶部生成时间戳.没什么大不了的.phpDocumentor中的第一个错误我不确定.似乎只是为Smarty为模板指定了一个日期:
$templ->assign("date",date("r",time()));
Run Code Online (Sandbox Code Playgroud)
也许我可以删除Smarty模板和此行中的所有"日期"变量.
无论如何,此警告也在生成的文档中,索引页面只显示此警告.有什么想法在这里发生了什么?我正在使用1.4.3版本,这里是我的标志/选项:
#!/usr/bin/env bash
phpdoc \
--title 'Asra Documentation' \
--directory library/Asra \
--target docs \
--defaultcategoryname Asra \
--defaultpackagename Asra \
--quiet on \
--output HTML:frames:phpedit
Run Code Online (Sandbox Code Playgroud) 我有这个:
/**
* @file
* API for loading and interacting with modules.
* More explaination here.
*
* @author Reveller <me@localhost>
* @version 19:05 28-12-2008
*/
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个除了@token数据之外的所有正则表达式,所以结果将是:
@file API for loading and interacting with modules. More explaination here.
@author Reveller <me@localhost>
@version 19:05 28-12-2008
Run Code Online (Sandbox Code Playgroud)
我现在有这个:
$text = preg_replace('/\r?\n *\* */', ' ', $text);
Run Code Online (Sandbox Code Playgroud)
它完成了部分工作:它只删除每行前面的*.谁可以帮助我,所以它也剥离/**和最后的斜线/?任何帮助将不胜感激!
PS:例如,如果commentlbock包含类似的东西
/**
* @foo Here's some slashes for ya: / and \
*/
Run Code Online (Sandbox Code Playgroud)
那么很明显@foo之后的斜杠可能不会被剥离.reult必须是:
@foo Here's some slashes for ya: / and \
Run Code Online (Sandbox Code Playgroud)
我希望那里有一个正则表达式大师:-)
这是交易,
如果您使用过Aptana,Eclipse甚至Microsoft Expression Web编辑器,那么您已经看到它们具有Balloon Text或Intellisense弹出窗口,其中显示了内置和自定义对象,方法等的提示/信息.
他们通过JSDoc,PHPDoc,JavaDoc,RDoc等获取信息.
我想在Vim中获得这些功能,也可以实现为omnicompletion,因为Mac/GVim也支持气球文本.
可能重复:
PHPDoc用于可变长度的参数数组
每当我输入$_SERVER['']并按Ctrl + Space时,它会给我一个可能的索引列表.如何才能使我创建的数组成为可能?
我在我的PHP类中使用了神奇的方法,但当我尝试将它们设为私有时,我会发出警告:
警告:魔术方法__get()必须具有公共可见性,并且在...中不能是静态的
我不想在Eclipse自动完成中使用这些方法.(或许是phpdoc的一种方式?)所以我的问题是,为什么这些方法必须公开?
细节
Foo实现\Iterator接口的类,我们知道迭代器中的所有项都是class的实例Bar.题
如何提示它Foo是可迭代的并且只包含Bar?当然,提示应该保留信息,这是它的实例Foo
到目前为止我尝试了什么
如果我们有一个数组Bar的情况下,那么这是一件容易的事情(它的描述,例如,在这个问题)Bar[].此外,如果意图是迭代Foo,它仍然可以解决(或多或少):
//assume that $foo is instance of Foo
//..
/* @var $object Bar */
foreach ($foo as $object) {
}
Run Code Online (Sandbox Code Playgroud)
但是,有一个非常重要的事情是使用就地提示无法实现的:返回类型.如果我有一些应该返回的方法Foo,我只知道如何提示Foo,但该函数的用户仍然无法公开,它实际上是可迭代的并且包含Bar实例(就像我指定的那样)@return Bar[]如果是Bar实例数组)
我正在尝试实现处理查询的Results类。简而言之,您将具有以下功能:
function all();
function first();
function paginate(int $perPage, int $pageNo = 1);
Run Code Online (Sandbox Code Playgroud)
这很好用,问题在于当在多个不同的查询类中使用同一结果类时,IDE无法知道返回类型。例:
UserQuery->results()->all() 将返回一个用户实体数组。
UserQuery->results()->first() 将返回一个用户实体。
在某些语言中,您具有泛型,这意味着我可以只Results<User>在UserQuery类中使用,然后我的Results类可以分别返回T[]和T。
我的一个想法是将一个空实体作为构造函数传递给Results类,然后尝试将该属性用作返回类型,但是我无法弄清楚。有什么解决方法吗?我要解决的主要问题是IDE自动完成和分析,因此纯phpDoc解决方案非常适合我的用例。
我能想到的唯一其他解决方法是必须为每种实体类型编写一个单独的Results类,这将证明很累。