static function bar() { fiz(parent::foo(42)); }
function cmp($a, $b) { global $g; usort($g, 'cmp'); fiz(); }
<?php function foo($x) { var_dump($x[0]->foo['a']['b']); $x[0]->foo['a']['b'] = 5; var_dump($x); } foo(false); function baz(&$x) { } foreach ($x->foo[1]->prop as &$y) { } var_dump($x); baz($q->foo[1]->prop); var_dump($q); $y =& $z->foo[1]->prop; var_dump($z); function &fiz(&$x) { return $x->foo[1]->prop; } fiz($w); var_dump($w);
function foo($q, $a) { $x = getX($q, $a); fiz($x->foo()); }
function buz() { echo __FUNCTION__, "\n"; } const FOO = 1; const BAR = 2; namespace Fiz\Biz\Buz; use function Foo\Bar\{fiz, biz, buz as boz, A}; use const Foo\Bar\{FOO as FOZ, BAR, B}; use Foo\Bar\{A, B, const BAR as BOZ}; function buz() { echo __FUNCTION__, "\n"; } const FOO = 100; echo "==== MIXED ====\n"; new A(); new B(); var_dump(BOZ); echo "===== CONSTANTS ====\n"; var_dump(FOO); var_dump(FOZ); var_dump(BAR); var_dump(defined('B')); echo "===== FUNCTIONS ====\n"; buz(); fiz(); biz(); boz(); A();
FuncFactory::create('foo', function () { return 'foo'; }); expect(foo())->to->equal('foo'); }); it('allows the functions to accept parameters', function () { FuncFactory::create('bar', function ($foo, $bar) { return $foo . $bar; }); expect(bar('foo', 'bar'))->to->equal('foobar'); }); it('allows various parameter defaults', function () { FuncFactory::create('fiz', function ($a = 1, $b = 2.5, $c = [], $d = false, $e = null) { return [$a, $b, $c, $d, $e]; }); expect(fiz())->to->equal([1, 2.5, [], false, null]); }); it('overrides default parameters with only the passed ones', function () { FuncFactory::create('baz', function ($a = 1, $b = 2, $c = 3) { return [$a, $b, $c]; }); expect(baz('baz'))->to->equal(['baz', 2, 3]); }); it('benefits from the use keyword allowing variables in scope to be accessed', function () { $biz = 'biz'; FuncFactory::create('biz', function () use($biz) { return $biz; }); expect(biz())->to->equal('biz'); }); });