将动态数据传递给可调用服务的构造

Passing dynamic data to the construct of a service invokable

我在我的应用程序配置中设置了以下 invokables

"service_manager":{
 "invokables":{
    "Dbmodel\User":"Application\DbModel\UserModel",
    "Dbmodel\App":"Application\DbModel\AppModel"
 }
}

所以理论上我可以调用 :

$userMdl = $e->getApplication()->getServiceManager()->get('DbModel\User');

结果将是 class Application\DbModel\UserModel 的实例。好的,这很好,我想现在我的问题是:

在我的用户模型中,我需要将一个整数传递给 __construct 作为 ID 以使用数据库数据 加载模型。

很明显,我无法通过将我的模型作为可调用对象来做到这一点,因为我从来没有机会传递 ID。

有没有一种方法可以创建可以supply an argument such as a user id for my situation用于对象实例化的工厂。

An example would be using it in a controller to get a model based on a get request for a user based on id

一个想法可能是从服务管理器中检索 UserModelFactory 并使用它来构建,使用以用户 ID 作为参数的给定方法,你需要的 UserModel