标签: phpdoc

如何在 PhpStorm 中编写 PHPDoc 以返回 PDO 和 MySQLi 连接

我编写了一个函数,可以更轻松地进行数据库连接,能够通过 PDO 或 MySQLi 选项进行连接。目前我正在与 PHPDov@return财产作斗争。

我已经在 PhpStorm 中找到了 PDO 方法的正确亮点,但我不知道如何使这两个选项的工作类似。下面的代码可能会更好地解释它。

这是我的 dbCon.php 函数:

<?php

# defining the root directory as constant
define('__ROOT__', dirname($_SERVER['DOCUMENT_ROOT']));

/**
 * @param $db
 * @param $conType
 * @return PDO[]
 */

function dbCon($db, $conType)
{
# parse the data from db.ini where $db is database name
$_con = parse_ini_file(__ROOT__ . '/db.ini');

# set prefix if required by hosting to have one
$pre = 'database_';

# list parameters via variables
$_host = $_con[$db . '_ht']; …
Run Code Online (Sandbox Code Playgroud)

php return phpdoc phpstorm

3
推荐指数
1
解决办法
451
查看次数

如何在 PhpStorm 中导航 Laravel 模型范围

我有一个CheckingAccount带有范围的模型:

//scopes
public function scopeEmailLike(Builder $builder, $email)
{
    return $this->where($this->table . '.email', 'like', '%' . $email . '%');
}

public function scopePhoneLike(Builder $builder, $phone)
{
    return $this->where($this->table . '.phone', 'like', '%' . $phone . '%');
}
Run Code Online (Sandbox Code Playgroud)

但 PhpStorm 无法在其他类中识别它们。例如在控制器中:

public function all($filters)
{
    return CheckingAccount::query()
        ->emailLike($filters['email'])
        ->phoneLike($filters['phone'])
        ->get();
}
Run Code Online (Sandbox Code Playgroud)

emailLike()它说找不到方法,甚至phoneLike()根本不被识别。怎么了?

php phpdoc phpstorm laravel

3
推荐指数
1
解决办法
1887
查看次数

phpDocumentor转到PHP,因为X转到Python(Django)

phpDocumentor转到PHP,因为X转到Python(Django)

什么是X?

php python django phpdoc

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

用于三态bool返回值的PHPDoc注释

我有一个函数,(例如)如果允许访问则返回true,拒绝访问时返回false,访问不确定时返回NULL.

@returnphpdoc 应该是什么?bool似乎没有意义......

php phpdoc

2
推荐指数
1
解决办法
3917
查看次数

使用NetBeans的Php:在没有实际声明的情况下应用新的PhpDoc

有没有办法在没有重新声明方法的情况下应用新的PhpDoc,例如我有一个类:

class GeneralContainer {

    private $children;

    public function __construct() {
        $this->children = $this->CreateChildren();
    }

    protected function CreateChildren() {
        return new GeneralChildren($this);
    }

    /**
     * @return GeneralChildren
     */
    public function Children() {
        return $this->children;
    }
}
Run Code Online (Sandbox Code Playgroud)

在以下方式覆盖"CreateChildren"方法之后:

class SpecializedContainer extends GeneralContainer {

    protected function CreateChildren() {
        return new SpecializedChildren($this);
    }

    /**
     * @return SpecializedChildren
     */
    public function Children() {
        return parent::Children()
    }
}
Run Code Online (Sandbox Code Playgroud)

"Children"方法现在将返回"SpecializedChildren"的对象.但是为了给NetBeans提供一个提示,我也有义务覆盖"Children"方法并使用PhpDoc给它一个提示.有没有办法给NetBeans提示它告诉它基本方法现在将返回其他类型而不实际覆盖该方法?

php netbeans phpdoc

2
推荐指数
1
解决办法
682
查看次数

phpdoc建议$ this-> someField的类型

在Netbeans和phpStorm中,这可以按预期工作:

public function someMethod() {
    $objectA = uberEnterprisyFactory('someclassA');
    /* @var $objectA TheClassA */

    // $objectA-> (autocomplete for TheClassA is displayed, good)
Run Code Online (Sandbox Code Playgroud)

这不是:

public function someMethod() {
    $this->objectA = uberEnterprisyFactory('somemodelA');
    /* @var $this->objectA TheClassA */

    // $this->objectA-> (no autocomplete here, not good, $this->objectA is inferred to be null)
Run Code Online (Sandbox Code Playgroud)

我怎样才能$this->someThing为Netbeans和/或phpStorm 提取类型?

netbeans phpdoc phpstorm

2
推荐指数
1
解决办法
552
查看次数

浏览Magento文档时遇到问题

我是Magento的新手,文档,主要是phpDocs,很难导航.例如,

$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
Run Code Online (Sandbox Code Playgroud)

类Mage_Eav_Model_Entity_Attribute_Set的php文档中, 没有在继承的方法或其他方面提及方法getAttributeSetName(),但这仍然有效.

$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($id);
echo $attributeSet->getAttributeSetName();
Run Code Online (Sandbox Code Playgroud)

所以我想我有几个问题.

  1. 有人可以向我解释为什么文档是这样的吗?
  2. 哪里可以找到phpDocs中神秘的getAttributeSetName()方法?

我的理论是,有一些继承或设计模式的实施,我不理解,也许有人可以为我阐明这一点.

phpdoc magento

2
推荐指数
1
解决办法
217
查看次数

正确的DocBlock注释类的方法,它实现工厂设计模式

正确的DocBlock评论的意思是评论:

这是班级本身:

class Factory_DomainObjects
{
    /**
     * Build domain object
     *
     * @param $name
     *
     * @return M_UserObject|M_TransactionObject
     */
    public function build($name)
    {
        $class = 'M_' . $name . 'Object';
        return new $class();
    }
}
Run Code Online (Sandbox Code Playgroud)

Core_Object根据$name参数从层次结构返回一个对象.

目前的Core_Object层次结构如下所示:
在此输入图像描述

我为@return标签提供了M_UserObject|M_TransactionObject类型描述.它为PHPStorm提供自动组件,并符合PHPdoc标准.

- 但这正是你想要的,有什么问题?
- 是的,不,继续阅读:)

问题:
如果Core_Object层次结构会变成这样的东西怎么办? 在此输入图像描述

这会将@return标签描述变成一团糟:

/**
 * @return M_TransactionObject|M_UserObject|M_Foo|M_Foo1|M_Foo2|M_Foo3|M_Bar|M_Bar1|M_Bar2|M_Bar3
 */
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现的唯一解决方法:build为每个对象使用单独的方法,即

/**
 * Build user domain …
Run Code Online (Sandbox Code Playgroud)

php oop autocomplete phpdoc phpstorm

2
推荐指数
1
解决办法
1809
查看次数

在PhpStorm中标记@see

我有以下代码:

class A {

    /**
     * Splitter for words
     *
     * @var null|string
     */
    private $splitter = '-';

    /**
     * Desc...
     *
     * @param null|string $splitter   @see $splitter
     */
    function __construct(
        $splitter = null
    ) {
      // implementation
    }

}

$a = new A();
Run Code Online (Sandbox Code Playgroud)

当使用CTRL+Qin PhpStorm查看类构造函数的文档时,我将看到:

null|string $splitter @see $splitter
Run Code Online (Sandbox Code Playgroud)

我是在做错什么,还是应该配置PhpStorm以显示的描述$splitter here。我希望这里已显示Splitter for words或链接到$splitter成员,而不仅仅是@see $splitter

正如我检查的那样,那两个变量的名字没关系-即使构造器参数名称为$sPhpStorm仍然显示@see $splitter

php documentation phpdoc intellij-idea phpstorm

2
推荐指数
1
解决办法
1905
查看次数

如何记录PHPUnit测试

我正在编写很多单元测试,恐怕有一天我会回来阅读测试代码,而无法理解所测试的内容。

问题是:如何使用PHPDoc记录PHPUnit测试?

php phpunit phpdoc

2
推荐指数
1
解决办法
1048
查看次数