4D v16.3

Soporte de módulos PHP

Inicio

 
4D v16.3
PHP
Soporte de módulos PHP

Soporte de módulos PHP  


 

 

Este anexo detalla la implementación de los módulos PHP en 4D. Se tratan los siguientes temas:

  • Lista de módulos estándar PHP ofrecidos por defecto con el intérprete PHP de 4D
  • Lista de los módulos estándar PHP no retenidos por 4D
  • Modificaciones del archivo php.ini

Nota: si desea instalar módulos adicionales, debe utilizar un intérprete FastCGI-php externo (ver Utilizar otro intérprete PHP y otro archivo php.ini).

La siguiente tabla detalla los módulos PHP ofrecidos por defecto con 4D.

NombreSitio webDescripción
BCMathhttp://php.net/bcCalculadora binaria que maneja números de cualquier tamaño y precisión representados como cadenas.
Ejemplo:
 C_LONGINT($valor;$result)
 $valor:=4
 $ok:=PHP Execute("";"bcpow";$result;$valor;3)
Calendarhttp://php.net/calendarConjunto de funciones que simplifican la conversión entre los diferentes formatos de calendarios. Basado en Julian Day Count.
Ejemplo:
 C_LONGINT($NumeroDeDias)
 $ok:=PHP Execute("";"cal_days_in_month";$NumeroDeDias;1;2;2010)
Ctypehttp://php.net/ctypeFunciones que verifican si un carácter o una cadena pertenecen a una cierta clase de caracteres, dependiendo de la configuración local actual
[tab/]Ejemplo:
  // Verificar que todos los caracteres de la cadena sean signos de puntuación
 C_TEXT($myString)
 $myString:=",.;/"
 $ok:=PHP Execute("";"ctype_punct";$isPunct;$myString)
Date and Timehttp://php.net/datetimeRecuperación de la fecha y hora desde el servidor donde el script PHP se ejecuta
Ejemplo:
  //Cálculo de la hora del amanecer en Lisboa, Portugal
  //Latitud: 38.4 North
  //Longitud: 9 West
  //Zenith ~= 90
  //Time-lag: +1 GMT
 C_TIME($SunriseTime)
 $ok:=PHP Execute("";"date_sunrise";$SunriseTime;0;1;38,41;-9;90;1)
DOM (Document Object Model)http://php.net/domUso de documentos XML vía el API DOM API de PHP 5
Exifhttp://php.net/exifTrabaja con los metadatos de las imágenes.
Fileinfo(*)http://php.net/fileinfoDetección del tipo de contenido y de la codificación de un archivo.
Filterhttp://php.net/filterValidar y filtrar los datos de una fuente no segura, como las entradas de los usuarios.
Ejemplo:
 C_LONGINT($filterId)
 C_TEXT($result)
 $ok:=PHP Execute("";"filter_id";$filterId;"validate_email")
 $ok:=PHP Execute("";"filter_var";$result;"hop@123.com";$filterId)
FTP (File Transfert Protocol)http://php.net/ftpAcceso detallado a un servidor FTP
Hashhttp://php.net/hashMotor de resumen de mensajes (Message Digest). Permite el procesamiento directo o indirecto del mensaje de longitud arbitrario utilizando una variedad de algoritmos
Ejemplo:
 C_TEXT($md5Result)
 $ok:=PHP Execute("";"md5";$md5Result;"esta es mi cadena a la que se le va a hacer hash")
