OOP 回显 $this->title = $part VS 回显 $par
OOP echo $this->title = $part VS echo $par
大家好,我开始学习 PHP OOP。我有个问题。在下面的示例中,为什么我需要声明 var$price,var $title;并将其用于
echo $this->title = $par;.其中我可以直接 echo $par
<?php
class Books{
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
echo $this->title = $par;
//echo $par; what is the difference between the two.
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
<?php
$physics = new Books;
$maths = new Books;
$chemistry = new Books;
$physics->setTitle( "Physics for High School" );
$chemistry->setTitle( "Advanced Chemistry" );
$maths->setTitle( "Algebra" );
$physics->setPrice( 10 );
$chemistry->setPrice( 15 );
$maths->setPrice( 7 );
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
因为$par
是一个函数参数变量而不是存储在class中的变量。如果您尝试 echo $par;
在函数之外,它作为参数传递,因为它不会工作
这一点与在非 OO 编程中使用变量的原因相同——这样您就可以记住一个值并在以后调用它。在这种情况下,您在调用 setTitle()
时保存该值,并在稍后调用 getTitle()
时取回它。
您通常不会在 setTitle()
中有 echo
语句。看起来这只是为了监视开发过程中发生的事情,你会在运行真正的程序之前把它拿出来。
OOP 编程非常适合可扩展性和面向未来。应该注意的是,您的方法应该表明它们预期要做什么。在您的情况下,这有点误导,因为 getTitle
暗示它将 return 名称,但它会回显它。如果您打算保留此功能,则应将其重命名为 echoName
或其他名称。 getTitle
应该 return 它。
用另一个问题回答你的问题("why use a method when I can just access the property")。 如果将来您想确保每个标题的大小写都正确怎么办?您只需将 getTitle
方法替换为:
public function getTitle() {
return ucwords(strtolower($this->name));
}
这意味着您的应用程序中的其他逻辑无需更改!
此外,稍微回顾一下代码,var
是一个非常古老的语法。您应该正确定义属性的可见性更可取:
protected $title;
protected $price;
Here's a link 到我将如何实施您的示例的清理版本 class
大家好,我开始学习 PHP OOP。我有个问题。在下面的示例中,为什么我需要声明 var$price,var $title;并将其用于 echo $this->title = $par;.其中我可以直接 echo $par
<?php
class Books{
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
echo $this->title = $par;
//echo $par; what is the difference between the two.
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
<?php
$physics = new Books;
$maths = new Books;
$chemistry = new Books;
$physics->setTitle( "Physics for High School" );
$chemistry->setTitle( "Advanced Chemistry" );
$maths->setTitle( "Algebra" );
$physics->setPrice( 10 );
$chemistry->setPrice( 15 );
$maths->setPrice( 7 );
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
因为$par
是一个函数参数变量而不是存储在class中的变量。如果您尝试 echo $par;
在函数之外,它作为参数传递,因为它不会工作
这一点与在非 OO 编程中使用变量的原因相同——这样您就可以记住一个值并在以后调用它。在这种情况下,您在调用 setTitle()
时保存该值,并在稍后调用 getTitle()
时取回它。
您通常不会在 setTitle()
中有 echo
语句。看起来这只是为了监视开发过程中发生的事情,你会在运行真正的程序之前把它拿出来。
OOP 编程非常适合可扩展性和面向未来。应该注意的是,您的方法应该表明它们预期要做什么。在您的情况下,这有点误导,因为 getTitle
暗示它将 return 名称,但它会回显它。如果您打算保留此功能,则应将其重命名为 echoName
或其他名称。 getTitle
应该 return 它。
用另一个问题回答你的问题("why use a method when I can just access the property")。 如果将来您想确保每个标题的大小写都正确怎么办?您只需将 getTitle
方法替换为:
public function getTitle() {
return ucwords(strtolower($this->name));
}
这意味着您的应用程序中的其他逻辑无需更改!
此外,稍微回顾一下代码,var
是一个非常古老的语法。您应该正确定义属性的可见性更可取:
protected $title;
protected $price;
Here's a link 到我将如何实施您的示例的清理版本 class