Gå til innhold

"Method Chaining" Statiske klasser


Anbefalte innlegg

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 av pxswodniw
Lenke til kommentar
Videoannonse
Annonse

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? :lol:

Lenke til kommentar
Gjest Slettet+1298342134

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

<?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

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 :p

 

 

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 av shaker
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...