Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2016, 21:41
andres18281
 
Fecha de Ingreso: febrero-2013
Ubicación: Cali Colombia
Mensajes: 118
Antigüedad: 11 años, 2 meses
Puntos: 0
patron de diseño singleton con ajax

Cordial Saludo.

Estoy probando el patron de diseño singleton para cuando el servidor reciba una peticion de ajax, no cree instancias nuevas cada vez que hallan peticiones, sin embargo observo que en el ejercicio que estoy realizando siempre crea una nueva instancia.

Código HTML:
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<label>a</label>
 <input type="number" name="a">
 <label>a</label>
 <input type="number" name="b">
 <button id="suma">Sumar</button>
 <button id="ver">Ver</button>
</body>
</html>
<script   src="https://code.jquery.com/jquery-1.12.4.js"   integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU="   crossorigin="anonymous"></script>
<script type="text/javascript">
	$(function(){
		$("#suma").click(function(){
		 var a = $("input[name='a']").val();
		 var b = $("input[name='a']").val();
		 var json = {"uno":a,"dos":b};
		 $.post("server.php",{"suma":JSON.stringify(json)},function(data){
		 	var data = $.parseJSON(data);
		 	console.log(data);
		 	alert(data);
		 });
		});
		$("#ver").click(function(){
			$.post("server.php",{"retorna":"si"},function(data){
		  	 var data = $.parseJSON(data);
		  	 console.log(data);
		  	 alert(data);
			});
		});
	});
</script> 
Clase Modelo
Código PHP:
<?php

class modelo {
    public 
$a 0;
    public 
$b 0;
    public 
$c;
    public function 
__construct(){
    }
    public function 
suma($a,$b){
        
$this->$a+$b;
        return 
$this->c;
    }
    public function 
ver_resultado(){
        return 
$this->c;
    }
}
clase singleton
Código PHP:
<?php
include_once "modelo.php";
class 
Singleton{
    private static 
$instancia;
    private 
$opera;
    public function 
__construct(){
        
$this->opera = new modelo();
    }
    public static function 
singleton(){
        if (!isset(
self::$instancia)) {
            
$miclase __CLASS__;
            
self::$instancia = new $miclase;
            
//echo "creado";
        
}else{
            
//echo "ya creado";
        
}
        return 
self::$instancia;
    }
    public function 
suma($a,$b){
        
$data $this->opera->suma($a,$b);
        return 
$data;
    }
    public function 
ver_resultado(){
        
$data $this->opera->ver_resultado();
        return 
$data;
    }
}
Donde recibe las peticiones ajax sin embargo siempre crea una nueva instancia
Código PHP:
<?php
include_once "singleton.php";
$modelo Singleton::singleton();
if(isset(
$_POST['suma'])){
  
$data json_decode($_POST['suma'],true);
  
$suma $modelo->suma($data['uno'],$data['dos']);
  echo 
json_encode($suma);
}

if(isset(
$_POST['retorna'])){
  
$respon $modelo->ver_resultado();
  echo 
json_encode($respon);
}