Tutorial en pdf > Tutorial de Programación PHP Experto
Tutorial de Programación PHP Experto
Programador PHP Experto
Ver en PDF el Tutorial de Programación PHP Experto, fuente de consulta Eugenia Bahit
Descargar PDF en ZIP del Tutorial de Programación PHP Experto
Índice General
Introducción a las tecnologías GLAMP
GLAMP y LAMP
Diferencia entre GNU/Linux y Linux
Free Software Foundation y el Proyecto GNU
Información complementaria
Sitios Web de Referencia
Bibliografía complementaria
Preparación básica del entorno de desarrollo
Instalación de Ubuntu GNU/Linux en Windows
Instalación de Ubuntu GNU/Linux como único Sistema Operativo
Instalación de Apache Server
Otras opciones de Apache:
It Works!
Instalación de MySQL
Instalación de PHP
Verificando la versión de PHP
Configurando el directorio de tu Web Local
Crear el directorio para tu Web local
Modificando el directorio raíz de tu Web local
Conociendo PHP
Etiquetas de apertura y cierre
Conocer el valor actual de short_open_tag
Instrucciones y estructuras
Identación en PHP
Impresión en pantalla
Variables y tipos de datos básicos
Null, var_dump() e isset()
Malas prácticas con variables, que afectan el uso de memoria 43
Operadores aritméticos
Haciendo cálculos con el IVA
settype ¿un bug no resuelto o feature objetable?
HTML y PHP en un mismo archivo
Una mala práctica: colocar código HTML embebido dentro de variables de PHP
Una buena prática para evitar lo anterior
Comentando y documentando el código fuente
Inclusión de archivos en PHP
Diferencia entre inclusión de archivos remotos y locales
Diferencia entre include y require
Include y require "_once"
Estructuras de Control – Parte I (condicionales)
Definición
Condicionales if, else y else if
Operadores lógicos y de comparación
Operadores de comparación
Diferencia entre igualdad e idéntico en la comparación
Operadores lógicos
Creando condicionales
Estructuras de control con Switch
¿Cuándo utilizar if y cuando switch?
Tipos de Datos complejos: Matrices simples y multidimensionales
Matrices en PHP
Sintaxis básica
Imprimir en pantalla con print_r
Acceso a los ítems de un array
Modificando elementos
Agregar elementos
Estructuras de Control – Parte II (bucles I)
Recorriendo matrices dinámicamente con foreach
Sintaxis básica del constructor foreach
Un ejemplo de iteración compleja con foreach
Modificando matrices dinámicamente con foreach
Estructuras de Control – Parte III (bucles II)
While, un bucle simple
Un ejemplo sencillo
Un ejemplo práctico
Do while, tan simple como while pero con una ventaja
Un ejemplo simple
Bucles for, los más complejos de PHP
Sintaxis:
Curiosidades sintácticas de la bipolaridad no diagnosticada de PHP
Goto, si lo usas... es tu elección!
Un ejemplo no-práctico para entender goto
Funciones definidas por el usuario
Definición
Declarando Funciones
Sintaxis básica
Sobre el nombre de las funciones
Sobre los parámetros
Llamando a una función
Sobre la finalidad de las funciones
Paso de variables por referencia en funciones
Modificando variables globales mediante el uso de global
Llamadas de retorno
Pasar argumentos en una llamada de retorno
Argumentos no conocidos
Conocer la cantidad de argumentos
Obtener una lista completa de todos los argumentos
Obtener un argumento específico
Saber si una función puede ser llamada (callable)
Material de lectura adicional
Diferentes formas de recoger argumentos para hacer una llamada de retorno
Forma 1: recibir argumentos en un array
Forma 2: recibir argumentos 1 a 1
Llamadas recursivas
Helpers
Un helper que retorna la fecha actual
Un helper que modifica una variable global, haciendo una llamada de retorno
Taller de Funciones
Trabajando con el Sistema de Archivos
Recorrido rápido por las principales funciones
Apertura de archivos
Modos de apertura
Ruta hacia el archivo
Utilizar o no include_path
Lectura de Archivos
Escribir en un archivo
Moviendo el puntero dentro del archivo
Un contador de visitas sencillo
¡Cuidado con los permisos!
Trabajando con directorios
Creando el gestor
Explorando el contenido de un directorio
Filtrando el tipo de elemento
Otras funciones que necesitarás con frecuencia
Comprobar la existencia de un archivo o directorio
Comprobar si un archivo o directorio es legible
Comprobar si un archivo o directorio puede escribirse
Más funciones sobre el sistema de archivos
Procesamiento de texto y manipulación de strings
Ampliando la definición de variables de tipo string
Escapando caracteres
Caracteres de escape
Funciones para manipulación de strings
Funciones de escape
Funciones de conversión
Evitando ejecución de código no deseado
Funciones de formato
Funciones de manipulación
Manipulando subcadenas en cadenas
Funciones de encriptación
Resumen de las principales funciones de string
Taller de Archivos y Procesamiento de Formularios
Constantes, variables variables y variables superglobales
Constantes
Definición clásica de constantes en PHP
Definición de constantes en PHP 5.3
Finalidad de las constantes
Variables variables
Variables superglobales
Envío de correo electrónico con PHP
La función mail() y su sintaxis
El parámetro “destinatario”: formatos admitidos
Cabeceras adicionales como parámetro extra
Comprobando que el e-mail pudo enviarse
Enviando mensajes en formato HTML
Funciones para el manejo de Fecha y Hora
Funciones simples de fecha y hora
Obtener la fecha y hora actual en un array asociativo
Obtener fecha y hora actual con formato en una cadena de texto
Validar una fecha
Cálculo de fecha / hora sencillo
Ejemplos prácticos de cálculos basados en fechas
¿Cuánto tiempo ha pasado?
¿Qué edad tiene...?
¿En qué fecha nació...?
Funciones matemáticas
Obtener un número elevado a la potencia
Obtener el número más alto y el número más bajo
Redondear un número con N cantidad de decimales
Redondear un número hacia abajo
Redondear un número hacia arriba
Obtener un número entero aleatorio
Funciones para el manejo de matrices
Diviendo y uniendo arrays
Dividir un array en matrices más pequeñas
Obtener la porción específica de un array
Combinar dos arrays, utilizando uno para las claves y otro para los valores
Combinar dos o más arrays
Combinar dos o más arrays multidimensionales de manera recursiva
Ordenando Arrays por sus valores
Ordenar un array de menor a mayor
Ordenar un array de mayor a menor
Ordenar un array de menor a mayor manteniendo la relación con los índices
Ordenar un array de mayor a menor manteniendo la relación con los índices
Ordenando Arrays por su clave
Ordenar un array de menor a mayor por su clave
Ordenar un array de mayor a menor por su clave
Comparando funciones de ordenamiento de arrays
Agregar y Eliminar elementos de un array
Agregar elementos al final del array
Agregar elementos al comienzo del array
Eliminar el último elemento de un array
Eliminar el primer elemento de un array
Eliminar valores duplicados en un array
Búsquedas y filtros
Contar la cantidad de veces que los elementos aparecen en un array
Contar la cantidad de elementos de un array
Obtener la suma matemática de los valores de un array
Obtener las diferencias entre dos o más arrays
Filtrar datos de un array, utilizando una función de retorno
Verificar si un array contiene una clave determinada
Obtener todas las claves de un array o todos los valores
Verificar si un array contiene una valor determinada
Buscar un valor detrminado en un array y obtener su clave correspondiente
Cookies y Sesiones de usuario
¿Qué es una cookie?
Las cookies no son eternas
¿Qué son las sesiones de usuario?
Usos e importancia
Lo básico
Creación, lectura, modificación y eliminación de cookies
Crear una cookie
Leer una cookie
Modificar una cookie
Eliminar una cookie
Un ejemplo práctico con Cookies
Trabajando con Sesiones
Primeros pasos con sesiones
Crear una nueva sesión
Leer una sesión
Modificar la sesión
Eliminar una variable de sesión
Un caso práctico de uso de sesiones
Funciones necesarias
Funciones de acceso al sistema
Funciones para destruir la sesión del usuario
Funciones para verificación y validación de sesiones
La función que redirige a los usuarios
Pasos finales
Tratamiento y control de errores
Tipos de errores
Configurando errores en tiempo de ejecución
Un ejemplo sencillo pero altamente productivo
Utilizando el símbolo @ para silenciar errores
Trabajando con Bases de Datos MySQL
Acerca de MySQL
Instalación y configuración de MySQL
Iniciar, reiniciar y detener el servidor MySQL
Administración de MySQL
Conectarse y desconectarse al servidor
Comandos para administrar MySQL dede el shell interactivo
Sobre el lenguaje SQL
Tipos de datos más comunes (recomendados)
Sintáxis básica de las sentencias SQL
Crear tablas en una base de datos
Insertar datos en una tabla
Seleccionar registros
Modificar registros
Eliminar registros
Consultas avanzadas
La cláusula WHERE
Ordenando consultas: la cláusula ORDER BY
Alias de tablas y campos
Funciones del lenguaje SQL de MySQL
Contar la cantidad de registros: COUNT()
Sumar totales: SUM()
Concatenar cadenas: CONCAT()
Convertir a minúsculas y mayúsculas: LCASE() y UCASE()
Reemplazar datos: REPLACE()
Obtener los primeros o últimos caracteres: LEFT() y RIGHT()
Redonder números: ROUND()
Obtener solo la fecha de un campo DATETIME o TIMESTAMP: DATE()
Obtener una fecha formateada: DATE_FORMAT()
Obtener el registro con el valor máximo y mínimo: MAX() y MIN()
Optimización de bases de Datos
Todos los registros deben tener un ID único
Crear índices en las tablas
Indica cuáles campos no pueden ser nulos
Utiliza el motor InnoDB
Obtener mayor información
Trabajando con MySQL desde PHP
MySQL desde PHP con el conector mysql
Conectarse a la base de datos
Seleccionar una base de datos
Ejecutar una consulta simple
Ejecutar una consulta de selección múltiple y capturar sus resultados
Capturamos el array con los resultados
Liberar los resultados
Cerrar la conexión
Algunos ejemplos concretos
Consulta de selección
Insertar varios registros en un solo paso
MySQL desde PHP con el conector mysqli
Abrir una conexión mediante mysqli
Preparar la consulta
Ejecutar la consulta
Cerrar la consulta
Cerrar la conexión
Ejemplo de inserción completo
Capturar resultados de una consulta de selección
Ejemplo completo de consultas de selección
Introducción al Paradigma de la programación orientada a objetos
Pensar en objetos
Y ¿qué es un objeto?
Ahora ¿qué me dices si describimos las cualidades de un objeto?
Pero algunos objetos, también se componen de otros objetos
Y también hay objetos que comparten características con otros objetos
Los objetos, también tienen la capacidad de “hacer cosas”
Objetos y más objetos: la parte difícil
Al pan, pan. Y al vino, vino. Las cosas por su nombre
Programación Orientada a Objetos
Elementos y Características de la POO
Clases
Propiedades
Métodos
Objeto
Herencia: característica principal de la POO
Accediendo a los métodos y propiedades de un objeto
Acceder a las propiedades de un objeto, dentro de la clase
Composición
Ejemplo práctico de Herencia vs. Composición
Programando con Historias de Usuario
Criterios de Aceptación
Dividiendo Historias de Usuario en Tareas
Introducción a la Programación eXtrema
TDD – Test-Driven Development
¿Qué es el desarrollo -o programación- guiado por pruebas?
Test Unitarios
Características de los Test Unitarios
Anatomía
Algoritmo para escribir pruebas unitarias
PRIMER PASO: Escribir el Test y hacer que falle
SEGUNDO PASO: Escribir la mínima cantidad de código para que el test pase
TERCER PASO: Escribir un nuevo test y hacer que falle
CUARTO PASO: Escribir el algoritmo necesario para hacer pasar el test
Unit Testing con PHPUnit
Métodos Assert de PHPUnit
Ejercicio
Unificación del código en Repositorios
Sobre los Sistemas de Control de Versiones
Integración continua con Bazaar
Instalación de Bazaar
Bazaar por línea de comandos
Presentarse ante Bazaar
Iniciar un nuevo proyecto
Clonar el repositorio central: crear los repositorios locales
Nociones básicas para integrar código de forma continua
Guardando el path del repo central
Integración continua avanzada con Bazaar
Resumen de comandos de uso frecuente
Resumen para uso diario de Bazaar
Refactoring
El problema
La solución
Cuándo y cómo tomar la desición de refactorizar
Una solución a cada problema
Variables de uso temporal mal implementadas
Métodos que reciben parámetros
Expresiones extensas
Métodos extensos
Código duplicado en una misma clase
Código duplicado en varias clases con la misma herencia
Código duplicado en varias clases sin la misma herencia
Introducción a la Arquitectura de Software
¿Qué es la arquitectura de software?
Atributos de calidad
Niveles de abstracción
Estilo Arquitectónico
Patrón Arquitectónico
Patrón de Diseño
Introducción al Patrón Arquitectónico MVC
Entendiendo el funcionamiento de MVC
Modelos en MVC
Objetos puros: características de un modelo
Creando modelos bajo MVC en PHP
Herencia y Composición
Acceso a bases de datos
Código fuente de una capa de abstracción a nivel del core 311
Object Relational Mapping (ORM)
Ventajas y desventajas del utilizar ORMs
ORM Frameworks para PHP
Bibliografía recomendada
Las vistas
¿Por dónde empezar a desarrollar las vistas?
Desarrollando la GUI
Componentes de la GUI
Arquitectura
Preparando la GUI para interactuar con la lógica
Comodines ¿Qué son y cómo implementarlos?
Diseñando la lógica de negocios
Lógica principal
Lógica a nivel de módulo
Características mínimas que debe tener la lógica
Creando la lógica de la vista para un modelo
El controlador: el alma de MVC
Front Controller: controlando la aplicación a nivel del core
Configurando URLs amigables para nuestra aplicación
Configuración de Apache
Modificar el VirtualHost
Creando el archivo .htaccess
Creando un Application Handler
La clase AppHandler
Conclusión
La clase FrontController
Conclusión
Creando controladores para nuestros modelos
Notas adicionales sobre el ejemplo
Completando la aplicación
Inicializador del núcleo
Los patrones de diseño Front Controller y Application Handler en MVC
Web Services: creación de una API REST
Conceptos básicos
Web Services
API
REST
Entendiendo las Arquitecturas REST
Características de una API-REST
Funcionamiento de la API REST de nuestra MVC App
Objetivo del Web Service
Formato de la URI
Diseño de la API
Ver en PDF el Tutorial de Programación PHP Experto, fuente de consulta Eugenia Bahit
Descargar PDF en ZIP del Tutorial de Programación PHP Experto