Autor Zpráva
Miri
Profil *
Ahoj, chtěl bych se zeptat jak komunikovat mezi 2 třídami.

Mám třídu Menu a třídu Zbozi

a z nějaké metody Zbozi bych chtěl volat metodu z třídy Menu jak toho dosáhnout když mám třídy načtené "vedle sebe"?

Díky Míra
Ugo
Profil
1. statické metody (globální přístup ke třídě, nikoliv k objektu)
<?php
class Menu {
  function volejZbozi() {
    echo zbozi::rekniMiNeco();
  }
}
class Zbozi {
  static function rekniMiNeco() {
    return "ahoj";
  }
}
$menu = new Menu();
$menu->volejZbozi();

2. global proměnná s instancí (v tomhle případě naprosto nedoporučuji)
<?php
class Menu {
  function volejZbozi() {
    global $zbozi;
    echo $zbozi->rekniMiNeco();
  }
}
class Zbozi {
  function rekniMiNeco() {
    return "ahoj";
  }
}
$zbozi = new Zbozi();
$menu = new Menu();
$menu->volejZbozi();

3. asi nejlepší - předat si instanci v parametru (stylově řečeno DI)
<?php
class Menu {
  function volejZbozi(Zbozi $zbozi) {
    echo $zbozi->rekniMiNeco();
  }
}
class Zbozi {
  function rekniMiNeco() {
    return "ahoj";
  }
}
$zbozi = new Zbozi();
$menu = new Menu();
$menu->volejZbozi($zbozi);

eh nějaké dlouhé, kdyžtak to asi smažu a taky koukám že volání tříd mám naopak, ale to nevadí :)
Miri
Profil *
Super to jsem potřeboval. Děkuji mnohokrát :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: