# Programación en PHP/Intermedio/OOP
## PHP Orientado A Objeto

Cuando se trabaja en php orientado a objeto hay que tener en cuenta que se va a trabajar en la creación de un objeto o mejor conocido en php como clases, donde le vamos a dar a este propiedades y métodos que describan al objeto y las acciones que realiza este. Al programar orientado a objeto hay que tener en cuenta que se tiene que pensar todo de forma abstracta hay que abstraer todo lo posible de este objeto para lograr crear un buen objeto.

## Creación de una Clase u objeto

Para crear una clase u objeto utilizando php se hace de la siguiente forma :
En el ejemplo anterior solo se puede ver la como es la sintaxis para iniciar la creación de un objeto , como se pueden dar cuenta se utiliza la palabra reservada class seguida del nombre de la clase y se abre una llave , de forma de que todo lo que esta dentro de esta llave pertenece a todo este objeto , dentro de estas llaves que abren y cierran van todo lo que es propiedades y métodos del objeto.

## Propiedades de una clase

Las propiedades de las clases son los atributos del objeto como por ejemplo : el tamaño de una persona , el peso de una mesa. En php hay 3 niveles de acceso tanto para las propiedades como para los métodos los cuales son:
Public: Cuando le damos este nivel de acceso a un atributo , este puede ser accedido desde cualquier parte, asi sea dentro de su misma clase como desde otra.
Private: Cuando se le da el nivel de acceso private estamos quitandole la libertad de acceso a las demas que intenten acceder solo puede ser accedida desde su propia clase donde este fue definido.
Protected: Cuando le damos el nivel de acceso protegido sigue restringiendo la libertad de acceso a los demas que no sean de la clase donde se esta declarando o de sus subclases.
ahora veamos un ejemplo de como se colocaria la propiedad dentro del objeto en php.

## Métodos de una clase

Como ya le había nombrado antes los tipos de acceso también se utilizan en los método y son los mismos.
Para entender un poco que es el método de una clase u objeto , seria un ejemplo el de un objeto persona que tiene el método caminar , o sentarse o comer. Método seria todo lo que es capaz de realizar el objeto, en php su sintaxis utiliza la palabra reservada function, ahora veamos un ejemplo:
Como pueden ver en el ejemplo se crearon 3 métodos dentro del objeto los cuales tienen cada uno de estos los distintos tipos de nivel de acceso , los metodos son mas que funciones pero las funciones que realiza dicho objeto.

## Constructores

En la programacion orientada a objetos (siglas POO u OOP en inglés) existe un método especial o mágico llamado método constructor. Este método se encarga de inicializar algunas variables --dentro de la clase se llaman propiedades o atributos-- que serán necesarias a la hora de crear una instancia de la clase o lo que es lo mismo, un objeto. Este método mágico usa la palabra reservada __construct.
De esta forma al momento de ser creado el objeto se van a inicializar las propiedades de el objeto como en el ejemplo donde en el objeto a la propiedad a se le asigna x , a la propiedad b se le asigna w y a la propiedad c se le asigna z, seguro se preguntan que es esa variable $this esta es lo que nos sirve para referirnos a que es en este objeto.
Al igual que hay un constructor existe un destructor que realiza todo el trabajo opuesto, que seria destruir todas las variables creadas.

## Destructor

El destructor es utilizado para destruir todas las variables creadas en el objeto algo que no se utiliza mucho ya que php ya se encarga de liberar o eliminar todos los recursos utilizados al finalizar de ejecutar un script, sin embargo puede ser utilizado, su palabra reservada es __destruct, vamos a ver un ejemplo a continuación:
Este llamado al destructor se realiza al momento de finalizar de correr el script.