Home | Clases | Bases de datos en PHP | Ejemplos de programación orientada a objetos

Ejemplos de programación orientada a objetos


Definir o instanciar una clase

Creamos un archivo de tipo PHP con el nombre index.php


//Crear o definir una clase
class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $email;

//Funciones o métodos
function setNombre($miNombre){

$this->nombre = $miNombre;

}

function getNombre(){

return $this->nombre;
}

}

//Instanciar o utilizar la clase
$mi_contacto = new Contacto;

//Accedo a las funciones o métodos mediante $nombre_del_objeto->nombre_del_metodo
$mi_contacto->setNombre("Jairo");
echo "El contacto se llama ".$mi_contacto->getNombre();

//O bien directamente accedo a los variables o atributos medianten $nombre_del_objeto->nombre_del_atributo
echo "<br>El contacto se llama $mi_contacto->nombre";


Constructores

Creamos un archivo de tipo PHP con el nombre index.php


//Crear o definir una clase
class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $email;

//Método constructor antiguo
/*function Contacto($miNombre,$misApellidos,$miEdad,$miEmail){

$this->nombre = $miNombre;
$this->apellidos = $misApellidos;
$this->edad = $miEdad;
$this->email = $miEmail;

}*/

function __construct($miNombre,$misApellidos,$miEdad,$miEmail){

$this->nombre = $miNombre;
$this->apellidos = $misApellidos;
$this->edad = $miEdad;
$this->email = $miEmail;

}

}

//Instanciar la clase
$mi_contacto = new Contacto("Jairo","García Rincón",43,"jairo@garciarincon.com");

echo "El contacto se llama $mi_contacto->nombre $mi_contacto->apellidos";



Instanciar una clase externa

Creamos un archivo de tipo PHP con el nombre index.php


require("Contacto.php");
//O include para que de warning y continue en vez de error
//O include_once / require_once para que solo lo cargue una vez y no redeclare variables por error

//Instanciar la clase
$mi_contacto = new Contacto("Jairo","García Rincón",43,null);

echo "El contacto se llama $mi_contacto->nombre $mi_contacto->apellidos";

//Asigno el email directamente
$mi_contacto->email = "jairo@garciarincon.com";

//O mediante un método
$mi_contacto->setEmail("jairo@garciarincon.com");

echo "<br>El email del contacto es $mi_contacto->email";


Y ahora creamos un archivo de tipo PHP Class con el nombre Contacto.php en la misma carpeta que index.php


class Contacto {

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $email;

function __construct($miNombre,$misApellidos,$miEdad,$miEmail){

$this->nombre = $miNombre;
$this->apellidos = $misApellidos;
$this->edad = $miEdad;
$this->email = $miEmail;

}

function setEmail($miEmail){

$this->email = $miEmail;

}
}



Uso de la estructura MVC (Modelo Vista Controlador)

Creamos un archivo de tipo PHP con el nombre index.php


//Incluyo los archivos necesarios
require("./controller/ContactoController.php");
require("./model/Contacto.php");

//Instancio el controlador
$controller = new ContactoController;

//Ejecuto el método por defecto del controlador (podría hacer un construct)
$controller->index();


Creamos una carpeta llamada controller y dentro de ella un archivo de tipo PHP Class con el nombre ContactoController.php:


class ContactoController {

public function index(){

$contacto = new Contacto("Jairo", "García Rincón", 43, "");

$contacto->setEmail("jairo@garciarincon.com");

require("view/index.php");

}

}


Creamos una carpeta llamada model y dentro de ella un archivo de tipo PHP Class con el nombre Contacto.php:


class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $telefono;
var $email;

//Método constructor
function __construct($nombre,$apellidos,$edad,$email){

$this->nombre = $nombre;
$this->apellidos = $apellidos;
$this->edad = $edad;
$this->email = $email;

}

//setEmail
public function setEmail($email){
$this->email = $email;
}

//getEmail
public function getEmail(){
return $this->email;
}

}


