PHP对象和类错误
在我开始的PHP课程中,我们第一次尝试对象和类。我的作业问题是:PHP对象和类错误,php,class,object,subclass,Php,Class,Object,Subclass,在我开始的PHP课程中,我们第一次尝试对象和类。我的作业问题是: 创建(a)一个名为“人类”的父类(又名“超类”),其中一个变量名为“legs”,另一个函数(又名“method”)名为“walk”,(b)将“legs”的默认值设置为2,以及(c)调用“walk”函数时,使其显示“Human can walk.” 创建(a)名为“Kids”的子类(也称为“子类”),该子类将继承“Human”类的所有成员,(b)创建Kids类的变量“hands”,并将其默认值设置为2,以及(c)创建Kids类的名为
类人类{
var$legs=2;
var$content=“人类可以行走。”;
功能行走($Kuma){
echo$this->legs.“legs”;
echo$this->content;
}
}
班级儿童扩展了人类{
var$hands=2;
var$content2=“孩子可以跳。”;
函数跳转($Kuma){
echo$this->hands;
echo$this->content2;
}
}
$obj=新孩子(库马);
$obj->步行(库马);
?>
您在示例中做了一些奇怪的事情。例如,根据您给出的说明,我不知道您为什么希望步行和跳跃方法输出有关手和腿的信息
以下是我的建议:
class Human {
public $legs = 2;
public function walk() {
echo 'Human can walk.';
}
}
class Kids extends Human {
public $hands = 2;
public function jump() {
echo 'A kid can jump.';
}
}
$Kuma = new Kids();
echo $Kuma->legs . " legs\n";
$Kuma->walk();
echo "\n";
echo $Kuma->hands . " hands\n";
$kuma->jump();
需要注意的几点:
- 我在声明变量和方法范围时使用了良好的编码实践(在本例中为
)。老实说,良好的编码实践也会将类属性(legs/arms)声明为受保护的,并且只能通过getter/setter使用public
- 我没有在类中强制任何HTML格式(在我的示例中,我实际上只使用了行尾字符,可以用HTML换行符或段落或任何您可能需要的字符来替代)。我可能实际上甚至不会让类本身在调用方法时负责输出,除非明确要求这样做。(我只需返回原始文本的
并让调用者确定输出的格式)
- 我从步行/跳跃中移除手/腿输出。这与这些方法无关,不应混用
$Kuma=新孩子()$库马->步行()代码>尽管术语“name”在您的说明中用于两种不同的上下文(类名和实例名),但我认为对“Kuma”的要求是为实例命名:$Kuma=new Kids()
首先,您应该开始在代码中进行缩进@MarkBaker,我试着使用$Kuma=newkids()$库马->步行()代码>错误消失了,但我无法获得最后两行输出:“双手”和“小孩可以跳”。建议?@MarkBaker哇,谢谢!就这么简单。还在学习…嘿,90'人打电话来了,他们想要回他们的语法。@Jeffrey-见第一句。@J.D.我在$Kuma=new Kids()的建议中添加了:$Kuma->Walk();但是输出不包括最后两节两手和一个孩子能跳的时间。思想?@Jeffrey,这证明了我来这里是为了学习……而不是为了critisized@CoPoPHP这是个笑话。别那么难过。但是认真地说,忘记var
,记住始终使用private
、protected
或public
指定函数和变量的访问。
class Human {
var $legs = 2;
var $content = "<p>Humans can walk.</p>";
function Walk() {
echo $this->legs . " legs";
echo $this->content;
}
}
class Kids extends Human {
var $hands = 2;
var $content2 = "<p>A kid can jump.</p>";
function Jump() {
echo $this->hands;
echo $this->content2;
}
}
$kuma = new Kids(); // creating OBJECT kuma
$kuma -> Walk(); // calling the walk function
?>
$object = new Human(); // creating OBJECT named object of CLASS Human
class Human {
public $legs = 2;
public function walk() {
echo 'Human can walk.';
}
}
class Kids extends Human {
public $hands = 2;
public function jump() {
echo 'A kid can jump.';
}
}
$Kuma = new Kids();
echo $Kuma->legs . " legs\n";
$Kuma->walk();
echo "\n";
echo $Kuma->hands . " hands\n";
$kuma->jump();