我正在学习如何面向对象,我想知道如何为新创建的对象分配新的名称属性,例如“NoName”,当给定的名称是非法的(在这种情况下,少于2个单词或更长比50个字)。目前,当我创建一个新的对象时,它仍然显示名称“E”,而它应该显示“NoName”。我的if else语句有什么问题吗?PHP - 创建对象时如何在非法名称的情况下分配新的名称属性?
这里的类:
<?php
class Person {
private $name;
public function __construct($name){
$this->name=$name;
}
public function setName($name){
if((strlen($name)>=2) && (strlen($name)<=50)){
$this->name=$name;
$accepted = true;
}else{
$accepted = false;
$this->name="NoName";
}
return $accepted;
}
public function __toString() {
$temp = "name of the person is " . $this->name;
return $temp;
}
}
?>
这里是我创建的对象:
$p1 = new Person("Kenneth");
echo("<p>" . $p1 ."</p>");
$p2 = new Person("E");
echo("<p> Illegal name when created: " . $p2 ."</p>");
你从来没有在你的构造函数中使用的setName。我想这就是你想要做的? – Sugar 2014-08-29 12:23:14
那么你永远不会调用setname方法? – Steve 2014-08-29 12:23:22
在您的构造函数中,您可以代替'$ this-> name = $ name;'do'$ this-> setName($ name);'尽管您的$ accepted'布尔值似乎未被使用 – Steve 2014-08-29 12:24:56