Creamos una carpeta llamada view y dentro de ella un archivo de tipo PHP Web Page con el nombre index.php:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h3><?php echo "El contacto es $contacto->nombre $contacto->apellidos" ?></h3>
<h4><?php echo "El email del contacto es $contacto->email" ?> </h4>
</body>
</html>



Modelo MVC con autoload para el cargado "a demanda" de archivos

Creamos un archivo de tipo PHP con el nombre index.php:


//Defino la función que autocargará la clase cuando se instancie
spl_autoload_register('autoload');

function autoload($clase,$dir=null) {

//Directorio raíz de mi proyecto (ruta absoluta)
if (is_null($dir)){
$dir = realpath(dirname(__FILE__));
}

//Escaneo en busca de la clase de forma recursiva
foreach (scandir($dir) as $file) {
//Si es un directorio (y no es de sistema), busco la clase dentro de él
if (is_dir($dir."/".$file) AND substr($file, 0, 1 ) !== '.'){
autoload($clase, $dir."/".$file);
}
//Si es archivo y el nombre coincide con la clase
else if (is_file($dir."/".$file) AND $file == $clase.".php"){
//echo $clase."
"; //para ver cuales ha cargado
require($dir."/".$file);
}

}

}

//Instancio el controlador
$controller = new ContactoController;

//Ejecuto el método por defecto del controlador (podría hacer un construct)
$controller->index();


Creamos una carpeta llamada controller y dentro de ella un archivo de tipo PHP Class con el nombre ContactoController.php:


class ContactoController {

public function index(){

$contacto = new Contacto("Jairo", "García Rincón", 43, "");

$contacto->setEmail("jairo@garciarincon.com");

require("view/index.php");

}

}


Creamos una carpeta llamada model y dentro de ella un archivo de tipo PHP Class con el nombre Contacto.php:


class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $telefono;
var $email;

//Método constructor
function __construct($nombre,$apellidos,$edad,$email){

$this->nombre = $nombre;
$this->apellidos = $apellidos;
$this->edad = $edad;
$this->email = $email;

}

//setEmail
public function setEmail($email){
$this->email = $email;
}

//getEmail
public function getEmail(){
return $this->email;
}

}


Creamos una carpeta llamada view y dentro de ella un archivo de tipo PHP Web Page con el nombre index.php:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h3><?php echo "El contacto es $contacto->nombre $contacto->apellidos" ?></h3>
<h4><?php echo "El email del contacto es $contacto->email" ?> </h4>
</body>
</html>



Uso de Namespaces

Creamos un archivo de tipo PHP con el nombre index.php:


namespace App;

use App\Controller\ContactoController;

//Defino la función que autocargará la clase cuando se instancie (incluyendo el namespace)
spl_autoload_register('App\autoload');

function autoload($clase,$dir=null) {

//Directorio raíz de mi proyecto (ruta absoluta)
if (is_null($dir)){
$dir = realpath(dirname(__FILE__));
}

//Escaneo en busca de la clase de forma recursiva
foreach (scandir($dir) as $file) {
//Si es un directorio (y no es de sistema), busco la clase dentro de él
if (is_dir($dir."/".$file) AND substr($file, 0, 1 ) !== '.'){
autoload($clase, $dir."/".$file);
}
//Si es archivo y el nombre coincide con la clase (quitando el namespace)
else if (is_file($dir."/".$file) AND $file == substr(strrchr($clase, "\\"), 1).".php"){
require($dir."/".$file);
//echo $clase."
"; //para ver cuales ha cargado
}
}

}

//Instancio el controlador
$controller = new ContactoController;

//Ejecuto el método por defecto del controlador (podría hacer un construct)
$controller->index();


Creamos una carpeta llamada controller y dentro de ella un archivo de tipo PHP Class con el nombre ContactoController.php:


namespace App\Controller;

use App\Model\Contacto;

class ContactoController {

public function index(){

$contacto = new Contacto("Jairo", "García Rincón", 43, "");

$contacto->setEmail("jairo@garciarincon.com");

require("view/index.php");

}

}


Creamos una carpeta llamada model y dentro de ella un archivo de tipo PHP Class con el nombre Contacto.php:


namespace App\Model;

class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $telefono;
var $email;

//Método constructor
function __construct($nombre,$apellidos,$edad,$email){

$this->nombre = $nombre;
$this->apellidos = $apellidos;
$this->edad = $edad;
$this->email = $email;

}

//setEmail
public function setEmail($email){
$this->email = $email;
}

//getEmail
public function getEmail(){
return $this->email;
}

}


Creamos una carpeta llamada view y dentro de ella un archivo de tipo PHP Web Page con el nombre index.php:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h3><?php echo "El contacto es $contacto->nombre $contacto->apellidos" ?></h3>
<h4><?php echo "El email del contacto es $contacto->email" ?> </h4>
</body>
</html>



Gestión de las vistas mediante Helpers

Creamos un archivo de tipo PHP con el nombre index.php:


namespace App;

use App\Controller\ContactoController;

//Defino la función que autocargará la clase cuando se instancie (incluyendo el namespace)
spl_autoload_register('App\autoload');

function autoload($clase,$dir=null) {

//Directorio raíz de mi proyecto (ruta absoluta)
if (is_null($dir)){
$dir = realpath(dirname(__FILE__));
}

//Escaneo en busca de la clase de forma recursiva
foreach (scandir($dir) as $file) {
//Si es un directorio (y no es de sistema), busco la clase dentro de él
if (is_dir($dir."/".$file) AND substr($file, 0, 1 ) !== '.'){
autoload($clase, $dir."/".$file);
}
//Si es archivo y el nombre coincide con la clase (quitando el namespace)
else if (is_file($dir."/".$file) AND $file == substr(strrchr($clase, "\\"), 1).".php"){
require($dir."/".$file);
}
}

}

//Instancio el controlador
$controller = new ContactoController;

//Ejecuto el método por defecto del controlador (podría hacer un construct)
$controller->index();


Creamos una carpeta llamada controller y dentro de ella un archivo de tipo PHP Class con el nombre ContactoController.php:


namespace App\Controller;

use App\Model\Contacto;
use App\Helper\ViewHelper;

class ContactoController {

public function index(){

$contacto = new Contacto("Jairo", "García Rincón", 43, "");

$contacto->setEmail("jairo@garciarincon.com");

//Instancio el gestor de vistas
$view = new ViewHelper();

//Le paso los datos
$view->vista('index',$contacto);

}

}


Creamos una carpeta llamada model y dentro de ella un archivo de tipo PHP Class con el nombre Contacto.php:


namespace App\Model;

class Contacto{

//Variables o atributos
var $nombre;
var $apellidos;
var $edad;
var $telefono;
var $email;

//Método constructor
function __construct($nombre,$apellidos,$edad,$email){

$this->nombre = $nombre;
$this->apellidos = $apellidos;
$this->edad = $edad;
$this->email = $email;

}

//setEmail
public function setEmail($email){
$this->email = $email;
}

//getEmail
public function getEmail(){
return $this->email;
}

}


Creamos una carpeta llamada helper y dentro de ella un archivo de tipo PHP Class con el nombre ViewHelper.php:


namespace App\Helper;

class ViewHelper {

public function vista($vista,$datos){

$archivo = "view/$vista.php";
require($archivo);

}

}


Creamos una carpeta llamada view y dentro de ella un archivo de tipo PHP Web Page con el nombre index.php:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h3><?php echo "El contacto es $datos->nombre $datos->apellidos" ?></h3>
<h4><?php echo "El email del contacto es $datos->email" ?> </h4>
</body>
</html>

Fecha de publicación: 26/12/2017
Asignaturas: desarrollo web en entorno servidor
Temas: php mysql objetos
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos