2016-04-13 19 views
0

私はdisplaySentence()という関数を呼び出して、 'sentence'の値をcandycontest.phpのフォームに出力しようとしています。関数は最終的にはより多くの機能を持ちますが、今は関数が確実に動作するようにその文の値をエコーし​​てみようとしています。スクリプトを実行すると、関数に到達するまでページが表示され、その時点では空白になります。PHPの関数を呼び出す

candycontest.php

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Pete's Treats Candy Contest</title> 
</head> 
<body> 
    <form action="checkticket.php" method="post"> 
     <label for="ticketNum">Enter your ticket number:</label> 
     <input type="number" name="ticketNum" style="width:100px"><br/> 
     <label for="sentence">Enter the magic sentence:</label> 
     <input type="text" name="sentence" style="width:600px"><br/> 
     <input type="submit" value="Am I a Winner?"> 
    </form> 
</body> 
</html> 

checkticket.php

<?php 

$userTicket = $_POST['ticketNum']; 


class MagicSentence { 
public $sentence; 


public function __construct($sentence) { 
    $this->setSentence($sentence); 
} 

public function getSentence() { return $this->sentence; } 
public function setSentence($sentence) { 
    $this->sentence = $sentence; 
} 
} // End class MagicSentence 



class Ticket extends MagicSentence { 
public $ticketNum; 

public function displaySentence() { 
    $userSentence = $_POST['sentence']; 
    echo $userSentence; 
} 
} 

$magicSentence = new MagicSentence("The cow jumped over the moon."); 
?> 



<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Pete's Treats Candy Contest</title> 
</head> 
<body> 
    <?php 


     echo 'Your ticket number is: ' . $userTicket . "<br>"; 
     echo 'The magic sentence is: ' . $magicSentence->getSentence() .  "<br>"; 

     displaySentence(); 

    ?> 
</body> 
</html> 
+0

header.phpは何ですか? –

+1

なぜクラスメソッドを関数として呼び出すのですか? – akanevsky

+0

すべてのページで同じタイトル情報です。それは必要ではないので、私はその行を本当に素早くコメントさせてください。 – slickset

答えて

1

変更$magicSentence = new MagicSentence("The cow jumped over the moon.");$magicSentence = new Ticket("The cow jumped over the moon.");

からdisplaySentence()方法は、Ticketクラスの下に存在するため、これを実行する必要があります(これはMagicSentenceクラスから拡張されています)。

また、メソッドを呼び出すにはdisplaySentence();から$magicSentence->displaySentence();に変更してください。通常の関数と同じようにメソッドを呼び出すことはできません。

これを行うとあなたは金色になるはずです。

+1

ありがとうございます。それが私の問題を解決しました。 – slickset

+0

助けてくれてうれしいです。 –

0

クラスTicket$ticketObjのオブジェクトを作成しての代わりに$ticketObj->displaySentence();を使用displaySentence();

+1

ありがとうございました。これは私のために働く。 – slickset

0

displaySentence();は、Ticketクラスのメソッドであり、オブジェクトのインスタンス化は一度も行われていないため、まだどのコンテキストにも存在しません。なるように

$magicSentence = new MagicSentence("The cow jumped over the moon."); ニーズ:なるように $magicSentence = new Ticket("The cow jumped over the moon.");

displaySentence();ニーズ:$magicSentence->displaySentence();

+0

ありがとうございました。これは私のために働く。 – slickset

関連する問題