在我第一次尝试时,我只包括系统/应用程序/模型,系统/应用程序/控制器,系统/应用程序/帮助程序以及系统/应用程序/库.我选择了这些文件夹,因为我认为这些文件夹包含您希望正确记录的代码以供将来参考.你认为应该包括哪些其他文件夹?
在像Zend Framework(或它的扩展)这样的框架中,有时可以通过使用PHPDoc样式注释将类型提示之类的信息传递给框架代码.
我无法想象框架使用PHP解析文件,但我没有看到任何其他方法来实现这一点,除了PHP的一些内置语言功能,我不知道.那怎么办?
我试图在phpdoc中记录私有变量,但它没有记录.
这是我的代码:
class Content
{
/**
* simple db class variable
* @access private
*/
var $_db = null; // db
private $_s3 = null; // s3
/**
* queue for mainting session queue1
*/
public $queue = array();
}
Run Code Online (Sandbox Code Playgroud)
在$_db与$_s3两者都没有在文档中来.
当在函数上使用phpdoc我有一个总是包含一个类的实例的参数时,有没有办法在phpdoc中记录这个,以便生成的phpdoc链接到给定的类?
有点像@param MyClass() $var.
我在文档中找不到任何关于它的信息,实际上文档甚至没有提到对象(stdClass)类型参数,句点.
/**
* @property $Property
*/
class SomeClass {
public function __get($name){
return $this->{'get'.$name};
}
/**
* Some description
* @return bool
*/
public function getProperty(){
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题是 - 如何通过查看 $Property 的文档来查看 getProperty() 的描述?或者只是查看 getProperty() 文档的链接...
我在一些遗留代码中添加了一些注释,并且我遇到了PHPDocumentor的一个小问题.
这是一个例子:
/**
* Constructs the Widget object
*
* Basic constructor for the widget object.
* Another line of pointless explanation, badly worded.
*
* @param string $id The ID of the widget
* @param int $size The Size of the widget
* @return void
* @throws InvalidArgumentException
*/
public function __construct($id, $size) {
if (!is_string($id) || !is_integer($size)) {
throw new InvalidArgumentException('$id must be a string, $size an integer');
}
$this->id = $id;
$this->size = $size;
}
Run Code Online (Sandbox Code Playgroud)
我从命令行运行PHPDocumentor,并获得一个充满文档的可爱文件夹.
文档看起来很好,但我得到PHPDocumentor编译错误: …
考虑到以下场景,您将静态属性Foo记录为 的实例FooApp,扩展类Bar,并且在运行时发现该静态属性实际上设置为的实例BarApp而不是FooApp:
class Foo
{
/**
* @var FooApp
*/
public static $app;
}
class Bar extends Foo
{
}
Bar::$app = BarApp();
Run Code Online (Sandbox Code Playgroud)
...什么是记录的正确方法,Bar以便清楚地将其静态$app设置为BarApp实例而不是FooApp?
我已经尝试了以下但 PhpStorm 不尊重它,可能是因为@property它不适用于静态属性:
/**
* @property BarApp $app
*/
class Bar extends Foo
{
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我唯一想到的实际上是$bar在代码中覆盖:
class Bar
{
/**
* @var BarApp
*/
public static $app;
}
Run Code Online (Sandbox Code Playgroud)
这有点烦人,因为当理论上额外的文档已经足够时,它会导致额外的代码(例如在使用@propertyand覆盖实例级属性和方法的文档的情况下@method)。
(这里的用例是一个 …
php doc中标签的确切顺序是什么?有没有遵循的约定?还是“随机”?例如:
* Some instructions
* @example $entity->id; $entity->content ...
* @throws MyException
* @return mixed
* @see ThisClass
Run Code Online (Sandbox Code Playgroud)
* Some instructions
* @throws MyException
* @example $entity->id; $entity->content ...
* @see ThisClass
* @return mixed
Run Code Online (Sandbox Code Playgroud)
到目前为止“等效”吗?
我的IDE PHPStorm将下一行标记为错误(单词"password")
Yii::$app->passport->getLoginUrl($Url);
Run Code Online (Sandbox Code Playgroud)
我怎么能为它写phpdoc.
可能是这样或怎么样?
/** @var $Yii::$app->passport array */
Yii::$app->passport->getLoginUrl($Url);
Run Code Online (Sandbox Code Playgroud) 一般来说,这就是我如何让我的IDE(PhpStorm 2017)识别我无法正式声明的变量类型:
/*
* @var User $user
*/
foreach($users as $user){}
Run Code Online (Sandbox Code Playgroud)
IDE知道那$user是类User.现在我正面临着这条线的情况:
Yii::app()->user->login()
Run Code Online (Sandbox Code Playgroud)
具体来说,IDE不知道是什么类型user.我收到警告:
通过魔法方法访问的字段
所以我试着指定:
/**
* @var User Yii::app()->user
*/
Yii::app()->user->login();
Run Code Online (Sandbox Code Playgroud)
但这并没有什么不同.如何帮助IDE解析类型?