Skip to content

@bobthecow /MustacheCallTest.php
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
<?php
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';
}
}
@bobthecow
Owner

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.