Ce code ne fonctionne pas comme prévu:Comportement de clonage - impossible de définir une valeur d'attribut pour le clonage?
// $field contains the name of a subclass of WMSInput.
$fieldClone = clone $field;
echo $fieldClone->getInputName();
// Method on abstract WMSInput superclass.
$fieldClone->setInputName('name');
echo $fieldClone->getInputName();
La classe WMSInput
:
abstract class WMSInput {
private $inputName;
public function setInputName($inputName) {
$this->inputName = $inputName;
}
}
Il n'y a pas d'erreurs PHP (rapports d'erreur est réglé sur E_ALL).
Résultats réels
email
email
Résultats attendus
email
name
Toutes les idées?
Mais il utilise des méthodes publiques (accesseurs) pour obtenir/définir cette propriété. C'est correct. –
J'ai ajouté beaucoup d'instructions d'écho pour le débogage. Lorsque vous utilisez la méthode 'setInputName', la variable' inputName' est correctement définie. La valeur revient immédiatement après avoir quitté la méthode. Déroutant. –