Embeber clases de C++ como una extensión de PHP usando Zend

Vamos a ir un poco más lejos que la última vez cuando analizábamos la gran ventaja de usar el lenguaje C++ frente a PHP, por su potencia al estar compilado para la máquina, en lugar de interpretado como PHP, sobre todo a la hora de usar algoritmos que requieren de un tiempo de ejecución mayor, a pesar de que, su orden de ejecución no es muy elevado; al cambiar de tecnología se nota demasiado.

En este caso vamos a echar mano del framework de la empresa Zend que casualmente se utiliza en Magento como base y alguna otra tienda ( soloprecios.es ) también,… este artículo de la zona de programadores de Zend Framework, nos recomienda primero echar un vistazo al manual para escribir una extensión…, en este punto, quizás , os decantéis por olvidaros de Zend y queráis echar un vistazo a la herramienta que usan en FacebookHiHop, sinceramente os recomiendo leer  los informes de las unidades de prueba realizadas por Sebastian Bergmann primero.

En el artículo de paulosman, se explica cómo configurar el makefile (para compilar C++) para que se incluya la extensión de PECL con phpize , además es tan apañao que incluye incluso una macro para hacer la llamada a la función ZEND_GET_MODULE() que necesita el framework para asociar la clase con PHP, tras realizar estos pasos podemos usar :

 php -d"extension=nombre_de_mi_extension.so" -m

para añadir la extensión recién compilada (tras usar phpize y make) a Apache u otro servidor (con Zend) ,ahora que tenemos el esqueleto básico de dicha extensión cargada en el servidor, el sistema de construcción de PHP sabe que tiene que compilar las clases C++ (definidas e implementadas fuera de la extensión) que se sincronizarán por medio de los objetos en C++ de Zend y la función externa ZEND_GET_MODULE(nombre_de_mi_extension)

¿Alguna duda?, aquí estamos…

Algunos consejos para mejorar como arquitecto de aplicaciones web

Leyendo por Internet he encontrado a un experienciado programador llamado Jim Plush que nos habla en su blog (donde demuestra que es un fanático de todo lo Zend) sobre lo que deberíamos conocer para mejorar siendo programadores web [de php o lo que sea].

Vamos a poner estos consejos para mejorar como arquitecto de aplicaciones web en modo lista:

  • Conocer qué ofrecen las versiones de PHP 4 y 5 , conocer las mejoras de la versión 6:
    En la versión 4 existe la posibilidad de especificar en las declaraciones de las funciones y operaciones de clases, las variables por referencia o por valor, esto se hace siempre por referencia a partir de la 5, en esta además se pueden especificar partes públicas y privadas en las clases además de poder usar el patrón Singleton y autocarga de clases, la versión 6 añade Unicode para nombrar clases, variables y funciones de la tabla de símbolos, y eliminan register_globals, magic_quotes y safe_mode, y atención : paso por referencias peligroso!
  • PHP, ASP.NET y Ruby on Rails, cuándo es mejor utilizar uno u otro lenguaje y sus tecnologías directamente asociadas que implican también otra forma de pensar y actuar frente a los problemas que puedan ocasionarse…
    Si vas a construir un sitio que necesite ser escalable y muy grande (una gran red social o una tienda que vaya a sufrir muchísimos cambios) entonces es mejor utilizar RoR, en otro caso, si necesitas un lenguaje con el que construir una aplicación web puedes usar PHP o ASP, el segundo es más fácil para los que les gusta diseñar con un IDE y el primero para los que quieren tener un motor potente de un gestor de contenidos o hacerlo todo desde cero o con un framework de aplicaciones rápidas…
  • Ser capaz de realizar programas con sockets para implementar servicios (ftp, telnet, etc.)…un programa con sockets puede ser un plugin de WordPress que haga fetching (algoritmo capturador de contenidos) desde una URL, esto lo publicaré en futuro no muy lejano, mientras podéis ver un ejemplo de programación con sockets en PHP
  • Programación Orientada a Objetos: POO
    + por qué especificar un método como privado o público
    + conceptos que son útiles de conocer: interfaces, constructores, destructores, private-public-protected, herencia, polimorfismo, métodos estáticos, etc.
  • Bases de datos: conocer qué es la normalización de base de datos y como exportar/importar esquemas de bases de datos con XML (además de saber como comprimir una base de datos con ZIP o GZIP y enviarlo por mail como adjunto)…ejemplo, además es imprescindible antes de empezar a crear las tablas, hacer nuestro diagrama de E/R
  • Patrones de diseño
  • Control de código fuente (SVN, CSV, etc): esto sirve sobre todo para trabajar en equipo y mantener un control sobre los cambios que vamos realizando en nuestro código fuente (usaremos OHLOH)
  • Unit Testing o Pruebas de Unidad
  • Ser parte de la Comunidad, participar en foros, debates, ayudar a extender los conocimientos, contribuir con algún proyecto aunque sólo sea traduciéndolo a tu idioma…OsCommerce, OpenCMS, Joomla, WordPress, etc.
  • Habilidades con JavaScript, conocer los framework JS existentes (JQuery,  Prototype, MooTools, Dojo, ext,etc.) y hacer ejemplos donde arreglar los problemas de compatibilidad entre ellos…
  • Habilidades con CSS (utilizar CSS dinámico): diseñar online el esqueleto XHTML+CSS de una web
  • Conocer el modelo de caja y cómo AJAX  “encaja” perfectamente en esto :)
  • Saber qué es y como se contruye un sistema gestor de contenidos
  • Usabilidad y Arquitectura de la Información
  • Integrar las redes sociales en nuestra aplicación: login, registro, etc, con facebook, gmail, twitter, menéame, (sharethis),etc.
  • Conocer las herramientas de ayuda para el arquitecto integrables en el navegador: firebug ( y derivados ) ,selenium, etc.
  • Pasión por mejorar (ganar amigos e influenciar para generar más conocimientos que compartir)

Para los avanzados que ya han superado todos los puntos anteriores también tenemos los siguientes:

Aplicación web y tecnologías a medida

Esta aplicación web hecha a medida con la plantilla de un diseñador web muestra como se puede adaptar en poco tiempo el contenido de una página a las peticiones de un cliente y un administrador. Todo el contenido es editable: animaciones con JQuery, validaciones, objetos flash incrustables, rutas de miga de pan, direcciones (url’s) amigables (SEO) editables desde la administración, jerarquía de categorías administrable, galería de imágenes, etc.

vídeo en youtube con explicaciones sobre la imagen

El diseño corre a cargo de la empresa Agencia Q4.

Todas las noticias

Últimas entradas desde GranadaPHP – La Comunidad Granadina de Programadores PHP

Desde el Blog del Framework PHP Zenphp.es

Desde mi último proyecto PHP (Plataforma profesional para profesores y estudiantes)

footer
jbelon © | sitemap.xml