За последние 24 часа нас посетили 16472 программиста и 1671 робот. Сейчас ищут 862 программиста ...

Обращение к объекту в PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем Bigkid, 5 июл 2014.

  1. Bigkid

    Bigkid Новичок

    С нами с:
    5 июл 2014
    Сообщения:
    1
    Симпатии:
    0
    Добрый вечер!
    Подскажите правильно ли я происходит обращение к объекту через $var класса Page (запись в теле класса Poly:page $var). И еще как срабатывает запись:
    $poly->get_ob($page); $poly->get_ob($index); $poly->get_result();. Вывод массива "ob" понятен, но предыдущие две записи ф-ии "get_ob" не пойму почему должны помещать в массив "ob" две записи, а не перезаписывать одна другую?
    Код (Text):
    1. <?php
    2. class Page {
    3.                  public $title;
    4.                  public $content;
    5.                  public $footer;
    6.                  public function __construct($t,$c,$f) {
    7.                         $this->title = $t;
    8.                         $this->content = $c;
    9.                         $this->footer = $f;
    10.                  }
    11.                  public function render_body() {
    12.                         $str = '<h1>'.$this->title.'</h1>';
    13.                         $str .= '<p>'.$this->content."</p>";
    14.                         $str .= "<p style='font-size=8px'>".$this->footer."</p>";
    15.                         return $str;
    16.                }
    17.               public function test() {
    18.                        return $this->render_body();
    19.               }
    20. }
    21.  
    22. class Index extends Page {
    23.             public $slide;
    24.             public $news;
    25.             public function __construct($t,$c,$f,$s,$n) {
    26.                     parent::__construct($t,$c,$f);
    27.                    $this->slide = $s;
    28.                    $this->news = $n;
    29.  
    30.           }
    31.           public function render_body() {
    32.                   $str = parent::render_body();
    33.                   $str.="<p>".$this->slide."</p>";
    34.                   $str.="<p>".$this->news."</p>";
    35.                   return $str;
    36.          }
    37. }
    38.  
    39. class Poly {
    40.          public $ob;
    41.          public function get_ob(Page $var) {
    42.                 $this->ob[] = $var;
    43.          }
    44.         public function get_result() {
    45.                foreach($this->ob as $item) {
    46.                echo $item->test();
    47.                }
    48.         }
    49. }
    50. $poly = new Poly();
    51. $page = new Page('Page','hello i am page','footer');
    52. echo $page->render_body();
    53. $index = new Index ('INDEX','HELLO I am index','footer','slide_show','news');
    54. echo $index->render_body();
    55.  
    56. $poly->get_ob($page);
    57. $poly->get_ob($index);
    58. $poly->get_result();
    59. ?>
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Код (PHP):
    1. public function get_ob(Page $var) {
    НЕ надо писать Page, просто $var т.е.
    Код (PHP):
    1. public function get_ob($var) {
    Добавлено спустя 7 минут 13 секунд:
    потому что при записи:
    Код (PHP):
    1. $this->ob[] = $var; 
    добавляемый элемент записывается под новым индексом в массив (т.е. добавляется в конец массива):
    Код (PHP):
    1. $data = array('a', 'b', 'c');
    2. for ( $i = 0; $i < 5; $i++ ) { $data[] = $i; }
    3. // $data будет массив 'a', 'b', 'c', '0', '1', '2', '3', '4'
    4. foreach ($data as $v) { echo "<p>{$v}</p>"; }