电影PHP脚本

时间:2016-02-17 02:04:30

标签: php

所以到目前为止我已经完成了代码,但是我收到一个关于无法重新定义电影的错误,我感觉这是一个小而愚蠢的东西,但我似乎无法弄清楚这一点。我需要创建一个电影课程,根据电影观众的年龄确定电影票的成本。假设全价票的成本是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;
    }
}
?>

1 个答案:

答案 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";

以上是一个示例,您需要将其用于实现您的实现。

DEMO

<强>更新

回答有关未找到课程的评论。我希望您将该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脚本中。