Autor Zpráva
radas
Profil *
Zdravím,
laboruji s OOP a neumim si poradit jak volat funkci, kterou mám nadefinovanou v třida, A v třidě B
__construct
Profil
Dá sa to viac spôsobmi - každý je ale na niečo iné:
<?php

class A {
    public final function prvaMetoda()
    {
        return 'Som z A';
    }
}

class B {
    public function inaMetoda()
    {
        //vytvoríš si inštanciu objektu v metóde; triedu A používaš iba v tejto metóde
        $a = new A;
        return $a->prvaMetoda();
    }
}

class C {
    private $a;
    
    public function __construct()
    {
        //vytovríš si inštanciu v rámci triedy; používaš ju v ktorejkoľvek metóde v rámci triedy
        $this->a = new A;
    }
    
    public function volajA()
    {
        return $this->a->prvaMetoda();
    }
    
    public function pouziA()
    {
        return strtolower($this->a->prvaMetoda());
    }
}

class D extends A { // použiješ dedičnosť - trieda metódu „zdedí“
    
    public function nieco()
    {
        return false;
    }
    
}

$b = new B;
echo $b->inaMetoda();

$c = new C;
echo $c->pouziA();
echo $c->volajA();

$d = new D;
echo $d->prvaMetoda();
Joker
Profil
Funkce ve třídě = metoda.

K atributům a metodám instance třídy (vytvořené operátorem new) se operátorem ->, objektový operátor (object operator)
Ke statickým atributům a metodám třídy se přistupuje operátorem ::, scope resolution operator, český název nevím, něco jako operátor rozsahu nebo operátor rozlišení kontextu.

Ale doporučuji si přečíst něco o základech objektového programování (v PHP třeba http://www.linuxsoft.cz/article.php?id_article=229 )
radas
Profil *
__construct, Joker:
děkuji...
linuxsoft jsem se dival, jedu i podle knižky..ale učim se to...ne vše mi docvakne, když "nabyté" informace mam použit v praxi...děkuji..

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:

0