Skip to content

@bobthecow /MustacheCallTest.php

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
require_once '../Mustache.php';
class MustacheCallTest extends PHPUnit_Framework_TestCase {
public function testCallEatsContext() {
$foo = new Foo();
$foo->name = 'Bob';
$template = '{{# foo }}{{ label }}: {{ name }}{{/ foo }}';
$data = array('label' => 'name', 'foo' => $foo);
$m = new Mustache($template, $data);
$this->assertEquals('name: Bob', $m->render());
class Foo {
public $name;
public function __call($method, $args) {
return 'unknown value';

If mustache tests for the presence of a method in the current context with is_callable(), __call will always win. It trumps anything in the parent context -- $label in this case. It also trumps the public $name member variable. The output of this test would be:

unknown value: unknown value

Which is obviously not what anyone intended.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.