此代码无法正常运行:
// $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();
WMSInput
类:
abstract class WMSInput {
private $inputName;
public function setInputName( $inputName ) {
$this->inputName = $inputName;
}
}
没有PHP错误(错误报告设置为E_ALL)。
实际结果
email
email
预期结果
email
name
有什么想法吗?
答案 0 :(得分:2)
在我的测试网站上,它运行正常。
您没有在示例中复制方法getInputName。我开始在那里搜索。也许你没有返回所需的变量?
我的测试代码是:
<?php
abstract class WMSInput {
private $inputName;
public function setInputName( $inputName ) {
$this->inputName = $inputName;
}
public function getInputName() {
return $this->inputName;
}
}
class Test extends WMSInput {
}
$field = new Test();
$field->setInputName('email');
// $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();
输出:
emailname
这是正确的。
答案 1 :(得分:0)
还尝试将inputName属性设置为protected,如果您将该类设置为abstract,那么在父类中您将无法访问该方法