src/ImportAbstract.php
public function build()
    {
        $tbError = [];
        
        $this->currentRow = 1;
        
        /*
         * Supprime la premiere ligne
         */
        if ($this->isIgnoreFirstLine()) {
            $this->currentRow++;
            array_shift($this->rows);
        }
        
        /*
         * Si aucun champs n'a été défini
         */
        if (is_null($this->getFields())) {
            $this->currentRow++;
            
            // On prend la première ligne comme nom de colonnes ?
            if ($this->isheaderLikeFirstLine()) {
                if (is_null($this->rows) || count($this->rows) == 0) {
                    throw new Exception("Pas de données à traiter", self::IMPORT_NODATA);
                }
                $firstLine = array_shift($this->rows);
                $this->setFields($firstLine);
            } else {
                /*
                 * Sinon on génère automatiquement les noms de colonnes
                 */
                $firstLine = $this->getRows(0);
                $nbFields = count($firstLine);
                $tbFields = [];
                for ($i = 1; $i <= $nbFields; $i++) {
                    $tbFields[] = self::number2lettre($i);
                }
                $this->setFields($tbFields);
            }
        }
        
        /**
         * Ajout des colonnes supplémentaires
         */
        if (($addFields = $this->getAddFields())) {
            $tbNewFields = [];
            if (is_array($addFields)) {
                $tbNewFields = array_merge($this->getFields(), $addFields);
            } elseif (is_numeric($addFields)) {
                // Ajout automatique de colonnes
                for ($i = $this->nbFields + 1; $i <= $this->nbFields + $addFields; $i++) {
                    $tbNewFields[] = self::number2lettre($i);
                }
                
                $tbNewFields = array_merge($this->getFields(), $tbNewFields);
            }
            $this->setFields($tbNewFields);
        }
        
        /*
         * Sinon on garde ceux qui sont définis et on test
         */
        $nbRows = count($this->getRows());
        for ($i = 0; $i < $nbRows; $i++, ++$this->currentRow) {
            if ($this->nbFields < count($this->getRows($i))) {
                $tbError[] = "Ligne " . $this->currentRow . ": Mauvais nombre de colonnes, attendu: " . $this->nbFields;
            }
        }
        
        if (count($tbError)) {
            throw new Exception(implode("\n", $tbError), self::IMPORT_BAD_FORMAT);
        }
        
        /*
         * Create columns
         */
        for ($i=0; $i < count($this->dbColumns); $i++){
            $this->table->addColumn($this->dbColumns[$i], $this->defaultType, ["notnull" => false, "collation" => $this->getCharset()]);
        }
        
        return $this;
    }
public function build()
    {
        $tbError = [];
        
        $this->currentRow = 1;
        
        /*
         * Supprime la premiere ligne
         */
        if ($this->isIgnoreFirstLine()) {
            $this->currentRow++;
            array_shift($this->rows);
        }
        
        /*
         * Si aucun champs n'a été défini
         */
        if (is_null($this->getFields())) {
            $this->currentRow++;
            
            // On prend la première ligne comme nom de colonnes ?
            if ($this->isheaderLikeFirstLine()) {
                if (is_null($this->rows) || count($this->rows) == 0) {
                    throw new Exception("Pas de données à traiter", self::IMPORT_NODATA);
                }
                $firstLine = array_shift($this->rows);
                $this->setFields($firstLine);
            } else {
                /*
                 * Sinon on génère automatiquement les noms de colonnes
                 */
                $firstLine = $this->getRows(0);
                $nbFields = count($firstLine);
                $tbFields = [];
                for ($i = 1; $i <= $nbFields; $i++) {
                    $tbFields[] = self::number2lettre($i);
                }
                $this->setFields($tbFields);
            }
        }
        
        /**
         * Ajout des colonnes supplémentaires
         */
        if (($addFields = $this->getAddFields())) {
            $tbNewFields = [];
            if (is_array($addFields)) {
                $tbNewFields = array_merge($this->getFields(), $addFields);
            } elseif (is_numeric($addFields)) {
                // Ajout automatique de colonnes
                for ($i = $this->nbFields + 1; $i <= $this->nbFields + $addFields; $i++) {
                    $tbNewFields[] = self::number2lettre($i);
                }
                
                $tbNewFields = array_merge($this->getFields(), $tbNewFields);
            }
            $this->setFields($tbNewFields);
        }
        
        /*
         * Sinon on garde ceux qui sont définis et on test
         */
        $nbRows = count($this->getRows());
        for ($i = 0; $i < $nbRows; $i++, ++$this->currentRow) {
            if ($this->nbFields < count($this->getRows($i))) {
                $tbError[] = "Ligne " . $this->currentRow . ": Mauvais nombre de colonnes, attendu: " . $this->nbFields;
            }
        }
        
        if (count($tbError)) {
            throw new Exception(implode("\n", $tbError), self::IMPORT_BAD_FORMAT);
        }
        
        /*
         * Create columns
         */
        for ($i=0; $i < count($this->dbColumns); $i++){
            $this->table->addColumn($this->dbColumns[$i], $this->defaultType, ["notnull" => false, "collation" => $this->getCharset()]);
        }
        
        return $this;
    }
