我编写了一个函数,可以更轻松地进行数据库连接,能够通过 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) 我有一个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()根本不被识别。怎么了?
phpDocumentor转到PHP,因为X转到Python(Django)
什么是X?
我有一个函数,(例如)如果允许访问则返回true,拒绝访问时返回false,访问不确定时返回NULL.
@returnphpdoc 应该是什么?bool似乎没有意义......
有没有办法在没有重新声明方法的情况下应用新的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提示它告诉它基本方法现在将返回其他类型而不实际覆盖该方法?
在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 提取类型?
我是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)
所以我想我有几个问题.
我的理论是,有一些继承或设计模式的实施,我不理解,也许有人可以为我阐明这一点.
正确的DocBlock评论的意思是评论:
符合PHPDoc标准
提供PHPStorm IDE自动完成功能
这是班级本身:
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) 我有以下代码:
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。
我正在编写很多单元测试,恐怕有一天我会回来阅读测试代码,而无法理解所测试的内容。
问题是:如何使用PHPDoc记录PHPUnit测试?