Ä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å??