GD (Graphics Draw) Libraryhttp://php.net/gdManipulación de imágenes
Iconvhttp://php.net/iconvConversión de archivos entre diferentes conjuntos de caracteres
JSON (JavaScript Object Notation)http://php.net/jsonImplementación del formato de intercambio de datos JSON
LDAPhttp://php.net/ldapLDAP es un protocolo de acceso a los "servidores de carpetas" que almacenan la información en forma de diagrama de árbol
LibXMLhttp://php.net/libxmlLibrería de funciones y constantes XML
LibXSLThttp://php.net/xslLibrería de funciones de transformación XSL
Multibyte Stringhttp://php.net/mbstringConjunto de funciones de manipulación de cadenas que permite trabajar con las codificaciones multi-bytes o convertir los conjuntos de caracteres.
OpenSSLhttp://php.net/opensslUso de las funciones de OpenSSL para generar y verificar las firmas, cifrar y descifrar los datos.
PCRE (Perl Compatible Regular Expressions)http://php.net/pcreConjunto de funciones que implementan las expresiones racionales utilizando la misma sintaxis y semántica que Perl 5
Ejemplo:
  // Este ejemplo remueve los espacios innecesarios de una cadena
 C_TEXT($myString)
 $myString:="foo       o        bar"
 PHP Execute("";"preg_replace";$myString;"/\\s\\s+/";" ";$myString)
 ALERT($myString)
  //La cadena contiene ahora 'foo o bar' sin espacios duplicados
