IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Levin
Člen
Avatar
Levin:16.2.2015 19:23

Ahoj, mám tyhle kody

class Clovek
{
    public $name;
    public $age;

    public function rok($rok)
    {
        if($rok == 1) echo "rok";
        elseif($rok >= 2 && $rok <= 4) echo "roky";
        elseif($rok < 4) echo "let";

        return 0;
    }

    function pozdrav()
    {
        echo "Ahoj, já jsem ".$this->name." a je mi ".$this->rok($this->age);

        return 0;
    }

}

a index.php

require 'clovek.php';

    $vendulka = new Clovek();
    $vendulka->name = "Vendulka";
    $vendulka->age = "19";
    $vendulka->rok($vendulka->age);
    $vendulka->pozdrav();

Potřebuji poradit, jak správně zavolat funkci rok, aby se správně vypsalo "Ahoj, já jsem Vendulka a je mi 19 let.

U let se mi vypisuje 0. Nemám žádný zkušenosti s opp.

Díky za radu jak upravit kód

 
Odpovědět
16.2.2015 19:23
Avatar
shaman
Člen
Avatar
Odpovídá na Levin
shaman:16.2.2015 19:30

zmen si funkciu rok asi takto:

public function rok($rok)
     {
         if($rok == 1) {
            $affix = "rok";
         }
         elseif($rok >= 2 && $rok <= 4) {
            $affix = "roky";
         }
         else
         {
            $affix =  "let";
         }
         return $rok." ".$affix;
     }
Editováno 16.2.2015 19:31
Nahoru Odpovědět
16.2.2015 19:30
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Odpovídá na Levin
Matúš Petrofčík:16.2.2015 19:35

http://www.itnetwork.cz/php/oop OOP v PHP
http://www.itnetwork.cz/php/mvc RS v OOP PHP s MVC

"Nemám žádný zkušenosti s opp." ... eee
upravíš funkciu pozdrav takto

function pozdrav()
     {
         echo "Ahoj, já jsem ".$this->name." a je mi ". $this->let . $this->rok($this->age);

         return 0;
     }
Nahoru Odpovědět
16.2.2015 19:35
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:16.2.2015 19:41

A ideálně tam nebude return.

Nahoru Odpovědět
16.2.2015 19:41
Neaktivní uživatelský účet
Avatar
Odpovídá na Levin
Uživatel sítě :16.2.2015 19:46

U funkce rok sice zavoláš pádovaný rok, avšak jí také říkáš aby vrátila hodnotu 0.

return 0;

To znamená, že funkce rok by mohla vypadat takto:

public function rok($rok = 0){
  if($rok == 1){
      $pad = 'rok';
  }elseif($rok >= 2 && $rok <= 4){
      $pad = 'roky';
  }elseif($rok < 4){
      $pad = 'let';
  }else{
      $pad = 'roků';  //Při nule
  }
    return $rok . ' ' . $pad;
}

A pozdrav:

function pozdrav(){
    echo "Ahoj, já jsem ".$this->name." a je mi ".$this->rok($this->age);
}
Editováno 16.2.2015 19:48
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
16.2.2015 19:46
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Neaktivní uživatel
Matúš Petrofčík:16.2.2015 19:48

Ja si ten return ani nevšimol :[

Nahoru Odpovědět
16.2.2015 19:48
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Levin
Člen
Avatar
Levin:16.2.2015 19:56

Díky

Editováno 16.2.2015 19:57
 
Nahoru Odpovědět
16.2.2015 19:56
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:16.2.2015 20:00

a jestli se OOP učíš, tak je skvělá funkce __toString, viz:

class TestClass
{
    public $foo;

    public function __construct($foo)
    {
        $this->foo = $foo;
    }

    public function __toString()
    {
        return $this->foo;
    }
}

$class = new TestClass('Hello');
echo $class;
Nahoru Odpovědět
16.2.2015 20:00
Čím víc vím, tím víc věcí nevím.
Avatar
Levin
Člen
Avatar
Levin:18.2.2015 19:43

Jestli to správně chápu, tak funkce __toString, mi převede proměnou na na textový řetězec?
Tím si můžu vypisovat danou konkrétní proměnnou objektu?

 
Nahoru Odpovědět
18.2.2015 19:43
Avatar
Odpovídá na Levin
Neaktivní uživatel:18.2.2015 19:59

Ano, pokud chceš vypsat "proměnnou objektu" (instanci) jako řetězec, například pomocí funkce echo, zavolá se tato metoda __toString(), která by měla navrátit onen řetězec, který se vypíše...

Nahoru Odpovědět
18.2.2015 19:59
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.