Autor | Zpráva | ||
---|---|---|---|
RiZe Profil |
#1 · Zasláno: 20. 2. 2007, 17:58:08
Můžete mi někdo objasnit, jaký je rozdíl mezi voláním metod stylem $trida->metoda() a Trida::Metoda(), krom toho, že první příklad potřebuje mít inicializovanou instanci dané třídy? Co je lepší používat?
|
||
koudi Profil |
#2 · Zasláno: 20. 2. 2007, 18:05:06
A to je přesně ten rozdíl. V prvním způsobu musíš mít vytvořenou instanci dané třídy, to druhé je statické volání, kde to nepotřebuješ.
Co je lepší používat? Já bych to viděl asi takhle (ale netrvdim, že to je správně). Použivat první způsob (instance třídy) se vyplatí, když to použiješ vícekrát v tom skriptu a některý opreace budou záviset na aktuálních hodnotách proměnných té třídy. Zato statické volání se imho hodí, když daná třída funguje asi jako knihovna nějakých funkcí (třeba v javě Math. apod). Ale možná je to celé blbost... do OOP teprve pronikám. |
||
RiZe Profil |
#3 · Zasláno: 20. 2. 2007, 18:07:30
I o to mi šlo. Jak je to s proměnnými třídy, ale vzhledem k tomu, že se (asi) nezavolá konstruktor (a neinicializují se proměnné), tak to nevidím na použití k DB layeru, kam si ukládám počet SQL dotazů, předchozí dotaz atp. Napište, jestli o tom někdo něco víte.
|
||
koudi Profil |
#4 · Zasláno: 20. 2. 2007, 18:09:56
DB layeru, kam si ukládám počet SQL dotazů, předchozí dotaz atp
Tak na to se statické volání určitě nehodí...(řekl bych) |
||
sicario Profil |
#5 · Zasláno: 21. 2. 2007, 20:14:13
Pokud nechces zakladat instanci dane tridy, ale presto v ni uchovavat data, pouzij staticke promene...
class Trida { private static $vlastnost; function prirad($v){ Trida::$vlastnost = $v; } function vypis(){ echo Trida::$vlastnost; } } // a pouziti Trida::prirad('ahoj'); Trida::vypis(); ////////////////// Docela by me ale zajimalo, jestli je rychlejsi / mene narocne na pamet atd... pouzivani tohoto "statickeho" pristupu, nebo pouziti instanci. |
||
ronnie Profil |
#6 · Zasláno: 21. 2. 2007, 21:28:09
Rozdíl mezi statickými a klasickými metodami je v tom, že statické metody se vztahují k samotné třídě, kdežto klasické metody k aktuální instanci. Z toho plyne i jejich využití. Pokud potřebujete používat metodu globálně nezávisle na instancích, použijte statické metody. Pokud v metodě potřebujete používat atributy, které se vztahují k určité instanci, použijte klasické metody.
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0