PDO (PHP Data Objects)http://php.net/pdoInterfaz de acceso a una base de datos. Necesita un driver PDO específico a la base de datos.
PDO_SQLITEhttp://php.net/pdo_sqliteDriver que implementa la interfaz de PHP Data Objects (PDO) para autorizar el acceso de PHP a las bases de datos SQLite 3.
Reflectionhttp://php.net/reflectionAPI de reflexión completa que permite reverse-engineering en las clases, las interfaces, las funciones, los métodos, como también las extensiones
Phar (PHP Archive)http://php.net/pharPermite incluir una aplicación PHP completa en un archivo único llamado "phar" (PHP Archive) para facilitar su instalación y su configuración
Sessionhttp://php.net/sessionSoporte de sesiones PHP
Ejemplo:
Las sesiones se utilizan en las aplicaciones web para conservar el contexto entre cada consulta. Cuando usted llama PHP Execute en 4D, el script PHP puede iniciar una sesión y almacenar todo lo que es útil para conservar como contexto en el array asociado $_SESSION. Si un script PHP utiliza las sesiones, debe obtener el ID de sesión devuelto por PHP utilizando el comando PHP GET FULL RESPONSE y definir antes de cada llamada a PHP Execute utilizando el comando SET ENVIRONMENT VARIABLE.
  // Método "PHP Ejecutar con contexto"
 If(<>PHP_Session#"")
    SET ENVIRONMENT VARIABLE("HTTP_COOKIE";<>PHP_Session)
 End if
 If(PHP Execute($1))
    PHP GET FULL RESPONSE($0;$errorInfos;$errorValues;$headerFields;$headerValues)
    $idx:=Find in array($headerFields;"Set-Cookie")
    If($idx>0)
       <>PHP_Session:=$headerValues{$idx}
    End if
 End if
SimpleXMLhttp://php.net/simpleXMLHerramientas muy simples y fáciles de utilizar para convertir de XML a un objeto que puede ser procesado con sus propiedades y los iteradores de arrays
Socketshttp://php.net/socketsImplementación de una interfaz de bajo nivel con las funciones de comunicación por socket basados en los sockets BSD y ofrece la posibilidad de funcionar también como servidor socket y cliente.
SPL (Standard PHP Library)http://php.net/splColección de interfaces y de clases utilitarias creadas para resolver problemas estándar.
SQLitehttp://php.net/sqliteExtensión para el motor de base de datos SQLite. Este motor puede estar embebido.
SQLite3http://php.net/sqlite3Soporte para las bases de datos SQLite versión 3
Tokenizerhttp://php.net/tokenizerFunciones que permiten escribir sus propias herramientas PHP de análisis o de modificaciones sin tener que tratar con la especificación del lenguaje al nivel lexical
XML (eXtensible Markup Language)http://php.net/xmlAnálisis de los documentos XML
XMLreaderhttp://php.net/xmlreaderAnalizador XML Pull
XMLwriterhttp://php.net/xmlwriterGeneración del flujo y de los archivos al formato XML
Zlibhttp://php.net/zlibLectura y escritura de archivos comprimidos gzip (.gz)
Ejemplo:
 WEB GET HTTP HEADER($names;$values)
 $pos:=Find in array($names;"Accept-Encoding")
 If($pos>0)
    Case of
       :(Position($values{$pos};"gzip")>0)
          WEB SET HTTP HEADER("Content-Encoding: gzip")
          PHP Execute("";"gzencode";$html;$html)
       :(Position($values{$pos};"deflate")>0)
          WEB SET HTTP HEADER("Content-Encoding: deflate")
          PHP Execute("";"gzdeflate";$html;$html)
    End case
 End if
 WEB SEND TEXT($html)
Ziphttp://php.net/zipLectura y escritura de los archivos comprimidos ZIP y los archivos en él

(*) En la versión actual de 4D, estos módulos no están disponibles bajo Windows

Por razones estructurales, los siguientes módulos PHP sólo están disponibles en la plataforma Windows.

NombreSitio webDescripción
COM & .NEThttp://php.net/comCOM (Component Object Model) es uno de los métodos más utilizados por aplicaciones y componentes para la comunicación en plataformas Windows. Adicionalmente, 4D soporta la ejemplificación y creación de ensambles .Net vía la capa COM.
ODBC (Open DataBase Connectivity)http://php.net/odbcAdemás del soporte del ODBC estándar, el ODBC unificado de PHP le da acceso a varias bases de datos que han tomado prestada la semántica de los API ODBC para implementar sus propios API.
WDDX (Web Distributed Data eXchange)http://php.net/wddxFacilita los intercambios de datos entre aplicaciones web vía la web, sin importar la plataforma

Los siguientes módulos PHP no se han implementado en 4D. La columna derecha explica la razón por la cual no se implementó:

NombreSitio webCausa - Solución alternativa
Mimetypehttp://php.net/mime-magicObsoleto - Utilizar Fileinfo
POSIX (Portable Operating System Interface)http://php.net/posixObsoleto
Regular Expression (POSIX Extended)http://php.net/regexObsoleto - Utilizar PCRE
Crackhttp://php.net/crackLicencia restrictiva
ffmpeghttp://ffmpeg-php.sourceforge.net/Licencia restrictiva - Uso ffmpeg en línea de comando con LAUNCH EXTERNAL PROCESS
Image Magickhttp://php.net/manual/book.imagick.phpLicencia restrictiva - Uso GD 2
IMAP (Internet Message Access Protocol)http://php.net/imapLicencia restrictiva - Uso del plug-in integrado 4D Internet Commands
PDF (Portable Document Format)http://php.net/pdfLicencia restrictiva - Utilizar Haru PDF
Mysqlnd (MySQL Native Driver)http://dev.mysql.com/downloads/connector/php-mysqlnd/No pertinente en el entorno 4D
Phar (PHP Archive)http://php.net/pharNo pertinente en el entorno 4D

El archivo "php.ini" a modificar (ver más adelante) puede estar ubicado en la carpeta Resources\php de la aplicación 4D (archivo por defecto) o en la carpeta Resources de la base (archivo personalizado). Para más información sobre este tema, consulte Ejecutar scripts PHP en 4D.

Advertencia: la modificación del archivo "php.ini" debe hacerse con precaución y requiere un buen conocimiento de PHP. Para más información acerca de la configuración de los archivos php.ini personalizados, puede consultar los comentarios que se encuentran en el archivo php.ini ofrecido por 4D.

Nota: si la duración del procesamiento de PHP es relativamente larga (más allá de 30 segundos), por defecto se devuelve un error de tipo 'timeout' en 4D y el procesamiento fallará. En este caso, puede configurar el timeout por defecto con el fin de dedicar más tiempo a la ejecución PHP. Hay dos maneras de hacer esto:

  • definiendo la variable max_execution_time en el archivo "php.ini" (pase un valor en segundos). Atención: esta configuración afecta a todas los scripts
  • llamando el comando set_time_limit (nbSec) en el script de ejecución PHP que está realizando el proceso largo. Pase el tiempo máximo asignado a la ejecución del script PHP en nbSec. Se recomienda utilizar esta configuración, ya que sólo afecta a este script. Por lo general, por razones de seguridad, es preferible conservar un valor de timeout bajo para los scripts PHP.

 
PROPIEDADES 

Producto: 4D
Tema: PHP

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)