pxswodniw Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) Hei jeg holder på med et prosjekt hvor jeg bruker "Method Chaining"* $obj->method1()->method2()->method3(); Og jeg har planer om å gjøre flere av klasser statiske men jeg lurer på om det er mulig med "method chaining" i statiske klasser. I instansierte klasser har man jo "$this" men det funker ikke i statiske klasser. * // Eksempel på method chaining class Test { var $text; function a() { $this->text = "hello world"; return $this; } function b() { echo $this->text; } } $obj = new Test(); $obj->a()->b(); // returnerer "hello world!" Endret 9. mai 2008 av pxswodniw Lenke til kommentar
Lokaltog Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 Hahaha, jeg må bare poste en test jeg gjorde: class staticClass { public static function f1() { echo 'f1! '; return self; } public static function f2() { echo 'f2! '; return self; } } staticClass::f1()::f2(); Output: "Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in test.php on line 16" ... en unexpected hvaforno? Lenke til kommentar
Gjest Slettet+1298342134 Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 en unexpected ::, de fant ut at de ville bruke et fint navn på den operatoren tror det var hebraisk og betyr "double colon"/"twice colon". Lenke til kommentar
Gjest Slettet+142 Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 <?php class staticClass { public static function f1() { echo 'f1! '; return new self; } public static function f2() { echo 'f2! '; return new self; } } staticClass::f1()->f2(); ?> Kom på en post om statiske klasser Det funket i alle fall her.. Lenke til kommentar
shaker Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) Ja det funker men er ikke poenget med en statisk klasse at man ikke lager en instans? Edit: Hvis man ikke tillater at det lages en instans så funker det også ganske dårlig class StaticClass { private static $var; public function __construct() { die("This class is static!"); } public static function setVar($value) { self::$var = $value; return new self; } public static function toCaps() { self::$var = strtoupper(self::$var); return new self; } public static function printVar() { echo self::$var; } } StaticClass::setVar("hei paa deg")->toCaps()->printVar(); Endret 9. mai 2008 av shaker Lenke til kommentar
itsmebth Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 Singleton vil vel være den beste løsningen. <?php class HelloWorldSingleton{ private static $_inst; private function __construct(){ } public static function get(){ if(self::$_inst == null) self::$_inst = new self; return self::$_inst; } public function hello(){ echo 'Hello'; return $this; } public function commaAndSpace(){ echo ', '; return $this; } public function world(){ echo 'World'; return $this; } public function exclamation(){ echo '!'; return $this; } } HelloWorldSingleton::get()->hello()->commaAndSpace()->world()->exclamation(); ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå