ugrás a tartalomhoz

preg_replace_callback // Type 2: Static class method call

toxin · 2006. Jún. 28. (Sze), 13.06
kérdés

<?php
$sampleText = 'aaa 123 bbb';

class fooFind{
    function fooFind($text){
        $this->origText = $text;
        preg_replace_callback('/[\d]+/',array('fooFind','printFind'),$this->origText);
    }

    function printFind($matchedText){
        echo 'Eredeti:'.$this->origText."\n";
        echo 'Találat:'.$matchedText[0]."\n";
    }
}

$myFoo = new fooFind($sampleText);
?>
a printFind callback függvényben/metódusban elérhető-e vhogy az eredeti a hívó objektum ill objattrib (esetünkben a $this->origText), vagy marad az eval-os megoldás ?

<?php
$sampleText = 'aaa 123 bbb';

class fooFind{
    function fooFind($text){
        $this->origText = $text;
        preg_replace('/[\d]+/e','$this->printFind(\'\\0\')',$this->origText);
    }

    function printFind($matchedText){
        echo 'Eredeti:'.$this->origText."\n";
        echo 'Találat:'.$matchedText."\n";
    }
}

$myFoo = new fooFind($sampleText);
?>
kössz a választ
 
1

objektum

bbalint · 2006. Jún. 29. (Cs), 10.54
ööö mi volna, ha a osztálymetódus helyett a létrejött objektum ($this) metódusát hívnád meg (ahogy a kódon is látszik, hogy ilyesmit akarsz):
a preg_replace_callback()-nek inkább add meg az array($this, 'printFind') függvényt/metódust.
2

köszi

toxin · 2006. Jún. 29. (Cs), 11.56
nos valóban [clap] , de egyenlőre mégis marad az eval, lévén azzal tetszőleges számú paraméter, még referencia is átadtható, és nem akarom felváltva használni a kódban a kettőt, még egyszer köszönöm :)