是否有一种语法来记录采用单个配置数组的函数,而不是单个参数?
我正在考虑CodeIgniter样式的库,它使用类似于此的机制:
<?php
//
// Library definition
//
class MyLibrary {
var $foo;
var $bar;
var $baz;
// ... and many more vars...
/* Following is how CodeIgniter documents their built-in libraries,
* which is mostly useless. AFAIK they should be specifying a name
* and description for their @param (which they don't) and omitting
* @return for constructors
*/
/**
* @access public
* @param array
* @return void
*/
function MyLibrary($config = array()) {
foreach ($config as $key …Run Code Online (Sandbox Code Playgroud) 我很困惑何时在使用nullPHPDoc描述变量时使用as作为类型.类型提示是否应该描述外部呼叫者预期和遵守的希望和期望,或者他们是否应该记录变量的所有可能类型,即使希望它在实践中是一种非常特定的类型?
示例1:默认值.以下函数仅需要非空值.但是,如果没有传递任何值,则默认为null并明确检查该值作为确定是否传递任何内容的方法,并为该情况返回特殊值.希望没有外部调用者将传递除整数之外的任何内容.应该null在@param下面的类型中使用,还是应该只指定,int因为如果传递任何东西,我们想要传递的是什么?
/**
* @param int|null $bar
*/
function foo($bar = null) {
if(is_null($bar)) {
return 'ABC';
}
return doSomething($bar);
}
Run Code Online (Sandbox Code Playgroud)
示例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;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我发现自己几乎每个人都乱扔垃圾@param并@var声明,|null因为从技术上来说它可能就是那个价值.但在实践中它不应该.我是否应该期望我的几乎所有类型都包含 …
是否可以链接到另一个方法/类/属性/等.在我的项目里面内嵌@deprecated标签?像这样:
/**
* Method description
* @deprecated 1.0 Reason for deprecation, use {@link newMethod()} instead!
* @param string $str
* @param string|null $str2
* @return bool
*/
public function method($str, $str2) {
// TODO: Code...
}
...
Run Code Online (Sandbox Code Playgroud)
?
我正在使用Eclipse + PDT进行开发.我一直在我的代码中添加phpdoc注释,但实际上从未在Eclipse中生成结果文档.我该怎么做 - Eclipse中是否有一些功能,或者应该在外部完成doc生成?
我非常喜欢在Notepad ++中工作,但我还没有找到一个自动执行PHPDoc样式注释的插件.其他PHP IDE(Eclipse,NetBeans,ZendStudio)包含此功能,它非常方便.
基本上我想要的是,如果在函数定义或类定义上面的行我键入:
/**
Run Code Online (Sandbox Code Playgroud)
它会自动填充PHPdoc格式(对于函数,类似于以下内容):
/**
*
* @param $first_argument
* @param $second_argument
* @return
*/
Run Code Online (Sandbox Code Playgroud)
然后当我在注释中输入其他行时,它会用星号开始每一行.
是否有一个NP ++插件可以实现这一点,或者是一种调整NP ++以使其工作的方法?
是否有正确的方法来记录在另一个维度内的数组中的值/对象?
通常,数组将按如下方式处理:
/** @var ClassName[] $Array */
$Array = array( $InstanceOfClassName,.. )
Run Code Online (Sandbox Code Playgroud)
但是我需要这样的东西:
/** @var ClassName[][] $Array */
$Array = array( 0 => array( $InstanceOfClassName,.. ) )
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,那么正确的PHPDoc表示法是什么?
问题很简单 - 我应该如何区分用于接口的phpdoc和用于实现接口的类?应该/它们可以是相同的还是接口文档应该尽可能通用,并且实现此接口的类更具体?
我从我的真实代码中包含一个方法phpDoc:
我的界面:
interface CacheInterface
{
/**
* Adds data to cache
*
* @param string $objectId Name of object to store in cache
* @param mixed $objectValue Data to store in cache
* @param mixed $lifetime Lifetime of cache file
* @param string $group Name of cache group.
* @param array $params Parameters that distinct cache files.
* @param array $files Name of files that are checked if cache is valid.
* @return bool True if cache …Run Code Online (Sandbox Code Playgroud) 我正在开发一个库,该库使用phpDocumentor规范来确定使用反射的类型系统.但是,我找不到有关泛型类型声明的任何信息.
是否有任何方式应指定泛型类型声明?
例如:是否有任何规范(正在进行中)指定如下内容:
/**
* @template <T extends Base>
*/
class Collection {
/**
* @return Iterator<T>
*/
function get_iterator();
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码只是一个示例,用于说明泛型类型声明的含义.我不希望这与集合和迭代器有任何关系.
关于这篇文章:
在PHPStorm中,当我有一个从每个子类返回不同类型的超类方法时,如何进行类型提示工作,
这个是关于PHPStorm类型提示的边缘情况.请尽量跟进 - 我会尽力让自己尽可能清楚:
所以,我有这个基础抽象类:
abstract class myBaseController {
protected $_model;
...
}
Run Code Online (Sandbox Code Playgroud)
另一个类继承自:
class myController extends myBaseController {
$hello = 'hello';
...
}
Run Code Online (Sandbox Code Playgroud)
并由第三类进一步扩展:
class myNewController extends myController {
public $myvar;
$this->_model = new myModel();
...
public function myFunc(){
// !!form is underlined as: "Method 'form' not found in class"!!
$form = $this->_model->form($new_variable);
}
Run Code Online (Sandbox Code Playgroud)
下面是myModel类的示例:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
Run Code Online (Sandbox Code Playgroud)
我真正的问题是如何正确"phpdoc"这种情况:
子类myNewController使用继承变量_model来分配myModel具有唯一函数的另一个类的实例 …
@internal在PHPDocs中使用时标记的含义是什么?它是如何工作的?我已阅读此标记的文档并获得此定义.
@internal标记用于表示关联的结构元素是此应用程序或库内部的元素.它也可以在长描述中用于插入仅适用于该软件开发人员的文本.
我得到了它的要点,但我不明白的是我将如何在项目中实际使用它?我已经阅读了这个例子,我的理解是标记为一个功能@internal意味着它意味着它被用作软件的一部分而不被外部的东西使用.例如,在PHP库中,如果函数被标记为@internal它不是库提供的公共API的一部分.
我的问题:
@internal正确的吗?如果没有,那么正确的用法是什么?@internal功能,暗示它们不打算被使用?我如何正确使用标记为@internal?的功能?