2011-02-10 11 views
6

Algunos paquetes php wamp/lamp vienen con extensiones php empaquetadas como php_amf, php_db, php_gd2 y solo tengo que activar la extensión, o instalar la extensión si no es así viene por defectoExtensión PHP vs. biblioteca (y se puede convertir)

Mi pregunta en general es, ¿cómo se diferencian estas extensiones de las bibliotecas? y, en particular, quiero saber, ¿se puede convertir una extensión en una biblioteca que está cargada en el proyecto? el objetivo es llamar a la biblioteca sin instalaciones especiales como necesitan las extensiones de php. A veces, cuando estás en alojamiento compartido, no tienes suficientes privilegios para instalar una nueva extensión.

+0

posible duplicado de http://stackoverflow.com/questions/1567605/php-extension-vs-library-vs-class-when-and-why –

+0

@Shakti Gracias por el enlace, pero la otra pregunta no lo hace específicamente abordar el tema de la conversión. Esto es lo que más me interesa. – sami

+0

+1 pregunta realmente genial! – enam

Respuesta

8

Una extensión de PHP es un programa de C o C++, envuelto alrededor de Zend Engine, que proporciona funciones de PHP y clases dentro de una instalación de PHP.

Una biblioteca PHP es un programa codificado en PHP nativo que puede o no usar extensiones para proporcionar funciones y clases dentro de un programa PHP.

Si bien es posible y bastante fácil (suponiendo que tenga suficientes conocimientos de C++) para transformar una librería PHP a una extensión, lo contrario puede ser un proceso tedioso, debido a que el programa en C++ puede utilizar las funciones y objetos que no están disponibles en PHP.

Es más fácil para convertir una biblioteca PHP a una extensión, porque, obviamente, las funciones de PHP están disponibles en C, de una forma u otra, a partir de PHP se codifica en C. Lo contrario no siempre sin embargo es cierto.

+0

+1 pero me pregunto más sobre la cuestión de convertir una extensión a una biblioteca. ¿Tiene comentarios específicos sobre eso? – sami

+0

@sami: actualizó la respuesta. – netcoder

+0

Pero pensé que PHP es un lenguaje turing completo, lo que significa que cualquier cosa que se haya hecho en C (o en cualquier idioma), PHP también puede hacer – sami

4

Una extensión de PHP está escrita en otro idioma (normalmente C o C++) y amplía PHP para permitirle hacer algo que no se puede hacer en la práctica con PHP. Por ejemplo, la interacción directa con el sistema operativo o servidor web que aún no es compatible con una función incorporada de PHP. Las extensiones también permiten que el código existente escrito en otros idiomas se reutilice desde PHP; aunque la biblioteca podría, en teoría, reescribirse en PHP, con frecuencia no sería práctico hacerlo, y el código de reutilización ofrece más funciones con menos esfuerzo y permite que futuras actualizaciones del código se incorporen con poco o ningún esfuerzo.

Una biblioteca PHP es solo una colección compartida de código PHP, por lo que aunque permite que el código sea reutilizado por más de un desarrollador, no le permite hacer nada que no pueda (teóricamente) escribir código PHP para ti.

En términos de convertir una extensión a una biblioteca: depende de lo que haga la extensión. Si se puede hacer con PHP sin procesar, entonces puedes convertirlo, pero es una reescritura completa de la funcionalidad. También puede hacer que el código sea más lento.

+0

¿A la persona que me votó negativamente le importa explicarme dónde me equivoqué? –

+0

@Tim: No perdoné, pero creo que el comentario de "poder hacer algo que no se puede hacer con PHP" es falso, cualquier cosa que una extensión pueda hacer PHP puede hacer. Es solo que, como extensión, las cosas funcionarán ** significativamente ** mejor. (PHP expone prácticamente todas las llamadas al sistema POSIX, excepto pthreads, y será mejor que no uses hilos en un script PHP de todos modos. –

+1

Posiblemente no les gustó el hecho de que dupliqué la respuesta del netcoder, pero las dos respuestas fueron publicado dentro de 30 segundos el uno del otro. Si estoy en un 90% por una respuesta y aparece otro, generalmente termino lo que estoy escribiendo en lugar de abandonar. –

2

una extensión puede ser convertido en una biblioteca

no de forma automática, no. Una extensión no está escrita en PHP; por lo tanto, no se puede convertir simplemente. Por supuesto, es posible escribir PHP que realiza las operaciones equivalentes, pero tal script sería significativamente más lento que la extensión original porque PHP es relativamente ineficiente para el cálculo (en comparación con los lenguajes nativos/compilados).

Cuestiones relacionadas