Autor Zpráva
ProHelperCZE
Profil *
Zdravím,
koukal jsem se a nemůžu pochopit pracování s třídami a metodamy. A pak třeba to $query->neco->neco.
Když zadám do editoru class, tak mi vyběhne toto:
/**
* 
*/
class ClassName extends AnotherClass
{
    
    function __construct(argument)
    {
        # code...
    }
}
Mohl by mi to někdo laicky vysvětlit, prosím?
Děkuji moc.
lorin
Profil
http://interval.cz/clanky/oop-v-php-zaklady-oop/
http://www.root.cz/serialy/php-v-objeti-objektu/
ProHelperCZE
Profil *
[#2] lorin
Díky, zkusil jsem něco podle jednoho návodu sestavit.
<?php
class Neco
{
    private $promenna;
    $num = mt_rand(0,1000);
    public function __construct($promenna = $num)
    {
        $this->Hodnota = $promenna;
    }
    public function ZjistiNahodneCislo()
    {
        return $this->Hodnota;
    }
}

$trida = new Trida();
echo $trida->ZjistiNahodneCislo();
?>
Testuju to na localhostu a píše mi to:
( ! ) SCREAM: Error suppression ignored for
( ! ) Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting ',' or ';' in D:\wamp\www\test.php on line 6
Nemohl by mi někdo vysvětlit, kde je chyba?
IdemeNaHavaj
Profil
ProHelperCZE:
Máš
class Neco
a
$trida = new Trida();
nebude to problem?
ProHelperCZE
Profil *
[#4] IdemeNaHavaj
Pokud jsi myslel, abych to dal na new Neco();, tak to jsem teď zkusil přeměnit, a furt to píše tu chybu.
Ale píše to tu chybu na řádku s mt_rand..
IdemeNaHavaj
Profil
ProHelperCZE:
tak to zmeň iba na mt_rand() bez čísiel vo vnútri, ak chceš čísla vo vnútri tak iba rand(1,10000)
ProHelperCZE
Profil *
[#6] IdemeNaHavaj
Divné, ani toto nefunguje.
lorin
Profil
Co třeba takhle:

<?php
class Neco
{
    // Uchovává náhodné číslo předané do instance třídy
    private $promenna;
    
    // Kontruktor třídy
    public function __construct($argument) {
        // Předaný argument nastaví jako obsah privátní proměnné "promenna"
        $this->promenna = $argument;
    }
    
    // Vrací náhodné číslo, které bylo třídě přidáno při vytvoření
    public function ZjistiNahodneCislo() {
        return $this->promenna;
    }
}

// Vygeneruje náhodné číslo od nuly od 1000
$num = mt_rand(0, 1000);
 
// Vytvoření nové instance. 
// Předá se náhodné číslo, které jsme si vygenerovali
$trida = new Neco($num);

// Vypíšeme si náhodné číslo ( bude stejné jako obsah $num)
echo $trida->ZjistiNahodneCislo();
?>

Chyba dle mého byla v nastavení proměnné jako defaultní hodnoty argumentu konstruktoru:

private __construct($a = $b) //špatně
private __construct($a = "a") // dobře

Defaultní hodnota musí (dle mého názoru) být konstantní.
Tori
Profil
ProHelperCZE:
1. Při inicializaci proměnné třídy je povolené použít pouze konstantní hodnotu. Tj. žádné funkce nebo proměnné. viz manuál
2. Použít proměnnou $num jako výchozí hodnotu tímto způsobem nelze. Dejte jako výchozí hodnotu nulu a do konstruktoru přidejte podmínku, že pokud je $promenna menší než 1, tak se zavolá mt_rand.
ProHelperCZE
Profil *
[#9] Tori´Díky za objasnení:)
[#8] lorin Funguje to, děkuji. Jen se obávám, abych někdy v budoucnu ten script sestavil. :D
Díky oboum :)

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