Mikor Static és mikor nem?
PHP-ről van szó!
Mikor létrehozok egy metódust,akkor mi alapján döntsem el,hogy most ez static legyen,vagy simán mehet a public function name() etc... például usereket tárolók adatbázisba,és getUserName,getUserID,getAllUserID,etc,static legyen vagy ne? és ha igen,akkor miért?
A classban lévő static az nagyjából egy procedurális értelemben vett globális függvény, ami egy (OOP) névtérben van.
Szóval ha nem kötődik az objektumhoz (nem objektumszintű művelet), amit akarsz csinálni, akkor lehet static.
Na várjál. Képzeljük el ezt egy kicsit másként.
Van a mi világunk, amiben élünk. És van a programunk üres világa. A két világ közt kapcsolatot kell teremteni. Mivel egy program a mi világunkban található adatokból dolgozik, a mi világunkban lévő dolgokból készítünk egy modellt. Szóval kell egy olyan modellező eszköz, ami a két világot összeköti. Ez az osztály.
A mi világunkban lévő tárgyainknak vannak tulajdonságai és viselkedései (tudnak bizonyos dolgokat csinálni). Ebből kifolyólag a programunk világában lévő modellnek is lesznek tulajdonságai és viselkedései. Például, ha csinálunk egy lámpát, akkor annak lehetnek olyan tulajdonságai, mint pl. teljesítmény, hány volt feszültség neki stb., illetve lesz olyan viselkedése, hogy tud világítani.
Az osztályainkból akárhány példányt tudunk csinálni (kivéve, ha valamilyen trükkel megtiltjuk). Ha a sok példány közül az egyik lámpát felkapcsolom, akkor csak az az egy lámpa fog világítani, a többi lámpára ez nem vonatkozik. Az ilyen példányonként eltérő tagokat hívjuk példányszintű tagnak.
Osztályszintű (azaz statikus) tagoknak nevezzük azokat a tagokat, amelyek nem egy konkrét példányra vonatkoznak, hanem általánosságban beszélnek. Lámpa esetében ilyen tulajdonság lehet az, hogy hány lámpa van a világon. Ez egyik konkrét lámpának sem lesz a tulajdonsága, ezért lesz osztályszintű.
Ugyanakkor amikor általánosságban beszélek (=statikus tagban vagyok), nincs konkrét példányom (tehát statikus tagban nem használhatok this-t). Fordítva persze lehet, hogy példányszintű környezetből hívok statikus tagot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!