Posts Tagged ‘oop’

PHP: magic method __set

PHP nos ofrece la facilidad de usar algunos métodos mágicos en nuestras Classes que pueden servirnos de muchísima ayuda y que muchos dejan pasar por alto estas herramientas, muchas veces muy eficientes y útiles.  Hoy les traigo algunos ejemplos del uso del método mágico “__set”.

El método __set es invocado cuando intentamos asignarle valor a una propiedad existente o no de un objeto.  Veamos este primer ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
< ?php
class MyClass{
  private $_var1;
  public function __construct($var = null){
     $this->_var1 = $var;
  }
  public function printVar($varname){
     print $this->$varname;
  }
  public function __set($var, $value){
    $this->$var = $value;
  }
}
?>
/***************************************************/
//Ejemplo de uso:
$MyObject = new MyClass;
$MyObject->myvar = 5;
$MyObject->printVar('myvar'); // Salida sera: 5

En el ejemplo anterior, la propiedad MyClass::myvar no existe, pero es creada en ese instante que se le asigna el valor “5″.

Otro buen ejemplo puede ser este que encontré en TuxRadar.com:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 < ?php
    //...[snip - add your MySQL connection code here]...
 
    class mytable {
        public $Name;
 
        public function __construct($Name) {
            $this->Name = $Name;
        }
 
        public function __set($var, $val) {
            mysql_query("UPDATE {$this->Name} SET $var = '$val';");
        }
 
        // public $AdminEmail = 'foo@bar.com';
    }
 
    $systemvars = new mytable("systemvars");
    $systemvars->AdminEmail = 'telrev@somesite.net';
?>

Constructores y Destructores en PHP

Aqui les dejo unos ejemplos de como usar un constructor y un destructor en PHP.  Para los que no lo sabian, un constructor es un método que se ejecuta al instanciar un objeto, sin necesidad de invocarlo, mientras que un destructor, por el contrario, es un método que se ejecuta cuando se destruye el objeto, ya sea porque se acabó el script o porque hayamos eliminado todas las referecias al objeto.

Ejemplo de Constructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< ?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}
 
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}
 
$obj = new BaseClass();
$obj = new SubClass();
?>

Ejemplo de Destructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< ?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}
 
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}
 
$obj = new BaseClass();
$obj = new SubClass();
?>

Auto carga de objetos en PHP: function __autoload

Esta es una manera de crear objetos que puede ayudarnos cuando necesitamos cargar, por ejemplo, muchas clases que se encuentran en muchos ficheros diferentes:

< ?php
function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

La idea es que todos los ficheros que contienen una clase determinada lleve exactamente el mismo nombre que la clase que contiene.

Frases

Iterar es humano, ‘recursivar’ es divino. — LPeter Deutsch

Get Adobe Flash playerPlugin by wpburn.com wordpress themes