标签: phpdoc

在OSX上通过PEAR安装的PhpDocumentor无法正常工作 - 缺少文件?

我基本上是PEAR(和PhpDocumentor)的新手; 我使用PEAR CLI安装了PhpDocumentor,一切似乎都没问题......直到我去使用它,此时我收到以下错误:

Warning: require(PhpDocumentor/phpDocumentor/phpdoc.inc): 
failed to open stream: No such file or directory in 
/usr/local/bin/phpdoc on line 40

Fatal error: require(): Failed opening required 
'PhpDocumentor/phpDocumentor/phpdoc.inc' (include_path='.:/usr/share/pear') 
in /usr/local/bin/phpdoc on line 40
Run Code Online (Sandbox Code Playgroud)

我在网上找不到任何关于错误的内容,所以我再次通过命令行卸载/重新安装,没有错误,但是我遇到了同样的问题.我忽略了什么吗?正如我所说,我对PEAR很新:)

谢谢.d

php macos terminal pear phpdoc

8
推荐指数
1
解决办法
4430
查看次数

正确的方法来表示phpDocumentor的数组数据类型?

以下哪一项是为phpDocumentor记录此方法的返回类型的正确方法?

方法1:

/**
 * @return array Foo array.
 */
public function foo() {
    return array(1, 2, 3);
}
Run Code Online (Sandbox Code Playgroud)

方法2:

/**
 * @return integer[] Foo array.
 */
public function foo() {
    return array(1, 2, 3);
}
Run Code Online (Sandbox Code Playgroud)

此外,这两种方法都有任何IDE含义吗?

编辑:

似乎PhpStorm和Netbeans 7.1+ IDE都支持第二种方法.

php documentation phpdoc

8
推荐指数
2
解决办法
2188
查看次数

带有codeigniter的mvc项目上的phpdoc

我按照MVC模式在Codeigniter开发了一个项目.

这意味着,例如,我有一个名为Items的控制器,它调用一个名为Items_model的模型,它从数据库中获取文件,最后将那些文件传递给名为Item_view的视图.

现在我需要记录它,我试图使用phpdoc.

我的主要问题是如何在控制器中的函数解释中,以函数的方式将该函数的行为与模型和视图相关联,而不仅仅是以纯文本形式写出名称.我正在阅读包装,但不知道如何正确使用它

我希望你能帮助,我非常高兴与phpdoc.

提前谢谢,对不起我的英语.

Sverd.

codeigniter phpdoc

7
推荐指数
1
解决办法
2251
查看次数

如何在phpdoc中使用@package和@subpackage?

我想知道如何将@pa​​ckage和@subpackage用于类doc.

假设我有以下课程

class My_Controller_Action_Helper_MyHelperAction extends Foo_Bar {}
Run Code Online (Sandbox Code Playgroud)

应该是:

@category    My
@package     Controller
@subpackage  Action_Helper
Run Code Online (Sandbox Code Playgroud)

要么

@category    My
@package     Controller
@subpackage  Action_Helper_MyHelperAction
Run Code Online (Sandbox Code Playgroud)

要么

@category    My
@package     Controller_Action
@subpackage  MyHelperAction
Run Code Online (Sandbox Code Playgroud)

要么

@category   My
@package    My_Controller_Action
@subpackage MyHelperAction
Run Code Online (Sandbox Code Playgroud)

如果使用命名空间而不是'_'怎么办?

php phpdoc

7
推荐指数
1
解决办法
5511
查看次数

如何表明该方法是PHPDoc接口的一部分?

如何表明该方法是PHPDoc接口的一部分?

例如:

/**
 * @implements BarInterface
 */
class Foo implements BarInterface
{
    /**
     * @thisMethodIsHereBecauseItIsAPartOf("BarInterface")
     */
    public function doBar()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么适合替换@thisMethodIsHereBecauseItIsAPartOf("BarInterface")吗?

php phpdoc

7
推荐指数
1
解决办法
4702
查看次数

如何告诉phpDoc字符串是类名?

我经常给对象提供静态方法和属性,这些方法和属性不需要初始化对象。例如:

class SomeObject {
    public function __construct($object_id) {
        $this->loadProperties($object_id);
    }

