Example #1
0
    {
        $vysledek = $this->b + $this->privatniFunkce();
        //k metodám i proměnným přistupujeme přes ->
        //v rámci dané instance využíváme klíčové slovo $this
        //u properties (proměnných) nepíšeme $ !
        $this->neco = 'nevim';
        //PHP se vyrovná i s dynamickým definováním properties, jsou pak nadefinovány jako public
        echo $vysledek;
    }
    /**
     * @return int
     */
    public static function statickaFunkce()
    {
        self::$f++;
        //ke statickým proměnným, konstantám a metodám přistupujeme přes operátor :: (dvě dvojtečky), u proměnných je uveden $
        return self::KONSTANTA + self::$f;
        //uvnitř třídy používáme místo jména třídy klíčové slovo self
    }
}
echo MojeTrida::statickaFunkce();
//zavolání statické funkce
echo MojeTrida::KONSTANTA;
//ke konstantám a statickým public proměnným jde přistupovat i mimo třídu
echo MojeTrida::$d;
$objekt = new MojeTrida();
//vytvoření nového objektu (pro vytvoření se používá konstruktor)
$objekt->a = 0;
//přístup k public proměnné
$objekt->vypis();
//přístup k metodě daného objektu
Example #2
0
     */
    public function getX()
    {
        return $this->x;
    }
    /**
     * @return int
     */
    public function getRandomNumber()
    {
        return rand(1, 10);
    }
}
/**
 * Class MojeTrida - ukázka třídy s traitem
 */
class MojeTrida
{
    use MujTrait;
    //pomocí klíčového slova use můžeme načíst příslušný trait
    public function echoX()
    {
        echo $this->x;
        //proměnná $x byla sice definovaná v traitu jako private, ale je tu normálně dostupná (obsah traitu je "nakopírován" do této třídy)
    }
}
$objekt = new MojeTrida();
$objekt->echoX();
echo PHP_EOL;
//konstanta obsahující znak pro ukončení řádky (ve výchozím stavu \n)
echo $objekt->getRandomNumber();
Example #3
0
    {
        echo 'vypis 2' . PHP_EOL;
    }
}
trait Trait3
{
    protected function hello()
    {
        echo 'hello' . PHP_EOL;
    }
}
class MojeTrida
{
    use Trait1, Trait2 {
        //načítáme najednou více traitů, přičemž chceme vyřešit konfliktní obsah
        Trait1::test insteadof Trait2;
        //bude použita metoda test() z Trait1, příslušná metoda z Trait2 bude ignorována
        Trait1::vypis insteadof Trait2;
        Trait2::vypis as vypis2;
    }
    use Trait3 {
        hello as public;
        //změna přístupnosti příslušné metody
        hello as public hello2;
    }
}
$objekt = new MojeTrida();
$objekt->test();
$objekt->vypis2();
$objekt->hello();
$objekt->hello2();