ugrás a tartalomhoz

Singleton szülő - létezik ilyen PHP-ben?

Kérésre törölve 11. · 2011. Május. 18. (Sze), 11.57
Nem értem:

    class Sing {
        static private $instance;

        final private function __construct(){
            echo "<p>Sing konstruktor</p>";
        }

        public static function getInstance(){
            $class=__CLASS__;
            if(!isset(static::$instance)){ static::$instance=new $class; }
            return static::$instance;
        }
    }

    class SingSing extends Sing {    }
Erre kapok egy Cannot access private property SingSing::$instance ha a SingSing::getInstance() metódust elindítom.
Ha meg a static:: helyett self:: van, akkor a Sing egyetlen példányát kapom vissza a SingSing::getInstance hívásakor is. Törődjek bele, hogy ez így működik és singletont nem lehet ebben a formában szülőként használni, vagy valamit elnéztem?
 
1

miert nem teszed az $instance

Tyrael · 2011. Május. 18. (Sze), 13.36
miert nem teszed az $instance -ot protectedde?
akkor nem csak az ososztaly ferne hozza, hanem az osszes belole szarmaztatott osztaly is.

persze ez meg mindig nem oldana meg azt, hogy az osszes szarmaztatott osztalyod kozos instance valtozon kellene osztodkodjon.
Fabien Potencier igy oldotta meg ezt a problemat:
http://www.slideshare.net/fabpot/php-53-in-practice/27
csinalt egy registry-t, amiben tarolja az osszes szarmaztatott osztalyhoz on-demand a peldanyokat.
ja, az akar meg iden erkezo 5.4-es verzioban mar traits-ekkel is megoldhato lesz:
http://simas.posterous.com/new-to-php-54-traits

Tyrael
2

Köszi, ezt elfelejtettem itt

Kérésre törölve 11. · 2011. Május. 18. (Sze), 14.55
Köszi, ezt elfelejtettem itt javítani (iszonyat, mennyire figyelmetlen vagyok, már megint :( ), de a saját példányomban már megtettem.
Valamivel jobb lett a helyzet: így a Sing-ből lesz két példányom az egy Sing és egy SingSing helyett. :)
----------------------------
Ennyire álomkóros vagyok vagy az első két sort követő szöveg utólag került a hozzászólásodba? :)
3

utolag kerult

Tyrael · 2011. Május. 18. (Sze), 19.33
utolag kerult bele.
pontosabban meg a te hozzaszolasod elott elkezdtem modositani/kiegesziteni, de csak utana kuldtem be.

Tyrael
4

Akkor jó. :) Köszi szépen!

Kérésre törölve 11. · 2011. Május. 18. (Sze), 19.58
Akkor jó. :)
Köszi szépen! Sajnos észrevettem, hogy Java-ban sem megy az, amire emlékeztem, ergo felesleges a PHP-től elvárni.
Kezdek rájönni, jobb ha feladom az egészet. Túl sokat hagytam ki, nem tudok visszarázódni. :(