Embed
Email

php

Document Sample

Categories
Tags
Stats
views:
1
posted:
11/19/2011
language:
Spanish
pages:
7
PHP



Php Es un lenguaje dde programción integrado sdiseñado originalmente para la creación de páginas

web dinámicas.



Php es unacrónimo recursivo que significa Php Hipertext Pre-processor (inicialmente PHP Tools, o,

Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la

implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar

de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free

Software Foundation considera esta licencia como software libre.



La baza para implantarse en le mercado es el gran parecido con otros lenguajes como C o Perl que

permiten a los progrmadores crear aplicaciones rápidamente con una curva de aprendizaje muy

baja.



El funcionamiento de php es el siguiente: Cuando el cliente hace una petición al servidor para que

le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado

que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de

datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente.

Mediante extensiones es también posible la generación de archivos PDF, Flash, así como imágenes

en diferentes formatos. Php es una alternativa a Java fácil de aprender.



El motor que permite el funcionamiento de php es Zend Engine. Actualmente php se encuentra en

su versión php5 y el motor que lo implementa es Zend Engine 2.0.



Las ventajas de php son las siguientes:



Es un lenguaje multiplataforma.

 Completamente orientado al desarrollo de aplicaciones web dinámicas con acceso a

información almacenada en una Base de Datos.

 El código fuente escrito en PHP es invisible al navegador y al cliente ya que es el servidor el

que se encarga de ejecutar el código y enviar su resultado HTML al navegador. Esto hace

que la programación en PHP sea segura y confiable.

 Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la

actualidad, destaca su conectividad con MySQL y PostgreSQL.

 Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados

ext's o extensiones).

 Posee una amplia documentación en su página oficial, entre la cual se destaca que todas las

funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.

 Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.

 Permite aplicar técnicas de programación orientada a objetos.

 Biblioteca nativa de funciones sumamente amplia e incluida.

 No requiere definición de tipos de variables aunque sus variables se pueden evaluar también

por el tipo que estén manejando en tiempo de ejecución.

 Tiene manejo de excepciones (desde PHP5).

 php tiene soporte para la mayoría de los servidores. Una de sus mayores características es el

soporte que da a numerosas bases de datos: Adabas D, dBase, Empress, FilePro (read-only)

Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL,

MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase,

Velocis, Unix dbm.



Actualmente php tiene tres áreas de acción:





 Script cliente-servidor: Es el uso principal y tradicional. Hacen falta 3 cosas para hacer una

aplicación de este tipo: el PHP parser (En el módulo del servidor), un servidor web y un

navegador web capaz de reconocer php. La salida que genera un programa php puede verse

en el navegador.

 Escribir script para linea de comandos: Se puede hacer un script php para que ande sin un

servidor o un navegador. Solo hace falta el php parse para ello. Estos scripts son muy ideales

para ejecutarlos regularmente en consolas (unix o windows)

 Escribir aplicaciones de escritorio: Quizás no sea el mejor lenguaje para escribir

aplicaciones de escritorio con una interfaz gráfica pero aquellos programadores expertos en

php pueden usar algunas de sus características para crear aplicaciones escritorio usando hp-

gtk.





No hemos encontrado documentación alguna sobre los posibles módulos que forman php ni en la

documentación oficial ni en la informal sin embargo nos parece interesante dedicar un pequeño

espacio al motor Zend Engine “Cerebro y alma de php” (Según sus propios creadores)



Zend engine 2.0 es el motor que se encuentra detás de las versiones php 4 y php 5. Este motor

provee las características y servicios de los módulos de funciones además de iplementar la sintaxis

del lenguaje.



Zend Engine comenzó en su versión 1.0 siendo el motor de php 3.0 (una versión mas antigua Zend

engine 0.5) era el motor en versiones aún mas anteriores.



En un principio Zend Engine 1.0 el diseño del modelado eran onstancias de objetos con valores.

Esto significaba que cuando los programadores querían desarrollar aplicaciones tales como

asignación de variables y paso de parámetros a funciones los objetos se manipulaban de la misma

forma que otros tipos primitivos como String e Integer. Semánticamente eso significa que todo el

objeto se tiene que copiar. Un aproximamiento a Java obligaba a comenzar a usar referencias en vez

del objeto entero.



Sin embargo, este aproximamiento era imposible con la tecnología actual de Zend Engine 1.0 en su

implementación del modelado de objetos. Uno de los principales problemas es que esa

instanciación y duplicación es muy complicada de controlar. Cambiar ese modelado de objetos

hacía necesario una nueva reimplementación de Zend Engine (Su versión 2.0).



El modelo propuesto en la nueva versión es mucho mas perecido al modelo de java. En genreal,

cuando se crea un objeto el programador obtiene un manipulador que controla el propio objeto y su

instancia. Cuando este manipulador se envía en una función solo el manipulador se envía o se

copia. Nunca el objeto en sí. El resultado es que todos los manipuladores de un mismo objeto

apuntan a ese objeto constituyendo esta una solución consistente y evitando duplicaciones

innecesarias.



Cambios relacionados con el muevo modelado de objetos:



Los parones de diseño basados en objetos como el patrón Factory son cada vez mas y mas

populares y para implementar esos patrones hace falta una buena API orientada a objetos que

facilite interrelacionar unos objetos con otros. Esta mejora (poder pasar en funciones referencias a

objetos) es una clara mejora del nuevo manipulador (handled) Que hace posible pasar un nuevo

objeto como parámetro de una funcion sin muchas consideraciones.



La funcionalidad que da este nuevo modelo es la posibilidad de devolver objetos en funciones de la

misma forma que se devuelven lo tipos primitivos. El objeto devuelto siempre se referirá a un

específico objeto que se ha instanciado sin ningún tipo de copia "detras de las camaras".



Eliminación de referencias de objetos de apoyo:



Muchos desarrolladores PHP se han mostrados interesados ante la posibilidad de poder devolver

referencias a un objeto en las funciones. Con el anterior modelo se podía hacer pero pasando por

varias variables intermedias mientras que ahora se puede hacer directamente:





En Zend Engine 1.0

$tmp =& $object->method();

$tmp =& $tmp->method();

$tmp->method();







En Zend Engine 2.0

$object->method()->method()->method()





El nuevo modelo permite llamar varios métodos en cadena pasándoles simplemente una referencia

este metodo devuelve un manipulador que a su veza es la entrada de otra función,. En java se

permite hacer lo mismo.



Clonado de objetos:



Sin embargo, aunque se puede clonar objetos, a veces es necesario duplicar un objeto aunque no

queremos duplicar todos sus atributos y carácterísticas. Pr ejemplo si tenemos un objeto GTK

windows y un objeto que cuelga de él si creamos un duplicado del objeto tu puedes querer crear una

nueva ventana con las mismas proppiedades y tener un nuevo objeto colgando de esa nueva

ventana.



Cuando los desarrolladores preguntan para crear una nueva copia de un objeto Zend Engine checkea

si el método __clone() está definido o no. Si no se ha creado usa el método __clone() que

implementa por defecto que copiaqrá todas las características del objeto. Si el método está definido

este será el responsable de ver que características se clonan y de que forma.



Destructores:



hoy por hoy no existen mecanismos de destrucción de objetos aunque php tiene soporte para

funciones que permiten el cierre de solicitudes. La solución de Zend Engine es la misma que en la

mayoría de lenguajes orientados a objetos. Cuando la última referencia a un objeto es destruida se

llama al destructor y este borra el objeto de memoria. El usuario, tal y como ocurría con el método

__clone() puede definir su propio método __destruct().



Destrucción de objetos aún referenciados:



Con el anterior modelo de objetos no era posible destruir un objeto is este aún tenía características

asociadas a él. Sin embargo, puede no ser el caso y el programador podría querer eliminar el objeto

a pesar de todo por ejemplo si tenemos un objeto y lo ponemos a nulo $obj = null y este objeto tenía

colgando una referencia a otro objeto ese objeto sigue instanciado pero quizás sea recomentable

eliminarlo a poner a null el objeto del que cuelga eso obligaría a Zend Engine a destruir el objeto a

pesar de aún haber referencias a él. Esta característica la implementa el metodo __delete().



Aunque no se sabía si iba a implementarlo al final los desarrolladores decidieron implementar la

posibilidad de herencia múltiple en Zend Engine 2.0 con lo cual php puede soportar este tipo de

herencia. Lo mismo para la posiblilidad de definir variables privadas, excepciones, sobrecarga y

acceso a elementos de un String.





GWT



Como php es un lenguaje de lado servidor se hace necesario combinarlo con alguna tecnología que

proporciona alguna vista si no se quiere usar ajax puro en la aplicación. Una buena opción es usar

GWT (Google WebTool Kit)



Creado por google en 2006 este framework permite ocultar la complejidad de varios aspectos de la

tecnología ajax. Es compatible ocn varios navegadores y bastante sencillo. Básicamente lo que hace

es crear código Java usando cualquier IDE (como eclipse) y el compilador lo transforma todo en

html y javascript.



Con esta biblioteca los desarrolladores pueden desarrollar aplicaciones java con código ajax.

Cuando la aplicación se desplieda es cuando se hace la traducción a html y javascript. GWT puede

ser ejecutada de dos formas distintas: Modo host y modo web.



En el modo host La aplicación se ejecuta como código bytecode de Java dentro de la Máquina

Virtual de Java (JVM). Este modo es el más usado para desarrollo, soportando el cambio de código

en caliente y el depurado. Modo web (Web mode): La aplicación se ejecuta como código Javascript

y HTML puro, compilado a partir del código Java. Este modo se suele usar para el despliegue de la

aplicación



GWT se compone de 4 módulos en su arquitectura:



 GWT Java-to-JavaScript Compiler: la función de este componente es traducir el código

desarrollado en Java al lenguaje JavaScript. Lo empleamos cuando usamos al GWT en

modo web.

 Hosted Web Browser: este componente ejecuta la aplicación Java sin traducirla a

JavaScript, en modo host usando la máquina virtual de Java.



 JRE Emulation Library: contiene las bibliotecas más importantes de las clases de Java:

java.lang en donde se encuentran las clases fundamentales para poder programar en Java y

un subconjunto de las clases del paquete java.util. Java.lang incluye, entre otras, la clase

java.lang.object que es la clase fundamental de la que heredan o extienden todas las clases

en Java. El resto de los paquetes no están soportados por GWT.



 GWT Web UI Class Library: contiene un conjunto de elementos de interfaz de usuario que

permite la creación de objetos tales como textos, cajas de texto, imágenes y botones.









Las características de GWT son:



Componentes de la interfaz de usuario dinámicos y re-utilizables

Crea un Widget para construir otros. Coloca los Widgets automáticamente en Paneles. Envía tus

Widget a otros desarrolladores en archivos JAR.



RPC realmente fácil

Para comunicarte desde el navegador que lanza tu aplicación con tu servidor web, solamente

necesitas definir clases de Java serializables para las peticiones y respuestas. En producción, GWT

serializa automáticamente las peticiones delnavegador y de-serializa las repuestas desde el servidor

web . El mecanismo de RPC de GWT puede incluso manejar jerarquía de polimorfismo en clases, y

puedes manejar las posibles excepciones.



Administración del historial del navegador

Las aplicaciones en AJAX no necesitan utilizar el botón “atrás” (back) del navegador. Y GWT no es

la excepción, es decir, no es necesario que llames a otras páginas para realizar las diferentes

acciones, ni recargar elnavegador ni nada.

Depuración en tiempo real

Para cuando tu aplicación esté lista, el código de la misma es traducido a JavaScript, pero mientras

lo estás desarrollando este corre sobre una Java virtual machina (JVM). Lo que significa que en la

fase de Desarrollo tienes la posibilidad de depurar tu aplicación con los avanzados sistemas de

debugging y manipulación de excepciones incluidos en IDEs como Eclipse.



Compatibilidad con los navegadores

Tus aplicaciones en GWT serán automáticamente soportadas por navegadores como FireFox,

Internet Explorer, Mozilla, Safari, y Opera sin ningún tipo de operación para la detección de los

mismos, en la mayoría de los casos.



Integración con Junit

Mediante la integración de JUnit en GWT tu puedes probar tus aplicaciones y depurarlas en un

navegador mientras las construyes...incluso, puedes testear llamadas asíncronas a procedimientos

remotos RPC.



Internacionalización

Crea aplicaciones y librerías de Internacionalización rápida y fácilmente.



Interoperability and fine-grained control

Si las librerías de clases de GWT no son suficientes para lo que necesitas, puedes mezclar

JavaScript en el código de tu aplicación usando la interfaz nativa de scripts de Java (JavaScript

Native Interface, JSNI).



GWT es un proyecto de código abierto

Todo el código de GWT está disponible bajo la licencia Apache 2.0.



Además como se basa en tecnología java se puede usar cualqueir IDE que desarrolle en java (por

ejemplo eclipse) para implementarlo. Los errores mas comunes de javaScript son facilmente

detectables mientras se desarrolla la aplicación y no cuando el usuario final lo está ejecutando. Por

último, Los diseños en Java basados en la programación orientada a objetos es fácil de comunicar y

entender, por ende hace la base de tu código AJAX más comprensible con menos documentación.



Como php no es java para integrar las dos tecnologías es necesario un script php llamado json.

(Detalle: En el momento de la investigación inicial no lo encontramos pero recientemente

encontramos un framework llamado Gwtphp que integra ambas tecnologías, sin embargo dado que

finalmente decidimos dejar php para usar java no indagamos mas en este framework)



Sin embargo, tuvimos que desistir de usar esa combinación de tecnologías. Primero, como decíamos

en el último párrafo php no se integra de forma natural con gwt ya que gwt usa tecnología java y

php es otro lenguaje. Para integrarlos hacía falta un “parche” que era el script json. Sin embargo

apenas hay documentación sobre gwt (a parte de la oficial) y menos aún integrándolo con php. Al

final, tuvimos que desistir y en un intento por continuar con php decidimos usar ajax de la cual

había documentación de sobra.



Sin embargo, al final php también cayó por su propio peso. La razón fue que no facilitaba la

implementación del modelo MVC al contrario que otras tecnologías como Spring o Struts.



PHP también salía perdiendo si lo comparábamos con Java. Programar con Java se hace mucho mas

cómodo que programar con php ya que toda la api de java (y es mucho decir TODA la api de java)

está a disposición del programador si decide usar este lenguaje. Php tiene también una api muy

buena pero no se puede comparar con la api de java aunque va mejorando rápidamente.

Otro interesante motivo fue el hecho de que si queríamos aprovecharnos de las ventajas de un

framework (y pronto quisimos aprovecharnos de estas ventajas pues programar toda la aplicación a

pelo se hacía cansado y poco eficiente) lo mas actuales implementan tecnología Java como Struts (1

y 2) y Spring. Usar un framework actual permite implementar en el modelo MVC casi de forma

natural además que ahorra lineas de código automatizando muchos procesos que se usan

habitualmente.



El último motivo fue de comodidad. Estábamos mas familiarizados con el lenguaje JAVA que con

php. La curva de aprendizaje de php es muy pequeña pero la de java a estas alturas para nosotras era

prácticamente inexistente.



Related docs
Other docs by Stariya Js @ B...
How we become literate
Views: 0  |  Downloads: 0
15189
Views: 0  |  Downloads: 0
Enrollment Agreement
Views: 0  |  Downloads: 0
seddc 061009 pm
Views: 0  |  Downloads: 0
Juvanec-KamenNaKamen-eng
Views: 0  |  Downloads: 0
Syllabus Macro Fall 10
Views: 0  |  Downloads: 0
23401
Views: 0  |  Downloads: 0
9-11-RPH-stonefabrication-ord-memo-agss
Views: 0  |  Downloads: 0
Junior_Pre_season_Soccer_League_application
Views: 0  |  Downloads: 0
guide_to_moodle_quizzes
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!