    public static function getSomeStaticString() {
        return "some static string";
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我们对这些对象进行了子类化,并具有某种控制器,该控制器在某些尚不应该初始化对象的情况下返回对象类字符串。例如:

class SomeObjectController {
    public function getSomeObjectWithTheseProperties(array $properties) {
        if($properties[0] === "somevalue") {
            if($properties[1] === "someothervalue") {
                return SomeSubclassObject::class;
            }

            return SomeObject::class;
        }

        return NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

有时我可能想在SomeObject::getSomeStaticString()不实际初始化对象的情况下调用静态函数(因为这将涉及不需要的数据库提取)。例如:

$controller = new SomeObjectController;
$properties = array("somevalue", "someothervalue");
$object_class = $controller->getSomeObjectWithTheseProperties($properties);

echo $object_class::getSomeStaticString();
Run Code Online (Sandbox Code Playgroud)

问题:我可以以某种方式最好通过phpDoc告诉PhpStorm,它$object_class是的子类的类字符串SomeObject吗?

如果我告诉我的IDE它是一个字符串,它将通知我这getSomeStaticString()是一个无效方法。另一方面,如果我告诉我的IDE是SomeObject的实例,它认为我可以访问常规的非静态方法和属性,而我不能。

php phpdoc phpstorm

7
推荐指数
1
解决办法
1480
查看次数

你能为一个类创建一个外部PHPdoc吗?

假设我有以下内容

class Something extends ClassWithMagicMethods{}
Run Code Online (Sandbox Code Playgroud)

通常我会为我知道存在的任何属性添加一个docblock,即使通过魔术方法访问也是如此

/**
 * @property string $someVar
 * @method SomeClass getSomeClass()
 */
class Something extends ClassWithMagicMethods{}
Run Code Online (Sandbox Code Playgroud)

哪个效果很好,但我想知道的是,我们是否可以将该docblock与类的定义分开.两种可能的用例:

  • 第三方软件包不包含docblock但我想从我的IDE中自动完成 - 我希望能够在某个地方添加我自己的docblock.
  • 扩展系统 - 在定义扩展的文件中,我想记录此扩展添加到类中的新属性.

我知道我可以在技术上创建一个ide_helper.php永远不会实际运行的虚拟文件 - 只是由IDE编制索引 - 不幸的是,这会导致任何体面的IDE抱怨我不想要的重复声明,因为它也会使代码导航速度变慢.

那么 - 是否可以通过从类定义中外部组合多个docblock来记录PHP类?

我在SO上提取的大多数结果只是记录了你使用它们的未知类型,这不是我需要的.IE:

/** @var Something $something */
$something = FactoryMethodThing::create('Something');
Run Code Online (Sandbox Code Playgroud)

php ide phpdoc

7
推荐指数
1
解决办法
672
查看次数

输入包含 2 个条目的提示数组 / 数组的 phpdoc

说我有这个

function foo(){
   return [1, 'bippo'];

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能编写它在自动完成时自动创建的 phpdoc 像这样

list($x, $y) = foo();
Run Code Online (Sandbox Code Playgroud)

php phpdoc php-7

7
推荐指数
1
解决办法
2329
查看次数

PHPStan:具有泛型类的属性未指定其类型:TKey、T

我在一个Symfony项目上运行PHPStan,其中我在Doctrine实体中有以下关系:

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Course\Slide", mappedBy="chapter", cascade={"persist"}, orphanRemoval=true)
 * @ORM\OrderBy({"listOrder" = "ASC"})
 *
 * @var ArrayCollection<Slide>
 */
private $slides;
Run Code Online (Sandbox Code Playgroud)

使用规则级别 6运行分析我收到以下有关该属性(及其 getter 返回类型)的消息:

App\Entity\Course\Chapter::$slides具有泛型类的属性Doctrine\Common\Collections\ArrayCollection未指定其类型:TKey, T
您可以通过checkGenericClassInNonGenericObjectType: false在您的phpstan.neon.

我的编辑尝试只会混淆 PHPStan,可能是因为我没有完全理解这里的泛型。但是仅仅因为我不明白而将消息静音将是愚蠢的。

我应该在 PHPDoc 中添加或更改什么?

generics doctrine static-analysis phpdoc phpstan

7
推荐指数
2
解决办法
3719
查看次数

如何在 php 中输入提示生成器?

假设你有一个类:

class MyClass
{
    public function __construct(public int $id, public string $foo)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个生成器创建该类的多个实例,如下所示:

$myGenerator = function (): \Generator {
     yield new MyClass(id: 21, foo: 'fnord');
     yield new MyClass(id: 13, foo: 'baz');
     yield new MyClass(id: 42, foo: 'Thanks for the fish');
};
Run Code Online (Sandbox Code Playgroud)

如何输入提示生成器函数,以便它在迭代期间推断每个元素的类型?

class MyClass
{
    public function __construct(public int $id, public string $foo)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想做:

$myGenerator = function (): \Generator {
     yield new MyClass(id: 21, foo: 'fnord');
     yield new MyClass(id: 13, foo: 'baz');
     yield new …
Run Code Online (Sandbox Code Playgroud)

php generator phpdoc type-hinting phpstorm

7
推荐指数
1
解决办法
2954
查看次数