Anoia PHP Conference - Introducción, instalación y uso

50 %
50 %
Information about Anoia PHP Conference - Introducción, instalación y uso

Published on November 13, 2007

Author: slizardo

Source: slideshare.net

Description

Anoia PHP Conference - Introducción, instalación y uso

Anoia PHP Conference Igualada, noviembre 2007 Introducción, instalación y uso.

Agenda ► Un poco de historia ► Características generales ► Configurar una plataforma PHP ► Configurar un entorno de desarrollo ► Anatomía del lenguaje y sintaxis ► Extensiones y librerías ► Ejemplo práctico: Portal de ocio

Un poco de historia

Un poco de historia ► PHP  Creado por Rasmus Lerford en 1995  Inicialmente un conjunto de scripts en Perl  La versión en C permitía acceder a BBDD  Código fuente publico

Un poco de historia ► PHP Funcionalidad básica  Variables estilo Perl  Embebido en HTML  Interpretación de las variables de un formulario  Cambio de nombre PHP/FI  ►PersonalHome Page ►Forms Interpreter

Un poco de historia ► PHP/FI 2.0 Lanzada en noviembre 1997  Ya tenia una comunidad de miles de usuarios  alrededor del mundo.  50K dominios en todo el mundo (1% Internet)  Mucha gente colaborando en el código  Casi todas sus versiones fueron BETA

Un poco de historia ► PHP 3.0 Creada en 1997 y publica en junio del 1998  La primera versión que se asemeja a la actual  Creada por Andi Gutmans y Zeev Suraski  Andi, Zeev y Rasmus anunciaron PHP 3 como el  sucesor oficial de PHP/FI 2.0  Creación de ZEND  ZEND = Zeev + Andi

Un poco de historia ► PHP 3.0 Del corazón a las extensiones  Normalización de los nombres de funciones y  constantes.  Cambio en las siglas del acrónimo PHP  En su pico, fue instalado en el 10% de los servidores de Internet.

Un poco de historia ► PHP 4.0  1998 se comenzó a desarrollar una reescritura de PHP, y se hizo publico en mayo del 2000.  Creación del Zend Engine a mediados de 1999  Características destacables ►Soporte para mas servidores Web ►Sesiones (frente a cookies) ►Buffer de salida ►Opciones de seguridad  20% del uso en Internet

Un poco de historia ► PHP 5.0 Lanzado en julio del 2004  Incluye el Zend Engine 2.0  Características principales  ►Nuevo modelo de objetos ►Excepciones ►Mas facilidades para trabajar con XML

Grandes hitos entres versiones ► PHP 4 vs PHP 5  Type hinting: Forzar el tipo y metodo de un parametro.  Todos los objetos son pasados por referencia.  Constantes dentro de una clase.  Clases: Abstractas, interfaces, constantes a nivel de clase, visibilidad  Nuevas extensiónes ►SimpleXML ►PDO

Grandes hitos entres versiones ► PHP 4 vs PHP 5 Excepciones: Para el control de errores  Nuevo nivel de error_reporting: E_STRICT  ►Detecta código obsoleto

Grandes hitos entres versiones ► PHP 5 vs PHP 6  Unicode ►PHP 6 = PHP 5 + UNICODE ►PHP 5 = PHP 6 – UNICODE ►UNICODE = PHP 6 – PHP 5  Namespaces  Se quitaran definitivamente ►register_globals

Características generales

Características de PHP ► Lenguaje de scripting ► Ejecutado en el servidor ► Open Source ► Especialmente diseñado para el desarrollo de aplicaciones Web  Apto para la línea de comandos  Aplicaciones graficas con PHP-GTK ► Combinala programación procedural y la programación orientada a objetos.

¿Qué puedo hacer con PHP? ► Aplicaciones Web  Línea de comando (tareas programadas, cron)  Aplicaciones de escritorio: PHP-GTK  ► En la mayoría de sistemas operativos ► En la mayoría de servidores Web ► Generar dinámicamente HTML  Imágenes  PDF  ZIP 

¿Qué mas puedo hacer con PHP? ► Abstracción de BBDD (PDO y ODBC) ► Comunicarse con otros protocolos ► Procesar textos en distintos formatos ► Otras funciones (compresión)

¿Qué no puedo hacer con PHP? ► Acceder al hardware directamente (memoria RAM, tarjeta gráfica, etc.) ► Programación de aplicaciones 3D ► Etc…

¿Qué no puedo hacer con PHP? ► Convertir videos ► Editar audio ► Algunas soluciones alternativas:  Hacer un puente entre PHP y otra tecnología (ej: Java)  Escribir una extensión  Invocar comandos del sistema operativo

