paginas web barcelona

Centro Web Barcelona

Soluciones en Internet

PHP Orientado a Objetos I



programacion phpLos Framweroks en PHP mas usados en la actualidad, por ejemplo Laravel o Symfony, desarrollan el código en programación orientada a objetos PHP.

Este tipo de programación usada también en otros lenguajes como Java se basa en el uso de Clases y Objetos.

Las clases sirven para agrupar información y las acciones que realizaremos con esta información.

Si, por ejemplo, tenemos los datos de una persona esenciales: nombre, apellido y fecha de nacimiento y queremos realizar las acciones mostrar el nombre completo y la edad de la persona.

En programación estructurada escribiríamos el siguiente código:

<?php

$firstName = 'John';

$lastName = 'Doe';

$dateOfBirth = '1980-12-01';

function fullName($firstName, $lastName)

{

return "{$firstName} {$lastName}";

}

function age($dateOfBirth)

{

// Calculate age...

return $age;

}

 

En este tipo de programación nos encontramos con distintos problemas a resolver, es posible que el programador requiera un cambio en algunos datos, necesitamos recordar los argumentos que forman la función, para crear una nueva persona deberemos crear otra vez las nuevas variables $nombre2, etc.

Una solución a estos problemas es trabajar con arrays, pero esto no previene de errores tipográficos y no nos acepta valores por defecto. Y llamar a las funciones se hace realmente tedioso.

<?php

$person = array(

'firstName' => 'John',

'latsName' => 'Doe',

'dateOfBirth' => '1980-12-01',

);
 

Para resolver todos estos problemas se crean las clases y los objetos.

Debemos crear un nombre genérico para la clase. La clase representa un conjunto. En nuestro ejemplo el nombre de la clase posría llamarse Person (una clase es como un molde).

<?php

class Person{

}

 

Las propiedades son las variables que voy a declarar dentro de la clase:

 

<?php

class Person

{

public $firstName = 'John';

public $lastName = 'Doe';

private $dateOfBirth = '1980-12-01;

}

 

Las propiedades pueden ser ‘public’ (son accesibles fuera de la clase )o ‘private’ (no se pueden leer ni reescribir fuera de la clase y llegamos a un nuevo concepto: el encapsulamiento).

Las acciones que van a actuar con dichos datos (propiedades) se van a convertir en métodos de clase en forma de funciones.

 

<?php

class Person

{

public $firstName = 'John';

public $lastName = 'Doe';

private $dateOfBirth = '1980-12-01;

public function fullName(){

return "{$this->firstName} {$this->lastName}";

}

public function age()

{

// Calculate age using $this->dateOfBirth...

return $age;

}

}
 

La diferencia con la programación estructurada es la utilización de las propiedades dentro de la clase, que lo hago con el $this->

Antes trabajábamos con una variable usando el signo $ y ahora con $this→

El objeto es la representación concreta de una clase. En una clase podemos declarar uno o varios objetos, por ejemplo:

 

<?php

$john = new Person("John", "Doe", "1980-12-01");

 

Usamos el operador new y el nombre de la clase y luego los argumentos del constructor.

 

Como no hemos creado un constructor previamente el código anterior no va a funcionar. El constructor nos permite inicializar el objeto. Siguiendo el ejemplo:

<?php

class Person

{

public $firstName = 'John';

public $lastName = 'Doe';

private $dateOfBirth = '1980-12-01;

public function __construct($fisrtName, $lastName, $dateOfBirth)

{

$this->fisrtName = $firstName;

$this->lastName = $lastName;

$this->dateOfBirth = $dateOfBirth;

}

public function fullName()

{

return "{$this->firstName} {$this->lastName}";

}

public function age()

{

// Calculate age using $this->dateOfBirth...

return $age;

}

}

 

Los constructores en php también pueden ser públicos o privados. Sond efinidos con el nombre __construct.

Ahora podemos instanciar la nueva persona:

 

<?php

$john = new Person("John", "Doe", "1980-12-01");

Ahora ya podemos usar dichas propiedades en el resto de los métodos:

 

<?php

class Person

{

// [El resto del codigo iria aqui]

public function fullName()

{

return "{$this->firstName} {$this->lastName}";

}

}

 

Hemos creado el método fullName() para que nos devuelva el nombre y apellido.

Podemos modificar propiedades de la clase también si ésta es pública:

 

<?php

$duilio = new Person("John", "Doe", "1980-12-01");

$duilio->firstName = 'Duilio';

 

Si la propiedad es privada deberemos acceder mediante la declaración de métodos llamados getters o setters.

 

<?php

class Person

{

// [El resto del codigo iria aqui]

public function getDateOfBirth()

{

return $this->dateOfBirth;

}

public function setDateOfBirth($date)

{

$this->dateOfBirth = $date;

}

}

 

Con getDateOfBirth obtendremos la fecha de nacimiento, con setDateOfBirth modificamos la fecha de nacimiento de la persona.

 

Fuente:   https://styde.net/php-y-programacion-orientada-a-objetos/