webForumDet fria alternativet

Klassvariabel byter typ....

1 svar · 208 visningar · startad av mmmMange

mmmMangeMedlem sedan jan. 2005111 inlägg
#1

Är ny på att använda klasser i PHP, och har stött på ett konstigt problem. Jag har följande kod:

class FieldProcessor {
var $formname = '';
var $fieldvalues = array();

function FieldProcessor($\_formname = '') {
        $this-\>$formname = $\_formname;

print '$formname: '; print_r($this->$formname); print '<br>';

        if( isset($\_POST\['formname'\]) and $\_POST\['formname'\] == $\_formname )
            $this-\>$fieldvalues = $\_POST;

print '$formname: '; print_r($this->$formname); print '<br>';
}

function processfields(){
if( !isset($this->$formname) )
die('Error in function FieldProcessor::processfields(): $formname is not set.');

foreach( $this-\>$fieldvalues as $name =\> $value ){
        call_user_func(array($this,$name), $value);
}

}

}

class form1 extends FieldProcessor {

    function textbox1(&$value) {
        $value = 'test';
    }

}

$form1 = new form1('form1');
$form1->processfields();

Debug-utskrifterna skriver ut följande:

$formname: form1
$formname: Array ( [formname] => form1 [textbox1] => [textbox2] => [textbox3] => )

Det verkar ju precis som att $_POST kopieras till $formname istället för till $fieldvalues... Nån som kan förklara varför det blir så??

Kent.JMedlem sedan aug. 2001151 inlägg
#2

Jag fattar inte varför Men...
Ändra alla $this->$variabel till $this->variabel så funkar det mkt bättre skall du se :)

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb