Curso de POO con – de Bextlán



Curso de POO con – de Bextlán

0 0


slides-poo-php-mysql

Presentación del Curso de POO con PHP y MySQL de Bextlán

On Github jonmircha / slides-poo-php-mysql

Curso de POO con

de Bextlán

por @jonmircha

SLIDES

jonmircha.github.io/slides-poo-php-mysql

Jonathan MirChaInstructor Web & Arquitecto de Front end

Temas:

Inicio Consideraciones Introducción a la Programación Orientada a Objetos Programación Orientada a Objetos en PHP Bases de Datos con MySQL Introducción al Patrón Modelo Vista Controlador El patrón MVC en PHP Desarrollo de Framework MVC con PHP

Consideraciones

<< regresar al temario

Unidad 1

Introducción a la Programación Orientada a Objetos

<< regresar al temario

La POO es un paradigma de programación que utiliza objetos e interacciones en el diseño de un sistema

Compuesta por varios elementos y características

Elementos de la POO

Clase

Es un modelo que se utiliza para crear objetos que comparten un mismo comportamiento, estado e identidad

Elementos de la POO

Objeto

Es una entidad provista de:

  • Métodos (comportamientos a los cuales responde) y
  • Atributos con valores concretos (estados) y propiedades (identidad)

Elementos de la POO

Método

Es el algoritmo asociado a un objeto que indica la capacidad de lo que éste puede hacer(acciones)

Elementos de la POO

Atributo

Los atributos, son variables que contienen datos asociados a un objeto(propiedades)

Características de la POO

La POO debe guardar ciertas características que la identifican y diferencian de otros paradigmas de programación

Características de la POO

Abstracción

Aislación de un elemento de su contexto. Define las características esenciales de un objeto

Características de la POO

Encapsulamiento

Reúne al mismo nivel de abstracción, a todos los elementos que puedan considerarse pertenecientes a una misma entidad

Características de la POO

Modularidad

Característica que permite dividir una aplicación en varias partes más pequeñas, independientes unas de otras

Características de la POO

Ocultación (Aislamiento)

Los objetos están aislados del exterior, protegiendo a sus propiedades para no ser modificadas por aquellos que no tengan derecho a acceder a las mismas

Características de la POO

Polimorfismo

Es la capacidad que da a diferentes objetos, la posibilidad de contar con métodos y atributos de igual nombre, sin que los de un objeto interfieran con el de otro

Características de la POO

Herancia

Es la relación existente entre dos o más clases, donde una es la principal (madre) y otras son secundarias y dependen (heredan) de ellas (clases hijas), donde a la vez, los objetos heredan las características de los objetos de los cuales dependen

Características de la POO

Recolección de Basura

Es la técnica que consiste en destruir aquellos objetos cuando ya no son necesarios, liberándolos de la memoria

<< regresar al temario

Unidad 2

Programación Orientada a Objetos en

<< regresar al temario

Antes de comenzar...

Documentación Oficial en línea Documentación Oficial descargable

Ahora sí

Clases en PHP

Definición de Clase

					
<?php

class NombreDeMiClase {

	var $un_atributo;

	function un_metodo() {

	}

}
					
				

Instanciar una Clase

					
<?php

class NombreDeMiClase {

	var $un_atributo;

	function un_metodo() {

	}

}

$objeto = new NombreDeMiClase();
					
				

Herencia de Clases

Los objetos pueden heredar propiedades y métodos de otros, mediante la extensión (herencia) de clases, cuya característica representa la relación existente entre diferentes objetos. Para definir una clase como extención de otra se utiliza la palabra clave extends

Herencia de Clases

					
<?php

class NombreDeMiClaseMadre {

	//...

}

class NombreDeMiClaseHija extends NombreDeMiClaseMadre {
	
	/* esta clase hereda todos los métodos y propiedades de
		la clase madre NombreDeMiClaseMadre	*/

}
					
				

Definición de Clase Abstracta

Son aquellas que no necesitan ser instanciadas pero sin embargo, serán heredadas en algún momento. Su finalidad, es la de declarar clases genéricas que necesitan ser declaradas pero a las cuales, no se puede otorgar una definición precisa

También se pueden declarar métodos abstractos

Definición de Clase Abstracta

					
<?php

abstract class NombreDeMiClaseAbstracta {

	var $un_atributo_abstracto;

	function un_metodo_abstracto();

}
					
				

Definición de Clase Final

NO pueden ser heredadas por otra. Se definen anteponiendo la palabra clave final

					
<?php

final class NombreDeMiClaseFinal {

	var $un_atributo_final;

	function un_metodo_final() {

	}

}
					
				

¿Qué tipo de clase declarar?

Necesito una clase qué pueda... Instanciable Abstracta Heredada Final Ser instanciada y/o heredada ✔ ☓ ☓ ☓ Guardar relación con métodos y atributos de otra ☓ ☓ ✔ ☓ Servir de modelo para otras, sin que pueda instanciarse ☓ ✔ ☓ ☓ Instanciarse pero que no pueda ser heredada ☓ ☓ ☓ ✔

Modificadores de Acceso y Visibilidad

Los métodos y atributos de una clase pueden tener diferentes níveles de acceso, los cuáles pueden ser:

  • Públicos
  • Privados
  • Protegidos
  • Estáticos

Públicos

Se definen anteponiendo la palabra clave public al nombre del atributo o método. Éstas, pueden ser accedidas desde cualquier parte de la aplicación, sin restricción

					
<?php

class NombreDeMiClase {

	public $un_atributo_publico;

	public function un_metodo_publico() {

	}

}
					
				

Privados

Se definen anteponiendo la palabra clave private al nombre del atributo o método. Éstos solo pueden ser accedidos por la clase que los definió

					
<?php

class NombreDeMiClase {

	private $un_atributo_privado;

	private function un_metodo_privado() {

	}

}
					
				

Protegidos

Se definen anteponiendo la palabra clave protected al nombre del atributo o método. Pueden ser accedidos por la propia clase que los definió, así como por las clases que la heredan, pero no, desde otras partes de la aplicación

					
<?php

class NombreDeMiClase {

	protected $un_atributo_protegido;

	protected function un_metodo_protegido() {

	}

}
					
				

Estáticos

Se definen anteponiendo la palabra clave static al nombre del atributo o método. Pueden ser accedidos sin necesidad de instanciar un objeto y su valor es estático (es decir, no puede variar ni ser modificado)

					
<?php

class NombreDeMiClase {

	public static $un_atributo_estatico;

	public static function un_metodo_estatico() {

	}

}
					
				

Acceso a los Objetos

Para acceder a los métodos y atributos de un objeto, existen diferentes maneras de hacerlo. Todas ellas, dependerán del ámbito desde el cual se les invoque así como de su condición y visibilidad

  • Dentro de la Clase
  • Fuera de la Clase

Dentro de la Clase y NO siendo estático

Utilizando la pseudo-variable $this, siendo esta una referencia al objeto mismo:

					
<?php

class NombreDeMiClase {

	$this->atributo;
	
	$this->metodo();

}
					
				

Dentro de la Clase y siendo estático

Se accede mediante el operador de resolución de ámbito, (doble dos puntos ::) anteponiendo la palabra clave self o parent según se trate de una propiedad de la misma clase o de otra heredada

					
<?php

class NombreDeMiClase {

	self::atributo_estatico_de_esta_clase;
	parent::atributo_estatico_de_clase_madre;
	
	self::metodo_estatico_de_esta_clase();
	parent::metodo_estatico_de_clase_madre();

}
					
				

Fuera de la Clase y NO siendo estático

Se necesita instanciar un objeto de la clase y sólo se pueden acceder a métodos y atributos públicos

					
<?php

$objeto = new Clase();

$objeto->atributo_publico;

$objeto->metodo_publico();
					
				

Fuera de la Clase y siendo estático

No es necesario instanciar la clase. Sólo se pueden acceder a métodos y atributos públicos

					
<?php

Clase::atributo_publico;

Clase::metodo_publico();
					
				

Constantes

Mantienen su valor de forma permanente y sin cambios. A diferencia de las propiedades estáticas, las constantes solo pueden tener una visibilidad pública

					
<?php

const MI_CONSTANTE = 'Este es el valor de mi constante y no cambiará';
					
				

Métodos Mágicos

(Métodos con funciones específicas pre definidas por PHP)

Constructor

Será invocado de manera automática, al instanciar un objeto. Su función es la de ejecutar cualquier inicialización que el objeto necesite antes de ser utilizado

					
<?php

class NombreDeMiClase {

	function __construct() {

	}

}
					
				

Destructor

Es el encargado de liberar de la memoria, al objeto cuando ya no es referenciado. Se puede aprovechar este método, para realizar otras tareas que se estimen necesarias al momento de destruir un objeto

					
<?php

class NombreDeMiClase {

	function __destruct() {

	}

}
					
				

Otros Métodos Mágicos

__call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state y __clone

Para ver su descripción y ejemplos, remitirse a la documentación

¿Herencia Múltiple?

Interfaces

Son un conjunto de métodos característicos de diversas clases, independientemente de la relación que dichas clases mantengan entre sí.

Una misma clase, puede implementar múltiples interfaces. Se definen utilizando la palabra clave interface y se emplean utilizando la palabra clave implements.

Definición de Interfaces

					
<?php

interface InterfaceA {
	public function un_metodo_publico();
}

interface InterfaceB {
	public function otro_metodo_publico();
}

class NombreDeMiClase implements InterfaceA, InterfaceB {
	/* esta clase implementa todos los métodos
		de la Interfaces invocadas */
}
					
				

Diferencia entre Interfaces y Clases Abstractas

Las clases abstractas, no dejan de ser clases, las cuales representan la abstracción de un objeto siguiendo un orden de relación jerarquíca entre ellas.

Clase B hereda de Clase A yClase C hereda de Clase B,pero no puede tener herencias múltiples,es decir no puede heredar de más de una clase,ya que guardan una relación de orden jerárquico entre sí

Diferencia entre Interfaces y Clases Abstractas

Las interfaces son solo un conjunto de métodos característicos de diversas clases, independientemente de la relación que dichas clases mantengan entre sí.

Una misma clase, puede implementar múltiples interfaces

Características de las Interfaces

  • No pueden tener el mismo nombre que una clase
  • No pueden instanciarse porque no tienen referencias asociadas a objetos
  • No pueden definir propiedades
  • Los métodos de una interfaz deben ser públicos, sólo estar definidos y sin cuerpo
  • Las clases que implementan una interfaz deben utilizar todos los métodos de la misma
  • Diferentes interfaces no pueden tener nombres de métodos idénticos si serán implementadas por una misma clase

Let's to Code! \

XD
/

<< regresar al temario

Unidad 3

Bases de Datos con MySQL

<< regresar al temario

Características de MySQL

Herramientas de Gestión MySQL

Accediendo desde la Terminal de Datos

					
cd /ruta-a-directorio/mysql/bin

mysql -u nombre_usuario -p
ENTER PASSWORD: escribir_password_para_usuario

SHOW DATABASES;
USE nombre_bd;
SHOW TABLES;
DESCRIBE nombre_tabla;
SELECT * FROM nombre_tabla;
					
				

Accediendo desde phpMyAdmin

Tipos de Sentencias SQL en MySQL

  • de Objetos (Bases de Datos, Tablas, Usuarios y sus Privilegios)
  • de Datos (CRUD)

Let's to Create DataBase! \

XD
/

Más temas sobre MySQL

Concepto de CRUD

  • Create - INSERT
  • Read - SELECT
  • Update - UPDATE
  • Delete - DELETE

CREATE

Insertar Un Registro

					
INSERT INTO table (field_1, field_2, ..., field_n) 
	VALUES (value_1, value2, ..., value_n);
					
				
					
INSERT INTO table 
	SET field_1 = 'value_1', field_2 = 'value_2',
	 ..., field_n = value_n;
					
				

CREATE

Insertar Varios Registros

					
INSERT INTO table (field_1, field_2, ..., field_n) VALUES
	(value_1, value2, ..., value_n),
	(value_1, value2, ..., value_n),
	...,
	(value_1, value2, ..., value_n);
					
				

READ

Leer todos los campos de una tabla

					
SELECT * FROM table;
					
				

Leer algunos campos de una tabla

					
SELECT field_1, field_2, field_n FROM table;
					
				

READ

Leer un registro en particular buscando el valor de un campo

					
SELECT * FROM table WHERE field_1 = 'valor_1';
					
				

Leer un registro en particular buscando el valor de más de 2 campos con operadores lógicos

					
SELECT * FROM table WHERE field_1 = 'valor_1' AND field_2 = valor_2;
SELECT * FROM table WHERE field_1 = 'valor_1' OR field_2 = valor_2;
					
				

READ

Leer un registro en particular buscando el valor similar de un campo

					
SELECT * FROM table WHERE field_1 LIKE '%valor_1'
SELECT * FROM table WHERE field_1 LIKE 'valor_1%'
SELECT * FROM table WHERE field_1 LIKE '%valor_1%'
					
				

Saber cuantos registros tiene mi tabla

					
SELECT COUNT(*) FROM table;
					
				

UPDATE

Actualizar Registros

					
UPDATE table 
	SET field_1 = 'value_1', field_2 = 'value_2',
	..., field_n = value_n  
	WHERE field = value
					
				

Siempre agregar la clausula WHERE para evitar actualizar toda la tabla

DELETE

Eliminar Registros

					
DELETE FROM table WHERE field = value
					
				

Siempre agregar la clausula WHERE para evitar eliminar toda la tabla

