public function testSetAndGet() { $record1 = Mock::read(1); $record2 = Mock::read(2); $record3 = Mock::read(3); IdentityMap::set(get_class($record1), $record1->id, $record1); IdentityMap::set(get_class($record2), $record2->id, $record2); IdentityMap::set(get_class($record3), $record3->id, $record3); $this->assertEquals($record1, IdentityMap::get(get_class($record1), $record1->id)); $this->assertEquals($record2, IdentityMap::get(get_class($record2), $record2->id)); $this->assertEquals($record3, IdentityMap::get(get_class($record3), $record3->id)); }
/** * 使用禁止 * * * */ private static function hydrate($rowData, $recordClass) { $pk = static::$primaryKey; if (class_exists($recordClass)) { $record = IdentityMap::get($recordClass, $rowData[$pk]); if ($record !== false) { return $record; } $newRecord = new $recordClass($rowData); IdentityMap::set($recordClass, $newRecord->id, $newRecord); return $newRecord; } else { throw new Exception('class not found ' . $recordClass); } }