电影 PHP 脚本


Movie PHP script

所以我到目前为止已经完成了代码,但我收到一个关于无法重新定义电影的错误,我有一种感觉,这是一件小而愚蠢的事情,但我似乎无法弄清楚这一点。我需要参加一个电影课,根据电影观众的年龄确定电影院门票的费用。假设全价票的费用为 10 美元。将年龄分配给私有数据成员。使用公共成员函数确定票价。

第一个代码是电影.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>

第二档录取.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>

第三个档电影.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;
    }
}
?>

在 php 中,如果你有一个与类相同的方法,它被视为构造函数。所以当你运行你的时,你实际上是在说Movie::Movie()

$ticketPrice = new Movies();

抛出错误是因为每个方法名称必须是唯一的。您不能有 2 个称为 Movies 的方法/函数。


更不用说,你的类和脚本充满了错误。如果你要实现一个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。

现在在你的招生.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脚本中。