Let's to Fuck Data!

}:)

CONSULTAS MÚLTIPLES

Datos de 2 o más tablas

					
SELECT * FROM table1 AS t1 
	INNER JOIN table2 AS t2

SELECT * FROM table1 AS t1 
	INNER JOIN table2 AS t2
	ON t1.a_field = t2.a_field

SELECT t1.field1, t1.field2, t1.field3, t2.field1, t2.field5
	FROM table1 AS t1 
	INNER JOIN table2 AS t2
	ON t1.field1 = t2.field5
	WHERE t1.field1 = 'a_value'
	ORDER BY t1.field3 DESC
					
				

Más sobre JOINS

CONSULTAS FULLTEXT KEY

					
SELECT * FROM table
	WHERE MATCH(field1, field2, field3, field4)
	AGAINST('a_search' IN BOOLEAN MODE);

SELECT t1.field1, t1.field2, t2.field1, t2.field4
	FROM table1 AS t1
	INNER JOIN table2 AS t2
	ON t1.field1 = t2.field4
	WHERE MATCH(t1.field1, t1.field2, t2.field1, t2.field4)
	AGAINST('a_search' IN BOOLEAN MODE);
					
				

<< regresar al temario

Unidad 4

Introducción al PatrónModelo Vista Controlador

<< regresar al temario

Arquitectura de Software

Es la forma en la que se organizan los componentes de un sistema, interactúan y se relacionan entre sí y con su contexto.

Aplicando normas y principios de diseño y calidad, que fortalezcan y fomenten la usabilidad a la vez que dejan preparado el sistema, para su propia evolución.

Etapas de la Arquitectura de Software:

  • Requerimientos
  • Diseño
  • Documentación
  • Evaluación

Tipos de Arquitectura de Software:

  • Descomposición Modular
  • Cliente - Servidor
  • Arquitectura de Tres Niveles
  • Modelo Vista Controlador
  • En filtros (pipeline)
  • Entre pares
  • En pizarra
  • Dirigida por eventos
  • Máquinas virtuales
  • Orientada a servicios

Modelo - Vista -Controlador

Las aplicaciones web son diferentes a los sitios web convencionales porque éstas son capaces de crear una respuesta dinámica.

Las aplicaciones Web en general tienen tres aspectos a considerar en su desarrollo.

  • El código de acceso, inserción, consulta, actualización y/o eliminación de los datos.
  • El código del diseño de las páginas a mostrar.
  • El código que controla el flujo de las páginas de la aplicación.

Una forma de separar estos aspectos es usando el patrón de diseño MVC: Modelo-Vista-Controlador, donde:

  • El modelo representa a la lógica de negocio (manipulación de datos).
  • La vista representa la presentación de los datos (diseño de páginas).
  • El controlador representa el código de navegación de la aplicación (control de flujo).

Modelo-Vista-Controlador es un Patrón de Diseño: Los Patrones de Diseño son:

  • Soluciones efectivas de problemas comunes en el diseño de software.
  • Su efectividad ya ha sido comprobada.
  • Es reusable.
  • Facilitan el aprendizaje de los programadores inexpertos.

Modelo-Vista-Controlador

  • Fue aportado originariamente por el lenguaje de programación SmallTalk.
  • Consiste en dividir una aplicación en tres componentes.
  • Se basa en la separación de responsabilidades ya que cada una de las partes se encarga de un aspecto específico y no interfiere con el de las otras.

Modelo

  • Representa las capas de lógica de negocio y persistencia de datos.
  • Se encarga del acceso a los datos para realizar consultas, eliminaciones, inserciones, actualizaciones y almacenarlos en un medio persistente.

Vista

  • Representa la capa de presentación de los datos.
  • Se encarga de mostrar la información al usuario (Interfaz de Usuario).
  • En la vista solo se deben de realizar operaciones simples, como condiciones, ciclos, etc.

Controlador

  • Se encarga de controlar el flujo de la aplicación.
  • Tiene la función de recibir y responder a los eventos (acciones del usuario).
  • Tiene que redirigir o asignar la parte de lógica de negocios a cada petición.
  • Debe tener un mecanismo para guardar las correspondencias entre peticiones y respuestas que se les asignan.

<< regresar al temario

Unidad 5

El patrón MVC en PHP

<< regresar al temario

Unidad 6

Desarrollo de Framework MVC con PHP

<< regresar al temario

Muchas Gracias \

=D
/

¡Hasta la próxima!

@jonmircha / j@bextlan.com

<< inicio

Curso de POO con de Bextlán por @jonmircha SLIDES jonmircha.github.io/slides-poo-php-mysql