Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поясните код в ООП
 
 автор: sedoy   (04.07.2014 в 13:22)   письмо автору
 
 

Ребят, имеется вот такой вот код.

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 вылезает ошибка.

Буду очень благодарен.

  Ответить  
 
 автор: Igorek   (04.07.2014 в 14:14)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования