阅读此documentation of the Silex PHP micro-framework,
在
部分该服务现在将在应用程序中注册,转换方法将用作 转换器:
代码
$app['converter.user'] = $app->share(function () {
return new UserConverter();
});
$app->get('/user/{user}', function (User $user) {
// ...
})->convert('user', 'converter.user:convert');
$app
同时是一个数组+一个对象。或者让我们说它从数组开始,但被分配了一个对象。这让我感到困惑:$app['converter.user'] =
。
这是如何运作的?
答案 0 :(得分:3)
使用PHP Iterator接口以及ArrayAccess接口将允许PHP知道您的类可以被视为数组。一种简单的方法是从ArrayObject类扩展。
基本上,这些接口发生的是你有一个私有变量,以及如何访问该变量的方法。接口让PHP知道这些方法存在,并且它实际上可以将该类视为数组。
现在,如果Silex使用这种方法,我无法发表评论。但是,这就是如何创建一个也可以作为数组访问的PHP类
答案 1 :(得分:2)
$app
不是数组和对象。它只是一个对象,您可以通过索引或使用->
运算符访问这些值。
要回答您的第二个问题,可以通过重载来实现,您可以阅读here。