|
|
|
|
|
для: sedoy
(04.07.2014 в 13:22)
| | > function __construct(Game $g, $name)
Это контроль типов (Type Hinting http://www.php.net/manual/ru/language.oop5.typehinting.php). Благодаря этой конструкции строго определяем тип первого параметра $g. Он должен быть объектом класса Game
> $this->player = new Player($this, $name)
Передаем в конструктор класса Player ссылку на текущий объект (объект класса Game)
> и почему когда я убираю конструкцию __toString вылезает ошибка.
<?php
function showPlayer()
{
echo $this->player;
}
|
__toString() (http://www.php.net/manual/en/language.oop5.magic.php#object.tostring)магический метод вызываемый неявно, когда мы пытаемся вывести объект как строку. Без него php не знает каким образом echo $this->player; должно работать. $this->player - это экземпляр класса Player | |
|
|
|
|
|
|
| Ребят, имеется вот такой вот код.
index.php
include "Game.php";
include "Player.php";
$game = new Game();
$game->createPlayer('ted');
$game->showPlayer();
|
player.php
class Player
{
public $name;
public $hp;
public $dmg;
function __construct(Game $g, $name)
{
$this->name = $name;
echo "Player {$this->name} was created<br>";
}
function __toString()
{
echo "Name: {$this->name} | HP: {$this->hp} | DMG: {$this->dmg}";
}
}
|
Game.php
class Game
{
function __construct()
{
echo "Game Started<br>";
}
function createPlayer($name)
{
$this->player = new Player($this, $name);
}
function showPlayer()
{
echo $this->player;
}
}
|
Теперь проясните мне пожалуйста вот эти строки, конкретно, что выделено жирным.
function __construct(Game $g, $name)
$this->player = new Player($this, $name)
и почему когда я убираю конструкцию __toString вылезает ошибка.
Буду очень благодарен. | |
|
|
|
|