在Cat
中抽象在方法中
SELECT (xpath('(/Type/V[text()="Cat"]/@Idx)[1]', nmuloc))[1] idx
FROM elbat;
Illuminate\Support\Facades\Facade
是Application的一个实例。还有protected static function resolveFacadeInstance($name)
{
if (is_object($name)) {
return $name;
}
if (isset(static::$resolvedInstance[$name])) {
return static::$resolvedInstance[$name];
}
return static::$resolvedInstance[$name] = static::$app[$name];
}
喜欢static::$app
的访问值,我不明白,这是什么技术?
ex:static::$app[$name]
返回array
的实例。似乎在static::$app['router']
Router
的值
我认为它像例子吗?但是得到了protected $instances
Illuminate\Container\Container
答案 0 :(得分:3)
如果您检查Illuminate\Container\Container的API,您会注意到它实现了ArrayAccess,并因此实现了以下方法。
ArrayAccess使您可以将对象作为数组进行访问。这是一个非常简单的容器示例。
<?php
class Container implements ArrayAccess {
private $items = array();
public function __construct() {
$this->items = [
'one' => 1,
'two' => 2,
'three' => 3,
];
}
public function offsetSet($offset, $value) {
if (is_null($offset)) {
$this->items[] = $value;
} else {
$this->items[$offset] = $value;
}
}
public function offsetExists($offset) {
return isset($this->items[$offset]);
}
public function offsetUnset($offset) {
unset($this->items[$offset]);
}
public function offsetGet($offset) {
return isset($this->items[$offset]) ? $this->items[$offset] : null;
}
}
$container = new Container();
echo $container['one']; // outputs 1
$container['four'] = 4; // adds 4 to $items.
echo $container['four']; // outputs 4
如您所见,由于Container对象实现了ArrayAccess
,因此可以将其作为数组访问。
items
属性是否不可公开访问也无关紧要。无论如何,ArrayAccess的实现意味着它将允许我们像在数组中一样检索这些值。