Allow use of ArrayAccess objects in context.

This commit is contained in:
Christian Würker
2013-12-06 19:08:53 -08:00
committed by Justin Hileman
parent 0e1d5a678f
commit 0c85d19509
2 changed files with 43 additions and 6 deletions
+11 -6
View File
@@ -133,17 +133,22 @@ class Mustache_Context
private function findVariableInStack($id, array $stack)
{
for ($i = count($stack) - 1; $i >= 0; $i--) {
if (is_object($stack[$i]) && !$stack[$i] instanceof Closure) {
if (method_exists($stack[$i], $id)) {
return $stack[$i]->$id();
} elseif (isset($stack[$i]->$id)) {
return $stack[$i]->$id;
if (is_object($stack[$i])) {
if( $stack[$i] instanceof ArrayAccess) {
if (isset($stack[$i][$id])) {
return $stack[$i][$id];
}
} elseif (!($stack[$i] instanceof Closure)) {
if (method_exists($stack[$i], $id)) {
return $stack[$i]->$id();
} elseif (isset($stack[$i]->$id)) {
return $stack[$i]->$id;
}
}
} elseif (is_array($stack[$i]) && array_key_exists($id, $stack[$i])) {
return $stack[$i][$id];
}
}
return '';
}
}