webForumDet fria alternativet
Logga in / Bli medlem

Klassvariabel byter typ....

PHP

1 svar · 208 visningar · startad av mmmMange

Medlem sedan jan. 2005110 inlägg
Trådstart#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å??

Medlem sedan aug. 2001153 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 :)

256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)