Sınıf üyeleri olarak anonim yöntemleri ile ilgili bir soru

0 Cevap php

Ben bir PHP mini çerçeve, yöntem nesnelerin bir diziden bir HTML tablosu oluşturur birini geliştiriyorum:

class HTMLTableField {
    private $hdr;
    private $alg;
    private $fun;

    function __construct($descr, $align, $apply) {
        # fun must be an anonymous function
        $this->hdr = '<th>' . htmlentities($descr) . "</th>\n";     
        $this->alg = "<td style=\"text-align: {$align}\">";
        $this->fun = $apply;
    }

    function getHeader() {
        return $this->hdr;
    }

    function getCell($row) {
        # This line fails
        return "{$this->alg}{$this->fun($row)}</td>";
    }
}

function gen_html_table($rows, $fields) {
    # $fields must be an array of HTMLTableField objects
    echo "<table>\n<thead>\n<tr>\n";
    foreach ($fields as $field)
        echo $field->getHeader();
    echo "</tr>\n</thead>\n<tbody>\n";
    foreach ($rows as $row) {
        echo "<tr>\n";
        foreach ($fields as $field)
            echo $field->getCell($row);
        echo "</tr>\n";
    }
    echo "</tbody>\n</table>\n";
}

Ancak, gen_html_table ulaştığında kontrol akış

echo $field->getCell($row);

Ben bir hata alıyorum: "HTMLTableField tanımsız yöntemine arayın :: fun ()." Ama eğlenceli bir anonim yöntem olması gerekiyordu!

0 Cevap