-
Migrace z Joomla 1.5, 2.5 a 3.x do nové Joomla 6
Bong ·
- X Online Joomla bar xunil ·
-
Phoca Cart - pluginy dopravy
H13 ·
-
Nový joomlaportal.cz
Linelabcz ·
-
Amanus - nová šablona Astroid frameworku podporující Phoca Cart
H13 ·
- X Claude Code a VS Code - kompromitace xunil ·
-
Phoca Download - verze 6.1.6 vydána
H13 ·
-
Phoca Cart - Booking
H13 ·
Vyřešeno URL odkaz
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
17. zář 2015 00:17 #123444
od Cony
Odpověď od Cony v tématu URL odkaz
Tak znovu
:: - volání statické metody třídy
-> volání metody objektu
Z jiné třídy nemusíte volat staticky to je nesmysl. Staticky musíte volat statické metody. Máte-li objekt, voláte je pomocí ->
V joomla např:
Hodnoty třídy se v konstruktoru neplní, konstruktor se volá při vytváření objektu. Pročtěte si třeba toto nebo lépe nějaké základy obecného OOP
:: - volání statické metody třídy
-> volání metody objektu
Z jiné třídy nemusíte volat staticky to je nesmysl. Staticky musíte volat statické metody. Máte-li objekt, voláte je pomocí ->
V joomla např:
Code:
// statické volání metody getApplication třídy JFactory
$app = JFactory::getApplication();
// získání property input objektu $app který je instancí třídy JApplication
$input = $app->input;
Hodnoty třídy se v konstruktoru neplní, konstruktor se volá při vytváření objektu. Pročtěte si třeba toto nebo lépe nějaké základy obecného OOP
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
17. zář 2015 16:10 #123450
od Ernst
Odpověď od Ernst v tématu URL odkaz
To jsem vše již četl a mnoho dalšího, konstruktor je mi jasný, jen jsem se blbě vyjádřil.
Musím si vše osahat a zažít, to se za necelé dva měsíce asi nedá.
Ale stále nevím zda je ve výsledku to samé
trida::funkce() a this->funkce() voláno v té samé třídě.
vím, že nelze volat jen funkce(), to nejde
mně se to chová identicky
Musím si vše osahat a zažít, to se za necelé dva měsíce asi nedá.
Ale stále nevím zda je ve výsledku to samé
trida::funkce() a this->funkce() voláno v té samé třídě.
vím, že nelze volat jen funkce(), to nejde
mně se to chová identicky
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
17. zář 2015 16:26 #123451
od Cony
Odpověď od Cony v tématu URL odkaz
trida::funkce() - voláte staticky metodu funkce třídy trida (kromě toho jeste muzete volat self::funkce() nebo static::funkce(), každé volání má svůj význam).
$this->funkce() - voláte metodu objektu $this (tedy sama sebe).
I když v určitých případech PHP povoluje oba způsoby (ale pokud se nepletu generuje Notice nebo Warning), rozdíly tu jsou.
Pokud pomocí :: zavoláte metodu, která není deklarovaná jako static, dostanete tuším PHP Notice nebo Warning, funkce se ale zavolá (očekával bych ale že do budoucna bude PHP v tomto přésnější a nedovolí Vám to). Pokud ale ve funkci je použito $this, skončíte na Fatal Error.
Dědičnost zřejmě neřešíte, ale spíš by jste měl asi místo trida::funkce volat self::funkce.
$this->funkce() - voláte metodu objektu $this (tedy sama sebe).
I když v určitých případech PHP povoluje oba způsoby (ale pokud se nepletu generuje Notice nebo Warning), rozdíly tu jsou.
Pokud pomocí :: zavoláte metodu, která není deklarovaná jako static, dostanete tuším PHP Notice nebo Warning, funkce se ale zavolá (očekával bych ale že do budoucna bude PHP v tomto přésnější a nedovolí Vám to). Pokud ale ve funkci je použito $this, skončíte na Fatal Error.
Dědičnost zřejmě neřešíte, ale spíš by jste měl asi místo trida::funkce volat self::funkce.
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
17. zář 2015 18:00 #123452
od Ernst
Odpověď od Ernst v tématu URL odkaz
díky za vysvětlení. V tomto případě dědičnost neřeším, ale snad ji chápu.
v tomto případě je funkce definována jako static (public static function), právě proto že ji volám i z jiné třídy.
Ostatní funkce nechávám public a volám je jako $this->
v tomto případě je funkce definována jako static (public static function), právě proto že ji volám i z jiné třídy.
Ostatní funkce nechávám public a volám je jako $this->
- Ernst
- Autor
- OFFLINE
- Joomla Expert
-
Méně
Více
- Příspěvky: 2380
17. zář 2015 18:12 #123453
od Ernst
Odpověď od Ernst v tématu URL odkaz
díky za vysvětlení. V tomto případě dědičnost neřeším, ale snad ji chápu.
v tomto případě je funkce definována jako static (public static function), právě proto že ji volám i z jiné třídy.
Ostatní funkce nechávám public a volám je jako $this->
A co je vlastně (logičtější) použít?
Při volání z různých tříd staticky a při volání jen z té samé třídy jako metodu objektu $this?
v tomto případě je funkce definována jako static (public static function), právě proto že ji volám i z jiné třídy.
Ostatní funkce nechávám public a volám je jako $this->
A co je vlastně (logičtější) použít?
Při volání z různých tříd staticky a při volání jen z té samé třídy jako metodu objektu $this?
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
17. zář 2015 21:17 #123454
od Cony
Odpověď od Cony v tématu URL odkaz
Ve statické metodě nemůžete používat vlastnosti objektu. Statické metody jsou spíše jen takové "povýšení" obyčejných funkcí, aby jste je měl pod "jednou střechou". Ve starších verzích PHP (5.3) bylo volání statických metod náročnější na prostředky, než volání běžných funkcí, PHP 5.4 by to již mělo mít opravené.
Vygenerováno za 0.064 sekund