【发布时间】:2023-03-17 06:03:01
【问题描述】:
我在 PHP 中实现了一个抽象类,它管理我所有的数据库连接。这个类有我需要的所有基本方法,比如写、读、删除……
现在要使用这个类,我正在为每个数据库表创建一个特殊的类:
class Data_Store_Snacks extends Data_Store_Abstract {
public function __construct() {
$this->table = Install::SNACKS_TABLE_NAME;
$this->primary_key = 'id';
$this->model = Data_Store_Snacks_Model::class;
parent::__construct();
}
}
在上面的类中,我设置了应该返回的表、主键和模型。问题是在这个类上面的抽象类中,我有这个方法例如:
/**
* Retrieves multiple table rows as an array, filtered by the where
*
* @param array $where
* @param array|null $order_by
* @param int|null $limit
* @param int|null $offset
*
* @return array|false
*/
public function find_all_by( array $where, array $order_by = null, int $limit = null, int $offset = null ) {
目前,它返回一个数组或 false。我想将模型作为数组返回,而不是数组,例如:
@return Data_Store_Snacks_Model[]|false
这可行,但不能用于一张以上的桌子!相反,我需要一些动态的东西,比如:
@return $this->model[]|false
但据我所知,这是不可能的。目前,我在 foreach 中使用 @var 定义,但我不喜欢这样做只是为了让我的方法在我的 IDE 中可用
有什么想法吗?
【问题讨论】:
-
这能回答你的问题吗? PHPDoc type hinting for array of objects?
-
@PeterKrebs 不,因为他们都在使用静态模型。我说的是动态提示..
-
您可以在个别课程上使用
@method吗?我知道它不是动态的,但将它一次性扔到你的个人课程上也不应该太难。 -
@ChrisHaas 这就是我目前正在做的,但有好几次。我希望有一种方法可以将保存到类变量的模型作为类型返回...
-
我的直觉说不,这显然不是一个权威的答案。您的用例完全有效,但我认为没有办法既准确又笼统地描述它。
标签: php