动态编写要在php上调用的函数的名称

时间:2018-10-24 20:58:16

标签: php doctrine-orm symfony4

我有这样的csv。

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

现在,我的Entity具有相同的列名。

因此,它具有以下类似功能。

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++;
         } 

我想如果我得到了学说的设置器/ getter命名规则,它会很好地工作。...

1 个答案:

答案 0 :(得分:1)

您可以使用构造函数来设置数据。

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