Динамически составьте имя функции для вызова на php - PullRequest
0 голосов
/ 24 октября 2018

У меня есть CSV, как это.

id,startScore,endScore,total
1,12,34,46
2,10,20,30
.
.

Теперь у меня есть сущность с тем же именем столбца.

Итак, у него есть функции, подобные этим ниже.

setStartScore() setEndScore() setTotal()

Пока мой php-код выглядит следующим образом

$lines = explode('\n',$csvFile); // get CSV Content
$header = array_shift($lines); // get header
$headers = explode(",",$header)

foreach($lines as $line){ // each csv line

    $table = new Table();  
    foreach(explodes(',',$line) as $l){
        $i = 0;
        foreach($headers as $h){
            $table->set{$headers[$i]}($l[$i]) //how can I make dynamically make set***() function.
            $i++;
         } 

Полагаю, что если я получу регулирование именования установщика / получателя доктрины, это будет работать хорошо....

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете использовать конструктор для установки данных.

Class Table

// ..

public function __construct($id, $startScore, $endScore, $total){
    $this->id = $id;
    $this->startScore = $startScore;
    $this->endScore = $endScore;
    $this->total = $total;
}

Затем вы можете создавать объекты, такие как:

foreach($lines as $line){ // each csv line
    $data = explodes(',',$line);
    $table = new Table($data[0], $data[1], $data[2], $data[3]);
    $em->persist($table);
}

// ..flush
...