Que tipo de código se encuentra ► Espaguetti  Poca separación de presentación y lógica ► Código forzadamente OOP  Sobre uso de clases y objetos ► Objetivo: Balancear ambos paradigmas ► Usar patrones de diseño  MVC

¿Quién usa PHP? ► Emprendimientos de todos los tamaños ► Grandes portales FaceBook  Digg  Wikipedia  ► Proyectos Open Source  WordPress  Drupal ► Etc.

¿Quién usa PHP? Grandes portales ► DIGG

¿Quién usa PHP? Grandes portales ► Flickr

¿Quién usa PHP? Grandes portales ► Wikipedia

Uso y evolución de PHP

PHP respectos a otros lenguajes ► PHP respecto a Java Requiere menos recursos del servidor  La curva de aprendizaje es muy exponencial  Sintaxis mas flexible  Mas joven  Tiempos de desarrollo menores 

Configurar una plataforma PHP

Componentes del servidor ► Respuesta: LAMP ► Linux ► Apache ► MySQL ► PHP

Instaladores automáticos

Configuración ideal

Otras configuraciones

Otras configuraciones

Funcionamiento integral

Instalación de apache ► Compilando su código fuente ► Con instaladores automáticos ► “Copiando y pegando”

Configuración del Apache ►A traves del fichero httpd.conf LoadModule php5_module <PATH>/php5apache.dll  AddModule mod_php5.c  DirectoryIndex index.html index.php  DocumentRoot <PATH>  AddType application/x-httpd-php .php .php3 .php4  .phtml  AddType application/x-httpd-php-source .phps  PHPIniDir <PATH>

Instalación de PHP ► “Copiando y pegando” ► Instaladores automáticos

Configuración de PHP ►A traves del fichero php.ini register_globals=On|Off  extension_dir=<PATH>  extension=<FILE.DLL>  include_path=<PATH>;<PATH>  ► Modelos a seguir php-dist.ini  php-recommend.ini 

Configuración de PHP ► short_open_tag = Off ► error_reporting = E_ALL & ~E_NOTICE ► display_errors = On ► upload_tmp_dir = quot;c:apachephpuplodadtmpquot; ► extension=php_mysql.dll ► session.save_path = quot;c:apachephpsessionquot;

Probando la instalación <?php phpinfo(); ?>

Configurar un entorno de desarrollo

Herramientas de trabajo ► Completos IDE PHP Development Environment  Zend Studio  Zend “Neon”  ► “Simples” editores  VIM  PHPEditor

Herramientas de trabajo ► VIM, VI Improved

Herramientas de trabajo ► Eclipse PDT (PHP Development Toolkit)

Herramientas de trabajo ► NuSphere PhpED

Anatomía del lenguaje y sintaxis

Estructura de un script PHP ► Combinación de código PHP, HTML, etc… ► Opcionalmente, compuesto de uno o mas ficheros  include (include_once)  require (require_once)

PHP básico ► Sintaxis ► Operadores ► Variables ► Constantes ► Estructurasde control ► Constructores del lenguaje y funciones

Tags de PHP ► Como PHP fue diseñado para ser incorporado en el HTML, el interprete necesita distinguir entre código PHP y etiquetas HTML. ► Los tags mas comunes son:  Apertura: <?php  Cierre: ?>

Tags PHP ► Mientras que el estilo completo es el recomendado, también hay otras opciones <script language=“php”></script>  <% %>  <? ?> 

Tags PHP ► Lostags cortos son bastante populares, pero pueden ser deshabilitados (para evitar problemas con XML)  <? echo ‘hola’; ?>  <?= ‘hola’; ?> ► Ambos juegos de tags pueden ser deshabilitados usando la directiva short_open_tag en el php.ini

Tags PHP ► Conclusión:Usa los tags largos para asegurar que tu aplicación será fácilmente portable a múltiples servidores u opciones de configuración.

Code break

Comentarios ► Losbuenos programadores comentan su código, PHP permite varias formas de hacerlo: // esta es una línea  # Esta también  /*  múltiples líneas */

Variables ► Las variables proveen un contenedor de datos. ► Reglas para nombrar una variable  Pueden solo contener letras, números o _  Deben comenzar con una letra o _

Variables ► Aunque las variables de PHP son de tipo aparentemente indefinido son almacenadas y manejadas en uno de los tipos internos de PHP Escalares: boolean, string, integer, float  Compuestos: array, object  Tipos especiales: resource, null 

Tipos escalares ► Strings:Un string es una cadena de caracteres. ► Cada carácter ocupa un byte de memoria. Por esto PHP no tiene soporte para juegos de caracteres de múltiples bytes. ► Esto cambia con PHP 6. ► No hay limites en la longitud.

Strings ► Lascadenas de texto pueden ser encerradas de tres maneras.  ‘’ – Comillas simples, estas cadenas son mostradas tal cual son  “” – Comillas dobles, variables y secuencias de escape son reemplazadas por su valor

Strings ► Sintaxis HEREDOC ► Similar a las comillas dobles, pero permite múltiples líneas, y no necesita proteger las comillas. echo <<<TEST Hola mundo. Esto es “HEREDOC”. TEST;

Enteros ► Números sin decimales. ► Pueden ser especificados en distintas bases  Octal  Hexadecimal

Flotantes ► Puedenusarse para representar valores muy grandes o pequeños. A = 1.123  B = 1.2e3 (1200)  C = 7e-10 (0.00000007) 

Boolean ► Contienen true = verdadero != 0  false = falso = 0  ► TRUE y FALSE son case-insensitive

Code break

Arrays (conjuntos) ► Pueden contener cualquier tipo de variable, incluso otros arrays ► Tipos de índice  Numéricos  Asociativos ► Sepueden usar como pilas o colas ► Decenas de funciones para operar

Arrays (conjuntos) ► Fácilesde iterar ► Frecuentemente utilizados en BBDD ► Numericos  Tienen un índice numero, auto asignado, o asignado por el usuario ► Asociativos  Tienen un índice de tipo string; similar a un hashmap

Arrays ► Variablesdel tipo Array, disponibles automáticamente en scripts PHP $GLOBALS  $_FILES  $_SERVER  $_ENV  $_REQUEST  $_GET  $_POST  $_COOKIE  $_SESSION 

Arrays ► Operaciones típicas con arrays Construcción  Agregar valores  Iterar  Ordenar 

Code break

Funciones ► No tiene valor de retorno en su declaración Facilitan el mantenimiento  Evitan la duplicación de código  ► Aceptan numero variable de parámetros ► Pueden ser definidas dentro de otra función

Funciones varias ► Funciones de fecha y hora  Date ► Para trabajar con strings  Strlen  Substr ► Envio de emails  mail

Funciones varias ► Funciones de lectura/escritura ficheros File_put_contents  File_get_contents  ► Tambien se puede abrir como recurso  Fopen  fwrite  Fclose ► Listado de directorios/ficheros  Opendir  readdir  closedir

Code break

Clases y objetos ► Permiten combinar datos y funciones en un sola unidad lógica ► A partir de la versión 5 de PHP aparecen: Clases abstractas  Interfaces  Type hinting 

OOP ► Incluyen visibilidad de propiedades y métodos ►Public: La propiedad o método puede ser accedida desde cualquier sitio. ►Private: La propiedad o método solo puede ser accedida por su clase ►Protected: La propiedad o método solo puede ser accedida por la clase o sus derivadas ►Final: la propiedad o método no puede ser sobrescrita

Clases y objetos ► Funciones especiales __construct  __destruct  __toString  __sleep  __wakeup  __call  __get  __set 

Code break

Excepciones ► Método unificado para el tratamiento de errores ► Estructura Throw  try  catch 

Code break

Resource ► Un recurso es una variable especial que representa un identificador de mas bajo nivel (como un fichero, una conexión a bbdd, etc) ► La función que crea una variable de tipo resource, generalmente ofrece otra función que libera los recursos consumidos por esa variable.

null ► Es una variable que no tiene tipo ni valor ► No es lo mismo que el entero 0 o que la cadena vací

Constantes ► Constantespermiten crear un identificador especial que no puede ser cambiado una vez creado ► Función define()

Code break

Operadores ► Asignación ► Aritméticos ► Concatenación (.) ► Ternario

Otros operadores ►@  Elimina los mensajes de error de la expresión ► `` (backticks)  Ejecutan el contenido como un comando de shell ► Instanceof  Devuelve true si la variable es de tipo class y es una subclase o subinterface

Operadores ► Backtick (``)  Puede ser peligroso porque se ejecuta con los mismos permisos que el webserver. ► Instanceof  Es útil para verificar que la variable pasada como parámetro se corresponde con el tipo esperado.

Code break

Estructuras de control ► If ► Switch ► While ► Do While ► For ► Foreach

Estructuras de control ► Exit:detiene la ejecución del script. ► Puede, opcionalmente, devolver un mensaje o código de error. exit(-1); exit(‘algo fue mal’);

Code break

GET y POST ► GET  Información enviada como parámetros en la URL  Limite del tipo y longitud de datos enviados ► POST  Datos enviados junto a los encabezados  Información oculta  Permite subir contenidos “multipart”

Programación Web ► Supervariables _GET  _POST  _FILES  _REQUEST: GET/POST/COOKIE 

Code break

Subida de ficheros ► Subiendo ficheros a través de un formulario  Variables involucradas ►$_POST ►$_FILES  Funciones a utilizar ►is_uploaded_file ►move_uploaded_file

Subida de ficheros ► Información que contiene la variable $_FILES $_FILES[‘fichero’][‘name’]  $_FILES[‘fichero’][‘type’]  $_FILES[‘fichero’][‘size’]  $_FILES[‘fichero’][‘tmp_name’]  $_FILES[‘fichero’][‘error’] 

Code break

Trabajar con sesiones ► Permiten recordar la sesión de un usuario ► Posible de almacenar En el sistema de fichero  En memoria  En la URL  En cookies 

Trabajar con sesiones ► Session_name ► Session_start ► Array $_SESSION ► Session_destroy

Code break

Trabajar con BBDD ► Funcionesespecificas para cada bbdd ► Ejemplo MySQL (des)Conectarse: mysql_connect/mysql_close  Consultas: mysql_query  Recuperar registros:  ►Mysql_fetch_object ►Mysql_fetch_assoc ►Mysql_fetch_row

Code break

Extensiones mas conocidas ► Para compresión/descompresion php_zip.dll  php_bzip2.dll  php_rar.dll  ► Para trabajar con BBDD php_pdo.dll  php_pdo_*.dll (* = mysql, pgsql, oracle) 

Extensiones mas conocidas ► Para trabajar con imágenes  php_gd2.dll ► Para internacionalizar aplicaciones  Php_gettext.dll

Extensiones de PHP ► PDO PHP Data Objects  Para conectarse a diferentes BBDD a través de  una única interfaz  API orientada a objetos  Similar al JDBC de Java

Librerías y frameworks ► PEAR ► Zend Framework ► Struts4php ► Phpmvc ► Molins Framework

Librerías útiles ► Smarty ► JPGraph

JPGraph ► Permite generar gráficos estadísticos ► Orientada a objetos ► Gratuita ► Fácilmente configurable ► Multitud de gráficos

Trabajar con un ejemplo Portal de ocio

Ejemplo: Portal de ocio

Muchas gracias Santiago Lizardo santiago.lizardo@gmail.com

Add a comment

Related presentations

Related pages

PHP: Introducción - Manual - PHP: Hypertext Preprocessor

Madison PHP Conference 2015. ... realizar tareas administrativas en su red y configurar IIS; estos son lo usos más ... Introducción; Instalación ...
Read more

PHP: Introducción - Manual - PHP: Hypertext Preprocessor

... y todo lo documentado sobre esta extensión, puede cambiar en una futura edición de PHP sin previo aviso. El uso de ... Introducción; Instalación ...
Read more

PHP: Introducción - Manual - PHP: Hypertext Preprocessor

Los gestortes serializados (php y php_binary) ... Introducción; Instalación/Configuración; Constantes predefinidas; Ejemplos; Progreso de Subida en ...
Read more

Introducción a Xampp-MySqL - YouTube

Introducción al servidor Apache+MySQL+PHP, su instalación y primeros pasos, con el objetivo de iniciarse en el uso de una base de datos relacional, MySQL ...
Read more

PHP: Ejemplos - Manual

Madison PHP Conference 2015. Getting Started ... Ejemplos Tabla de contenidos. ... Gender. Introducción; Instalación/Configuración; Ejemplos;
Read more

01.-Curso PHP-MySQL. Introducción - YouTube

Descarga Cursos completos y códigos de prácticas en http://videotutoriales.com Primer video tutorial del curso dedicado a la creación de ...
Read more

PHP: OCI-Lob - Manual

Madison PHP Conference 2015. Getting Started ... getBuffering — Devuelve el estado actual del uso del búfer para un ... Introducción; Instalación ...
Read more

PHP: Constantes predefinidas - Manual

Madison PHP Conference 2015. ... Estas constantes están definidas por esta extensión y estarán disponibles sólo ... Constantes predefinidas;
Read more

PHP: Constantes predefinidas - Manual

Especifica un dato de tipo integer de PHP. Para obtener información de uso, ... y escala. Para obtener información de uso ... Introducción; Instalación ...
Read more

Snom870/Documentation - Snom User Wiki

From Snom User Wiki < Snom870. ... instalación, introducción rápida de las funciones y el uso del teléfono
Read more