diff --git a/framework/db/ActiveQuery.php b/framework/db/ActiveQuery.php index 400918f1c4b..67d48b98b99 100644 --- a/framework/db/ActiveQuery.php +++ b/framework/db/ActiveQuery.php @@ -69,6 +69,8 @@ * @author Qiang Xue * @author Carsten Brandt * @since 2.0 + * + * @template T of (ActiveRecord|array) */ class ActiveQuery extends Query implements ActiveQueryInterface { @@ -127,6 +129,8 @@ public function init() * @param Connection|null $db the DB connection used to create the DB command. * If null, the DB connection returned by [[modelClass]] will be used. * @return array|ActiveRecord[] the query results. If the query results in nothing, an empty array will be returned. + * @psalm-return T[] + * @phpstan-return T[] */ public function all($db = null) { @@ -295,9 +299,11 @@ private function removeDuplicatedModels($models) * Executes query and returns a single row of result. * @param Connection|null $db the DB connection used to create the DB command. * If `null`, the DB connection returned by [[modelClass]] will be used. - * @return ActiveRecord|array|null a single row of query result. Depending on the setting of [[asArray]], + * @return array|ActiveRecord|null a single row of query result. Depending on the setting of [[asArray]], * the query result may be either an array or an ActiveRecord object. `null` will be returned * if the query results in nothing. + * @psalm-return T|null + * @phpstan-return T|null */ public function one($db = null) { @@ -310,6 +316,32 @@ public function one($db = null) return null; } + /** + * {@inheritdoc} + * + * @return BatchQueryResult + * @psalm-return T[][]|BatchQueryResult + * @phpstan-return T[][]|BatchQueryResult + * @codeCoverageIgnore + */ + public function batch($batchSize = 100, $db = null) + { + return parent::batch($batchSize, $db); + } + + /** + * {@inheritdoc} + * + * @return BatchQueryResult + * @psalm-return T[]|BatchQueryResult + * @phpstan-return T[]|BatchQueryResult + * @codeCoverageIgnore + */ + public function each($batchSize = 100, $db = null) + { + return parent::each($batchSize, $db); + } + /** * Creates a DB command that can be used to execute this query. * @param Connection|null $db the DB connection used to create the DB command. diff --git a/framework/di/Container.php b/framework/di/Container.php index 4a364f9acff..817f0b0a23a 100644 --- a/framework/di/Container.php +++ b/framework/di/Container.php @@ -157,6 +157,13 @@ class Container extends Component * @return object an instance of the requested class. * @throws InvalidConfigException if the class cannot be recognized or correspond to an invalid definition * @throws NotInstantiableException If resolved to an abstract class or an interface (since 2.0.9) + * + * + * @template T of class-string + * @psalm-param class-string|array{class: class-string} $class + * @phpstan-param class-string|array{class: class-string} $class + * @psalm-return T + * @phpstan-return T */ public function get($class, $params = [], $config = []) { diff --git a/tests/data/ar/CustomerQuery.php b/tests/data/ar/CustomerQuery.php index 55efd4f7c04..ce6677a0cdd 100644 --- a/tests/data/ar/CustomerQuery.php +++ b/tests/data/ar/CustomerQuery.php @@ -11,6 +11,7 @@ /** * CustomerQuery. + * @extends ActiveQuery */ class CustomerQuery extends ActiveQuery { diff --git a/tests/data/ar/CustomerWithAlias.php b/tests/data/ar/CustomerWithAlias.php index a5a31c5c478..9e56859e747 100644 --- a/tests/data/ar/CustomerWithAlias.php +++ b/tests/data/ar/CustomerWithAlias.php @@ -21,12 +21,12 @@ class CustomerWithAlias extends ActiveRecord public $status2; public $sumTotal; - + public static function tableName() { return 'customer'; } - + /** * {@inheritdoc} * @return CustomerQuery