我发现有两种不同的方法可以显示类方法的结果。一个通过使用对象运算符,另一个通过将方法作为函数调用。我想知道为什么和什么是最好的。
采取以下措施:
<!DOCTYPE html>
<html>
<head>
<title>Cats</title>
<link type='text/css' rel='stylesheet' href='style.css'/>
</head>
<body>
<p>
<?php
class Cat {
public $isAlive = true;
public $numLegs = 4;
public $name;
public function __construct($name) {
$this->name = $name;
}
public function meow() {
return "Meio meow";
}
}
$Cat1 = new Cat(CodeCat);
echo $Cat1->meow;
?>
</p>
</body>
</html>
我可以通过以下方式回应方法的返回:
echo meow($Cat1);
什么是背景?好多了 谢谢你的回复! -Adrian
答案 0 :(得分:0)
好的,让我们先使用一些实际运行的代码。
<?php
class Cat {
public $isAlive = true;
public $numLegs = 4;
public $name;
public function __construct($name) {
$this->name = $name;
}
public function meow() {
return "Meio meow";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Cats</title>
<link type='text/css' rel='stylesheet' href='style.css'/>
</head>
<body>
<p>
<?php
$Cat1 = new Cat('Fluffy');
echo $Cat1->meow();
echo $Cat1->name;
?>
</p>
</body>
</html>
现在因为您已将cats name属性定义为public public $name;
,您可以使用此类使用任何语法以完全不受限制的方式访问其值:
$Cat1 = new Cat('Fluffy');
echo $Cat1->name;
//or
echo $Cat1->meow();
//or even set a new value for its name after instantiating it
$Cat1->name = 'Tiddles';
但是,如果你有一个你不希望开发人员弄乱的属性,而不能先检查这个值你可以将这个新属性定义为私有属性,例如'private $ owner;'
现在不允许使用语法:
$Cat1->owner = 'Adrian';
因为它是私有属性,但您仍然希望类的用户能够为owner
属性设置值,因此您可以像{{1}一样创建public method
设置此私有属性值的方法,但仅当它传递了一些必需的测试时才这样:
meow()
因此,您创建了一个公共方法,以允许访问您的私有属性,但前提是它满足某些指定条件。
它基本上是一种控制对需要特定值的属性的访问的方法
我建议您提供文档a good coat of looking at
因为还有<?php
class Cat {
public $isAlive = true;
public $numLegs = 4;
public $name;
private $owner;
public function __construct($name) {
$this->name = $name;
}
public function meow() {
return "Meio meow";
}
public function setOwner($var) {
if ( $var == 'Adrian' || $var == 'Rocky' ) {
$this->owner = $var;
} else {
$this->owner = 'Unknown';
throw new Exception( 'Invalid owners name' );
}
}
}
?>
限定符以及公共和私有。