2016-02-17 1 views
-2

поэтому у меня есть код, сделанный до сих пор, но я получаю сообщение об ошибке, не могу переопределить фильмы, и у меня есть ощущение, что это что-то маленькое и глупое, но я просто не могу понять это. Мне нужно переоценить класс фильмов, который определяет стоимость билета в кино, исходя из возраста кинозрителя. Предположим, что стоимость полноценного билета составляет 10 долларов США. Назначьте возраст частному члену данных. Используйте функцию открытого участника, чтобы определить цену билета.Movie PHP-скрипт

Первый код, который 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; 
    } 
} 
?> 
+3

Добро пожаловать в SO. Пожалуйста, прочитайте [Какие темы я могу задать] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http: // stackoverflow.com/help/how-to-ask) И [идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO is ** not бесплатное кодирование или учебное пособие ** Вы должны показать, что приложили определенные усилия для решения своей проблемы. – RiggsFolly

ответ

0

В PHP, если у вас есть метод названный так же, как класс, который рассматривается как конструктор. Таким образом, вы, по сути говоря, Movie::Movie() при запуске:

$ticketPrice = new Movies(); 

Ваша ошибка бросают, потому что каждое имя метода должно быть уникальным. У вас не может быть 2 метода/функций, называемых Movies.


Не говоря, сценарий класса & пронизана ошибками. Если вы собираетесь внедрить подход ООП, лучше всего прочитать, как именно это достичь. (Хорошо, что вы пытаетесь!).

Ваш класс будет функционировать более эффективно, если это выглядело так:

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


Update

Чтобы ответить на ваш комментарий о классе не найден. Я хочу, чтобы вы поместили этот класс Movies в файл с именем Movies.php. Просто PHP-код, ничего другого. NO 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 сценарий.

+0

Хорошо, я попытался переместить это немного больше, но я получаю сообщение о том, что класс «Фильмы» не найден на линии $ movies = new Movies ($ age); – Wolfenacht

+0

@Wolfenacht Обновите свой вопрос таким образом, которое он есть сейчас. Поскольку вам нужно включить класс, чтобы вы могли его назвать. – Darren

+0

Хорошо, я обновил код, я также просматриваю в Интернете книгу, чтобы узнать, есть ли на это больше намеков. Я не знаком с этим. Благодарю. Я добавил add_once («Movies.php») и избавился от одной ошибки, чтобы произвести другую. Ха-ха – Wolfenacht