original_string: final protected function _tableDefinition() {
          $annotation = Annotation::getClass($this);
  
          /** @var \ReflectionClass $fieldClass */
          $fieldClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Entity\\Field');
          /** @var \ReflectionClass $foreignKeyClass */
          $foreignKeyClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Entity\\ForeignKey');
          /** @var \ReflectionClass $builderClass */
          $builderClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Builder');
  
          foreach ($annotation['class'] as $annotationClass) {
              $instance = $annotationClass[0]['instance'];
  
              switch ($annotationClass[0]['annotation']) {
                  case 'Table':
                      $this->name($instance->name);
                      break;
  
                  case 'Form':
                      $this->form($instance->name);
                      break;
              }
          }
  
          foreach ($annotation['properties'] as $name => $annotationProperties) {
              foreach ($annotationProperties as $annotationProperty) {
                  $instance = $annotationProperty['instance'];
  
                  if ($annotationProperty['annotation'] == 'Column') {
                      $this->field($name)->type($fieldClass->getConstant($instance->type))->size($instance->size)->beNull($instance->null == 'true' ? true : false)->primary($instance->primary == 'true' ? true : false)->unique($instance->unique == 'true' ? true : false)->precision($instance->precision)->defaultValue($instance->default)->enum($instance->enum != '' ? explode(',', $instance->enum) : []);
  
                      $fieldType = $fieldClass->getConstant($instance->type);
  
                      if (in_array($fieldType, [Field::DATETIME, Field::DATE, Field::TIMESTAMP])) {
                          $this->set($name, new \DateTime());
                      }
                  }
                  else {
                      $this->field($name)->foreign(['type' => $foreignKeyClass->getConstant($instance->type), 'reference' => explode('.', $instance->to), 'current' => explode('.', $instance->from), 'belong' => $foreignKeyClass->getConstant($instance->belong), 'join' => $builderClass->getConstant($instance->join),]);
  
                      $foreignType = $foreignKeyClass->getConstant($instance->type);
  
                      if (in_array($foreignType, [ForeignKey::MANY_TO_MANY, ForeignKey::ONE_TO_MANY])) {
                          $this->set($name, new Collection());
                      }
                  }
              }
          }
      }
code: final protected function _tableDefinition() {
          $annotation = Annotation::getClass($this);
  
          /** @var \ReflectionClass $fieldClass */
          $fieldClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Entity\\Field');
          /** @var \ReflectionClass $foreignKeyClass */
          $foreignKeyClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Entity\\ForeignKey');
          /** @var \ReflectionClass $builderClass */
          $builderClass = new \ReflectionClass('\\Gcs\Framework\Core\\Orm\\Builder');
  
          foreach ($annotation['class'] as $annotationClass) {
              $instance = $annotationClass[0]['instance'];
  
              switch ($annotationClass[0]['annotation']) {
                  case 'Table':
                      $this->name($instance->name);
                      break;
  
                  case 'Form':
                      $this->form($instance->name);
                      break;
              }
          }
  
          foreach ($annotation['properties'] as $name => $annotationProperties) {
              foreach ($annotationProperties as $annotationProperty) {
                  $instance = $annotationProperty['instance'];
  
                  if ($annotationProperty['annotation'] == 'Column') {
                      $this->field($name)->type($fieldClass->getConstant($instance->type))->size($instance->size)->beNull($instance->null == 'true' ? true : false)->primary($instance->primary == 'true' ? true : false)->unique($instance->unique == 'true' ? true : false)->precision($instance->precision)->defaultValue($instance->default)->enum($instance->enum != '' ? explode(',', $instance->enum) : []);
  
                      $fieldType = $fieldClass->getConstant($instance->type);
  
                      if (in_array($fieldType, [Field::DATETIME, Field::DATE, Field::TIMESTAMP])) {
                          $this->set($name, new \DateTime());
                      }
                  }
                  else {
                      $this->field($name)->foreign(['type' => $foreignKeyClass->getConstant($instance->type), 'reference' => explode('.', $instance->to), 'current' => explode('.', $instance->from), 'belong' => $foreignKeyClass->getConstant($instance->belong), 'join' => $builderClass->getConstant($instance->join),]);
  
                      $foreignType = $foreignKeyClass->getConstant($instance->type);
  
                      if (in_array($foreignType, [ForeignKey::MANY_TO_MANY, ForeignKey::ONE_TO_MANY])) {
                          $this->set($name, new Collection());
                      }
                  }
              }
          }
      }
code_tokens: final protected function _tableDefinition ( ) { $ annotation = Annotation :: getClass ( $ this ) ; /** @var \ReflectionClass $fieldClass */ $ fieldClass = new \ ReflectionClass ( '\\Gcs\Framework\Core\\Orm\\Entity\\Field' ) ; /** @var \ReflectionClass $foreignKeyClass */ $ foreignKeyClass = new \ ReflectionClass ( '\\Gcs\Framework\Core\\Orm\\Entity\\ForeignKey' ) ; /** @var \ReflectionClass $builderClass */ $ builderClass = new \ ReflectionClass ( '\\Gcs\Framework\Core\\Orm\\Builder' ) ; foreach ( $ annotation [ 'class' ] as $ annotationClass ) { $ instance = $ annotationClass [ 0 ] [ 'instance' ] ; switch ( $ annotationClass [ 0 ] [ 'annotation' ] ) { case 'Table' : $ this -> name ( $ instance -> name ) ; break ; case 'Form' : $ this -> form ( $ instance -> name ) ; break ; } } foreach ( $ annotation [ 'properties' ] as $ name => $ annotationProperties ) { foreach ( $ annotationProperties as $ annotationProperty ) { $ instance = $ annotationProperty [ 'instance' ] ; if ( $ annotationProperty [ 'annotation' ] == 'Column' ) { $ this -> field ( $ name ) -> type ( $ fieldClass -> getConstant ( $ instance -> type ) ) -> size ( $ instance -> size ) -> beNull ( $ instance -> null == 'true' ? true : false ) -> primary ( $ instance -> primary == 'true' ? true : false ) -> unique ( $ instance -> unique == 'true' ? true : false ) -> precision ( $ instance -> precision ) -> defaultValue ( $ instance -> default ) -> enum ( $ instance -> enum != '' ? explode ( ',' , $ instance -> enum ) : [ ] ) ; $ fieldType = $ fieldClass -> getConstant ( $ instance -> type ) ; if ( in_array ( $ fieldType , [ Field :: DATETIME , Field :: DATE , Field :: TIMESTAMP ] ) ) { $ this -> set ( $ name , new \ DateTime ( ) ) ; } } else { $ this -> field ( $ name ) -> foreign ( [ 'type' => $ foreignKeyClass -> getConstant ( $ instance -> type ) , 'reference' => explode ( '.' , $ instance -> to ) , 'current' => explode ( '.' , $ instance -> from ) , 'belong' => $ foreignKeyClass -> getConstant ( $ instance -> belong ) , 'join' => $ builderClass -> getConstant ( $ instance -> join ) , ] ) ; $ foreignType = $ foreignKeyClass -> getConstant ( $ instance -> type ) ; if ( in_array ( $ foreignType , [ ForeignKey :: MANY_TO_MANY , ForeignKey :: ONE_TO_MANY ] ) ) { $ this -> set ( $ name , new Collection ( ) ) ; } } } } }
docstring: Creation of the table
  @access public
  @return void
  @since 3.0
  @package Gcs\Framework\Core\Orm\Entity
docstring_tokens: Creation of the table