PHP: evitare i design pattern incompleti

PHP: evitare i design pattern incompleti

Un'implementazione incompleta di un design pattern PHP porta spesso a problemi nello sviluppo delle applicazioni. Un tipico esempio è quello di una parziale implementazione del Singleton Pattern. Chiamare un metodo di una classe come Class::method() è consigliato solo quando il metodo è dichiarato come static. Nel caso di un'implementazione incompleta di questo pattern per molti è l'unico modo di usare il metodo di quella classe. Vediamo insieme i dettagli.

L'implementazione incompleta del Singleton Pattern è la seguente:


class Test
{

	private function __construct() {}
	
	public function method()
	{
	
		//...
	
	}

}

Questa implementazione è incompleta perchè questo pattern prevede anche la creazione di un metodo pubblico statico con cui restituire un'instanza della classe (statica anch'essa):


class Test
{

	private function __construct() {}
	
	public static $instance = null;
	
	public static function getInstance() 
	{
    	if(!isset(self::$instance)) {
    	
      		self::$instance = new Test();
    	}
    	
    	return self::$instance;
  	}

	public function method()
	{
	
		//...
	
	}

}

Ecco quindi il modo corretto di invocare il metodo Test::method():


$test = Test::getInstance();
$test->method();

Notiamo come il metodo Test::getInstance() venga dichiarato come static in modo da consentire questa volta la chiamata corretta tramite il risolutore di scope.

Torna su