Beispiel #1
0
 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));
 }
Beispiel #2
0
 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;
     });
 }
Beispiel #3
0
 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;
     });
 }