Beispiel #1
0
 /**
  * Locate every available Record class.
  *
  * @param TokenizerInterface $tokenizer
  * @throws SchemaException
  */
 protected function locateRecords(TokenizerInterface $tokenizer)
 {
     //Table names associated with records
     $sources = [];
     foreach ($tokenizer->getClasses(RecordEntity::class) as $class => $definition) {
         if ($class == RecordEntity::class || $class == Record::class) {
             continue;
         }
         $this->records[$class] = $record = new RecordSchema($this, $class);
         if (!$record->isAbstract()) {
             //See comment near exception
             continue;
         }
         //Record associated tableID (includes resolved database name)
         $sourceID = $record->getSourceID();
         if (isset($sources[$sourceID])) {
             //We are not allowing multiple records talk to same database, unless they one of them
             //is abstract
             throw new SchemaException("Record '{$record}' associated with " . "same source table '{$sourceID}' as '{$sources[$sourceID]}'.");
         }
         $sources[$sourceID] = $record;
     }
 }