1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <?php
include('FieldValidator.php');
include('RowValidator.php');
include('CSVReader.php');
if (false ===
$handle = fopen('C:\projets\ticket_rawsrc\csv\csvcosmo.csv',
'rb')
)
{
throw new Exception('impossible d\'ouvrir le fichier');
}
$reader = new CSVReader($handle);
$genRow = $reader->getReader();
$rowValidator = new RowValidator([
new FieldValidator([
fn($v) => preg_match('/\ASESA[0-9]{5}\z/', $v)
//fn($v) => (1==1)
]),
new FieldValidator([
fn($v) => (1==0) //cette fonction devrait renvoyer false
]),
new FieldValidator([
fn($v) => (1==1)
])
]); /* le tableau passé à la classe RowValidator contient 3 items qui sont 3 instances de la classe FieldValidator. A chaque instance, je passe un tableau constitué d'un seul item. Pour le premier, c'est l'évaluation d'une regexp ; pour le 2e, une fonction qui retourne toujours false et pour la 3e, une fonction qui retourne toujours true. Bien sûr, c'est que pour le test !*/
$i = 0;
foreach ($genRow as $fields)
//Autrement dit, à chaque tour de boucle, $fields est un tableau contenant tous les champs d'une ligne.
{
echo "ligne " . $i;
var_dump($fields);
echo "<br/>";
if ( !$rowValidator->validate($fields) )
echo "ligne".$i++." non valide";
else
echo "ligne".$i++." valide";
echo "<br/><br/>";
} |