我有一个页面“ player.php”,其中有对象播放器及其功能,还有另一个页面“ index.php”,其中显示了一个小形式,其中添加了播放器的名称并创建了新播放器。
如果我将所有代码都放在“ player.php”页面上,则它可以正常工作,将其添加到播放器中,并在列表按钮上显示每个创建的新播放器。
但是由于我单独使用它不起作用,所以我添加了include(“ player.php”),但它仍然不起作用。
player.php
<?php
session_start();
class Player {
private $players;
private $name;
public function __construct($name)
{
$this->name = $name;
$this->players = array();
}
public function getName()
{
return $this->name;
}
public function addPlayer($onePlayer)
{
$this->players[] = $onePlayer;
return $this;
}
public function printPlayers()
{
foreach($this->players as $player){
echo $player.'<br />';
}
}
public function __toString()
{
return $this->name;
}
}
function printForm()
{
echo '<FORM METHOD="POST" style="text-align: center; margin-top: 73px;">
<h2>Add Players</h2>
<label>Add the name : </label><INPUT class="form" TYPE = "text" NAME = "name"> <br><br>
<INPUT class="form" TYPE = "submit" VALUE = "add" name="action">
<INPUT class="form" TYPE = "submit" VALUE = "list" name="action">
</ FORM>';
}
// Load the player data of the session and if it does not exist create a new player.
function loadData()
{
return isset($_SESSION['player']) ? $_SESSION['player'] : new Player();
}
// Save the player's data in the session.
function saveData($player)
{
$_SESSION['player'] = $player;
}
/**** If I put the index.php code here it works fine
printForm();
$player = loadData();
if(isset($_POST['action']))
{
switch($_POST['action'])
{
case 'add':
$player->addPlayer(new Player($_POST['name']));
saveData($player);
break;
case 'list':
echo '<hr />';
$player->printPlayers();
break;
}
}
*****/
?>
index.php
<?php
session_start();
include("player.php");
printForm();
$player = loadData();
if(isset($_POST['action']))
{
switch($_POST['action'])
{
case 'add':
$player->addPlayer(new Player($_POST['name']));
saveData($player);
break;
case 'list':
echo '<hr />';
$player->printPlayers();
break;
}
}
?>
答案 0 :(得分:1)
您需要像这样调用Player类的新实例:
#new instance of Player class
$player = new Player();
#call loadData function
$player->loadData();