public function build ( ) { $ tbError = [ ] ; $ this -> currentRow = 1 ; /*
         * Supprime la premiere ligne
         */ if ( $ this -> isIgnoreFirstLine ( ) ) { $ this -> currentRow ++ ; array_shift ( $ this -> rows ) ; } /*
         * Si aucun champs n'a été défini
         */ if ( is_null ( $ this -> getFields ( ) ) ) { $ this -> currentRow ++ ; // On prend la première ligne comme nom de colonnes ? if ( $ this -> isheaderLikeFirstLine ( ) ) { if ( is_null ( $ this -> rows ) || count ( $ this -> rows ) == 0 ) { throw new Exception ( "Pas de données à traiter",  s lf:: IM PORT_NODATA); } $ firstLine = array_shift ( $ this -> rows ) ; $ this -> setFields ( $ firstLine ) ; } else { /*
                 * Sinon on génère automatiquement les noms de colonnes
                 */ $ firstLine = $ this -> getRows ( 0 ) ; $ nbFields = count ( $ firstLine ) ; $ tbFields = [ ] ; for ( $ i = 1 ; $ i <= $ nbFields ; $ i ++ ) { $ tbFields [ ] = self :: number2lettre ( $ i ) ; } $ this -> setFields ( $ tbFields ) ; } } /**
         * Ajout des colonnes supplémentaires
         */ if ( ( $ addFields = $ this -> getAddFields ( ) ) ) { $ tbNewFields = [ ] ; if ( is_array ( $ addFields ) ) { $ tbNewFields = array_merge ( $ this -> getFields ( ) , $ addFields ) ; } elseif ( is_numeric ( $ addFields ) ) { // Ajout automatique de colonnes for ( $ i = $ this -> nbFields + 1 ; $ i <= $ this -> nbFields + $ addFields ; $ i ++ ) { $ tbNewFields [ ] = self :: number2lettre ( $ i ) ; } $ tbNewFields = array_merge ( $ this -> getFields ( ) , $ tbNewFields ) ; } $ this -> setFields ( $ tbNewFields ) ; } /*
         * Sinon on garde ceux qui sont définis et on test
         */ $ nbRows = count ( $ this -> getRows ( ) ) ; for ( $ i = 0 ; $ i < $ nbRows ; $ i ++ , ++ $ this -> currentRow ) { if ( $ this -> nbFields < count ( $ this -> getRows ( $ i ) ) ) { $ tbError [ ] = "Ligne " . $ this -> currentRow . ": Mauvais nombre de colonnes, attendu: " . $ this -> nbFields ; } } if ( count ( $ tbError ) ) { throw new Exception ( implode ( "\n" , $ tbError ) , self :: IMPORT_BAD_FORMAT ) ; } /*
         * Create columns
         */ for ( $ i = 0 ; $ i < count ( $ this -> dbColumns ) ; $ i ++ ) { $ this -> table -> addColumn ( $ this -> dbColumns [ $ i ] , $ this -> defaultType , [ "notnull" => false , "collation" => $ this -> getCharset ( ) ] ) ; } return $ this ; }
Lecture/Vérification des données values
Lire des données et les traiter par setFields et setValues
@return mixed
@throws Exception
Lecture / Vérification des données values Lire des données et les traiter par setFields et setValues