par
xTG » 18 juil. 2012, 09:14
Cette erreur peut être générée sur l'appel de la fonction suivante :
public function printValue($recNumber=0, $fieldName='recid', $repetition=0){
echo fm_reccord::getValue($recNumber, $fieldName, $repetition);
}
Là tu fais un appel statique, et donc dans getValue le $this est hors contexte.
Sinon aucun souci.
Voici mon code de test qui fonctionne sans erreur :
<?php
class Record{
private $recid = null;
public function __construct($val){
$this->recid = $val;
}
public function getRecordId(){
return $this->recid;
}
public function getField($name, $repetition){
return $this->recid;
}
}
class FileMaker_Result{
public function getRecords(){
return array(
new Record(0),
new Record(1)
);
}
public function getFetchCount(){
return 10;
}
}
class fm_reccord{
private $refdata;
public function __construct(FileMaker_Result& $data) {
$this->refdata=&$data;
return NULL;
}
public function __destruct() {
return NULL;
}
public function getValue($recNumber=0, $fieldName='recid', $repetition=0){
$reccords = $this->refdata->getRecords();
$reccord = $reccords[$recNumber];
if($recNumber >= $this->refdata->getFetchCount()) return NULL;
else if($fieldName=='recid') return $reccord->getRecordId();
else return $reccord->getField($fieldName,$repetition);
}
public function printValue($recNumber=0, $fieldName='recid', $repetition=0){
echo fm_reccord::getValue($recNumber, $fieldName, $repetition);
}
}
$reccord = new fm_reccord(new FileMaker_Result);
$reccord->getValue(0,'recid');
Cette erreur peut être générée sur l'appel de la fonction suivante :
[php]public function printValue($recNumber=0, $fieldName='recid', $repetition=0){
echo fm_reccord::getValue($recNumber, $fieldName, $repetition);
}[/php]
Là tu fais un appel statique, et donc dans getValue le $this est hors contexte.
Sinon aucun souci.
Voici mon code de test qui fonctionne sans erreur :
[php]<?php
class Record{
private $recid = null;
public function __construct($val){
$this->recid = $val;
}
public function getRecordId(){
return $this->recid;
}
public function getField($name, $repetition){
return $this->recid;
}
}
class FileMaker_Result{
public function getRecords(){
return array(
new Record(0),
new Record(1)
);
}
public function getFetchCount(){
return 10;
}
}
class fm_reccord{
private $refdata;
public function __construct(FileMaker_Result& $data) {
$this->refdata=&$data;
return NULL;
}
public function __destruct() {
return NULL;
}
public function getValue($recNumber=0, $fieldName='recid', $repetition=0){
$reccords = $this->refdata->getRecords();
$reccord = $reccords[$recNumber];
if($recNumber >= $this->refdata->getFetchCount()) return NULL;
else if($fieldName=='recid') return $reccord->getRecordId();
else return $reccord->getField($fieldName,$repetition);
}
public function printValue($recNumber=0, $fieldName='recid', $repetition=0){
echo fm_reccord::getValue($recNumber, $fieldName, $repetition);
}
}
$reccord = new fm_reccord(new FileMaker_Result);
$reccord->getValue(0,'recid');[/php]