示例#1
0
 public function test_mixins()
 {
     phpx\register_macro('ecet_greet', 'ECET_GreetMacro');
     parse_and_eval(dirname(__FILE__) . '/class_eval_test_class.phpx');
     assert_equal(15, ExamplesClassEvalTestClass::add(10, 5));
     $foo = new ExamplesClassEvalTestClass();
     $foo->set_foo('hello world');
     assert_equal('HELLO WORLD', $foo->get_foo());
     assert_equal('Hello Jason', $foo->greet('Jason'));
 }
示例#2
0
文件: test.php 项目: jaz303/phpx
class AddressableMacro
{
    public function addressable($class)
    {
        $class->attr_accessor('name');
        $class->attr_accessor('address_1');
        $class->attr_accessor('address_2');
        $class->attr_accessor('city');
        $class->attr_accessor('postcode');
        $class->attr_accessor('country');
        $class->mixin('AddressHelper');
    }
}
// Force compiler to load for test purposes
phpx\PHPX::init();
phpx\register_macro('addressable', 'AddressableMacro');
$customer = new Customer();
$customer->set_name('Joe Bloggs');
$customer->set_address_1('100 Puddle Lane');
$customer->set_city('Glasgow');
$customer->set_postcode('G1');
$customer->set_country('UK');
echo "Addressable fields exist and are set:\n";
var_dump($customer);
echo "\nAddressHelper mixed in:\n";
var_dump($customer->is_domestic());
echo "\nSQL generated by static mixin:\n";
echo Customer::sql_for_find_by_id(10);
echo "\n\nStatus setter is overwritten:\n";
$customer->set_status('active');
echo $customer->get_status();