<email ⁄>
<windows live messenger ⁄>
<myCurriculum type="pdf" ⁄>
<?php /** * Class SingletonBasicMath * Esta class serve como exemplo para a implementação * de PHP Chaining e o uso de Singleton */ class SingletonBasicMath { private static $_instance; private $_value = 0; /** * Método Construtor * Vai impossibilitar que sejam criadas várias instâncias do objecto */ public function __construct() { //permite só que seja criada uma única instância de um objecto (Singleton) if (!self::$_instance) { self::$_instance = $this; } else { echo "<br> --- Só é permitida uma instância SingletonBasicMath --- <br>"; } } public function Sum($value) { $this->_value += $value; return $this; } public function Subtract($value) { $this->_value -= $value; return $this; } public function Multiply($value) { $this->_value *= $value; return $this; } public function Divide($value) { $this->_value /= $value; return $this; } public function Reset() { $this->_value = 0; return $this; } public function Result() {return $this->_value;} public function toString() {return "<br>Result = {$this->Result()}<br>";} /** * Eliminar referências do objecto */ public function __destruct() { $this->_value = null; self::$_instance = null; } } ?>
<?php include_once 'class.SingletonBasicMath.php'; $math= new SingletonBasicMath(); $result=$math->Sum(1)->Subtract(2)->Multiply(1)->Divide(1)->Result(); echo $result; //vai imprimir -1 echo $math->toString(); //vai imprimir Result = -1 //vai imprimir Result = 108 echo $math->Reset()->Sum(4)->Sum(8)->Sum(15)->Sum(16)->Sum(23)->Sum(42)->toString(); $math->Subtract(42)->Subtract(23)->Subtract(16)->Subtract(15)->Subtract(8)->Subtract(4); echo $math->Result(); //vai imprimir: 0 // ao executarmos esta linha de código irá ser visualizada a seguinte mensagem: // --- Só é permitida uma instância SingletonBasicMath --- $math2= new SingletonBasicMath(); $math->Reset(); //"reiniciar" a calculadora $math->Sum(5); echo $math->toString(); //vai imprimir: Result = 5 //já não precisamos do objecto $math->__destruct(); ?>