我最近一直在玩phpDocumentor,发现它非常适合我的需求.我主要使用PHP/HTML/JS/CSS代码库,并希望phpDocumentor解析我的Javascript(也许还有CSS),以便将它们保存在一起.
我设法让phpdoc解析整个代码库中包含的javascript文件 - 但它拒绝了页面级别的docblock - 这导致它拒绝了各种标签(见下文).我发现通过在PHP文件的顶部添加一个PHP开放标记(前面带有JavaScript注释),我可以让它像PHP文件一样解析它.
// <?php
/**
* phpdoc goes here
* @package
* @todo
* - Todo 1
* - Todo 2
*/
function javascript(goes, here) {
}
Run Code Online (Sandbox Code Playgroud)
如果通过PHP将Web服务器设置为服务器.js文件,我可以想到会出现问题.有没有人能想到的其他问题?有没有更好的方法来实现这一目标?
谢谢
我有奇怪的问题.
当我@return Model\Article在模型加载方法中使用时,我在Eclipse的自动完成中看到模型的方法.
模型加载方法返回更多对象,所以我想要它@return My\BaseModel,然后/* @var $model Model\Article */为每个模型特定地(当我使用它时).
问题是@return Model\Article工作得很好(我看到Model\Article+ My\BaseModel方法),但另一种方式(@return My\BaseModel和内联/*...*/)没有 - 它说' 没有完成可用 '.
我尝试在之前和之后放置内联注释$model = ...;,但都没有奏效.
我很抱歉我的英语不好 - 我希望你能理解.
感谢您的任何帮助,最好的问候,JakubChábek.
假设我有一个带参数的方法,其有效值被声明为类常量(think PGSQL_ASSOC/ PGSQL_NUM/ PGSQL_BOTH).还有另一种方法,使用类似的参数,使用另一组类常量.有没有办法向phpDocumentor描述每组常量属于一个逻辑组的替代?将它们记录在组中是有用的,并且能够引用方法文档中的特定组.使用docblock模板不会削减它,因为模板的简短描述会被忽略(添加无用的混乱),而模板的长描述会附加到常量特定的描述中,从而产生一种向后的措辞(例如"BAR_MODE_1"这个和那个.Foo :: bar()的操作模式",而不是"Foo :: bar()的操作模式:BAR_MODE_1执行此操作.").
例:
class Foo {
// this group of constants are valid modes for the bar() method
const BAR_MODE_1 = 1;
const BAR_MODE_2 = 2;
const BAR_MODE_3 = 3;
/**
* @param int see Foo::BAR_MODE_* constants
*/
public function bar($mode) { ... }
// this group of constants are valid modes for the baz() method
const BAZ_MODE_1 = 1;
const BAZ_MODE_2 = 2;
const BAZ_MODE_3 = 3;
/**
* @param …Run Code Online (Sandbox Code Playgroud) 我正在寻找正确的方法来使用项目中的phpDoc-comments来生成我的Confluence 4.1.4中的开发人员文档.
虽然这个问题一般是关于DocBlocks的,但我的用例是关于 PHP。
考虑以下 PHP 代码:
<?php
class ParentClass {
/**
* Says 'hi' to the world.
* @return ParentClass Returns itself for chaining.
*/
public function say_hi(){
echo 'hi';
return $this;
}
}
class ChildClass extends ParentClass {
/**
* Says 'bye' to the world.
* @return ChildClass Returns itself for chaining.
*/
public function say_bye(){
echo 'bye';
return $this;
}
}
$c = new ChildClass;
$c->say_hi()->say_b| <- type hinting won't suggest "say_bye" here
?>
Run Code Online (Sandbox Code Playgroud)
这只是一个带有一些链接的琐碎类。扩展类没有类型提示,因为父类的文档块正在使用特定的类名,该类名没有子类的方法/属性。
假设我们确实想要类型提示功能,(如果没有,请留下这个问题 - …
我最近创建了一个用于创建HTML元素的类.我没有为每个现有的HTML元素和属性创建方法而烦恼,而是决定使用魔术方法__get和__call.所以使用我的代码我基本上可以这样做:
$signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled
$signUpForm->insert->input->type('email')->name('emailAddress')->maxlength(100)
Run Code Online (Sandbox Code Playgroud)
等等
但既然我决定保持这种"神奇"和简单,我也可以这样做:
$signUpForm->insert->magic->trick('rabbit')->accessory('hat') 这将导致:
<magic trick='rabbit' accessory='hat'>
Run Code Online (Sandbox Code Playgroud)
这一切都很好,因为在我看来它削减了很多样板代码,并且正是我需要做的.我不希望一个类强制执行HTML标准,我想要一个类来促进HTML,因为你知道如何使用它(老实说,这样做的代码很小)
所以我的问题是,考虑到这个类可以接受任何未定义的属性或方法,有没有办法在PHPDoc中指定这种行为?我没有运气就尝试了以下内容:
/**
* @property HtmlElementAttribute * Insert a new HTML element attribute
* @method HtmlElementAttribute * Insert a new HTML element attribute
*/
Run Code Online (Sandbox Code Playgroud)
我不知道这只是一个PHPStorm的东西,但我找不到任何类似的场景......
此外,如果您想知道为什么我会做这样的事情,那就是跟踪我的PHP代码中的某些HTML方面(例如,在表单中声明的ID或表单内的元素).这可以让我在发送给最终用户之前在我的HTML中具有可见性.
如果有一种方法可以在相同和/或不同类中的不同方法上复制(继承)完全相同的 phpdoc,我就在徘徊。
我知道内联 {@inheritdoc},它只提供从父类到其子类的继承(正如人们所期望的:)。
但是看看下面,我必须在 3 个不同的地方复制完全相同的描述,在同一个类中的 2 个方法和在单独的类中的一个(不是继承而是启动)。我想知道是否有一种方法可以做到这一点,而无需复制粘贴。
class Example
{
/**
* here i want to have exactly the same phpdoc,
* like what i created for getMeSomethingFromTheShelf() in the same class
*/
public function getMeSomething($id, $option = [])
{
return $this->getMeSomethingFromTheShelf($id, $option);
}
/**
* Some description
* and some more detail about how the $option value will be used
*
* @param int $id
* @param array $option and here some we have some …Run Code Online (Sandbox Code Playgroud) 我正在使用PhpStorm 10.0.2 开发PHP 7项目。
每当我@param为具有标量类型 ( string, int, ...)类型提示的函数参数声明 PHPDoc 时,我都会收到以下警告:
参数类型不匹配
以下是 PhpStorm 抱怨的一些示例代码:
class HostConfig
{
/**
* @var string
*/
private $hostname;
/**
* @var string
*/
private $domainname;
/**
* Creates a new instance of hte HostConfig model.
*
* @param string $hostname A host name (e.g. "dev", "int", "feature-xy")
* @param string $domainname A domain name (e.g. "example.com")
*
* @throws \InvalidArgumentException If the given $hostname is empty …Run Code Online (Sandbox Code Playgroud) 我在ZF1的评论/文档中找到了一些特殊符号"#@ +"和"#@ - ".例:
/**#@+
* @access protected
*/
Run Code Online (Sandbox Code Playgroud)
(https://github.com/zendframework/zf1/blob/master/library/Zend/Mail.php#L54)
我之前在另一个不同的存储库中看到过.
这些是什么意思?
假设我有一个UserController课程,并且正在使用导入该App\User课程use。在内部,有一种show()方法可以接收的实例User。
namespace App\Http\Controllers;
use App\User;
class UserController extends Controller
{
/**
* Show user info
*
* @param User $user
* @return Illuminate\Http\JsonResponse
*/
public function show(User $user)
{
// Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
User即使我使用导入类,还是建议在PHPDoc中添加的完全限定名称use吗?
phpdoc ×10
php ×8
docblocks ×2
phpstorm ×2
confluence ×1
eclipse ×1
javadoc ×1
javascript ×1
parsing ×1
php-7 ×1
phpeclipse ×1
type-hinting ×1
variables ×1