public function testBind() { $a = \Gini\IoC::construct('stdClass'); $this->assertFalse(isset($a->foo)); \Gini\IoC::bind('stdClass', function () { return (object) ['foo' => 'bar', 'uniqid' => uniqid()]; }); $a = \Gini\IoC::construct('stdClass'); $this->assertEquals($a->foo, 'bar'); $b = \Gini\IoC::construct('stdClass'); $this->assertNotEquals($a->uniqid, $b->uniqid); \Gini\IoC::singleton('stdClass', function () { return (object) ['foo' => 'bar', 'uniqid' => uniqid()]; }); $a = \Gini\IoC::construct('stdClass'); $this->assertEquals($a->foo, 'bar'); $b = \Gini\IoC::construct('stdClass'); $this->assertEquals($b->foo, 'bar'); $this->assertEquals($a->uniqid, $b->uniqid); \Gini\IoC::instance('stdClass', $a); $c = \Gini\IoC::construct('stdClass'); $this->assertEquals($c->foo, 'bar'); $this->assertEquals($a->uniqid, $c->uniqid); \Gini\IoC::clear('stdClass'); $a = \Gini\IoC::construct('stdClass'); $this->assertFalse(isset($a->foo)); }
public function setUp() { parent::setUp(); $db = \Gini\IoC::construct('\\Gini\\Database', 'sqlite::memory:'); \Gini\IoC::bind('\\Gini\\ORM\\User', function () use($db) { $user = $this->getMockBuilder('\\Gini\\ORM\\Object')->disableOriginalConstructor()->getMock(); $user->expects($this->any())->method('db')->will($this->returnValue($db)); $user->expects($this->any())->method('properties')->will($this->returnValue(['id' => 'bigint,pimary,serial', '_extra' => 'array', 'name' => 'string:50', 'money' => 'double,default:0', 'description' => 'string:*,null'])); return $user; }); }
public function setUp() { parent::setUp(); class_exists('\\Gini\\Those'); $db = $this->getMockBuilder('\\Gini\\Database')->setMethods(['query', 'quote', 'quoteIdent'])->disableOriginalConstructor()->getMock(); $db->expects($this->any())->method('quoteIdent')->will($this->returnCallback(function ($s) use($db) { if (is_array($s)) { foreach ($s as &$i) { $i = $db->quoteIdent($i); } return implode(',', $s); } return '"' . addslashes($s) . '"'; })); $db->expects($this->any())->method('quote')->will($this->returnCallback(function ($s) use($db) { if (is_array($s)) { foreach ($s as &$i) { $i = $db->quote($i); } return implode(',', $s); } elseif (is_null($s)) { return 'NULL'; } elseif (is_bool($s)) { return $s ? 1 : 0; } elseif (is_int($s) || is_float($s)) { return $s; } return '\'' . addslashes($s) . '\''; })); \Gini\IoC::bind('\\Gini\\ORM\\UTSample', function ($criteria = null) use($db) { $o = $this->getMockBuilder('\\Gini\\ORM\\Object')->setMethods(['db', 'properties', 'name', 'tableName'])->disableOriginalConstructor()->getMock(); $o->expects($this->any())->method('db')->will($this->returnValue($db)); $o->expects($this->any())->method('name')->will($this->returnValue('utsample')); $o->expects($this->any())->method('tableName')->will($this->returnValue('utsample')); $o->expects($this->any())->method('properties')->will($this->returnValue(['id' => 'bigint,primary,serial', '_extra' => 'array', 'object' => 'object', 'sample' => 'object:utsample', 'number' => 'int', 'text' => 'string'])); unset($o->id); unset($o->_extra); if (isset($criteria)) { $criteria = $o->normalizeCriteria($o->criteria($criteria)); $o->setData($criteria); } return $o; }); }