Пример #1
0
{
    public $prop = 'a value';
    function foo($arg)
    {
        print "Constructor called on {$arg}\n";
    }
    function method()
    {
        print "Method called\n";
        return $this;
    }
    function method2()
    {
        print "Method 2 called\n";
        return $this;
    }
}
$foo = new foo('an argument');
$foo->method()->method();
// Can you do it on properties too?
print "property is :" . $foo->method()->prop . "\n";
$foo->method()->method2()->prop = 'newval';
print "property is :" . $foo->method()->method2()->prop . "\n";
// Don't forget the double-quoted string parser:
print "property is : {$foo->method()->prop}\n";
function afun()
{
    return new foo(22);
}
print afun()->prop;
print_r(afun()->method());
Пример #2
0
<?php

error_reporting(E_ALL);
class foo
{
    public $bar = "ok";
    function method()
    {
        $this->yes = "done";
    }
}
$baz = new foo();
$baz->method();
$arr[3] = new foo();
$arr[3]->method();
session_start();
$_SESSION["baz"] = $baz;
$_SESSION["arr"] = $arr;
var_dump(session_encode());
session_destroy();
The {$ ... } construct now allows general expressions in some cases.  
${ ... } in some too, but not as many (??)
<?php 
class foo
{
    function method()
    {
        return "value";
    }
}
$foo = new foo();
print "property is : {$foo->method(print 'asdf')}\n";
$bar = array(1, 2, 3);
print "property is : {$bar[print 'another print']}\n";
print "property is : {$bar[print 'another print']}\n";
//$bar[print 'another print'];
var_dump(print 'asdfasdfasdf');