在另一个PHP页面上显示对象时出现问题

时间:2019-01-24 19:59:18

标签: php oop

我有一个页面“ 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;
    }
}

?>

1 个答案:

答案 0 :(得分:1)

您需要像这样调用Player类的新实例:

#new instance of Player class
$player = new Player();
#call loadData function
$player->loadData();