30 de abril de 2015

Metodos __get() y __set() PHP

Este es un ejemplo de los métodos mágicos __set() y __get() en una clase con sus respectivas validaciones utilizando el método property_exists
<?php
class Objeto {  
   private $id;  
   private $nombre;  
   private $email;  

   function __construct($id, $nombre, $email) {  
     $this->id = $id;  
     $this->nombre = $nombre;  
     $this->email = $email;  
   }  

   function __clone() {  
     $this->id = ++$this->id;  
   } 
   
   // Esta función comprueba si la propiedad especificada en $var existe en la clase especificada por __CLASS__   

   public function __set($var, $valor) {  
     if (property_exists(__CLASS__, $var)) {  
       $this->$var = $valor;  
     } else {  
       echo "No existe el atributo $var.";  
     }  
   }  

   public function __get($var) {  
     if (property_exists(__CLASS__, $var)) {  
       return $this->$var;  
     }  
     return NULL;  
   }  
 }  

 $obj = new Objeto(1, "objeto1", "prueba1@ejemplo.com");  
 $p = clone $obj;  
 echo $p->id;//2  
 $p->nombre = "nombre cambiado";  
 echo $p->nombre;//nombre cambiado 
?>

Related Posts:

  • Patrón Dependency InjectionRobert C. Martin afirma en el Principio de Inyección de Dependencias: A. Las clases de alto nivel no deberían depender de las clases de bajo nivel. Ambas deberían depender de las abstracciones. B. Las abstracciones no deber… Read More
  • Login PHP con crypt() y BlowfishEn esta entrada se utilizara la función crypt() y Blowfish, otra opción muy aceptable es utilizar password_hash(), dejo este link con una explicación del tema en Login PHP con password_hash(), pasando a la función crypt() co… Read More
  • ob_start PHPAl programar en PHP primero se realiza un procesamiento de la página que se muestra en el ordenador del usuario, luego se envía la petición al servidor y por último se envía al ordenador del usuario el resultado de procesar e… Read More
  • Login PHP con password_hash()Primero una aclaración…como no guardar contraseñas No guardar contraseñas en texto plano, esto debería ser obvio ya que si alguien tiene acceso a tu base de datos y a las contraseñas de tus usuarios, si un ataque externo…o in… Read More
  • Session Fixation PHPSession fixation Session fixation (fijación de sesión) es un método de Session hijacking (robo de sesión) un poco especial, ya que, si normalmente en el robo de sesión se intenta conseguir el identificador de sesión de un us… Read More