- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在使用 PHPDoc 描述变量时,我对何时使用 null
作为类型感到困惑。类型提示是否应该描述外部调用者预期和遵守的希望和期望,或者它们是否应该记录变量的所有可能类型,即使希望它在实践中是一种非常具体的类型?
示例 1:默认值。以下函数只需要非空值。但如果没有传递任何值,它默认为 null
并明确检查该值作为确定是否传递任何内容的一种方式,并为该情况返回一个特殊值。希望没有外部调用者会传递除整数以外的任何内容。 null
应该像下面那样在 @param
类型中使用,还是应该只指定 int
因为这是我们想要传递的东西,如果有任何传递的话?
/**
* @param int|null $bar
*/
function foo($bar = null) {
if(is_null($bar)) {
return 'ABC';
}
return doSomething($bar);
}
示例 2:实例属性。我们只希望 $bar 包含整数。也就是说,如果没有为 bar 设置任何内容,则此实例属性的默认 PHP 值为 null。我是否需要在每个使用 $bar 的地方都考虑到这一点,并且可能是 null 类型,如下所示?
class Foo {
/**
* @var int|null
*/
public $bar;
/**
* @param int|null $bar
*/
public setBar( $bar) {
$this->bar = $bar;
}
/**
* @return int|null
*/
public function getBar() {
return $this->bar;
}
}
基本上,我发现自己几乎在每个 @param
和 @var
声明中都使用了 |null
,因为从技术上讲,它可能就是那个值。但实际上它不应该是。我应该期望我的几乎所有类型都包含 null
的可能性还是应该假设,并且我应该避免指定它,除非我期望设置或接收 null
的值> 明确地?
最佳答案
在实践中,我倾向于让参数标签只列出您想要传入的内容。但是,对于返回标签,您确实需要列出可能返回的每种类型。这就是为什么我对两者有不同意见。
因为 PHP 不是强类型的,即使你说“只传入一个 int”,你的方法仍然需要确保它没有传递一些意外的东西。仅仅因为方法代码试图处理接收其他类型,您不希望您的文档告诉您的用户“当然,您可以向我传递一个 NULL,我会为您做一些事情”。您希望您的文档说“给我一个整数,句点”。
在考虑返回值时,您的用户确实非常需要了解您的方法可能返回的每一种潜在返回类型,因为他们确实需要在代码中涵盖他们的基础以处理您的方法可能返回的所有类型。
关于php - 什么时候应该在 PHPDoc 类型提示和文档 block 中使用 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12666934/
我想知道如何在 phpdoc 注释中转义 phpdoc 注释。 例如,我将如何写这个: /** * Some documentation... * * * /** * * Example
我想整理一个仅部分使用 PHPDoc 的大型函数包含文件。有些函数没有 PHPDoc,比如 function name($var1,$var2){ // explanation what it doe
我有一个类Abc with 方法(主体不重要): /** * @return SomeBaseClass */ function getAll() { ... } 在Abc的 child 类叫 A
我正在寻找正确的方法来使用项目中的 phpDoc-comments 在 Confluence 4.1.4 中生成开发人员文档。 最佳答案 我一直在研究的一种方法是将我的 HTML 输出(类似于 php
我正在使用 laravel。我需要知道如何使用属性在 php 8 中编写 phpdoc。 /** * Transform the resource into an array. *
我正在使用 laravel。我需要知道如何使用属性在 php 8 中编写 phpdoc。 /** * Transform the resource into an array. *
虽然我按照说明安装了 phpDocumentor,但命令行似乎没有响应 phpdoc 给定错误:未找到命令“phpdoc”,您的意思是: 来自 deb phploc 的命令 'phploc' 来自 d
我想用 phpdoc 解析两个或多个文件夹。解析一个文件夹工作正常。 在文档中,我可以看到: -d|–directory[=”...”] Provide a comma-separated list
有没有办法记录特定函数调用 exit() ? 用例是我们有一个函数负责处理重定向(检查已发送的 header ,设置响应代码等...)然后关键地调用 exit() .不幸的是,PHPStorm 不知道
我已经在我们的服务器上安装了 phpDoc,并进行了设置等。它正在正确生成文档。我们使用的是“响应式”模板,但是无论使用什么模板,都会发生此错误。 在“错误”下,扫描的每个文件似乎都有以下错误: Ty
我试图对 Magento 进行逆向工程,我认为通读每一种方法是一个好的开始(官方文档太浅了)。 Magento 似乎没有预先生成的文档,这是公平的,因为每个配置都彼此不同,并且一般地记录它没有意义。代
如何在返回数组的 PHP 方法的文档中指定键的类型? 例如,我将其用于对象数组 @return MyClass[]。 但是我想注释一个像array( 'string' => array( MyClas
是否有适当的方法来记录使用 define() 定义的常量? @var 真的没有意义。我唯一能想到的就是省略标签,只在PHPdoc注释中写描述。 最佳答案 phpDocumentor 不识别或使用 @c
我应该如何正确使用 PHPdoc 来记录类中的可链接方法,如以下示例所示 - 正确用法是什么? class myClass { /** * @return myClass */
我对可用于 phpDocs 的各种 HTML 模板感到非常满意。我想知道我的 PHP 应用程序是否有其他 PDF 模板,我正在将其作为顶点项目编写,并希望将其作为我论文的补充。默认的 PDF 模板似乎
我有一个类,它包含一个文件,方法如下: 在 class.php 文件中: class A { const CONST1 = 5; /** @var int $a */ var $a = 5; publ
是否有用于记录采用单个配置数组而不是单个参数的函数的语法? 我正在特别考虑 CodeIgniter 风格的库,它们使用与此类似的机制: $value) { $this->$key = $
考虑这段代码: class ParentClass { public static function generate($className = __CLASS__){ if(
我发现另一个工具(doxygen)有这样一个选项(HIDE_UNDOC_MEMBERS)。我想知道 phpDoc 是否有类似的东西,只是用 @ignore 标记标记它们。 最佳答案 用@ignore
在 phpdocs 数据类型中使用命名空间的当前状态是什么。 例如: * @param string|Vendor\SomeClass $parameter 最佳答案 至少,phpDocumentor
我是一名优秀的程序员,十分优秀!