Portál AbcLinuxu, 13. května 2024 20:39


Dotaz: PHP - Nejde zapsat parametr do class

15.10.2013 16:11 Zadejte vaše jméno
PHP - Nejde zapsat parametr do class
Přečteno: 262×
Odpovědět | Admin
Ahoj, proč mi nejde nastavit takovej parametr v class? Nejde to jelikož to nejde, nebo je zápis blbě? Pokud je blbě prosím o opravu, děkuji uctivě ;)
define('ABS', '/home/var/7987');
class auto {
 private $VarAudi = ABS.'/public/cat/audi';
...
}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.10.2013 16:24 Kit
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro definici počáteční hodnoty atributu je možné použít pouze konstanty a jen některé výrazy. Operátor zřetězení "." nelze použít.
15.10.2013 16:32 Zadejte vaše jméno
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Díky moc, tak že nastavit v konstruktoru, jo?

Ty taky jednou píšeš, že je to atribut a jindy zase parametr ;-) Tak jak to je? ;-) Člověk se tu hodně naučí a lecos se dozví, ale teď jsi mi v tom udělal guláš :-D
15.10.2013 18:01 Kit
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
V konstruktoru to jde nastavit bez problémů.

- parametr - většinou se tím myslí formální parametry metody nebo skutečné parametry, které se té metodě předávají při volání.

- atribut - vnitřní proměnná (stav) objektu

Občas se i spletu při psaní.

Jen bys asi neměl používat define(), ale raději tuto konstantu předat přes parametr konstruktoru. Když to dám do kupy, představuji si to asi takto:
class Auto {
    private $type;
    private $abs;

    function __construct($type, $abs) {
        $this->type = $type;
        $this->abs = $abs;
    }

    function getTypeStr() {
        return '/public/cat/'.$this->type;
    }

    function getAbsStr() {
        return '/home/var/'.$this->abs;
    }

    function __toString() {
        return "Auto: ".getTypeStr().", ABS: ".getAbsStr();
    }
}

$audina = new Auto('audi', '7987');
echo $audina;
Variant je však mnohem víc a netvrdím, že je tohle nejlepší řešení. Záleží na účelu.
15.10.2013 18:12 Zadejte vaše jméno
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Díky za objasnění, ale dívám se, že metody getTypeStr() a getAbsStr() voláš z magické metody __toString(), nikde ale nevidím, že by jsi vololal tuto magickou metodu pomocí $this->__toString(); Můžeš to upřesnit? Děkuji
15.10.2013 18:15 Kit
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Metoda __toString() se přece volá automaticky pokaždé, když s objektem zacházíš jako se stringem.
15.10.2013 20:16 Zadejte vaše jméno
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Aha, tak že pokud jsem tě pochopil, tak pokud chci z nějaké class vracet objekty, tak volám veškeré metody z metody "__construct" a pokud je nechci vracet objekty ale string, tak volám veškeré metody z metody __toString. je to ok? Díky
15.10.2013 20:35 Kit
Rozbalit Rozbalit vše Re: PHP - Nejde zapsat parametr do class
Ne. __construct() je konstruktor a __toString() je defaultní viewer objektu. Zkus si nějaké tutoriály OOP v PHP.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.