On Github jonmircha / slides-poo-php-mysql
por @jonmircha
SLIDESLa 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
Es un modelo que se utiliza para crear objetos que comparten un mismo comportamiento, estado e identidad
Es una entidad provista de:
Es el algoritmo asociado a un objeto que indica la capacidad de lo que éste puede hacer(acciones)
Los atributos, son variables que contienen datos asociados a un objeto(propiedades)
La POO debe guardar ciertas características que la identifican y diferencian de otros paradigmas de programación
Aislación de un elemento de su contexto. Define las características esenciales de un objeto
Reúne al mismo nivel de abstracción, a todos los elementos que puedan considerarse pertenecientes a una misma entidad
Característica que permite dividir una aplicación en varias partes más pequeñas, independientes unas de otras
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
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
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
Es la técnica que consiste en destruir aquellos objetos cuando ya no son necesarios, liberándolos de la memoria
Documentación Oficial en línea Documentación Oficial descargable
<?php class NombreDeMiClase { var $un_atributo; function un_metodo() { } }
<?php class NombreDeMiClase { var $un_atributo; function un_metodo() { } } $objeto = new NombreDeMiClase();
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
<?php class NombreDeMiClaseMadre { //... } class NombreDeMiClaseHija extends NombreDeMiClaseMadre { /* esta clase hereda todos los métodos y propiedades de la clase madre NombreDeMiClaseMadre */ }
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
<?php abstract class NombreDeMiClaseAbstracta { var $un_atributo_abstracto; function un_metodo_abstracto(); }
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() { } }
Los métodos y atributos de una clase pueden tener diferentes níveles de acceso, los cuáles pueden ser:
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() { } }
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() { } }
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() { } }
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() { } }
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
Utilizando la pseudo-variable $this, siendo esta una referencia al objeto mismo:
<?php class NombreDeMiClase { $this->atributo; $this->metodo(); }
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(); }
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();
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();
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á';
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() { } }
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() { } }
__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
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.
<?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 */ }
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í
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
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;
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;
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);
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;
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;
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;
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
Eliminar Registros
DELETE FROM table WHERE field = value
Siempre agregar la clausula WHERE para evitar eliminar toda la tabla
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
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);
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.
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.
Una forma de separar estos aspectos es usando el patrón de diseño MVC: Modelo-Vista-Controlador, donde:
Modelo-Vista-Controlador es un Patrón de Diseño: Los Patrones de Diseño son: