所以到目前为止我已经完成了代码,但是我收到一个关于无法重新定义电影的错误,我感觉这是一个小而愚蠢的东西,但我似乎无法弄清楚这一点。我需要创建一个电影课程,根据电影观众的年龄确定电影票的成本。假设全价票的成本是10美元。将年龄分配给私有数据成员。使用公共成员函数来确定票价。
第一个代码是Movies.html
<!--Movies.html-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Movies</title>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Welcome to the movies!</h1>
<p>Enter your age to determine your price.</p>
<form action="Admissions.php" method="POST">
<p>Age <input type="text" name="age" /></p>
<p><input type="submit" value="Submit" /></p>
</form>
</body>
</html>
第二档Admissions.php
<?php
include('Movies.php');
$age = $_POST['age'];
$price = 10;
$movies = new Movies($age);
$ticketPrice = $movies->getPrice($price);
echo"<p>The ticket price is $ticketPrice </p>\n";
?>
</body>
</html>
第三档Movies.php
<!--Movies.php-->
<?php
class Movies {
private $age = 0;
private $ticketPrice = 10.00;
function __construct($age) {
$this->age = $age;
}
function getPrice($ticketPrice) {
// use switch to manage age
switch ($this->age) {
case ($this->age < 5):
$this->ticketPrice = 0;
break;
case ($this->age > 5 && $this->age < 18):
$this->ticketPrice = $ticketPrice / 2;
case ($this->age >= 18 && $this->age <= 55):
$this->ticketPrice = $ticketPrice;
break;
case ($this->age > 55):
$this->ticketPrice = $ticketPrice - (float) ("2.00");
break;
}
return $this->ticketPrice;
}
}
?>
答案 0 :(得分:0)
在php中,如果你有一个名为与类相同的方法,它被视为构造函数。因此,当您运行以下内容时,您实际上是在说Movie::Movie()
:
$ticketPrice = new Movies();
您的错误被抛出,因为每个方法名称必须是唯一的。您不能拥有名为Movies
的两个方法/函数。
更不用说,你的班级&amp;脚本充满了错误。如果您要实施OOP方法,最好阅读如何实现这一目标。 (虽然你很努力!)。
如果看起来这样,你的课程将更有效地运作:
class Movies {
private $age = 0;
private $ticketPrice = 10.00;
function __construct($age) {
$this->age = $age;
}
function getPrice($ticketPrice) {
// use switch to manage age
switch ($this->age) {
case ($this->age < 5):
$this->ticketPrice = 0;
break;
case ($this->age > 5 && $this->age < 18):
$this->ticketPrice = $ticketPrice / 2;
case ($this->age >= 18 && $this->age <= 55):
$this->ticketPrice = $ticketPrice;
break;
case ($this->age > 55):
$this->ticketPrice = $ticketPrice - 2;
break;
}
return $this->ticketPrice;
}
}
现在这允许你像这样运行它:
// instantiate class
$age = $_POST['age'];
$price = 10;
$movies = new Movies($age);
$ticketPrice = $movies->getPrice($price);
echo echo"<p>The ticket price is $ticketPrice </p>\n";
以上是一个示例,您需要将其用于实现您的实现。
<强>更新强>
回答有关未找到课程的评论。我希望您将该Movies
类放入名为Movies.php
的文件中。只是PHP代码,没有别的。 没有 html。
现在,在Admissions.php文件中,我希望您将其更改为:
<!--Admissions.php-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Movies</title>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
include('Movies.php');
$age = $_POST['age'];
$price = 10;
$movies = new Movies($age);
$ticketPrice = $movies->getPrice($price);
echo"<p>The ticket price is $ticketPrice </p>\n";
?>
</body>
</html>
确保每个文件位于同一目录中,以确保它包含在Admissions.php
脚本中。