• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niedziałający kod PHP napisany obiektowo

Mały hosting, OGROMNE możliwości
0 głosów
724 wizyt
pytanie zadane 1 października 2018 w PHP przez dawidek08 Początkujący (290 p.)
otwarte ponownie 7 października 2018 przez dawidek08

Podczas moich ćwiczeń PHP bawiłem się obiektówką i interfejsami. Stworzyłem taki kod.

<?php

  /**
   * Interface 'Documentable'
   */

  interface Documentable
  {
    public function showDocument();
  }

  class DocumentToSend
  {
    public static $i = 0;
    public $id;

    public static $documents = [];

    public function _construct(Documentable $document, $name = 'Document')
    {
      $this->id = $this->i;
      $this->i++;
      $this->documents[$this->id] = $document;
    }

    public function showId()
    {
      echo $this->id;
    }

    public static function setIterator($value = 0)
    {
      $this->i = $value;
    }
  }

  /**
   * Documents
   */

  class HTMLDocument implements Documentable
  {
    public $document;

    function __construct($text = '-')
    {
      $this->document = $text;
    }

    public function showDocument()
    {
      echo $this->document;
    }
  }

  /**
   * Code
   */

   $document = new HTMLDocument('Wartosc tego dokumenta');
   $end = new DocumentToSend($document, 'Jakas tam nazwa');
   $end->showId();

?>

Po uruchomieniu funkcji showId() Na ekranie nie pojawiało się nic. Używam PHP w wersji 7.2.4. Wrzuciłem to do walidatora PHP i otrzymałem odpowiedź, że wszystko jest OK. Mimo że jest to kod ćwiczeniowy, to wskazówka jak rozwiązać problem może przydać mi się na przyszłość, a więc proszę o pomoc w rozwiązaniu problemu.

1 odpowiedź

+3 głosów
odpowiedź 1 października 2018 przez Dawid Sobieszczuk Mądrala (6,240 p.)
wybrane 7 października 2018 przez dawidek08
 
Najlepsza
A sprawdzałeś czy Constructor się wywołuje np pisząc w nim echo "ok". Powinno być __construct a masz _construct.
komentarz 7 października 2018 przez dawidek08 Początkujący (290 p.)
przeniesione 7 października 2018 przez Arkadiusz Waluk

Problem został rozwiązany! Gotowy kod wygląda tak:

<?php

  /**
   * Interface 'Documentable'
   */

  interface Documentable
  {
    public function showDocument();
  }

  class DocumentToSend
  {
    public static $i = 0;
    public $id;

    public static $documents = [];

    public function __construct(Documentable $document, $name = 'Document')
    {
      //echo "It works!";
      $this->id = self::$i;
      self::$i++;
      self::$documents[$this->id] = $document;
    }

    public function showId()
    {
      echo $this->id;
    }

    public static function setIterator($value = 0)
    {
      self::$i = $value;
    }
  }

  /**
   * Documents
   */

  class HTMLDocument implements Documentable
  {
    public $document;

    function __construct($text = '-')
    {
      $this->document = $text;
    }

    public function showDocument()
    {
      echo $this->document;
    }
  }

  /**
   * Code
   */

   $document = new HTMLDocument('Wartosc tego dokumenta');
   $end = new DocumentToSend($document, 'Jakas tam nazwa');
   $end->showId();

?>

Dziękuję za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 20 grudnia 2019 w PHP przez damenox Obywatel (1,400 p.)
0 głosów
1 odpowiedź 368 wizyt
pytanie zadane 14 września 2020 w PHP przez Assasz Nałogowiec (30,460 p.)
0 głosów
5 odpowiedzi 1,742 wizyt
pytanie zadane 25 lipca 2018 w PHP przez Luna Cognita Dyskutant (8,130 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...