Constructores php

Los constructores son funciones o métodos, la mayoría de las veces publicas, que se invocan cada vez que se crea un nuevo objeto, lo que es genial cuando se necesita alguna inicialización

antes de que el objeto pueda se usado en el desarrollo de un programa.

Como funcionan ?

En algunos artículos que estudie, explicaban que el constructor de una clase debía tener el mismo nombre de la clase, osea esto :

class ejemplo{

 function ejemplo(){

    print "Dentro del constructor de ejemplo";

  }

}

pero hace poco leí que esto dejaría de ser tomado como un constructor y solo seria reconocido como un método mas de la función, específicamente en PHP 5.3.3.

Ahora para comenzar a acostumbrarse, solamente debemos dejar de lado la forma tradicional y reemplazarlo por __construct();

Como hacerlo ?


class ejemplo{

 function __construct(){

  print "dentro del constructor de ejemplo";

 }

}

Una de las muchas funciones que se le puede dar a un constructor dentro un código puede ser, que añada el titulo de un sitio cuando sea cree el objeto que utiliza la clase, de esta forma ( una entre tantas )


<?php
  class pagina_web{
	function __construct($titulo){
		$this->set_titulo($titulo);
	}
	private function set_titulo($titulo="default title"){
		$this->titulo=$titulo;
	}
	private function get_title(){
		return $this->titulo;
	}
	protected function head(){
		print "<html><head><title>";
		print $this->get_title();;
		print "</title></head>";
	}
	protected function body(){
		print "<body>";
		print "Aqui esta el cuerpo del sitio";
	}
	protected function pie(){
		print "</body></html>";
	}
	function get_site(){
		$this->head();
		$this->body();
		$this->pie();
	}
  }
  $a=new pagina_web("Mi primer sitio web");
  print $a->get_site();
  ?>

Si encuentras que algo de ahí esta mal hecho o mal explicado, me gustaría saberlo, soy un principiante apasionado y que le gusta aprender 🙂

Saludos 😀

Mi primer codigo PHP OO


<span style="font-family: 'Courier New',Courier,monospace;"><?php
     class Nombre{
         protected $nombre;
         function __construct($nombre){
             $this->nombre=$nombre;
         }
         public function set_nombre($nombre){
             $this->nombre=$nombre;
         }
         public function get_nombre(){
             return $this->nombre;
         }
         public function nombre_defecto(){
             return "Luis Miguel<br>";
         }

     };

     class apellido extends nombre{
         protected $apellido;
         function __construct($nombre,$apellido){
             $this->apellido=$apellido;
             parent::__construct($nombre); // paret hace referencia a la clase padre, en este caso a nombre !

         }
         public function get_apellido(){
             return $this->apellido;
         }
     }
     $objeto=new apellido("Elver","Galarga");
     echo $objeto->get_nombre(). " ";
     echo $objeto->get_apellido();

   ?></span>