4D v16.3

Prise en charge des modules PHP

Accueil

 
4D v16.3
PHP
Prise en charge des modules PHP

Prise en charge des modules PHP  


 

 

Cette annexe détaille l’implémentation des modules PHP dans 4D. Les sujets suivants sont abordés :

  • liste des modules standard PHP fournis par défaut avec l’interpréteur PHP de 4D
  • liste des modules standard PHP non retenus par 4D.
  • modifications du fichier php.ini.

Note : Si vous souhaitez installer des modules supplémentaires, vous devez utiliser un interpréteur fastcgi-php externe (cf. Utiliser un autre interpréteur PHP). 

Le tableau suivant détaille les modules PHP fournis par défaut avec 4D.

NomSite WebDescription
BCMathhttp://php.net/bcCalculateur binaire qui prend en charge des nombres de n’importe quelle taille et précision représentés sous forme de chaînes.
Exemple :
 C_LONGINT($valeur;$resultat)
 $valeur:=4
 $ok:=PHP Execute("";"bcpow";$resultat;$valeur;3)
Calendarhttp://php.net/calendarEnsemble de fonctions simplifiant la conversion entre les différents formats de calendriers. Se base sur le Jour Julien.
Exemple :
 C_LONGINT($NumberOfDays)
 $ok:=PHP Execute("";"cal_days_in_month";$NumberOfDays;1;2;2010)
Ctypehttp://php.net/ctypeFonctions vérifiant si un caractère ou une chaîne appartient à une certaine classe de caractères, suivant la configuration locale courante
Exemple :
  // Vérifier que tous les caractères d'une chaîne sont des signes de ponctuation
 C_TEXT($maChaine)
 $maChaine:=",.;/"
 $ok:=PHP Execute("";"ctype_punct";$isPunct;$maChaine)
Date and Timehttp://php.net/datetimeRécupération de la date et de l'heure depuis le serveur où le script PHP s'exécute
Exemple :
  //calcul de l’heure du lever du soleil à Lisbonne, Portugal
  //Latitude: 38.4 Nord
  //Longitude: 9 Ouest
  //Zénith ~= 90
  //Décalage: +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/domUtilisation de documents XML via l'API DOM de PHP 5
Exifhttp://php.net/exifTravail avec les méta-données des images.
Fileinfo(*)http://php.net/fileinfoDétection du type de contenu et de l'encodage d'un fichier.
Filterhttp://php.net/filterValider et filtrer les données issues de source non sécurisée, comme les entrées des utilisateurs.
Exemple :
 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/ftpAccès détaillé à un serveur FTP
Hashhttp://php.net/hashMoteur d'empreinte numérique. Permet le traitement direct ou incrémental de message de grandeur arbitraire en utilisant une variété d'algorithmes
Exemple :
 C_TEXT($md5Result)
 $ok:=PHP Execute("";"md5";$md5Result;"ceci est ma chaîne a hacher")
GD (Graphics Draw) Libraryhttp://php.net/gdManipulation d’images
Iconvhttp://php.net/iconvConversion de fichiers entre divers jeux de caractères
JSON (JavaScript Object Notation)http://php.net/jsonImplémentation du format d'échange de données JSON
LDAPhttp://php.net/ldapLDAP est un protocole d’accès aux "serveurs de dossiers" stockant les informations sous forme d'arborescence
LibXMLhttp://php.net/libxmlLibrairie de fonctions et constantes XML
LibXSLThttp://php.net/xslLibrairie de fonctions de transformation XSLT
Multibyte Stringhttp://php.net/mbstringEnsemble de fonctions de manipulation de chaînes qui vous permet de travailler avec les encodages multi-octets ou de traduire des jeux de caractères.
OpenSSLhttp://php.net/opensslUtilisation des fonctions de OpenSSL pour générer et vérifier les signatures, sceller (chiffrer) et ouvrir (déchiffrer) les données.
PCRE (Perl Compatible Regular Expressions)http://php.net/pcreEnsemble de fonctions qui implémentent les expressions rationnelles en utilisant la même syntaxe et sémantique que Perl 5
Exemple :
  //Cet exemple supprime les espaces superflus d’une chaîne.
 C_TEXT($maChaine)
 $maChaine:="foo       o        bar"
 PHP Execute("";"preg_replace";$maChaine;"/\\s\\s+/";" ";$maChaine)
 ALERT($maChaine)
  //La chaine contient maintenant  'foo o bar' sans espaces dupliqués
PDO (PHP Data Objects)http://php.net/pdoInterface d’accès à une base de données. Nécessite un driver PDO spécifique à la base de données.
PDO_SQLITEhttp://php.net/pdo_sqlitePilote qui implémente l'interface de PHP Data Objects (PDO) pour autoriser l'accès de PHP aux bases de données SQLite 3.
Reflectionhttp://php.net/reflectionAPI de réflexion complète qui permet de faire du reverse-engineering sur les classes, les interfaces, les fonctions, les méthodes, les extensions
Phar (PHP Archive)http://php.net/pharPermet d’inclure une application PHP complète dans un fichier unique appelé "phar" (PHP Archive) pour faciliter son installation et sa configuration
Sessionhttp://php.net/sessionPrise en charge de sessions PHP
Exemple :
Les sessions sont utilisées dans les applications Web pour conserver le contexte entre chaque requête. Lorsque vous appelez PHP Execute dans 4D, le script PHP peut démarrer une session et stocker tout ce qui est utile à conserver comme contexte dans le tableau associé $_SESSION. Si un script PHP utilise des sessions vous devez obtenir l’ID de session retourné par PHP à l’aide de la commande PHP GET FULL RESPONSE et le définir avant chaque appel à PHP Execute à l’aide de la commande SET ENVIRONMENT VARIABLE
  // Méthode "PHP Exécuter avec contexte"
 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/simpleXMLOutils très simples et faciles à utiliser pour convertir du XML en un objet qui peut être manipulé avec ses propriétés et les itérateurs de tableaux
