} public function of($target) { return HermitDaoManager::get($target); } } class Foo { public function get() { return HermitDaoManager::get(__CLASS__); } } class Bar { public function get() { return HermitDaoManager::get(__CLASS__); } } $hoge = new Hoge(); $foo = new Foo(); $bar = new Bar(); $test->is($hoge->get(), 'A01Dao'); $test->is($hoge->of('Foo'), 'A02Dao'); $test->is($foo->get(), 'A02Dao'); $test->is($bar->get(), null); $test->is(HermitDaoManager::has('Hoge'), true); $test->is(HermitDaoManager::has('Foo'), true); $test->is(HermitDaoManager::has('A01Dao'), false); $test->is(HermitDaoManager::has('A02Dao'), false);
public function testUnset() { $foo = Foo::get('foo3'); $this->assertEquals(2, count($foo->bars)); $this->assertEquals('Bar 1', $foo->bars[0]->barbar); $this->assertEquals('Bar 2', $foo->bars[1]->barbar); unset($foo->bars[0]); $foo = Foo::get('foo3'); $bar = Bar::get('bar 1'); $this->assertEquals(1, count($foo->bars)); $this->assertEquals('Bar 2', $foo->bars[0]->barbar); $this->assertEquals(1, count($bar->foos)); $this->assertEquals('Foo 2', $bar->foos[0]->foofoo); }
var_dump($person3); class Foo { protected static $prop = 'Foo'; public static function get() { echo static::$prop; // Если бы тут был self то наследуемый класс тоже давал бы Foo } } class Bar extends Foo { protected static $prop = 'Bar'; } Foo::get(); Bar::get(); class Team { protected $developers = []; // Всегда лучше всё закрывать, то есть лучше использовать protected // Сначала всё закрывать, потом открывать public function addDeveloper(Developer $developer) { array_push($this->developers, $developer); } } $team = new Team(); //$team->addDeveloper($person); $team->addDeveloper($person3); //$team->addDeveloper(666); var_dump($team);
public function testBatchSave() { $foo = new Foo; $foo->ID = 'SomeFoo'; // No foofoo -> invalid $bar = new Bar; $bar->ID = 'Somebar'; $bar->barbar = '...'; $bar->foo = $foo; try { DBModel::batchSave(array($foo, $bar)); $this->fail('Expected exception'); } catch (ValidationException $e) { $bar2 = Bar::get('Somebar'); $foo2 = Foo::get('SomeFoo'); $this->assertNull($bar2); $this->assertNull($foo2); $this->assertEquals('FooFoo is required', $foo->foofoo_error); } }
<?php require "tests.php"; require "director_unroll.php"; // No new functions check::functions(array(foo_ping, foo_pong)); // No new classes check::classes(array(Foo, Bar)); // now new vars check::globals(array(bar)); class MyFoo extends Foo { function ping() { return "MyFoo::ping()"; } } $a = new MyFoo(); $b = new Bar(); $b->set($a); $c = $b->get(); check::equal($a->this, $c->this, "this failed"); check::done();
<?php use js\tools\commons\traits\DataWriter; use js\tools\commons\traits\StaticDataWriter; require __DIR__ . '/../autoloader.php'; class Foo { use DataWriter; } class Bar { use StaticDataWriter; } $foo = new Foo(); $foo->set('a.b.c', 'foo'); var_dump($foo->getArray('a.b')); var_dump($foo->get('a.b.c')); Bar::set('a.b.c', 'bar'); var_dump(Bar::getArray('a.b')); var_dump(Bar::get('a.b.c'));
<?php class Foo { static function call() { return 'fail'; } static function test() { return static::call(); } static function get() { return new static(); } } class Bar extends Foo { static function call() { return 'success'; } } $bar = Bar::get(); if (!$bar instanceof Bar) { return 'fail_get'; } return Bar::test();