Socketshttp://php.net/socketsImplémentation d’une interface bas niveau avec les fonctions de communication par socket basées sur les sockets BSD et fournit la possibilité de fonctionner aussi bien sous forme de client que de serveur.
SPL (Standard PHP Library)http://php.net/splCollection d’interfaces et de classes utilitaires créés pour résoudre les problèmes usuels.
SQLitehttp://php.net/sqliteExtension pour le moteur de base de données SQLite. Ce moteur peut être embarqué.
SQLite3http://php.net/sqlite3Support pour les bases de données SQLite version 3
Tokenizerhttp://php.net/tokenizerFonctions vous permettant d’écrire vos propres outils PHP d'analyse ou de modifications sans avoir à vous soucier de la spécification du langage au niveau lexical
XML (eXtensible Markup Language)http://php.net/xmlAnalyse des documents XML
XMLreaderhttp://php.net/xmlreaderAnalyseur XML Pull
XMLwriterhttp://php.net/xmlwriterGénération de flux et de fichiers au format XML
Zlibhttp://php.net/zlibLecture et écriture de fichiers compressés gzip (.gz)
Exemple :
 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/zipLecture et écriture des archives compressées ZIP et des fichiers s’y trouvant

(*) Dans la version actuelle de 4D, ces modules ne sont pas disponibles sous Windows.

Pour des raisons structurelles, les modules PHP suivants ne sont disponibles que sur la plate-forme Windows.

NomSite WebDescription
COM & .NEThttp://php.net/comCOM (Component Object Model) est l'une des méthodes les plus utilisées pour faire communiquer des applications et des composants sur les plates-formes Windows. En outre, 4D prend en charge l’instanciation et la création d’assemblages .Net via la couche COM.
ODBC (Open DataBase Connectivity)http://php.net/odbcEn plus du support de l'ODBC standard, l'ODBC unifié de PHP vous donne accès à diverses bases de données qui ont emprunté la sémantique des API ODBC pour implémenter leur propres API.
WDDX (Web Distributed Data eXchange)http://php.net/wddxFacilite les échanges de données inter-applications Web via le Web, quelle que soit la plate-forme

Les modules PHP suivants n’ont pas été implémentés dans 4D. La colonne de droite fournit la raison de cette non-implémentation :

NomSite WebCause - Solution alternative
Mimetypehttp://php.net/mime-magicObsolète (Deprecated) - Utiliser Fileinfo
POSIX (Portable Operating System Interface)http://php.net/posixObsolète (Deprecated)
Regular Expression (POSIX Extended)http://php.net/regexObsolète (Deprecated) - Utiliser PCRE
Crackhttp://php.net/crackLicence restrictive
ffmpeghttp://ffmpeg-php.sourceforge.net/Licence restrictive - Utiliser ffmpeg en ligne de commande avec LANCER PROCESS EXTERNE
Image Magickhttp://php.net/manual/book.imagick.phpLicence restrictive - Utiliser GD 2
IMAP (Internet Message Access Protocol)http://php.net/imapLicence restrictive - Utiliser le plug-in intégré 4D Internet Commands
PDF (Portable Document Format)http://php.net/pdfLicence restrictive - Utiliser Haru PDF
Mysqlnd (MySQL Native Driver)http://dev.mysql.com/downloads/connector/php-mysqlnd/Non pertinent dans l’environnement 4D
Phar (PHP Archive)http://php.net/pharNon pertinent dans l’environnement 4D

Le fichier "php.ini" à modifier (cf. ci-dessous) peut être situé soit dans le dossier Resources\php de l'application 4D (fichier par défaut) ou dans le dossier Resources de la base (fichier personnalisé). Reportez-vous également à la section Exécuter des scripts PHP dans 4D.

Attention : La modification du fichier "php.ini" doit être effectuée avec précaution et requiert une bonne connaissance de PHP. Pour plus d’informations sur la configuration des fichiers php.ini personnalisés, veuillez consulter les commentaires placés dans le fichier php.ini fourni par 4D. 

Note : Si la durée du traitement PHP est relativement longue (au-delà de 30 secondes), par défaut une erreur de type 'timeout' sera retournée dans 4D et le traitement échouera. Dans ce cas, vous pouvez configurer le timeout par défaut afin d'allouer davantage de temps à l'exécution PHP. Pour cela, vous disposez de deux possibilités :

  • fixer la variable max_execution_time dans le fichier "php.ini" (passez une valeur en secondes). Attention, ce paramétrage affectera tous les scripts.
  • appeler la commande set_time_limit(nbSec) dans le script d'exécution PHP effectuant le traitement long. Passez dans nbSec le délai maximum alloué à l'exécution du script PHP. Ce paramétrage est conseillé car il n'affecte que le script. De manière générale, pour des raisons de sécurité il est préférable de conserver une valeur de timeout réduite pour les scripts PHP.

 
PROPRIÉTÉS 

Produit : 4D
Thème : PHP

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)