PHP Manual

PHP Manual

Stig Sæther Bakken
Alexander Aulbach
Egon Schmid
Jim Winstead
Lars Torben Wilson
Rasmus Lerdorf
Andrei Zmievski
Jouni Ahto

Edited by

Stig Sæther Bakken

Egon Schmid

This file was generated: Mon Dec 22 02:16:31 2003
Go to http://www.php.net/docs.php to get the actual version.

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 the PHP Documentation Group


Manuel PHP

Stig Sæther Bakken
Alexander Aulbach
Egon Schmid
Jim Winstead
Lars Torben Wilson
Rasmus Lerdorf
Andrei Zmievski
Jouni Ahto

Publié par

Damien Seguy
Mehdi Achour

22-12-2003

Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 PHP Documentation Group

Préface
I. Comment commencer
1. Introduction
2. Une introduction à PHP
3. Installation
4. Configuration
II. Référence
5. La syntaxe de base
6. Les types
7. Les variables
8. Les constantes
9. Les expressions
10. Les opérateurs
11. Les structures de contrôle
12. Les fonctions
13. Les classes et les objets
14. Les références
III. Security
15. Security
IV. Caractéristiques
16. Authentification HTTP avec PHP
17. Cookies
18. Gestion des chargements de fichier
19. Utilisation des fichiers à distance
20. Gestion des connexions
21. Connexions persistantes aux bases de données
22. Safe mode
23. Utiliser PHP en ligne de commande
V. Index des fonctions
I. Apache
II. Tableaux
III. Aspell [Obs.]
IV. Nombres de grande taille BCMath
V. Compression Bzip2
VI. Calendrier
VII. Paiement CCVS
VIII. Support COM pour Windows
IX. Classes et Objets
X. ClibPDF
XI. Crack
XII. CURL
XIII. Paiement Cybercash
XIV. Administration Cyrus IMAP
XV. Caractères
XVI. DBA
XVII. Dates et heures
XVIII. dBase
XIX. DBM
XX. dbx
XXI. DB++
XXII. Direct IO
XXIII. Accès aux dossiers
XXIV. DOM XML
XXV. .NET
XXVI. Gestion des erreurs
XXVII. Fonctions de monitorage d'altération de fichiers
XXVIII. FrontBase
XXIX. FilePro
XXX. Système de fichiers
XXXI. Forms Data Format
XXXII. FriBiDi
XXXIII. FTP
XXXIV. Fonctions
XXXV. Gettext (GNU)
XXXVI. GMP
XXXVII. HTTP
XXXVIII. Hyperwave
XXXIX. Hyperwave API
XL. Iconv
XLI. Images
XLII. IMAP
XLIII. Informix
XLIV. InterBase
XLV. Ingres II
XLVI. IRC
XLVII. Java
XLVIII. LDAP
XLIX. Mail
L. Traitement de email
LI. Mathématiques
LII. Chaînes de caractères multi-octets
LIII. MCAL
LIV. Chiffrage mcrypt
LV. MCVE (Paiement)
LVI. Hash
LVII. Mimetype
LVIII. Microsoft SQL Server
LIX. Ming pour Flash
LX. Fonctions diverses
LXI. mnoGoSearch
LXII. mSQL
LXIII. MySQL
LXIV. Extension MySQL améliorée
LXV. Sessions Mohawk
LXVI. Muscat
LXVII. Réseau
LXVIII. Fonctions de contrôle d'écran de terminal
LXIX. Lotus Notes
LXX. Netscape Server API
LXXI. ODBC unifié
LXXII. Aggregation d'objets/Composition de fonctions
LXXIII. Oracle 8
LXXIV. OpenSSL
LXXV. Oracle
LXXVI. Ovrimos SQL
LXXVII. Bufferisation de sortie
LXXVIII. Overload
LXXIX. PDF
LXXX. Paiement par Verisign
LXXXI. Options PHP et informations
LXXXII. POSIX
LXXXIII. PostgreSQL
LXXXIV. Contrôle des processus
LXXXV. Exécution de programmes externes
LXXXVI. Impression
LXXXVII. Pspell
LXXXVIII. Readline (GNU)
LXXXIX. Recode (GNU)
XC. Expressions régulières compatibles Perl
XCI. qtdom
XCII. Expressions régulières
XCIII. Sémaphores et gestion de la mémoire partagée
XCIV. SESAM
XCV. Sessions
XCVI. Mémoire partagée
XCVII. SQLite
XCVIII. Shockwave Flash
XCIX. SNMP
C. Socket
CI. Flux
CII. Chaînes de caractères (Strings)
CIII. Sybase
CIV. Tidy
CV. Analyseur de code PHP
CVI. URL
CVII. Variables
CVIII. vpopmail
CIX. API windows
CX. WDDX
CXI. Analyseur syntaxique XML
CXII. XML-RPC
CXIII. XSLT
CXIV. YAZ
CXV. NIS
CXVI. Accès aux fichiers Zip (Lecture seule)
CXVII. Compression Zlib
VI. Zend API
24. Overview
25. Extension Possibilities
26. Source Layout
27. PHP's Automatic Build System
28. Creating Extensions
29. Using Extensions
30. Troubleshooting
31. Source Discussion
32. Accepting Arguments
33. Creating Variables
34. Duplicating Variable Contents: The Copy Constructor
35. Returning Values
36. Printing Information
37. Startup and Shutdown Functions
38. Calling User Functions
39. Initialization File Support
40. Where to Go from Here
41. Reference: Some Configuration Macros
42. API Macros
VII. PHP API: Interface pour les extensions
43. API de flux les auteurs d'extensions
VIII. FAQ : Foire Aux Questions
44. General Information
45. Mailing lists
46. Obtenir PHP
47. Database issues
48. Installation
49. Build Problems
50. Utiliser PHP
51. PHP and HTML
52. PHP and COM
53. PHP and other languages
54. Migrer de PHP 2 à PHP 3
55. Migrer de PHP 3 à PHP 4
56. Questions diverses
IX. Appendices
A. Histoire de PHP
B. Migration de PHP 3.0 à PHP 4.0
C. Migration de PHP/FI 2.0 à PHP 3.0
D. Débuggeur PHP
E. Développement PHP
F. Liste d'alias
G. Mots réservés en PHP
H. Types des ressources PHP
I. Liste des protocoles supportés
J. Liste des modes de transports de sockets disponibles
K. Comparaison de types en PHP
L. Liste des token de l'analyseur
M. A propos du manuel
N. Open Publication License
O. Index des fonctions
P. Eléments Absents
X. Version HTML Help
57. About This Edition
58. Using PHP Manual CHM Edition
59. The Full Text Search
60. Specialities of this Edition
61. Integrating the PHP Manual
62. Skin development
63. CHM Edition Credits

Suivant
Préface


Préface

PHP, est un acronyme récursif, qui signifie "PHP: Hypertext Preprocessor" : c'est un langage de script HTML, exécuté coté serveur. L'essentiel de sa syntaxe est emprunté aux langages C, Java et Perl, avec des améliorations spécifiques. L'objet de ce langage est de permettre aux développeurs web d'écrire des pages dynamiques rapidement.

Ce manuel est essentiellement une référence des fonctions, mais il contient aussi des informations de référence sur le langage, des explications sur les fonctionnalités principales de PHP et diverses informations supplémentaires.

Vous pouvez télécharger ce manuel dans divers formats, sur le site officiel de http://www.php.net/docs.php, et sur le site de http://www.nexen.net/. Les fichiers en téléchargement sont mis à jour au fur et à mesure des modifications. Plus d'informations sur ce manuel sont disponibles dans la section A propos du manuel.

Voir aussi PHP History.

Précédent | Sommaire | Suivant
Manuel PHP |  | Comment commencer


Comment commencer

Manuel PHP
Précédent Suivant

I. Comment commencer

Table des matières
1. Introduction
2. Une introduction à PHP
3. Installation
4. Configuration

Précédent | Sommaire | Suivant
Préface |  | Introduction


Introduction

Manuel PHP
Précédent Suivant

Chapitre 1. Introduction

Table des matières
Qu'est ce que PHP?
Que peut faire PHP?

Qu'est ce que PHP?

PHP (officiellement, ce sigle est un acronyme récursif pour "PHP: Hypertext Preprocessor") est un langage de scripts généraliste et Open Source, spécialement conçu pour le développement d'applications web. Il peut être intégré facilement au HTML.

Réponse simple et claire, mais qu'est ce que cela veut dire? Un exemple :

Exemple 1-1. Exemple d'introduction

<html>
    <head>
        <title>Exemple</title>
    </head>
    <body>

        <?php
        echo "Bonjour, je suis un script PHP!";
        ?>

    </body>
</html>

Il est à noter la différence avec les autres scripts CGI écrits dans d'autres langages tels que le Perl ou le C : Au lieu d'écrire un programme avec de nombreuses lignes de commandes afin d'afficher une page HTML, vous écrivez une page HTML avec du code inclus à l'intérieur afin de réaliser une action précise (dans ce cas là, afficher du texte). Le code PHP est inclus entre une balise de début et une balise de fin qui permettent au serveur web de passer en "mode PHP".

Ce qui distingue le PHP des langages de script comme le Javascript est que le code est exécuté sur le serveur. Si vous avez un script similaire sur votre serveur, le client ne reçoit que le résultat du script, sans aucun moyen d'avoir accès au code qui a produit ce résultat. Vous pouvez configurer votre serveur web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP. Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites dynamiquement des pages statiques.

Le grand avantage de PHP est qu'il est extrêmement simple pour les néophytes, mais offre des fonctionnalités avancées pour les experts. Ne craignez pas de lire la longue liste de fonctionnalités PHP. Vous pouvez vous plonger dans le code, et en quelques instants, écrire des scripts simples.

Bien que le développement de PHP soit orienté vers la programmation pour les sites web, vous pouvez en faire bien d'autres usages. Lisez donc la section suivante : Que peut faire PHP?.

Précédent | Sommaire | Suivant
Comment commencer | Niveau supérieur | Que peut faire PHP?


Que peut faire PHP?

Tout. PHP est principalement conçu pour servir de langage de script coté serveur, ce qui fait qu'il est capable de réaliser tout ce qu'un script CGI quelconque peut faire, comme collecter des données de formulaire, générer du contenu dynamique, ou gérer des cookies. Mais PHP peut en faire bien plus.

Il y a trois domaines différents où PHP peut s'illustrer.

  • Langage de script coté serveur. C'est l'utilisation la plus traditionnelle, et aussi le principal objet de PHP. Vous aurez besoin de trois composants pour l'exploiter : un analyseur PHP (CGI ou module serveur), un serveur web et un navigateur web. Vous devez exécuter le serveur web en corrélation avec PHP. Vous pouvez accéder au programme PHP avec l'aide du navigateur web. Voyez la section d'installation pour plus d'informations.

  • Langage de programmation en ligne de commande. Vous pouvez écrire des scripts PHP et l'exécuter en ligne de commande, sans l'aide du serveur web et d'un navigateur. Il vous suffit de disposer de l'exécutable PHP. Cette utilisation est idéale pour les scripts qui sont exécutés régulièrement (avec un cron sous Unix ou Linux), ou un Task Scheduler (sous Windows). Ces scripts peuvent aussi être utilisés pour réaliser des opérations sur des fichiers texte. Voyez la section sur l'utilisation de PHP en ligne de commande pour plus d'informations.

  • Ecrire des applications graphiques. PHP n'est probablement pas le meilleur langage pour écrire des applications graphiques, mais si vous connaissez bien PHP et que vous souhaitez exploiter des fonctionnalités avancées dans vos applications clientes, vous pouvez utiliser PHP-GTK pour écrire de tels programmes. Vous avez aussi la possibilité d'écrire des applications très portables avec ce langage. PHP-GTK est une extension de PHP, qui n'est pas fournie dans la distribution de base. Si vous êtes interessé par PHP-GTK, visitez son site web.

PHP est utilisable sur la majorité des systèmes d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX, Solaris et OpenBSD), Microsoft Windows, Mac OS X, RISC OS et d'autres encore. PHP supporte aussi la plupart des serveurs web actuels : Apache, Microsoft Internet Information Server, Personal Web Server, Netscape et iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd et beaucoup d'autres encore. Pour la majorité des serveurs web, PHP fonctionne comme module, et pour d'autres, il fonctionne comme exécutable CGI.

Avec PHP vous avez le choix de votre système d'exploitation et de votre serveur web. De plus, vous avez aussi le choix d'utiliser la programmation procédurale ou objet, ou encore un mélange des deux. Bien que le support de la couche objet ne soit pas très standard, de nombreuses librairies et applications d'envergure (y compris la bibliothèque PEAR) sont écrites en langage objet.

Avec PHP, vous n'êtes pas limités à la production de code HTML. Les capacités de PHP lui permettent de générer aussi bien des images, des fichiers PDF, des animations Flash (avec l'aide des librairies libswf et Ming), générés à la volée. Vous pouvez aussi générer facilement du texte, du code XML ou XHTML. PHP génère tous ces fichiers, et les sauve dans le système de fichier, ou bien les envoie directement au navigateur web.

Une des grandes forces de PHP est le support de nombreuses bases de données. Ecrire une page web exploitant une base de données est extrêmement simple. Les bases de données suivantes sont toutes supportées par PHP :

Adabas D | Ingres | Oracle (OCI7 et OCI8)
dBase | InterBase | Ovrimos
Empress | FrontBase | PostgreSQL
FilePro (lecture seule) | mSQL | Solid
Hyperwave | Direct MS-SQL | Sybase
IBM DB2 | MySQL | Velocis
Informix | ODBC | Unix dbm

Il existe aussi des couches d'abstraction de base de données comme DBX qui vous permettent de vous connecter de manière transparente à toute base de données supportée par cette extension. De plus, PHP supporte ODBC, ce qui vous permet de vous connecter à toute autre base de données qui supporte ce standard.

PHP supporte de nombreux protocoles comme par exemple LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (sous Windows) et encore d'autres. Vous pouvez ouvrir des sockets réseau, et intéragir avec n'importe quel autre protocole. PHP supporte le format complexe WDDX, qui permet de communiquer entre tous les langages web. En terme d'interconnexion, PHP supporte aussi les instanciations d'objets Java, et les utilise de manière transparente comme objets intégrés. Vous pouvez aussi exploiter les objets distants avec CORBA.

PHP dispose de fonctionnalités extrêmement utiles pour le traitement de texte, allant des expressions régulières POSIX étendues ou Perl aux traitements des fichiers XML, avec les standards SAX et DOM. Vous pouvez utiliser les transformations XSLT.

En commerce électronique, vous trouverez des outils de paiement intégrés comme Cybercash, CyberMut, VeriSign Payflow Pro et CCVS, pour réaliser des paiements en ligne.

Enfin, PHP dispose d'extensions très pratiques comme le moteur de recherche mnoGoSearch, la passerelle avec IRC, des outils de compression (gzip, bz2) et de conversion calendaire, de traduction...

Comme vous le voyez, cette page n'est pas assez grande pour lister toutes les puissantes fonctionnalités de PHP. Lisez la section sur l'installation de PHP et étudiez la liste de fonctions pour avoir plus de détails sur toutes ces technologies.

Précédent | Sommaire | Suivant
Introduction | Niveau supérieur | Une introduction à PHP


Une introduction à PHP

Manuel PHP
Précédent Suivant

Chapitre 2. Une introduction à PHP

Table des matières
Le nécessaire
Votre première page PHP
Trucs pratiques
Utiliser un formulaire
Utiliser des codes anciens avec les nouvelles versions de PHP
Et après?

Dans cette section, nous voulons illustrer les principes de base de PHP dans une courte introduction. Ce chapitre traite uniquement de créations de pages web dynamiques avec PHP, laissant de coté temporairement les autres possibilités de PHP. Voyez la section Ce que peut faire PHP pour plus d'informations.

Les pages web qui exploitent PHP sont traitées comme des pages HTML standards, et vous pouvez les créer, éditer et effacer tout comme vous le faites normalement avec des pages HTML classiques.

Le nécessaire

Dans ce tutoriel, nous présumons que vous avez un serveur web avec le support PHP activé, et que les fichiers terminés par l'extension .php sont traités par PHP. Sur la plupart des serveurs, c'est la configuration par défaut, mais n'hésitez pas à interroger votre administrateur système en cas de doute. Si votre serveur web supporte PHP, vous n'avez rien à faire. Simplement, créez un dossier, puis créez un fichier texte, avec l'extension .php : le serveur va automatiquement l'exécuter avec PHP. Il n'y a pas de compilation, ou d'installation compliquée. Gardez en tête que les fichiers sont comparables à des fichiers HTML, dans lequels vous allez utiliser des balises magiques, qui feront beaucoup de choses pour vous.

Supposons que vous souhaitiez économiser du temps en ligne et travailler localement. Dans ce cas, vous devez installer un serveur web comme Apache, et bien sur PHP. Vous souhaiterez aussi installer une base de données comme par exemple MySQL. Vous pouvez installer ces logiciels individuellement, ou bien avec des installeurs qui prennent en charge l'ensemble de l'installation en quelques clics. Il est facile de configurer un serveur web avec le support de PHP sur n'importe quel système d'exploitation, y compris Linux et Windows. Sous Linux, vous pouvez aussi trouver des commandes comme rpmfind, très pratique pour rechercher les paquets pré compilés.

Précédent | Sommaire | Suivant
Que peut faire PHP? | Niveau supérieur | Votre première page PHP


Votre première page PHP

Créez un fichier appelé bonjour.php dans votre dossier web avec le contenu suivant :

Exemple 2-1. Notre premier script PHP : bonjour.php

<html>
 <head>
  <title>Test PHP</title>
 </head>
 <body>
 <?php echo "Bonjour le monde<p>"; ?>
 </body>
</html>

Utilisez votre navigateur pour accéder au fichier via votre serveur web, en ajoutant le nom de fichier "/bonjour.php". Si vous développez localement, votre URL ressemblera à http://localhost/bonjour.php ou encore http://127.0.0.1/bonjour.php mais cela dépend de la configuration de votre serveur web. Bien que cela soit hors du contexte de ce tutoriel, étudiez DocumentRoot et ServerName dans le fichier de configuration de votre serveur web (sous Apache, c'est httpd.conf). Si ceci est configuré correctement, le fichier sera analysé par PHP et le résultat suivant sera affiché :

<html>
 <head>
  <title>Test PHP</title>
 </head>
 <body>
 Bonjour le monde<p>
 </body>
</html>

Notez que cela n'est pas un script CGI. Ce fichier n'a nul besoin d'exécutable ou de configuration particulière. C'est vraiment comme un fichier HTML classique, qui comporte des balises spéciales, capables de réaliser des tâches particulières.

Ce programme est extrêmement simple et vous n'avez pas besoin de PHP pour créer une page web comme ceci. Elle ne fait qu'afficher Bonjour le monde, grâce à la fonction echo() de PHP.

Si vous avez essayé cet exemple, et qu'il n'a rien affiché de spécial, ou même qu'un dialogue a surgi pour vous proposer de le télécharger, ou encore vous avez vu le code tel que nous l'avons écrit dans le fichier, alors votre serveur web ne supporte probablement pas le PHP. Demandez à votre administrateur de l'activer pour vous, en utilisant le chapitre Installation. Si vous voulez développer des scripts PHP localement, voyez la section de téléchargements. Vous pouvez développer en PHP, localement, sur tous les systèmes d'exploitation. N'oubliez pas d'installer aussi un serveur web approprié. Si le problème persiste, n'hésitez pas à utiliser l'une des options de support.

Le point important de cet exemple était de montrer le format des balises spéciales PHP. Nous avons utilisé ici <?php pour indiquer le début de la balise PHP. Puis, nous avons introduit les commandes PHP et refermé les balises PHP avec ?>. Vous pouvez passer du mode PHP au mode HTML et vice-versa, de cette manière, et à votre guise.

Une note sur les éditeurs de texte : Il existe de nombreux éditeurs de texte et environnements de développement (IDE) que vous pouvez utiliser pour créer, éditer et gérer vos applications PHP. Une liste partielle de ces outils est entretenue à l'adresse PHP Editor's List. Si vous voulez recommander un éditeur, rendez donc une visite à cette page, et demandez au webmestre d'ajouter votre éditeur.

Une note sur les traitements de texte : Les traitements de texte tels que StarOffice Writer, Microsoft Word et Abiword sont de très mauvais choix pour éditer des scripts PHP.

Si vous voulez utiliser l'un d'entre eux, malgré tout, pour tester vos scripts, vous devez vous assurer que vous sauvez les fichiers au format texte seul (PLAIN TEXT) : sinon, PHP ne sera pas capable de lire et d'exécuter ces scripts.

Une note sur le Notepad de Windows : Si vous écrivez vos scripts PHP avec Windows Notepad, vous devez vous assurer que vos fichiers sont sauvés avec l'extension .php (Notepad ajoute automatiquement une extension .txt à vos fichiers, à moins que vous ne preniez l'une des mesures suivantes :

Lorsque vous sauvez un fichier, et que vous êtes invité à lui donner un nom, placez le nom du fichier entre guillemets (i.e. "hello.php").

Ou bien, vous pouvez cliquer dans le menu 'Documents texte' du dialogue de sauvegarde, et choisir l'option "Tous les fichiers". Vous pourrez alors saisir le nom de votre fichier sans les guillemets.

Précédent | Sommaire | Suivant
Une introduction à PHP | Niveau supérieur | Trucs pratiques


Trucs pratiques

Réalisons maintenant quelque chose de plus puissant. Nous allons vérifier le type de navigateur que le visiteur de notre site utilise. Pour cela, nous allons accéder aux informations que le navigateur du visiteur nous envoie, lors de sa requête HTTP. Cette information est stockée dans une variable. Les variables sont faciles à repérer, car elles commencent toutes par un signe dollar. La variable qui nous interesse ici est is $_SERVER["HTTP_USER_AGENT"].

Attention pour les auto-globales de PHP : $_SERVER est une variable spéciale de PHP, qui contient toutes les informations relatives au serveur web. C'est une variable réservée de PHP, et une auto-globale. Reportez-vous aux pages du manuel traitant des Auto-globales (aussi connues sous le nom de super-globales). Ces variables spéciales ont été introduites en PHP 4.1.0. Auparavant, il fallait utiliser les variables $HTTP_*_VARS, comme par exemple $HTTP_SERVER_VARS. Bien qu'obsolètes, ces variables existent toujours.

Pour afficher cette variable, nous pouvons simplement faire :

Exemple 2-2. Afficher le contenu d'une variable (élément de tableau)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Un résultat possible du script pourra alors être :
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Il y a de nombreux types de variables disponibles en PHP. Dans l'exemple ci-dessus, nous avons affiché un élément de Tableau (Array). Les tableaux peuvent être très utiles.

$_SERVER est juste une variable qui est automatiquement disponible dans votre script. Une liste de toutes les variables qui sont rendues disponibles est fournie dans la section Variables réservées. Vous pouvez aussi en obtenir une liste complète en créant un fichier comme ceci :

Exemple 2-3. Afficher toutes les variables prédéfinies phpinfo()

<?php phpinfo(); ?>

Lorsque vous chargez cette page dans votre navigateur, vous allez découvrir une page pleine d'informations sur PHP, ainsi qu'une liste des variables qui sont disponibles.

Vous pouvez ajouter plusieurs commandes PHP dans une balise PHP, et créer de petits blocs de code qui réalisent des opérations plus complexes qu'un simple affichage. Par exemple, si nous voulons vérifier que le navigateur est bien de la famille des Internet Explorer, nous pouvons faire cela :

Exemple 2-4. Exemple utilisant les structures de contrôle et les fonctions

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo "Vous utilisez Internet Explorer<br />";
}
?>

Le résultat de ce script, si vous utilisez Internet Explorer, sera :
Vous utilisez Internet Explorer<br />

Ici, nous introduisons plusieurs nouveaux concepts. Nous avons une structure if. Si vous êtes familier avec les syntaxes de base du langage C, cela ne vous surprendra pas. Si vous ne connaissez pas assez le langage C ou un autre langage où la syntaxe est similaire à celle ci-dessus, il vaudrait mieux que vous lisiez une introduction à PHP, et assimiliez les premiers chapitres, ou bien lisez le chapitre consacré à la référence du langage. Vous pouvez trouver une liste de livres PHP à http://www.php.net/books.php.

Le second concept que nous avons introduit est la fonction strstr(). strstr() est une fonction intégrée à PHP, qui recherche la présence d'une chaîne dans une autre. Dans notre cas, nous avons recherché la chaîne "MSIE" dans la chaîne $_SERVER["HTTP_USER_AGENT"]. Si cette chaîne est trouvée, la fonction retourne TRUE et sinon, FALSE. Si elle retourne TRUE, la commande if reçoit TRUE et le code entre accolades {} est exécuté. N'hésitez pas à expérimenter d'autres exemples, à l'aide de if, else, et d'autres fonctions comme strtoupper() et strlen(). Chaque page de la documentation contient aussi des exemples.

Nous pouvons aussi progresser et vous montrer comment utiliser le mode PHP, au milieu du code HTML :

Exemple 2-5. Passer du mode PHP au mode HTML et vice-versa

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr a retourn&eacute; TRUE</h3>
<center><b>Vous utilisez Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr a retourn&eacute; FALSE</h3>
<center><b>Vous n'utilisez pas Internet Explorer</b></center>
<?php
}
?>

Un exemple de résultat obtenu dans ce script est :
<h3>strstr a retourn&eacute; TRUE</h3>
<center><b>Vous utilisez Internet Explorer</b></center>

Au lieu d'utiliser une commande echo(), pour afficher du texte, vous pouvez utiliser du code HTML pur. Le point important a noter ici et que la logique de programmation est conservée. Seul un des deux blocs HTML sera affiché, suivant que le navigateur utilise ou pas Internet Explorer.

Précédent | Sommaire | Suivant
Votre première page PHP | Niveau supérieur | Utiliser un formulaire


Utiliser un formulaire

L'un des points forts de PHP est sa capacité à gérer les formulaires. Le concept de base qui est important à comprendre est que tous les champs d'un formulaire seront automatiquement disponibles dans le script PHP d'action. Lisez le chapitre du manuel concernant les variables d'origine externe à PHP pour plus d'informations et d'exemples sur comment utiliser les formulaires. Voici un exemple de formulaire HTML :

Exemple 2-6. U*n simple formulaire HTML

<form action="action.php" method="POST">
 Votre nom : <input type="text" name="nom" />
 Votre age : <input type="text" name="age" />
 <input type="submit" value="OK">
</form>

Il n'y rien de particulier dans ce formulaire. Il est en HTML pur, sans aucune configuration particulière. Lorsque le visiteur remplit le formulaire, et clique sur le bouton d'envoi, le fichier action.php est appelé. Dans ce fichier, vous pouvez écrire le script suivant :

Exemple 2-7. Afficher des données issues d'un formulaire

Bonjour, <?php echo $_POST["nom"]; ?>.
Tu as <?php echo $_POST["age"]; ?> ans.

Voici le résultat que vous pourriez obtenir, selon les valeurs que vous avez saisies :
Bonjour Jean.
Tu as 29 ans.

Le fonctionnement du script devrait être évident. Il n'y a rien de plus simple. Les variables $_POST["nom"] et $_POST["age"] sont automatiquement créés par PHP. Un peu plus tôt dans ce tutorial, nous avons utilisé la variable $_SERVER, une auto-globale. Maintenant, nous avons introduit une autre auto-globale $_POST qui contient toutes les données envoyées par la méthode POST. Notez que dans notre formulaire, nous avons choisi la méthode POST. Si vous avions utilisé la méthode GET alors notre formulaire aurait placé ses informations dans la variable $_GET, une autre auto-globale. Vous pouvez aussi utiliser la variable $_REQUEST, si vous ne souhaitez pas vous embarrasser de la méthode utilisée. Elle contient un mélange des données de GET, POST, COOKIE et FILE. Voyez aussi la fonction import_request_variables().

Précédent | Sommaire | Suivant
Trucs pratiques | Niveau supérieur | Utiliser des codes anciens avec les nouvelles versions de PHP


Utiliser des codes anciens avec les nouvelles versions de PHP

Maintenant que PHP est devenu un langage de script populaire, il existe de nombreuses ressources qui vous proposent des portions de code que vous pouvez réutiliser dans vos codes. Pour la plupart, les dévelopeurs de PHP ont tâché d'assurer la compatibilité ascendante, ce qui fait que de nombreux scripts écrits pour les anciennes versions sont aussi valables pour les nouvelles versions de PHP, idéalement sans modifications. En pratique, certaines modifications doivent être apportées.

Les deux modifications récentes les plus importantes qui affectent les anciens codes sont :

  • Les anciennes variables $HTTP_*_VARS (qui devaient être indiquées comme globales pour être utilisées dans une fonction ou une méthode) sont obsolètes. Les nouveaux tableaux auto-globaux ont été introduits en PHP 4.1.0. Ce sont les variables suivantes : $_GET, $_POST, $_FILES, $_COOKIE, $_SERVER, $_ENV, $_REQUEST et $_SESSION. Les vieux tableaux $HTTP_*_VARS, tels que $HTTP_POST_VARS existent toujours depuis PHP 3. Depuis PHP 5.0.0, les tableaux prédéfinis PHP peuvent être désactivés avec l'option de configuration register_long_arrays.

  • Les variables externes ne sont plus enregistrées dans l'environnement variable par défaut. En d'autres termes, depuis PHP 4.2.0, la directive PHP register_globals vaut off par défaut dans le php.ini. La méthode recommandée pour accéder à ces valeurs, est via les tableaux auto-globaux mentionnés ci-dessus. Les anciens scripts, livres et tutoriaux continuent de considérer que cette directive devrait être à on. Lorsque cette directive est à on, vous pouvez utiliser la variable $id, si l'URL http://www.exemple.com/foo.php?id=42 a été appelée. Quelle que soit la valeur de la directive, $_GET['id'] est toujours disponible.

Pour plus de détails sur ces modifications, reportez-vous à variables prédéfinies.

Précédent | Sommaire | Suivant
Utiliser un formulaire | Niveau supérieur | Et après?


Et après?

Avec ce que vous savez, vous êtes maintenant capable de comprendre l'essentiel de la documentation PHP, et les différents scripts d'exemple disponibles dans les archives. Vous pouvez aussi trouver d'autres exemples dans la section liens ("links", en anglais) du site http://www.php.net/links.php.

Différentes présentations des capacités de PHP sont disponibles sur le site des conférences PHP : http://conf.php.net/ ou http://talks.php.net/.

Précédent | Sommaire | Suivant
Utiliser des codes anciens avec les nouvelles versions de PHP | Niveau supérieur | Installation


Installation

Manuel PHP
Précédent Suivant

Chapitre 3. Installation

Table des matières
Considérations générales sur l'installation
Installation sous HP-UX
Installation sous Linux/Unix
Installation sous Unix et Mac OS X
Installations Unix/OpenBSD
Installation sous Solaris
Installation sous UNIX
Installation sous Windows
CGI/ Installation pour exécution en ligne de commande
Installation avec le serveur Apache
Installation avec les serveurs Apache 2.0
Installation sur le serveur Caudium
Installation avec les serveurs fhttpd
Installation avec les serveurs IIS/PWS
Installation sous Netscape et iPlanet Enterprise Serveur
Installation pour les serveurs OmniHTTPd
Installation Oreilly Website Pro Server
Serveurs Sambar
Installation Xitami
Autres serveurs web
Des problèmes?
Liste des options de configuration diverses

Considérations générales sur l'installation

Avant d'installer PHP, vous devez savoir ce que vous voulez faire de PHP. Il y a trois cas d'utilisation que vous a décrit la section Que peut faire? section:

  • Scripts web

  • Scripts de ligne de commande

  • Application à interface graphique

Pour la première tâche, qui est de loin la plus répandue, vous avez besoin de trois choses : PHP lui-même, un serveur web et un navigateur. Vous avez probablement un navigateur, et en fonction de votre système d'exploitation, vous pouvez aussi disposer d'un serveur Web (i.e. Apache sous Linux ou IIS sous Windows). Vous pouvez aussi louer un espace à une société. De cette façon, vous n'aurez pas à mettre en place PHP, mais uniquement à écrire vos scripts, les charger sur le serveur et voir le résultat sur votre navigateur.

Si vous installez PHP et le serveur par vous-même, vous avez deux choix. Soit sous la forme d'un module du serveur web (via une interface directe appelée SAPI). Les serveurs qui supportent cette solution comptent notamment Apache, Microsoft Internet Information Server, Netscape et iPlanet. D'autres serveurs ont aussi le support ISAPI, l'interface de module Microsoft (OmniHTTPd par exemple). Si PHP ne supporte pas l'interface de module de votre serveur web, vous pouvez toujours l'utiliser comme processeur CGI. Cela signifie que vous devez configurer votre serveur pour qu'il utilise l'exécutable PHP (php.exe sous Windows), pour qu'il traite les fichiers PHP sur le serveur.

Si vous souhaitez aussi utiliser PHP en ligne de commande (écrire des scripts de génération d'image hors ligne, par exemple, ou bien traiter des textes en fonctions d'information que vous leur passeriez), vous aurez besoin d'un exécutable PHP. Pour plus de détails, lisez la section écrire des applications PHP en ligne de commande. Dans ce cas, vous n'aurez pas besoin de serveur web, ni de navigateur.

Avec PHP, vous pouvez aussi écrire des interfaces graphiques clientes, en utilisant l'extension PHP-GTK. C'est une approche complètement différente de l'écriture des pages web, car vous ne générerez pas de fichiers HTML, mais vous aurez à gérer des fenêtres et des objets. Pour plus de détails sur PHP-GTK, voyez le site officiel. PHP-GTK n'est pas inclus dans la distribution officielle de PHP.

A partir de maintenant, cette section décrit l'installation de PHP avec un serveur web sous Unix et Windows, sous forme de module ou d'exécutables CGI.

Les codes source et les exécutables compilés de certains OS (y compris Windows), sont disponibles à http://www.php.net/downloads.php. Nous recommandons l'utilisation du miroir le plus proche pour accélérer les chargements.

Précédent | Sommaire | Suivant
Et après? | Niveau supérieur | Installation sous HP-UX


Installation sous HP-UX

Cette section contient les notes et conseils d'installation de PHP sur les distributions HP-UX. (Fournis par paul_mckay at clearwater-it dot co dot uk).

Note : Ces conseils sont destinés à PHP 4.0.4 et Apache v1.3.9.

  1. Vous aurez besoin de gzip. Téléchargez la distribution compilée à http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd-10.20.depot.Z, puis décompressez la, et utilisez swinstall pour installer.

  2. Vous aurez besoin de gcc. Téléchargez une distribution compilée à http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-10.20.depot.gz, puis décompressez la, et utilisez swinstall pour installer.

  3. Vous aurez besoin de GNU binutils. Téléchargez une distribution compilée à http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.9.1-sd-10.20.depot.gz, puis décompressez la, et utilisez swinstall pour installer.

  4. Vous aurez besoin de bison. Téléchargez une distribution compilée à http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-10.20.depot.gz, puis décompressez la, et utilisez swinstall pour installer.

  5. Vous aurez besoin de flex. Téléchargez une distribution source sur l'un des miroirs http://www.gnu.org. Il se trouve dans le dossier non-gnu du site FTP. Téléchargez le fichier, gunzip, décompressez le, puis utilisez tar -xvf avec. Allez dans le nouveau dossier flex ainsi créé, et exécutez la commande ./configure, puis faites un make, puis un make install..

    Si vous avez des erreurs à cette étape, c'est probablement parce que gcc et les autres ne sont pas inscrites dans votre PATH. Ajoutez les. Maintenant, la partie délicate.

  6. Téléchargez les sources d'Apache et de PHP.

  7. Décompressez les avec gunzip et tar -xvf. Nous devons modifier quelques fichiers avant de les compiler.

  8. Premièrement, le fichier de configuration doit être modifié car il semble oublier qu'il est sur une machine HP-UX. Il y a des méthodes plus rusées, mais le plus simple et le plus efficace est d'ajouter "lt_target=hpux10.20" à la ligne 47286 du script de configuration.

  9. Le fichier d'Apache GuessOS doit être modifié. Sous apache_1.3.9/src/helpers, modifier la ligne 89, en remplaçant "echo "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0" par : "echo "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0"

  10. Il n'est pas possible d'installer PHP sous forme de shared object sous HP-UX, ce qui fait que vous devez le compiler en statique. Suivez simplement les instructions de la section Apache.

  11. PHP et Apache sont maintenant compilés correctement, mais Apache ne démarre pas. Vous devez créer un nouvel utilisateur Apache, par exemple www, ou apache. Puis, modifiez les lignes 252 et 253 de conf/httpd.conf pour remplacer

    User nobody
Group nogroup

    par vos valeurs, par exemple :

    User www
Group sys

    Il n'est pas possible d'exécuter Apache avec l'utilisateur nobody sous HP-UX. A partir de ce moment là, PHP et Apache doivent fonctionner.

Précédent | Sommaire | Suivant
Installation | Niveau supérieur | Installation sous Linux/Unix


Installation sous Linux/Unix

Cette section contient les notes et conseils d'installation de PHP sur les distributions Linux.

Utilisation des packages

De nombreuses distributions Linux disposent d'un système d'installation par package, comme le fameux RPM. Ils vous permettent de faire des installations standard, mais si vous avez des configurations spécifiques (comme par exemple un serveur sécurisé, ou un pilote de bases de données exotique), vous aurez probablement à compiler vous-même votre PHP et votre serveur web. Si vous n'êtes pas familier avec la compilation de vos propres logiciels, il vaut mieux rechercher le package qui pourra répondre à vos besoins.

Précédent | Sommaire | Suivant
Installation sous HP-UX | Niveau supérieur | Installation sous Unix et Mac OS X


Installation sous Unix et Mac OS X

Cette section contient les notes et conseils pour installer PHP sur un serveur Mac OS X Server.

Utilisation des paquets

Il existe quelques versions pré-packagées et pré-compilées de PHP pour MacOSX. Cela peut être utile pour mettre en place une configuration standard, mais si vous avez besoin d'accéder à des fonctionnalités spécifiques (comme un serveur sécurisé, ou un pilote de bases de données exotiques), vous aurez à compiler PHP et/ou votre serveur web vous-même. Si vous n'êtes pas familiers avec la compilation et la mise en place d'applications, il est bon de vérifier si personne d'autre n'a réalisé un package.

Compilation pour OS X server

Il existe deux versions légèrement différentes de Mac OS X, le client et le serveur. Les lignes ci-dessous sont pour OS X Server.

Exemple 3-1. Installation sur Mac OS X server

1. Get the latest distributions of Apache and PHP
2. Untar them, and run the configure program on Apache like so.
    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache

4. You may also want to add this line:
    setenv OPTIM=-O2
    If you want the compiler to do some optimization.

5. Next, go to the PHP 4 source directory and configure it.
    ./configure --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --with-xml \
    --with-apache=/src/apache_1.3.12

    If you have any other additions (MySQL, GD, etc.), be sure to add
    them here. For the --with-apache string, put in the path to your
    apache source directory, for example "/src/apache_1.3.12".
6. make
7. make install
    This will add a directory to your Apache source directory under
    src/modules/php4.

8. Now, reconfigure Apache to build in PHP 4.
    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache \
    --activate-module=src/modules/php4/libphp4.a

    You may get a message telling you that libmodphp4.a is out of date.
    If so, go to the src/modules/php4 directory inside your apache
    source directory and run this command:

    ranlib libmodphp4.a

    Then go back to the root of the apache source directory and run the
    above configure command again. That'll bring the link table up to
    date.

9. make

10. make install

11. copy and rename the php.ini-dist file to your "bin" directory from your
    PHP 4 source directory:
    cp php.ini-dist /usr/local/bin/php.ini

    or (if your don't have a local directory)

    cp php.ini-dist /usr/bin/php.ini

Compilation pour MacOS X client

Ces conseils sont fournis gracieusement par Marc Liyanage.

Le module PHP d'Apache est inclus dans l'installation de Mac OS X. Cette version inclut le support des bases de données MySQL et PostgreSQL.

NOTE: Attention lors des manipulations ci-dessous : vous pourriez détruire la configuration de votre serveur.

Faites ceci :

  • 1. Ouvrez une fenêtre de terminal

  • 2. Tapez "wget http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz", et attendez le téléchargement.

  • 3. Tapez "gunzip libphp4.so.gz"

  • 4. Tapez "sudo apxs -i -a -n php4 libphp4.so"

Maintenant, tapez "sudo open -a TextEdit /etc/httpd/httpd.conf" TextEdit va ouvrir le fichier de configuration de votre serveur web. Recherchez les deux lignes suivantes, à la fin du fichier (utilisez la commande de recherche) :
#AddType application/x-httpd-php .php
   #AddType application/x-httpd-php-source .phps
Supprimez les deux signes dièse (#), puis sauvez le fichier, et quittez TextEdit.

Finalement, tapez "sudo apachectl graceful" pour redémarrer le serveur Apache.

PHP devrait être fonctionnel. Vous pouvez le tester en créant un fichier dans votre dossier "Sites", appelé "test.php". Dans ce fichier, écrivez la ligne ci-contre : "<?php phpinfo() ?>".

Maintenant, ouvrez votre navigateur à l'adresse suivante : 127.0.0.1/~your_username/test.php. Vous devriez obtenir la page d'information de phpinfo.

Précédent | Sommaire | Suivant
Installation sous Linux/Unix | Niveau supérieur | Installations Unix/OpenBSD


Installations Unix/OpenBSD

Cette section contient les notes spécifiques à l'installation de PHP sous OpenBSD 3.4.

Utilisation des paquets binaires

Cette méthode est la méthode recommandée pour installer PHP sur OpenBSD. C'est aussi la méthode la plus simple. Le paquet core a été séparé des modules et chacun d'entre eux peut être installé et supprimé indépendamment des autres. Les fichiers dont vous avez besoin sont sur le CD OpenBSD ou sur le site FTP.

Le package principal que vous devez installer est php4-core-4.3.3.tgz, qui contient le moteur de base, plus gettext et iconv). Puis, jetez un oeil aux packages de module, comme php4-mysql-4.3.3.tgz ou php4-imap-4.3.3.tgz. Vous devez utiliser la commande phpxs pour activer et désactiver ces modules dans votre php.ini.

A cause d'une erreur dans les packages OpenBSD 3.4, le package php4-gd-4.3.3-no_x11 n'a pas été généré. Vous pouvez encore utiliser le package php4-gd-4.3.3, mais il requière l'installation de xbase34.tgz. La branche -stable de l'arbre de ports a corrigé cette erreur et un package de remplacement est en cours de génération.

Exemple 3-2. Exemple d'installation de PHP sous OpenBSD avec Ports

# pkg_add php4-core-4.3.3.tgz
# /usr/local/sbin/phpxs -s
# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
  (add in mysql)
# pkg_add php4-mysql-4.3.3.tgz
# /usr/local/sbin/phpxs -a mysql
  (add in imap)
# pkg_add php4-imap-4.3.3.tgz
# /usr/local/sbin/phpxs -a imap
  (remove mysql as a test)
# pkg_delete php4-mysql-4.3.3
# /usr/local/sbin/phpxs -r mysql
  (install the PEAR libraries)
# pkg_add php4-pear-4.3.3.tgz

Lisez la page de manuel Unix packages(7) pour plus de détails sur les packages binaires d'OpenBSD.

Utilisation des ports

Vous pouvez aussi compiler PHP en utilisant l'arbre des ports. Cette méthode est recommandée aux utilisateurs expérimentés de OpenBSD. Le port PHP4 est scindé en deux sous-dossiers : core et extensions. Le dossier extensions génère les sous paquets de tous les modules PHP. Si vous souhaitez ne pas créer ces modules, vous pouvez utiliser la commande en ligne no_* FLAVOR. Par exemple, pour ne pas compiler le module imap, utilisez FLAVOR avec la valeur no_imap.

Versions plus anciennes

Les anciennes versions de OpenBSD utilisaient le système des FLAVORS pour compiler statiquement PHP. Comme il est trop difficile de générer des packages binaires avec cette méthode, elle est considérée comme obsolète. Vous pouvez toujours utiliser les anciennes versions stables, mais sachez qu'elles ne sont plus supportées par l'équipe d'OpenBSD. Si vous avez des commentaires sur le sujet, le responsable actuel est Anil Madhavapeddy.

Précédent | Sommaire | Suivant
Installation sous Unix et Mac OS X | Niveau supérieur | Installation sous Solaris


Installation sous Solaris

Cette section contient les notes et conseils d'installation de PHP sur les distributions Solaris.

Logiciels nécessaires

L'installation Solaris oublie généralement les compilateurs C, et leurs utilitaires. Voici la liste des outils nécessaires :

  • gcc (recommandé, mais d'autres compilateurs C peuvent fonctionner)

  • make

  • flex

  • bison

  • m4

  • autoconf

  • automake

  • perl

  • gzip

  • tar

De plus, vous devrez aussi installer (et peut être aussi compiler) toutes les librairies nécessaires aux extensions (MySQL, ORACLE..).

Utilisation des packages

Vous pouvez simplifier l'installation Solaris en utilisant pkgadd pour installer la plupart des composants.

Précédent | Sommaire | Suivant
Installations Unix/OpenBSD | Niveau supérieur | Installation sous UNIX


Installation sous UNIX

Cette section va vous guider lors du processus d'installation et de configuration de PHP sous Unix. Commencez par étudier les sections spécifiques à votre plate-forme ou à votre serveur web avant de passer à l'installation.

Pré-requis :

  • Connaissance de base d'UNIX (savoir faire un "make" et compiler en C, si besoin).

  • Un compilateur ANSI C (pour les codes sources)

  • flex (pour compiler)

  • bison (pour compiler)

  • Un serveur web

  • Tous les composants nécessaires aux extensions (librairie GD, PDF, etc...)

Il y a plusieurs façons d'installer PHP sur une plate-forme UNIX : soit un processus de compilation-configuration, ou bien avec des packages déjà tout prêts. Cette documentation se concentre sur la première solution.

La première partie du processus est faite en ligne de commande, grâce aux options du script configure. Cette section présente l'utilisation des options les plus courantes, mais il y en a beaucoup d'autres à essayer. Reportez-vous à la liste complète des options de configuration pour une liste exhaustive. Voici les différentes méthodes d'installation de PHP :

  • Comme module Apache

  • Comme module fhttpd

  • Pour l'utiliser avec AOLServer, NSAPI, phttpd, Pi3Web, Roxen, thttpd, ou Zeus.

  • Comme exécutable CGI

Installer PHP comme module Apache

PHP peut être compilé de nombreuses manières différentes, mais la plus populaire est le module Apache. La liste suivante est un récapitulatif de l'installation.

Exemple 3-3. Installer PHP comme module Apache

1.  gunzip apache_1.3.x.tar.gz
2.  tar xvf apache_1.3.x.tar
3.  gunzip php-x.x.x.tar.gz
4.  tar xvf php-x.x.x.tar
5.  cd apache_1.3.x
6.  ./configure --prefix=/www
7.  cd ../php-x.x.x
8.  ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9.  make
10. make install
11. cd ../apache_1.3.x
12. ./configure --activate-module=src/modules/php4/libphp4.a
13. make
14. make install
15. cd ../php-x.x.x
16. cp php.ini-dist /usr/local/lib/php.ini
17. "Editez votre fichier httpd.conf ou srm.conf et ajoutez : "
      AddType application/x-httpd-php .php
18. "Utilisez votre proc&eacute;dure habituelle pour red&eacute;marrer le serveur Apache.
    (vous devez arr&ecirc;ter puis red&eacute;marrer le serveur, et pas seulement forcer
    le serveur &agrave; relire la configuration initiale).

Compilation

Lorsque PHP est configuré, vous êtes prêts à compiler l'exécutable CGI. La commande make doit prendre tout en charge. Si ce n'est pas le cas et que vous restez bloqués, reportez-vous aux problèmes courants.

Précédent | Sommaire | Suivant
Installation sous Solaris | Niveau supérieur | Installation sous Windows


Installation sous Windows

Cette section s'applique aux systèmes Windows 98/Me et Windows NT/2000/XP. Ne vous attendez pas à ce que PHP fonctionne sur les plateformes 16 bits, comme Windows 3.1. Parfois, on décrira les plateformes supportées sous le nom de Win32. Windows 95 n'est plus supporté à partir de la version 4.3.0 de PHP.

Il y a deux méthodes principales pour installer PHP sous Windows : soit manuellement, soit avec InstallShield.

Si vous avez Microsoft Visual Studio, vous pouvez aussi compiler PHP à partir des sources.

Une fois que PHP est installé sur votre Windows, vous pouvez aussi ajouter diverses extensions.

InstallShield sous Windows

L'installeur Windows de PHP disponible depuis les pages de http://www.php.net/downloads.php, installe la version CGI de PHP, et configure les serveurs web IIS, PWS, et Xitami.

Notez bien que bien que InstallShield soit une méthode simple pour installer PHP, il est limité dans son fonctionnement, puisque l'installation automatique des extensions n'est pas prise en compte. Le jeu complet des extensions PHP est disponible en téléchargeant et décompressant manuellement l'archive.

Installez votre serveur HTTP favori sur votre système et assurez-vous qu'il fonctionne.

Exécutez l'installeur et suivez les instructions fournies par l'assistant. Deux types d'installation sont fournis : standard, qui utilise toutes les configurations par défaut les plus pratiques, et avancée, qui pose un maximum de questions pour paramétrer le plus finement.

L'assistant d'installation rassemble suffisamment d'informations pour configurer php.ini et le serveur web qui utilisera PHP. Pour IIS, mais aussi PWS sous NT Workstation, une liste de l'arboresence web est affichée, et vous pouvez sélectionner les dossiers qui utiliseront PHP.

Une fois l'installation terminée, l'installeur vous informera que vous devez redémarrer. Suivez ce conseil, ou commencez à utiliser PHP immédiatement.

Avertissement

Gardez bien à l'esprit que cette installation de PHP n'est pas sécurisée. Si vous voulez avoir une installation sécurisée de PHP, vous devriez commencer par lire la documentation, et choisir toutes vos options avec soin. Cet installeur automatique vous permet de réaliser l'installation en un tour de main, mais n'est pas destiné à l'utilisation sur des serveurs de production.

Installation manuelle sous Windows

Ce guide d'installation vous aide à installer manuellement et configurer PHP sur votre serveur web Windows. La version initiale de ce guide a été compilée par Bob Silva, et est disponible en anglais, à http://www.umesd.k12.or.us/php/win32install.html. Vous devrez télécharger la distribution binaire Zip sur la page http://www.php.net/downloads.php.

PHP 4 pour Windows est distribué en trois versions : exécutable CGI, un exécutable CLI (sapi/php.exe) et d'autres modules SAPI :

php4apache.dll - module Apache 1.3.x.
php4apache2.dll - module Apache 2.0.x.
php4isapi.dll - module ISAPI compatible avec les serveurs comme IIS 4.0/PWS 4.0 ou plus récents.
php4nsapi.dll - module Netscape/iPlanet.

Cette dernière forme est nouvelle en PHP 4, et fournit des performances améliorées et de nouvelles fonctionnalités. La version CLI est conçue pour utiliser PHP en ligne de commande. Plus d'informations sur la forme CLI est disponible dans le chapitre "utiliser PHP en ligne de commande".

Avertissement

Les modules SAPI ont été significativement améliorés dans la version 4.1, mais vous pourrez rencontrer des erreurs avec le serveur ou d'autres modules (tels ASP), dans les autres systèmes.

Pré-requis DCOM et MDAC : Si vous choisissez d'installer le module SAPI sur Windows 95, assurez vous de télécharger et installer la mise à jour DCOM, disponible à Microsoft DCOM pages. Si vous utilisez Microsoft Windows 9x/NT4, téléchargez la dernière version de Microsoft Data Access Components (MDAC) pour votre plate-forme. MDAC est disponible à http://www.microsoft.com/data/.

Voici les différentes étapes d'installation avant les étapes spécifiques au serveur.

  • Extrayez la distribution dans un dossier de votre choix, comme par exemple c:\. L'archive zip devient un dossier appelé php-4.3.1-Win32 qui est supposé être renommé en php. Par sourci de clarté, nous supposerons alors que vous avez placé votre distribution dans le dossier c:\php. Vous pouvez choisir un autre dossier, mais vous serez prudents d'éviter les espaces dans le nom du chemin au dossier (comme par exemple c:\program files\php n'est pas une bonne idée). car certains serveurs web vont crasher sinon. La structure du dossier que vous avez extrait ressemble à ceci :

c:\php
   |
   +--cli
   |  |
   |  |-php.exe           -- Executable CLI - UNIQUEMENT pour la ligne de commande
   |
   |
   +--dlls                -- DLL de support des extensions  --> dossier systeme Windows
   |  |
   |  |-expat.dll
   |  |
   |  |-fdftk.dll
   |  |
   |  |-...
   |
   +--extensions          -- extensions DLL pour PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--mibs                -- fichiers de support de SNMP
   |
   |
   +--openssl             -- fichiers de support de Openssl
   |
   |
   +--pdf-related         -- fichiers de support de PDF
   |
   |
   +--sapi                -- DLL SAPI
   |  |
   |  |-php4apache.dll
   |  |
   |  |-php4apache2.dll
   |  |
   |  |-php4isapi.dll
   |  |
   |  |-..
   |
   |-install.txt
   |
   |-..
   |
   |-php.exe              -- executable CGI
   |
   |-..
   |
   |-php.ini-dist
   |
   |-php.ini-recommended
   |
   |-php4ts.dll           -- DLL principale --> dossier systeme Windows
   |
   |-...

Le binaire CGI (C:\php\php.exe), le binaire CLI (c:\php\cli\php.exe), et les modules SAPI (c:\php\sapi\*.dll) dépendent de la DLL principale c:\php\php4ts.dll. Vous devez vous assurer que cette DLL est disponible pour votre installation PHP. L'ordre des dossiers lors de la recherche est le suivant :

Le dossier d'où php.exe est appelé. Lorsque vous utilisez le module SAPI, c'est le dossier d'où le serveur web charge la DLL (i.e. php4apache.dll).
Tout dossier dans la variable d'environnement Windows PATH.

  • La meilleure chose à faire est de rendre php4ts.dll accessible, indépendemmant de l'interface utilisée (CGI ou module SAPI). Pour cela, vous devez copier la DLL dans un dossier de votre PATH Windows. La meilleure place est alors le dossier système Windows :

    c:\windows\system pour Windows 9x/ME
    c:\winnt\system32 pour Windows NT/2000 ou c:\winnt40\system32 pour NT/2000 server
    c:\windows\system32 pour Windows XP

    Si vous voulez utiliser le module SAPI depuis c:\php\sapi et que vous ne voulez pas copier vos DLL dans le dossier système Windows, vous avez la possibilité de copier simplement php4ts.dll dans le dossier SAPI de votre archive décompressée c:\php\sapi.

  • L'étape suivante est de faire un fichier de configuration valide pour PHP, c'est à dire le fichier php.ini. Il y a deux versions de ce fichier disponibles dans l'archive : php.ini-dist et php.ini-recommended. Nous vous recommandons d'utiliser php.ini-recommended, car nous avons optimisé les configurations par défaut dans ce fichier pour les performances et la sécurité. Lisez bien ce fichier documenté, et étudiez toutes les configurations, puis faites vos propres choix. Si vous voulez atteindre la meilleure sécurité, c'est la meilleure méthode. Copiez votre fichier de configuration de choix dans un dossier où PHP est capable de le lire, et renommez le php.ini. Par défaut, PHP recherche php.ini dans votre dossier Windows :

    Sur Windows 9x/ME/XP, copiez le fichier php.ini dans votre dossier %WINDIR%, qui est généralement c:\windows.
    Sur Windows NT/2000, copiez le fichier php.ini dans votre dossier %WINDIR% ou %SYSTEMROOT%, qui est typiquement c:\winnt ou c:\winnt40 pour les serveurs NT/2000.

  • Si vous utilisez NTFS sur Windows NT, 2000 ou XP, assurez vous que l'utilisateur qui fait tourner le serveur web a les droits de lecture de votre fichier php.ini (e.g. rendez le lisible par tout le monde).

Les étapes suivantes sont optionnelles :

  • Editez votre nouveau fichier php.ini. Si vous envisagez d'utiliser OmniHTTPd, ignorez l'étape suivante. Configurez doc_root pour qu'il pointe sur la racine de votre serveur web. Par exemple :

    doc_root = c:\inetpub        // pour IIS/PWS

doc_root = c:\apache\htdocs // pour Apache

  • Choisissez les extensions que vous voulez que PHP démarre. Voyez la section sur les extensions Windows, pour les configurer, si elles ne sont pas intégrées. Notez que sur une nouvelle installation, il est recommandé de commencer par faire fonctionner PHP avant d'ajouter ou retirer des extensions via le php.ini.

  • Sur PWS et IIS, vous pouvez utiliser la directive browscap pour qu'elle pointe sur : c:\windows\system\inetsrv\browscap.ini sur Windows 9x/Me, c:\winnt\system32\inetsrv\browscap.ini sur NT/2000, et c:\windows\system32\inetsrv\browscap.ini sur XP.

Copiez le fichier php.ini-dist dans votre dossier %WINDOWS sous Windows 95/98, ou vers votre dossier %SYSTEMROOT% sous Windows NT ou Windows 2000 et renommez-le en php.ini. Votre dossier %WINDOWS% ou %SYSTEMROOT% est généralement :

c:\windows pour Windows 9x/Me
c:\winnt ou c:\winnt40 pour les serveurs NT/2000

Il y a deux fichiers ini, distribués dans le fichier zip, php.ini-dist et php.ini-optimized. Nous vous recommandons d'utiliser php.ini-optimized, car nous l'avons optimisé d'un point de vue sécurité et vitesse d'exécution. Le mieux est tout de même de lire le fichier de configuration php.ini et de choisir vos options manuellement. Si vous voulez atteindre un meilleur niveau de sécurité, c'est par ce moyen que vous pourrez le faire, même si PHP fonctionne parfaitement avec les configurations par défaut.

Editez votre fichier php.ini :

  • la famille des serveurs Windows, Personal Web server (PWS) 3 et 4 ou plus récents; Internet Information Server (IIS) 3 et 4 ou plus récents.

  • les serveurs Apache Apache 1.3.x, et Apache 2.x.

  • les serveurs Netscape/iPlanet.

  • le serveur OmniHTTPd.

  • le serveur Oreilly Website Pro.

  • le serveur Sambar.

  • le serveur Xitami.

Compilation des sources

Avant de commencer, il est bon de se poser la question suivante : "Pourquoi la compilation de PHP sous Windows est si difficile?". Deux raisons viennent immédiatement à l'esprit :

  1. Windows ne dispose pas (encore) d'une grande communauté de développeurs qui partagent librement leurs sources. La conséquence directe est que les investissements nécessaires en infrastructure pour supporter ce type de développement n'ont pas été faits. Ce qui fait que le portage des utilitaires Unix a été la solution pour pallier ce manque. Ne soyez donc pas surpris de rencontrer cette parenté de temps en temps.

  2. La majorité des instructions que vous allez rencontrer sont du type : "faire et oublier". Alors, asseyez-vous confortablement et suivez aussi scrupuleusement que possible les instructions.

Pré-requis

Pour compiler l'exécutable PHP, vous avez besoin d'un Microsoft Development Environment. Microsoft Visual C++ 6.0 est recommendé. Pour extraire le fichier téléchargé, vous avez besoin d'un outil de décompression (e.g.: Winzip). Si vous n'avez pas encore d'utilitaire de décompression, vous pouvez en télécharger un chez InfoZip.

Avant de commencer, vous devez télécharger...

  • les win32 buildtools de PHP, sur http://www.php.net/extra/win32build.zip.

  • le code source du résolveur de noms DNS utilisé par PHP sur http://www.php.net/extra/bindlib_w32.zip. C'est un remplacement pour la librairie resolv.lib inclue dans win32build.zip.

  • Si vous prévoyez de compiler PHP comme module pour Apache, vous aurez aussi besion des sources d'Apache.

Finalement, vous aurez besoin des sources PHP 4 elles-mêmes. Les dernières versions sont accessibles sur le serveur CVS anonyme. Vous pouvez aussi télécharger une version intermédiaire ou l'archive des sources la plus récente.

Compiler tout ensemble

Après téléchargement des paquets nécessaires, vous devez les extraire au bon endroit.

  • Créez un dossier où tous les fichiers seront placés après l'extraction, comme par exemple :c:\work.

  • Créez le dossier win32build dans votre dossier de travail (ici c:\work) et décompressez win32build.zip dedans.

  • Créez le dossier bindlib_w32 sous votre dossier de travail (ici c:\work) et décompressez bindlib_w32.zip dedans.

  • Décompressez le code source de PHP dans votre dossier de travail (c:\work).

Après avoir suivi ces instructions, vous devriez obtenir un dossier qui ressemble à ceci :

+--c:\work
|  |
|  +--bindlib_w32
|  |  |
|  |  +--arpa
|  |  |
|  |  +--conf
|  |  |
|  |  +--...
|  |
|  +--php-4.x.x
|  |  |
|  |  +--build
|  |  |
|  |  +--...
|  |  |
|  |  +--win32
|  |  |
|  |  +--...
|  |
|  +--win32build
|  |  |
|  |  +--bin
|  |  |
|  |  +--include
|  |  |
|  |  +--lib

Créez les dossiers c:\usr\local\lib. Copiez le fichier bison.simple depuis c:\work\win32build\bin vers c:\usr\local\lib.

Note : Les utilisateurs de Cygwin peuvent omettre la dernière étable. Un environnement Cygwin correctement installé fournit les fichiers obligatoires de bison.simple et bison.exe.

Configuration de MVC ++

Lancez Microsoft Visual C++, et allez dans le menu "select Tools => Options". Dans le dialogue, sélectionnez l'onglet "directories". Modifiez les valeurs pour les items du menu Executables, Includes et Library files. Votre configuration doit alors ressembler à

  • Fichiers exécutables : c:\work\win32build\bin, Utilisateurs Cygwin : cygwin\bin

  • Fichiers include: c:\work\win32build\include

  • Fichiers library : c:\work\win32build\lib

Compilation de resolv.lib

Vous devez compiler la librairie resolv.lib. Decidez si vous avez besoin des symboles de débogage (bindlib - Win32 Debug) ou non (bindlib - Win32 Release). Compilez la configuration ad hoc :

  • Pour les utilisateurs de l'interface graphique, lancez VC++, puis sélectionnez le menu "File => Open Workspace" et "bindlib". Puis sélectionnez "Build=>Set Active Configuration" et sélectionnez la configuration voulue. Enfin, sélectionnez "Build=>Rebuild All".

  • Pour les utilisateurs en ligne de commande, assurez-vous que vous avez enregistré les variables d'environnement C++, ou que vous avez exécuté vcvars.bat. Exécutez maintenant l'une des commandes suivantes :

    • msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"

    • msdev bindlib.dsp /MAKE "bindlib - Win32 Release"

A ce stade, vous avez une librairie resolv.lib utilisable, soit dans votre dossier Debug, soit sans le dossier Release. Copiez ce fichier dans votre dossier win32build\lib, en remplaçant le fichier du même nom.

Compilation

La meilleure façon de compiler est de commander par la version CGI/exécutable.

  • Pour les utilisateurs GUI, lancez VC++, puis sélectionnez le menu "File => Open Workspace" et sélectionnez "php4ts". Ensuite, sélectionnez le menu "Build=>Set Active Configuration", et sélectionnez la configuration voulue. Finalement, sélectionnez le menu "Build=>Rebuild All".

  • Pour les utilisateurs en ligne de commande, assurez-vous que vous avez enregistré les variables d'environnement C++, ou que vous avez exécuté vcvars.bat. Exécutez maintenant l'une des commandes suivantes :

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"

    • A ce stade, vous avez un exécutable php.exe utilisable, soit dans votre dossier Debug_TS soit sans le dossier Release_TS.

Il est possible de faire des modifications particulières mineures en éditant le fichier main/config.win32.h.in.

Ensuite, vous pouvez compiler la version CLI qui est conçue pour un usage en ligne de commande. Les étapes sont les mêmes que pour la compilation en mode CGI, hormis le fait que vous devez sélectionner php4ts_cli - Win32 Debug_TS ou php4ts_cli - Win32 Release_TS dans le fichier de projet. Après une compilation réussie, vous pouvez exécuter le fichier php.exe dans l'un des dossiers Release_TS\cli\ ou Debug_TS\cli\.

Note : Si vous voulez utiliser PEAR et l'installeur en ligne de commande, la version CLI-SAPI est obligatoire. Pour plus d'informations sur le projet PEAR et l'installeur, lisez la documentation sur le site de PEAR.

Afin de compiler le module SAPI (php4isapi.dll pour l'intégrer dans Microsoft IIS, vous devez utiliser la configuration php4isapi-whatever-config et compiler la DLL nécessaire.

Installation des extensions sous Windows

Après avoir installé PHP et votre serveur web sous Windows, vous voudrez sûrement ajouter quelques extensions bien pratiques. La table suivante liste une partie des extensions disponibles. Comme indiqué dans le manuel, vous pouvez choisir quelles extensions vous voulez charger en décommentant la ligne 'extension=php_*.dll' dans le fichier php.ini. Vous pouvez aussi charger dynamiquement un module avec la fonction dl().

Les fichiers DLLs des extensions PHP sont préfixés par php_ en PHP 4, et php3_ en PHP 3. Cela évite la confusion des extensions PHP et de leurs librairies.

Note : En PHP 4.3.1, les extensions BCMath, Calendar, COM, Ctype, FTP, MySQL, ODBC, Overload, PCRE, Session, Tokenizer, WDDX, XML et Zlib sont intégrées. Vous n'avez pas besoin d'ajouter d'autres extensions pour pouvoir utiliser ces fonctions. Voyez le fichier README.txt ou install.txt de votre distribution, ou bien cette table pour une liste des modules intégrés.

Editez votre fichier php.ini :

  • Vous devez modifier l'option de extension_dir pour qu'elle pointe sur le dossier qui contient les extensions, là où vous avez placé vos fichiers php_*.dll. N'oubliez surtout pas l'anti-slash final. Par exemple :

    extension_dir = c:/php/extensions/

  • Pour activer les extensions dans le php.ini, il suffit de décommenter les lignes extension=php_*.dll dans le php.ini. Ceci est fait en effaçant le point-virgule initial de la ligne :

    Exemple 3-4. Activer l'extension Bzip2 sous Windows

    // changez la ligne  ...
;extension=php_bz2.dll

// ... en
extension=php_bz2.dll

  • Certaines de ces extensions requièrent des librairies DLL supplémentaires pour fonctionner correctement. Certaines d'entre elles sont disponibles dans la distribution. dans le dossier dlls mais certaines (comme Oracle (php_oci8.dll)), demandent des dlls qui ne sont pas dans la distribution.

    Copiez les dlls fournies depuis le dossier dlls dans votre PATH Windows. Les bons emplacements sont typiquement

    c:\windows\system pour Windows 9x/Me
    c:\winnt\system32 pour Windows NT/2000
    c:\windows\system32 pour Windows XP

    Si vous les avez déjà d'installées sur votre système, ne les écrasez que si PHP ne fonctionne pas correctement (et de toutes manières, faites une sauvegarde de ces DLL, en cas de problème).

Tableau 3-1. Extensions PHP pour Windows

Extension | Description | Notes
php_bz2.dll | Fonctions de compression bzip2 | Aucune
php_calendar.dll | Fonctions de conversions calendaires Calendar | Disponible depuis PHP 4.0.3
php_cpdf.dll | Fonctions ClibPDF | Aucune
php_crack.dll | Fonctions de CrackLib | Aucune
php3_crypt.dll | Fonctions de Crypt | Inconnu
php_ctype.dll | Fonctions ctype | Aucune
php_curl.dll | CURL, Bibliothèque de fonctions "Client URL" | Requiert : libeay32.dll, ssleay32.dll (fournies)
php_cybercash.dll | Fonctions de paiement Cybercash | Aucune
php_db.dll | Fonctions DBM | Obsolètes. Utilisez DBA à la place (php_dba.dll)
php_dba.dll | DBA: DataBase Abstraction, fonctions d'abstraction de base de données (de type dbm) | Aucune
php_dbase.dll | Fonctions dBase | Aucune
php3_dbm.dll | Fonctions Berkeley DB2 | Inconnu
php_dbx.dll | Fonctions dbx |
php_domxml.dll | Fonctions de DOM XML | Requiert : libxml2.dll (fournie)
php_dotnet.dll | Fonctions .NET | Aucune
php_exif.dll | Fonctions de lecture des en-têtes JPEG Read EXIF | Aucune
php_fbsql.dll | Fonctions de FrontBase | Aucune
php_fdf.dll | Fonctions FDF: Forms Data Format. | Requiert : fdftk.dll (fournies)
php_filepro.dll | Fonctions filePro | Accès en lecture seule
php_ftp.dll | Fonctions FTP | Disponible depuis PHP 4.0.3
php_gd.dll | Fonctions de traitement des images GD | Aucune
php_gd2.dll | Fonctions de traitement des images GD2 | Aucune
php_gettext.dll | Fonctions Gettext | PHP <= 4.2.0 requiert : gnu_gettext.dll (fournie), PHP >= 4.2.3 requiert libintl-1.dll (fournie).
php_hyperwave.dll | Fonctions HyperWave | Aucune
php_iconv.dll | Fonctions de conversions de jeux de caractères ICONV | Requiert : iconv-1.3.dll (fournies)
php_ifx.dll | Fonctions Informix | Requiert : les bibliothèques Informix
php_iisfunc.dll | Fonctions de gestion de IIS | Aucune
php_imap.dll | Fonctions IMAP, POP3 et NNTP | PHP 3 : php3_imap4r1.dll
php_ingres.dll | Fonctions Ingres II | Requiert : librairies Ingres II
php_interbase.dll | Fonctions InterBase | Requiert : gds32.dll (fournies)
php_java.dll | Extension Java | Requiert : jvm.dll (fournies)
php_ldap.dll | Fonctions LDAP | PHP <= 4.2.0 requiert libsasl.dll (fournie), PHP >= 4.3.0 requiert libeay32.dll, ssleay32.dll (fournies).
php_mbstring.dll | Fonctions chaînes multi-octets | Aucune
php_mcrypt.dll | Fonctions de chiffrement Mcrypt | Requiert : libmcrypt.dll
php_mhash.dll | Fonctions Mhash | Aucune
php_mime_magic.dll | Fonctions Mimetype | Requiert : magic.mime (fournie)
php_ming.dll | Fonctions de génération de fichiers Flash avec Ming | Aucune
php_msql.dll | Fonctions de mSQL | Requiert : msql.dll (fournies)
php3_msql1.dll | mSQL 1 client | Inconnu
php3_msql2.dll | mSQL 2 client | Inconnu
php_mssql.dll | Fonctions MSSQL | Requiert : ntwdblib.dll (fournies)
php3_mysql.dll | Fonctions MySQL | Intégré à PHP 4
php3_nsmail.dll | Fonctions de email Netscape | Inconnu
php3_oci73.dll | Fonctions Oracle | Inconnu
php_oci8.dll | Fonctions Oracle 8 | Requiert : librairies clientes Oracle 8
php_openssl.dll | Fonctions OpenSSL | Requiert : libeay32.dll (fournies)
php_oracle.dll | Fonctions de Oracle 7 | Requiert : librairies clientes Oracle 7
php_overload.dll | Fonctions relatives à la surcharge d'objets | Intégrée depuis PHP 4.3.0
php_pdf.dll | Fonctions de PDF | Aucune
php_pgsql.dll | Fonctions de PostgreSQL | Aucune
php_printer.dll | Fonctions d'impressions | Aucune
php_shmop.dll | Fonctions de mémoire partagée | Aucune
php_snmp.dll | Fonctions SNMP | NT uniquement!
php_sockets.dll | Fonctions de socket | Aucune
php_sybase_ct.dll | Fonctions Sybase | Requiert : librairies clientes Sybase
php_tokenizer.dll | Tokenizer | Intégrée depuis PHP 4.3.0
php_w32api.dll | Fonctions W32api | Aucune
php_xmlrpc.dll | Fonctions XML-RPC | PHP >= 4.2.1 requiert iconv.dll (fournie)
php_xslt.dll | Fonctions XSLT | Requiert : sablot.dll, expat.dll (fournies)
php_yaz.dll | Fonctions YAZ | Aucune
php_zib.dll | Fonctions de compression Zip | Accès en lecture seule
php_zlib.dll | Fonctions de compression ZLib | Aucune

Précédent | Sommaire | Suivant
Installation sous UNIX | Niveau supérieur | CGI/ Installation pour exécution en ligne de commande


CGI/ Installation pour exécution en ligne de commande

Par défaut, PHP est compilé en version CGI. Cela crée un interpréteur de commande qui peut être utilisé soit pour le traitement CGI, soit pour les scripts non relatifs au web. Si PHP peut être incorporé au serveur web que vous utilisez en tant que module, de manière générale c'est cette solution que vous devriez adopter pour des raisons de performances. Cependant, la version CGI permet aux utilisateurs sous Apache de lancer des scripts PHP sous leurs UID respectives. Lisez attentivement le chapitre consacré à la sécurité si vous souhaitez utiliser cette solution.

Avec PHP 4.3.0, d'importants ajouts ont été faits à PHP. une nouvelle SAPI, appelée CLI, existe aussi et porte le même nom que la version CGI. Ce qui est installé en tant que {PREFIX}/bin/php dépend de votre ligne de configuration. Tout ceci est décrit en détails dans la partie du manuel intitulée Utiliser PHP en ligne de commande. Veuillez vous y référer pour de plus amples informations.

Tests

Si vous avez compilé PHP comme programme CGI, vous pouvez tester votre produit en tapant : make test. C'est toujours une bonne chose de tester le résultat d'une compilation. Cela vous permet de repérer des problèmes entre PHP et votre plate-forme, plutôt que d'attendre qu'ils surviennent.

Performances

Si vous avez compilé PHP comme programme CGI, vous pouvez évaluer les performances de PHP 3 avec la commande make bench. Notez que si le safe mode est activé (par défaut), vous risquez de voir l'évaluation s'arrêter une fois les 30 secondes réglementaires écoulées. En effet, la fonction set_time_limit() ne peut pas être utilisée si le safe mode fonctionne. Utilisez l'option max_execution_time pour contrôler le temps d'exécution de vos scripts. make bench ignore le fichier de configuration file.

Note : make bench n'est disponible qu'en PHP 3.

Utiliser les variables prédéfinies

Certaines variables d'environnement fournies par les serveurs web ne sont pas disponibles dans les spécifications CGI/1.1 actuelles. Seules les variables suivantes sont définies, et les autres doivent être considérées comme spécifiques aux serveurs web : AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL et SERVER_SOFTWARE

Précédent | Sommaire | Suivant
Installation sous Windows | Niveau supérieur | Installation avec le serveur Apache


Installation avec le serveur Apache

Cette section contient des notes spécifiques pour l'installation de PHP avec Apache, aussi bien pour la version Unix que Windows.

Détails pour l'installation de PHP sous Apache sous Unix.

Il y a deux méthodes d'installation de PHP avec Apache 1.3.x sous Windows. L'une passe par les CGI (php.exe), l'autre est d'utiliser la DLL de module Apache. Dans les deux cas, vous devrez arrêter le serveur Apache, et éditer le fichier srm.conf ou httpd.conf, pour configurer Apache avec PHP.

Vous pouvez sélectionner des options à ajouter au fichier configure à la ligne 8 depuis la liste complète des options de configuration.

Exemple 3-5. Instructions d'installation avec Apache (version module)

1.  gunzip apache_1.3.x.tar.gz
2.  tar xvf apache_1.3.x.tar
3.  gunzip php-x.x.x.tar.gz
4.  tar xvf php-x.x.x.tar
5.  cd apache_1.3.x
6.  ./configure --prefix=/www
7.  cd ../php-x.x.x
8.  ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9.  make
10. make install
11. cd ../apache_1.3.x
12. for PHP 3: ./configure --activate-module=src/modules/php3/libphp3.a
    for PHP 4: ./configure --activate-module=src/modules/php4/libphp4.a
13. make
14. make install
  Au lieu de cette etape, vous pouvez aussi copier le binaire
  httpd et remplacer votre executable actuel. Assurez-vous tout
  de meme que le serveur est bien eteint.
15. cd ../php-x.x.x
16. for PHP 3: cp php3.ini-dist /usr/local/lib/php3.ini
    for PHP 4: cp php.ini-dist /usr/local/lib/php.ini
  Vous pouvez editer votre fichier php.ini pour modifier
  certaines options PHP. Si vous preferez placer ce fichier ailleurs,
  utilisez --with-config-file-path=/path lors de l'etape 8.
17. Editez votre fichier httpd.conf ou srm.conf file et ajoutez :
     Pour PHP 3:   AddType application/x-httpd-php3 .php3
     Pour PHP 4:   AddType application/x-httpd-php  .php
  Vous pouvez choisir n'importe quelle extension que vous voulez ici. .php
  est uniquement une suggestion. Vous pouvez aussi inclure .html.
18. Utilisez votre procedure habituelle pour demarrer votre serveur Apache.
(vous devez l'eteindre et le redemarrer, pas seulement lui envoyer
un signal HUP ou USR1.)

Suivant votre installation d'Apache et votre variante d'Unix, il existe de nombreuses façons d'arrêter et redémarrer Apache. Voici une liste des commandes typiques, pour différentes installations. Remplacez /path/to/ par le chemin d'accès à vos applications sur votre système.

Exemple 3-6. Redémarrage d'apache

[1. Nombreuses variantes Linux SysV :
/etc/rc.d/init.d/httpd restart
2. Avec les scripts apachectl :
/path/to/apachectl stop
/path/to/apachectl start
3. httpdctl et httpsdctl (utilisant OpenSSL), similaire a apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start
4. En utilisant mod_ssl, ou un autre serveur SSL, manuellement :
/path/to/apachectl stop
/path/to/apachectl startssl
Les exécutables apachectl et http(s)dctl peuvent être situés dans différents dossiers. Si votre système est pourvu de locate, de whereis ou de which, utilisez-les pour retrouver vos programmes.

Différents exemples de compilation PHP pour Apache suivent :

Exemple 3-7. Compilation sur Apache avec l'extension PostGreSQL

./configure --with-apxs --with-pgsql

Cette commande va créer une librairie partagée libphp4.so qui sera chargée par Apache avec une ligne LoadModule dans le fichier httpd.conf. Le support PostgreSQL est aussi inclut dans libphp4.so.

Exemple 3-8. Compilation sur Apache avec l'extension PostGreSQL (librairie partagée)

./configure --with-apxs --with-pgsql=shared

Cette commande va créer une librairie partagée libphp4.so pour Apache, mais va aussi créer la librairie partagée pgsql.so qui sera chargée dans PHP avec une directive du fichier php.ini file ou en la chargeant explicitement dans le script avec la fonction dl().

Exemple 3-9. Compilation sur Apache avec l'extension PostGreSQL (2)

./configure --with-apache=/path/to/apache_source --with-pgsql

Cette commande va créer une autre librairie partagée libmodphp4.a, un fichier mod_php4.c et quelques fichiers compagnons dans le dossier src/modules/php4 du dossier Apache. Puis, vous devez compiler Apache avec --activate-module=src/modules/php4/libphp4.a et le système de compilation d'Apache va créer un fichier libphp4.a et le lier statiquement avec httpd. Le support PostgreSQL est alors inclus directement dans l'exécutable httpd, ce qui fait que le résultat final est un fichier unique httpd, qui inclut Apache et PHP.

Exemple 3-10. Compilation sur Apache avec l'extension PostGreSQL (2) (librairie partagée)

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Identique à la version précédente, mais au lieu d'inclure le support PostgreSQL directement dans l'exécutable final httpd, vous allez obtenir une librairie partagée pgsql.so que vous pouvez charger dans PHP soit grâce au fichier de configuration php.ini ou dynamiquement avec dl().

Lorsque vous faites le choix entre les différents modes de compilation de PHP, vous devez prendre en compte leurs avantages et inconvénients respectifs. Les objets partagés permettent de compiler PHP et Apache de manière séparée, et vous n'aurez pas à compiler l'ensemble pour faire évoluer PHP. La compilation statique permet de charger et d'exécuter plus rapidement PHP. Pour plus d'informations, voyez la page web sur le support des DSO.

Note : Le fichier de configuation d'Apache actuel est fourni avec une section qui ressemble à ceci :

User nobody
Group "#-1"

A moins que vous ne changiez cette valeur par Group nogroup ou quelques chose comme ça (Group daemon est aussi classique), PHP ne sera pas capable d'ouvrir des fichiers.

Note : Assurez-vous que vous spécifiez la version installée de apxs avec l'option --with-apxs=/path/to/apxs. Vous ne devez PAS utiliser la version d'apxs qui est dans les sources d'Apache, mais celle qui est réellement installée sur votre système.

Installer PHP sous Windows avec Apache 1.3.x

Il y a deux méthodes pour faire fonctionner PHP avec Apache 1.3.x sous Windows. La première est d'utiliser l'exécutable CGI (php.exe), l'autre est d'utiliser les modules Apache DLL. Dans les deux cas, vous devez arrêter le serveur Apache, éditer votre fichier srm.conf ou httpd.conf pour configurer Apache.

Bien qu'il puisse y avoir quelques différences de configurations de PHP sous Apache, le processus reste simple et à la portée du néophyte. Reportez-vous aux documentations Apache pour plus de détails sur ces directives.

Si vous avez dézippé le package dans C:\PHP\ comme indiqué dans le chapitre "Installation manuelle sous Windows", vous devez insérer les lignes suivantes dans votre fichier srm.conf ou httpd.conf pour qu'il fonctionne en CGI :

  • ScriptAlias /php/ "c:/php/"

  • AddType application/x-httpd-php .php .phtml

  • Action application/x-httpd-php "/php/php.exe"

N'oubliez pas de redémarrer le serveur, avec la commande NET STOP APACHE suivie de NET START APACHE.

Avertissement

En utilisant la configuration en CGI, votre serveur sera ouvert à plusieurs attaques potentielles. Lisez donc la section sécurité des CGI pour savoir comment vous en défendre.

Si vous voulez utiliser PHP comme module Apache, vous devez déplacer le fichier php4ts.dll dans le dossier windows/system (pour Windows 9x/Me) ou winnt/system32 (pour Windows NT/2000), en écrasant les anciennes versions. Puis, vous devez ajouter les deux lignes suivantes dans le fichier de configuration Apache :

  • LoadModule php4_module c:/php/sapi/php4apache.dll

  • AddType application/x-httpd-php .php .phtml

Après avoir modifié le fichier de configuration, pensez à redémarrer le serveur web, par exemple avec NET STOP APACHE suivi de NET START APACHE, si vous utilisez Apache comme service Windows, ou bien utilisez les alias classiques.

Note : Il se peut qu'après avoir utilisé l'installeur Apache pour Windows, vous deviez définir la directive AddModule pour mod_php4.c dans le fichier de configuration (httpd.conf). Cela peut être fait en ajoutant AddModule mod_php4.c à la liste des AddModule, juste après le début du fichier de configuration. C'est particulièrement important si la directive ClearModuleList est utilisée. Ne pas le faire reviendrait à ne pas déclarer PHP comme module Apache.

Il y a deux méthodes pour utiliser la fonctionnalité de coloration syntaxique, elles dépendent de votre installation. Si vous avez configuré Apache comme module ISAPI, alors il suffit d'ajouter la ligne suivante dans votre fichier de configuration : AddType application/x-httpd-php-source .phps

Si vous choisissez de configurer Apache pour utiliser PHP comme exécutable CGI, vous aurez besoin de la fonction show_source(). Pour cela, créez simplement un script PHP et ajoutez-y le code suivant : <?php show_source ("original_php_script.php"); ?>. Substitutez original_php_script.php par le nom du fichier que vous souhaitez afficher.

Note : Avec le couple Windows-Apache tous les antislashes des noms de chemins tels que "c:\directory\file.ext", doivent être convertis en slash c'est à dire "c:/directory/file.ext".

Précédent | Sommaire | Suivant
CGI/ Installation pour exécution en ligne de commande | Niveau supérieur | Installation avec les serveurs Apache 2.0


Installation avec les serveurs Apache 2.0

Cette section contient les notes et conseils d'installation de PHP avec le serveur Apache 2.0, aussi bien pour Unix que pour Windows versions.

Avertissement

N'utilisez pas Apache 2.0 et PHP sur un serveur de production, ni sur Windows, ni sur Unix.

Il est très recommandé de lire la documentation Apache pour avoir une meilleure connaissance du serveur web Apache 2.0.

Notes sur la compatibilité de PHP avec Apache 2.0

Les versions de PHP suivantes sont reconnues pour fonctionner avec la plus récente version d'Apache 2.0 :

  • PHP 4.3.0 ou plus récent, disponible à http://www.php.net/downloads.php.
  • Les dernières versions de développement. Le code source est disponbile à http://snaps.php.net/php4-latest.tar.gz, et les exécutables compilés de Windows à http://snaps.php.net/win32/php4-win32-latest.zip.
  • Une version non stable, téléchargeable sur http://qa.php.net/.
  • Vous pouvez obtenir PHP sur le serveur CVS anonyme.
Ces versions de PHP sont compatibles avec Apache 2.0.40 et plus récent.

Note : Le support des SAPI d'Apache 2.0 a commencé avec PHP 4.2.0. PHP 4.2.3 est connu pour fonctionner avec Apache 2.0.39. N'essayez pas d'utiliser cette version de PHP avec une autre version d'Apache 2.0. Nous ne recommandons pas l'utilisation de PHP 4.2.3 avec Apache 2.0.39.

Toutes les versions de PHP mentionnées ici fonctionnent avec Apache 1.3.x.

Installer PHP et Apache 2 sur Linux

Téléchargez la version la plus récente de Apache 2.0 et une version appropriée de PHP, tel que décrit ci-dessus. Ce guide rapide couvre les manipulations de base, nécessaires à l'installation de Apache 2.0 et PHP. Pour plus d'informations, lisez la documentation Apache. Les numéros de version sont omis ici, pour s'assurer que les instructions ne soient pas incorrectes. Il faudra donc remplacer les séquences 'NN' avec les valeurs correctes que vous utilisez.

Exemple 3-11. Instruction d'installation (Module partagé Apache 2)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    Maintenant, vous avez un dossier Apache 2.0.NN installe dans /usr/local/apache2,
    configure avec le support des modules dynamiques, et le prefork standard MPM.
    Pour tester l'installation, utilisez votre procedure standard de demarrage d'Apache :
    /usr/local/apache2/bin/apachectl start
    et pour stopper le serveur, utilisez
    /usr/local/apache2/bin/apachectl stop.

9.  cd ../php4-NN
10. ./configure --with-apxs2=/usr/local/apache2/bin/apxs
11. make
12. make install
13. cp php.ini-dist /usr/local/lib/php.ini

    Editez votre fichier php.ini pour configurer les options PHP.
    Si vous preferez placer ce fichier a un autre endroit, utilisez l'option
    --with-config-file-path=/path en &eacute;tape 10.

14. Editez votre fichier httpd.conf et verifiez la presence des lignes suivantes :

   LoadModule php4_module modules/libphp4.so
   AddType application/x-httpd-php .php

  Vous pouvez installer toutes les extensions que vous souhaitez. .php est
  simplement celle que nous suggerons.

  Le chemin &agrave; droite de la directive LoadModule doit indiquer le chemin
  du module PHP de votre systeme. La directive ci-dessus est correcte si vous
  avez suivi les autres etapes a la lettre.

15. Utilisez votre procedure standard pour redemarrer Apache :
   /usr/local/apache2/bin/apachectl start

Suivez les étapes ci-dessus, et vous disposerez d'un serveur Apache 2.0 avec le support de PHP module comme module SAPI. Bien sur, il y a bien d'autres options de configuration disponibles pour les deux logiciels, Apache et PHP. Pour plus de détails, utilisez la commande ./configure --help dans le dossier de souces approprié. Si vous souhaitez compiler une version multi-threadé de Apache 2.0 vous devrez remplacer le module standard MPM prefork avec worker ou perchild. Pour ce faire, ajoutez à la ligne de configuration de l'étape 6, l'option --with-mpm=worker ou --with-mpm=perchild. Soyez conscient des conséquences, et comprenez bien ce que vous faites. Pour plus de détails sur ce sujet, lisez la documentation Apache sur le module MPM.

Note : Pour compiler une version multi-threadée d'Apache, votre système doit supporter les threads. Cela implique aussi de compiler PHP avec le module expérimental de Zend Thread Safety (ZTS). Par conséquent, toutes les extensions ne seront pas disponibles. La configuration recommandée actuellement est celle avec le module standard MPM prefork.

Installation de PHP et Apache 2.0 sur Windows

Lisez donc les notes spécifiques à Windows pour Apache 2.0.

Avertissement

Apache 2.0 est conçu pour fonctionner sur Windows NT 4.0 et Windows 2000. Actuellement, le support des versions Windows 9x est incomplet. Apache 2.0 n'est pas prévu pour fonctionner sur ces plate-formes pour l'instant.

Téléchargez la version la plus récente de Apache 2.0 et une version de PHP appropriée, tel que mentionné au début de ce chapitre. Suivez les instructions d'installation manuelle puis revenez ici pour réaliser l'intégration de PHP et Apache.

Il y a deux méthodes pour que PHP fonctionne avec Apache 2.0 sous Windows. La première est l'interface CGI, et l'autre est le module DLL Apache. Dans les deux cas, commencez par stopper le serveur Apache, et éditez le fichier httpd.conf pour configurer Apache avec le support PHP.

Vous devez insérer les lignes suivantes dans le fichier httpd.conf pour réaliser la configuration en mode CGI:

Exemple 3-12. Configurer la version de développement de PHP avec Apache 2.0 en CGI

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

Note : A partir de PHP 4.3.0, le nom de l'exécutable CGI a changé, et il est devenu php-cgi.exe. Prenez-le en compte, et utilisez la bonne directive pour Apache.

Si vous souhaitez utiliser PHP comme module dans Apache 2.0, placez bien le fichier php4ts.dll dans votre dossier winnt/system32, en y écrasant tout autre fichier qui s'y trouverait. Puis vous devrez insérer les deux lignes suivantes dans votre fichier de configuration d'Apache httpd.conf pour y ajouter le module PHP d'Apache 2.0 :

Exemple 3-13. Configurer PHP avec Apache 2.0 en module

LoadModule php4_module c:/php/sapi/php4apache2.dll
AddType application/x-httpd-php .php

Note : N'oubliez pas de remplacer c:/php/ par votre chemin réel de PHP dans les exemples ci-dessus. Ne mélangez pas votre installation en module (DLL) avec différentes versions de PHP. Vous devez utiliser uniquement les DLL et extensions qui sont fournies avec la version de PHP que vous téléchargez.

Précédent | Sommaire | Suivant
Installation avec le serveur Apache | Niveau supérieur | Installation sur le serveur Caudium


Installation sur le serveur Caudium

PHP 4 peut être compilé comme module Pike pour le serveur web Caudium. Notez que ce mode n'est pas supporté en PHP 3. Suivez simplement les instructions suivantes pour installer PHP 4 sur un serveur Caudium.

Exemple 3-14. Instructions d'installation Caudium

1.  Assurez-vous que vous avez un serveur Caudium install&eacute; avant de tenter
    l'installation PHP 4. Pour que PHP 4 fonctionne correctement, vous devez
    installer Pike 7.0.268 ou plus r&eacute;cent. Pour cet exemple, nous supposerons
    que vous avez install&eacute; Caudium dans le dossier /opt/caudium/server/.
2.  Renommez le dossier en php-x.y.z (o&ugrave; x.y.z est le num&eacute;ro de version).
3.  ./configure --with-caudium=/opt/caudium/server
4.  make
5.  make install
6.  Red&eacute;marrez Caudium s'il &eacute;tait en fonctionnement
7.  Connectez-vous &agrave; l'interface de configuration graphique et allez
    dans le serveur virtuel auquel vous voulez ajouter le support PHP.
8.  Cliquez sur "Add Module" et recherchez puis ajoutez le module
    "PHP 4 Script Support".
9.  Si la documentation dit que 'PHP 4 interpreter isn't
    available', assurez-vous que vous avez bien red&eacute;marr&eacute; le serveur.
    Si vous l'avez fait, v&eacute;rifiez le fichier
    /opt/caudium/logs/debug/default.1 : il contient peut-&ecirc;tre des
    erreurs li&eacute;es &agrave; PHP4.so. De m&ecirc;me, assurez-vous
    que caudium/server/lib/[pike-version]/PHP4.so
    est pr&eacute;sent.
10. Configurez le module "PHP Script Support" si n&eacute;cessaire.

Vous pouvez bien sûr compiler votre module Caudium avec les diverses extensions disponibles. Voyez la liste complète des options de configuration pour une liste exhaustive.

Note : Lorsque vous ajoutez le support MySQL à PHP 4, vous devez vous assurer que le client MySQL normal est utilisé. Sinon, il peut y avoir des conflits avec Pike, qui dispose déjà du support MySQL. Vous pouvez le faire en spécifiant le dossier d'installation de MySQL grâce à l'option --with-mysql.

Précédent | Sommaire | Suivant
Installation avec les serveurs Apache 2.0 | Niveau supérieur | Installation avec les serveurs fhttpd


Installation avec les serveurs fhttpd

Pour compiler PHP comme un module fhttpd, répondre "yes" à la question "Build as an fhttpd module ?" (cela correspond à l'option de configuration --with-fhttpd=DIR et spécifier la racine de la distribution fhttpd. Le répertoire par défaut est: /usr/local/src/fhttpd. Si vous utilisez fhttpd, compiler PHP en module vous permettra d'obtenir des performances supérieures, plus de contrôle et la possibilité d'exécution à distance.

Précédent | Sommaire | Suivant
Installation sur le serveur Caudium | Niveau supérieur | Installation avec les serveurs IIS/PWS


Installation avec les serveurs IIS/PWS

Cette section contient des notes sur l'installation de PHP avec IIS ( Microsoft Internet Information Server) : PWS/IIS 3, PWS 4 ou plus récent et IIS 4 ou plus récent.

Windows et PWS/IIS 3

La méthode recommandée pour configurer ces serveurs est d'utiliser le fichier INF inclus dans la distribution (php_iis_reg.inf). Vous pouvez éditer ce fichier, pour vous assurer que les extensions et les dossiers d'installation de PHP sont bien ceux de votre configuration. Ou alors, vous pouvez suivre les instructions suivantes :

Avertissement

ATTENTION: Ces instructions requièrent la manipulation du fichier de registre de Windows. Une erreur peut laisser votre système dans un état instable. Nous vous recommandons vivement de sauvegarder ce fichier en lieu sûr. L'équipe de développement et les traducteurs de cette documentation ne pourront pas être tenus responsable d'un quelconque dommage qui pourrait survenir dans votre registre.

  • Lancez Regedit.

  • Naviguez jusqu'à : HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap.

  • Dans le menu "edit", sélectionnez : New->String Value.

  • Entrez l'extension que vous voulez utiliser pour les scripts PHP. Par exemple : .php

  • Double-cliquez sur la chaîne, et entrez le chemin jusqu'à php.exe dans le champ "value data". ex: c:\php\php.exe.

Les étapes suivantes n'affectent pas la configuration du serveur web, et ne s'appliquent que si vous voulez que vos scripts PHP soient exécutés lorsqu'il sont exécutés en ligne de commande (par exemple, run c:\messcripts\test.php) ou en double-cliquant sur l'icone. Vous pouvez ignorer ces étapes si vous préférez que vos scripts PHP s'ouvrent dans un éditeur de texte, plutôt que de les voir s'exécuter lorsque vous double-cliquez dessus.

  • Répétez ces instructions pour toutes les extensions que vous voulez associer aux scripts PHP.

  • Naviguez jusqu'à : HKEY_CLASSES_ROOT

  • Dans le menu edit, sélectionnez: New->Key.

  • Donnez le nom de votre extension à la clé : ex: .php

  • Sélectionnez le nom de la nouvelle clé dans le panneau de droite, et double-cliquez dans "default value", puis entrez phpfile.

  • Répétez ces instructions pour toutes les extensions que vous avez associé aux scripts PHP.

  • Créez une autre New->Key sous HKEY_CLASSES_ROOT et nommez-la phpfile.

  • Sélectionnez la nouvelle clé phpfile et dans le panneau de droite, double-cliquez dans "default value" et entrez PHP Script.

  • Faites un clic droit dans phpfile et sélectionnez New->Key, appelez-le Shell.

  • Faites un clic droit dans Shell et sélectionnez New->Key, appelez-le open.

  • Faites un clic droit dans open et sélectionnez New->Key, appelez-le command.

  • Sélectionnez la nouvelle clé command et dans le panneau de droite, faites un double-clic dans "default value", puis entrez le chemin jusqu'à php.exe. ex: c:\php\php.exe -q %1. (n'oubliez pas le %1).

  • Quittez Regedit.

  • Si vous utilisez PWS sous Windows, redémarrez pour prendre en compte le nouveau registre.

Les utilisateurs de PWS et IIS 3 sont prêts à utiliser leur serveur. Avec IIS 3, vous pouvez utiliser un outil bien pratique de Steven Genusa pour configurer votre carte des scripts.

Windows et PWS 4 ou plus récent

Pour installer PHP sous Windows avec PWS 4 ou plus récent, vous avez deux options : l'une est d'avoir PHP sous forme de CGI, l'autre est d'utiliser les modules ISAPI, sous forme de DLL.

Si vous optez pour le CGI, faites ceci :

  • Editez le fichier pws-php4cgi.reg (dans le dossier sapi) pour indiquer la localisation de votre fichier php.exe. Les slash doivent être échappés. Par exemple : [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\PHP\\php.exe"

  • Dans le gestionnaire PWS Manager, faites un clic droit sur les dossiers qui supporteront PHP, et sélectionnez "Properties". Cochez l'option "Execute" et confirmez.

Si vous optez pour les modules ISAPI, faites ceci :

  • Editez le fichier pws-php4isapi.reg (dans le dossier sapi) pour indiquer la localisation de votre fichier php4isapi.dll. Les slash doivent être échappés. Par exemple : [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\PHP\\sapi\\php4isapi.dll"

  • Dans le gestionnaire PWS Manager, faites un clic droit sur les dossiers qui supporteront PHP, et sélectionnez "Properties". Cochez l'option "Execute" et confirmez.

Windows NT/2000 et IIS 4 ou plus récent

Pour installer PHP sous Windows NT/2000 server avec IIS 4 ou plus récent, vous avez deux options : l'une est d'avoir PHP sous forme de CGI, l'autre est d'utiliser les modules SAPI, sous forme de DLL.

Dans les deux cas, vous devez lancer la console "Microsoft Management" (elle peut aussi s'appeler "Internet Services Manager". Elle est située soit dans "Windows NT 4.0 Option Pack" ou dans "Control Panel=>Administrative Tools" sous Windows 2000). Puis, faites un clic droit sur votre dossier web (qui apparaitra probablement comme Default Web Server), et sélectionnez "Properties".

Si vous optez pour le CGI, faites ceci :

  • Sous "Home Directory", "Virtual Directory", ou "Directory", cliquez sur le bouton "Configuration", et sélectionnez l'onglet "App Mappings".

  • Cliquez sur "Add", puis dans la boîte "Executable", tapez : c:\php\php.exe (si vous avez installé PHP dans le dossier c:\php\.)

  • Dans la boîte "Extension", tapez le nom de l'extension que vous voulez associer aux scripts PHP. Laissez "Method exclusions" vide, et cochez "Script engine". Vous pouvez aussi préférer cocher la boîte 'check that file exists' - pour un coût faible, IIS (ou PWS) s'assurera que le script existe, et résoudra les problèmes d'autentification avant de démarrer PHP. Cela signifie que vous obtiendrez des messages d'erreur 404 intelligents, plutôt que d'avoir simplement une plainte du serveur comme quoi les CGI n'ont rien retourné.

    Répétez les étapes 3 et 4 pour chaque extension que vous souhaitez associer aux scripts PHP. (.php et .phtml sont les plus répandues.)

  • Configurer la sécurité nécessaire (dans "Internet Service Manager"), et si votre serveur NT utilise NTFS, ajoutez les droits adéquats pour I_USR_, au dossier qui contient php.exe.

Si vous optez pour les modules ISAPI, faites ceci :

  • Si vous ne voulez pas effectuer des authentifications HTTP avec PHP, vous pouvez (et devez) sauter cette étape. Avec ISAPI Filters, ajoutez un nouveau filtre ISAPI. Utilisez PHP comme nom de filtre, et ajoutez simplement le chemin jusqu'à php4isapi.dll.

  • Sous "Home Directory", cliquez sur le bouton "Configuration". Ajoutez une nouvelle entrée dans "Application Mappings". Utilisez le chemin jusqu'à php4isapi.dll comme "Executable", indiquez ".php" comme extension, laissez "Method exclusions" vide, et cochez "Script engine".

  • Arrêtez totalement IIS (NET STOP iisadmin)

  • Démarrez IIS (NET START w3svc)

Précédent | Sommaire | Suivant
Installation avec les serveurs fhttpd | Niveau supérieur | Installation sous Netscape et iPlanet Enterprise Serveur


Installation sous Netscape et iPlanet Enterprise Serveur

Cette section contient les notes et détails spécifiques à l'installation Netscape et iPlanet, aussi bien pour Sun Solaris que Windows.

Vous pouvez trouvez plus d'informations sur la configuration de PHP avec Netscape Enterprise Server : http://benoit.noss.free.fr/php/install-php4.html

Installer PHP avec Netscape sous Sun Solaris

Pour compiler PHP avec NES ou iPlanet, indiquez le bon dossier d'installation pour l'option de configuration --with-nsapi = DIR option. Le dossier par défaut est généralement /opt/netscape/suitespot/. Lisez aussi /php-xxx-version/sapi/nsapi/nsapi-readme.txt.

Note : Ces instructions, valables pour Sun Solaris 2.6 avec Netscape Enterprise Server 3.6, sont l'oeuvre de bhager at invacare dot com.

  1. Installez les packages suivants depuis le serveur http://www.sunfreeware.com/ ou un miroir ad hoc :

    autoconf-2.13
    automake-1.4
    bison-1_25-sol26-sparc-local
    flex-2_5_4a-sol26-sparc-local
    gcc-2_95_2-sol26-sparc-local
    gzip-1.2.4-sol26-sparc-local
    m4-1_4-sol26-sparc-local
    make-3_76_1-sol26-sparc-local
    mysql-3.23.24-beta (si vous voulez le support MySQL)
    perl-5_005_03-sol26-sparc-local
    tar-1.13 (GNU tar)

  2. Assurez-vous que le path inclut bien les dossiers nécessaires : PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin et rendez le accessible à vortre système avec export PATH.

  3. gunzip php-x.x.x.tar.gz (si vous avez une distribution .gz, ou bien allez en 4).

  4. tar xvf php-x.x.x.tar

  5. Passez dans votre dossier PHP : cd ../php-x.x.x

  6. Pour les étapes suivantes, assurez-vous que /opt/netscape/suitespot/ correspond bien à votre installation du serveur netscape. Sinon, indiquez le chemin correct :
    ./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc

  7. Faites un make puis un make install.

Après avoir fait l'installation de base et lu les fichiers readme.txt, vous pouvez avoir besoin de faire des configurations supplémentaires.

D'abord, vous devez ajouter des chemins dans la variable LD_LIBRARY_PATH pour que PHP trouve toutes les librairies partagées. Le mieux est de le faire dans le script de démarrage de votre serveur Netscape. Les utilisateurs Windows peuvent probablement ignorer cette étape. Le script de démarrage est situé dans : /path/to/server/https-servername/start

Vous pouvez aussi avoir besoin d'éditer les fichiers de configuration qui sont situés dans : /path/to/server/https-servername/config/.

Instructions de configuration pour Netscape Entreprise Server. Tout d'abord, vous aurez besoin d'ajouter des chemins dans la variable LD_LIBRARY_PATH pour que Netscape trouve son bonheur. Il est préférable de le faire dans le script de démarrage du serveur Netscape. Les utilisateurs Windows peuvent ignorer cette étape. Le script de démarrage est souvent situé dans : /path/to/server/https-servername/start. Vous aurez peut être à éditer le fichier de configuration situé dans /path/to/server/https-servername/config/.

  1. Ajoutez les lignes suivantes dans mime.types:
    type=magnus-internal/x-httpd-php exts=php

  2. Ajoutez les lignes suivantes dans obj.conf. shlib peut varier en fonction de votre OS. Pour Unix, c'est quelquechose comme /opt/netscape/suitespot/bin/libphp4.so. Il est conseillé de placer les lignes suivantes après les lignes de mime types init.
    Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="/php4/nsapiPHP4.dll"
Init fn=php4_init errorString="Failed to initialize PHP!"

  3. Configurez les valeurs par défaut :
    <object name="default">
.
.
.
.#NOTE this next line should happen after all 'ObjectType' and before all 'AddLog' lines
Service fn="php4_execute" type="magnus-internal/x-httpd-php"
    .
    .
    </Object>

  4. Créez un nouvel objet pour PHP :
    <Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute
</Object>

  5. Configuration d'authentification L'authentification PHP ne peut pas être utilisée avec d'autres authentifications. TOUTES LES FORMES D'AUTHENTIFICATION SONT PASSEES AU SCRIPT PHP. Pour configurer l'authentification PHP pour le serveur entier, ajoutez la ligne suivante :
    <Object name="default">
AuthTrans fn=php4_auth_trans
.
.
.
</Object>

  6. Pour utiliser l'identification PHP sur un seul dossier, utilisez la ligne suivante :
    <Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>

Si vous utilisez Netscape Enterprise 4.x, alors, il faut utiliser ceci : placez ces lignes dans les informations d'initialisation des types Mime, et tout ce qui y est rattaché dans la configuration ci-dessus : (fourni par Graeme Hoose, GraemeHoose at BrightStation dot com).
Init fn="load-modules" shlib="/path/to/server4/bin/libphp4.so" funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
Init fn="php4_init" LateInit="yes"

Installer PHP avec Netscape Enterprise sous Windows

Pour installer PHP sous forme de CGI (pour Netscape Enterprise Server, iPlanet, peut être Fastrack), suivez ces instructions :

  • Copiez le fichier php4ts.dll dans votre dossier systemroot (le dossier où vous avez installé windows)

  • Faîtes un fichier d'association depuis la ligne de commande. Tapez les lignes suivantes :
    assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • Dans le serveur Netscape Enterprise Administration Server, créez un dossier shellcgi et supprimez-le aussitôt (cette opération crée 5 lignes importantes dans le fichier obj.conf et permet au serveur de gérer les scripts CGI).

  • Dans le serveur Netscape Enterprise Administration Server, créez un nouveau type MIME (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).

  • Recommencez pour chaque instance de serveur web qui devra exécuter PHP.

Plus de détails sur la configuration de PHP comme CGI sont disponibles à http://benoit.noss.free.fr/php/install-php.html

Pour installer PHP avec l'interface NSAPI (pour Netscape Enterprise Server, iPlanet, peut-être Fastrack), faîtes ceci :

  • Copiez le fichier php4ts.dll dans votre dossier systemroot (le dossier où vous avez installé windows)

  • Faîtes un fichier d'association depuis la ligne de commande. Tapez les lignes suivantes :
    assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • Dans le serveur Netscape Enterprise Administration Server, créez un nouveau type MIME (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).

  • Stoppez votre serveur web et éditez le fichier obj.conf. A la fin de la section Init, placez ces deux lignes (obligatoirement après l'init de type MIME) :
    Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
Init fn="php4_init" errorString="Failed to initialise PHP!"

  • Dans la section < Object name="default" >, placez cette ligne, obligatoirement après toutes les lignes 'ObjectType' et avant les lignes 'AddLog' :
    Service fn="php4_execute" type="magnus-internal/x-httpd-php"

  • A la fin du fichier, créez un nouvel objet appelé x-httpd-php, en insérant ces lignes :
    <Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute
</Object>

  • Redémarrez votre serveur web, et validez les modifications

  • Recommencez pour chaque serveur qui doit utiliser PHP.

Plus de détails sur la configiration de PHP en filtre NSAPI sont disponibles : http://benoit.noss.free.fr/php/install-php4.html

Précédent | Sommaire | Suivant
Installation avec les serveurs IIS/PWS | Niveau supérieur | Installation pour les serveurs OmniHTTPd


Installation pour les serveurs OmniHTTPd

Cette section contient les notes et conseils pour installer PHP sur un serveur OmniHTTPd.

OmniHTTPd 2.0b1 et plus récent pour Windows

Vous devez réaliser les étapes suivantes pour configurer PHP sur votre serveur OmniHTTPd. C'est une configuration en exécutable CGI. SAPI est supporté par OmniHTTPd, mais des tests ont prouvé que ce n'est pas une solution stable.

  • Step 1: Installez le serveur OmniHTTPd.

  • Step 2: Faites un clic droit sur l'icone bleue d'OmniHTTPd sur le système, et sélectionnez Properties

  • Step 3: Cliquez sur Web Server Global Settings

  • Step 4: Dans l'onglet 'External', entrez : virtual = .php | actual = c:\path-to-php-dir\php.exe, et utilisez le bouton "Add" (ajout).

  • Step 5: Dans l'onglet Mime, entrez : virtual = wwwserver/stdcgi | actual = .php, et utilisez le bouton "Add" (ajout).

  • Step 6: Cliquez sur OK

Répetez les étapes de 2 à 6 pour chaque extension que vous voulez associer à PHP.

Note : Certains packages OmniHTTPd sont fournis avec le support de PHP. Vous pouvez le choisir au moment de l'installation, et décocher le composant PHP. Nous recommandons d'utiliser les dernières versions de PHP. Certains serveurs OmniHTTPd sont livrés avec des versions béta de PHP, et il vaut donc mieux éviter de les installer, et choisir une autre version, stable. Si le serveur est déjà sur votre machine, utilisez le bouton "Replace" (remplacer) dans les étapes 4 et 5 pour configurer un nouveau PHP.

Précédent | Sommaire | Suivant
Installation sous Netscape et iPlanet Enterprise Serveur | Niveau supérieur | Installation Oreilly Website Pro Server


Installation Oreilly Website Pro Server

Cette section contient les conseils d'installation spécifiques à Oreilly Website Pro.

Oreilly Website Pro 2.5 et plus récent pour Windows

Cette liste décrit comment installer PHP comme CGI exécutable ou module ISAPI avec Oreilly Website Pro sous Windows.

  • Editez les "Server Properties" et sélectionnez l'onglet "Mapping".

  • Dans la "List" sélectionnez "Associations" et entrez le nom de l'extension voulue (".php") et le chemin jusqu'à l'exécutable (ex. c:\php\php.exe) ou la DLL ISAPI (ex. c:\php\sapi\php4isapi.dll).

  • Sélectionnez "Content Types", ajoutez la même extension ".php" et entrez le "content type". Si vous choisissez la forme CGI, entrez "wwwserver/shellcgi"; si vous choisissez la forme module ISAPI, entrez "wwwserver/isapi" (sans les guillemets).

Précédent | Sommaire | Suivant
Installation pour les serveurs OmniHTTPd | Niveau supérieur | Serveurs Sambar


Serveurs Sambar

Cette section contient les notes et conseils d'installation de PHP sur les serveurs Sambar, sur Windows.

Installation pour Sambar sur Windows

Cette liste décrit comment configurer le module ISAPI avec le serveur Sambar sous Windows.

  • Trouvez le fichier appelé mappings.ini (dans le dossier de configuration), dans le dossier d'installation de Sambar.

  • Ouvrez mappings.ini et ajoutez la ligne suivante, sous la section [ISAPI] :

    Exemple 3-15. Configuration ISAPI de Sambar

    *.php = c:\php\php4isapi.dll
    (Cette ligne suppose que PHP a été installé dans le dossier c:\php.)

  • Maintenant, redémarrez le serveur Sambar pour que les modifications prennent effet.

Précédent | Sommaire | Suivant
Installation Oreilly Website Pro Server | Niveau supérieur | Installation Xitami


Installation Xitami

Cette section contient les conseils d'installation spécifiques à Xitami.

Xitami pour Windows

Cette liste décrit comment installer PHP comme CGI exécutable ou module ISAPI avec Xitami sous Windows.

  • Assurez-vous que le serveur web fonctionne, et allez dans la console d'administration du serveur (généralement http://127.0.0.1/admin), puis cliquez sur "Configuration".

  • Naviguez dans les "Filters", et ajoutez l'extension que vous souhaitez (souvent ".php") dans le champ "File extensions".

  • Dans la commande "Filter", ajoutez le nom et le chemin de votre exécutable PHP (souvent c:\php\php.exe).

  • Cliquez sur le bouton "Save".

  • Redémarrez le serveur pour prendre en compte les modifications.

Précédent | Sommaire | Suivant
Serveurs Sambar | Niveau supérieur | Autres serveurs web


Autres serveurs web

PHP peut être compilé pour fonctionner avec de nombreux autres serveurs web. Reportez-vous à la partie Options des serveurs web pour une liste complète des options de configuration. Les exécutables PHP CGI sont compatibles avec la majorité des serveurs supportant les interfaces CGI.

Précédent | Sommaire | Suivant
Installation Xitami | Niveau supérieur | Des problèmes?


Des problèmes?

Lisez la FAQ

Certains problèmes sont récurrents : les plus communs sont listés dans la FAQ PHP, disponible dans ce manuel.

Autres problèmes

Si vous êtes complètement bloqués, quelqu'un sur la liste de diffusion PHP pourra probablement vous aider. Essayez de consulter les archives, au cas où quelqu'un aurait déjà rencontré votre problème. Les archives sont toujours accessibles à : http://www.php.net/support.php. Pour souscrire à la liste de diffusion, envoyez un mail vide à php-install-subscribe@lists.php.net. L'adresse de la liste de diffusion est php-install@lists.php.net.

Si vous voulez obtenir de l'aide sur la liste de diffusion PHP, essayez d'être concis et clair, et pensez à donner tous les détails sur votre environnement (OS, version de PHP, serveur web, CGI ou module, safe mode, etc...), et n'hésitez pas à envoyer suffisamment de code pour que nous puissions reproduire l'erreur.

Rapports de Bug

Si vous pensez avoir trouvé un bug dans PHP, n'oubliez pas de le signaler. L'équipe de développement PHP ne le connaît peut être pas, et si vous ne le signaler pas, vos chances de voir le bug corrigé sont nulles. Vous pouvez rapporter des bugs grâce au système de suivi, accessible à http://bugs.php.net/.

Lisez les guides (Les bugs : ce qu'il faut faire, et ce qu'il ne faut pas faire) avant d'envoyer n'importe quel rapport!

Précédent | Sommaire | Suivant
Autres serveurs web | Niveau supérieur | Liste des options de configuration diverses


Liste des options de configuration diverses

Vous trouverez ci-dessus une liste partielle des options de configuration utilisées par le script de configuration PHP configure, lors de la compilation sur les environnements de type Unix. La plupart des options de configuration sont décrites dans leur chapitre et ne sont pas présentées ici. Pour une liste complète des options de configuration, utilisez la commande en ligne ./configure --help dans votre dossier PHP après avoir exécuté la commande autoconf (voyez aussi le chapitre d'installation). Vous serez aussi interessés par la lecture de la documentation de GNU configure pour plus de détails sur les options du script configure, telles que --prefix=PREFIX.

Note : Ces options sont utilisées uniquement au moment de la compilation. Si vous voulez modifier le comportement de PHP lors de l'exécution, reportez vous au chapitre configuration.

Ci-dessous, vous trouverez une liste complète des options supportées par le script de configuration de PHP 4, configure (depuis PHP 4.1.0), utilisé lors de la compilation dans les environnements Unix. Certaines options sont disponibles en PHP 3, d'autres en PHP 4, d'autres encore dans les deux.

Il y a des options de configuration générales pour le script configure, consultez les pages appropriées du manuel de GNU autoconf ou bien utilisez la commande configure --help pour avoir une liste complète et à jour des options.

  • Bases de données

  • Graphisme

  • Divers

  • PHP

  • Serveur

Options de configuration en PHP 4

Note : Ces options ne sont utilisées qu'en PHP 4, depuis la version PHP 4.1.0. Certaines sont disponibles dans les anciennes versions PHP 4, certaines même en PHP 3, certaines uniquement en PHP 4.1.0. Si vous essayez de compiler une version plus ancienne, certaines options peuvent simplement ne pas exister.

Options graphiques

--with-imagick

L'extension imagick a été placée dans PECL de PEAR et peut être trouvée ici. Les instructions d'installation pour PHP 4 sont disponibles sur le site de PEAR.

En bref, --with-imagick est uniquement supporté en PHP 3, à moins que vous ne suiviez les instructions disponibles sur le site de PEAR.

Options diverses

--enable-debug

Compile PHP avec les symboles de débogage.

--with-layout=type

Indique comment les fichiers installés doivent être rangés. Les valeurs possibles sont Type (valeur par défaut) et GNU.

--with-pear=dir

Installe PEAR dans le dossier DIR. Par défaut, c'est PREFIX/lib/php.

--without-pear

Exclut l'installation de PEAR.

--enable-sigchild

Active le gestionnaire de SIGCHLD propre à PHP.

--disable-rpath

Désactive le passage de chemins supplémentaires pour chercher les librairies additionnelles.

--enable-libgcc

Active explicitement le linkage avec libgcc.

--enable-php-streams

Inclut le support des flux de PHP (expérimental). Ne pas utiliser à moins que vous ne testiez le code.

--with-zlib-dir=<dir>

Définit le chemin d'installation de zlib.

--enable-trans-sid

Active la propagation transparente des sessions.

--with-tsrm-pthreads

Utilise les threads POSIX (configuré par défaut).

--enable-shared[=pkgs]

Compile les librairies partagées. Par défaut, c'est yes.

--enable-static[=pkgs]

Compile les librairies statiques. Par défaut, c'est yes.

--enable-fast-install[=pkgs]

Optimise pour l'installation rapide. Par défaut, c'est yes.

--with-gnu-ld

Suppose que le compilateur utilise GNU ld. Par défaut, c'est no.

--disable-libtool-lock

Evite les verrouillages (mais cela risque de corrompre des compilations parallèles).

--with-pic

Essaie d'utiliser uniquement des objets PIC/non-PIC. Par défaut, c'est both (les deux).

--enable-memory-limit

Compile PHP avec le support de la limitation de mémoire.

--disable-url-fopen-wrapper

Désactive les gestionnaires HTTP et FTP avec les fonctions d'accès aux fichiers.

--enable-versioning

Exporte uniquement les symboles nécessaires. Voir le fichier INSTALL pour plus de détails.

--with-imsp[=dir]

Inclut le support de IMSP. DIR est le dossier d'IMSP qui contient les fichiers d'en-têtes et le fichier libimsp.a. Valable uniquement pour PHP 3!

--with-mck[=dir]

Inclut le support de Cybercash MCK. DIR est le dossier d'installation de cybercash mck. Par défaut, c'est /usr/src/mck-3.2.0.3-linux. Pour de l'aide, regardez dans extra/cyberlib. Valable uniquement pour PHP 3!

--with-mod-dav=dir

Inclut le support de DAV, grâce à l'interface Apache mod_dav. DIR est le dossier d'installation de mod_dav. Fonctionne uniquement pour la version module d'Apache. Valable uniquement pour PHP 3!

--enable-debugger

Compile PHP avec les fonctionnalités de débogage à distance. Valable uniquement pour PHP 3!

--enable-versioning

Profite du système de versionnage et de gestion d'environnement de Solaris 2.x et Linux. Valable uniquement pour PHP 3!

Options PHP

--enable-maintainer-mode

Active des règles de compilation (make) et des dépendances pas toujours utiles aux utilisateurs occasionnels.

--with-config-file-path=path

Indique le chemin dans lequel réside le fichier php.ini. Par défaut, c'est PREFIX/lib.

--enable-safe-mode

Active le safe mode par défaut.

--with-exec-dir[=dir]

Autorise uniquement les exécutables situés dans le dossier DIR lorsque le safe mode est activ. Par défaut, c'est DIR vaut /usr/local/php/bin.

--enable-magic-quotes

Active les guillemets magiques.

--disable-short-tags

Désactive les balises courtes <?.

Options Serveur

--with-aolserver=dir

Spécifie le chemin d'installation du serveur AOLserver.

--with-apxs[=file]

Compile un module Apache partagé. FILE est un chemin d'accès optionnel vers les outils apxs d'Apache. Par défaut, c'est apxs. Assurez vous de spécifier la version d'apxs qui est réellement installée sur votre système, et non pas celle qui est fournie avec Apache.

--with-apache[=dir]

Compile le module Apache. DIR est le chemin du dossier d'installation d'Apache. Par défaut, c'est /usr/local/apache.

--with-mod_charset

Active les tables de transfert pour mod_charset (version russe de Apache).

--with-apxs2[=file]

Compile le module partagé Apache 2.0. FILE est un chemin d'accès optionnel vers les outils apxs d'Apache. Par défaut, c'est apxs.

--with-caudium=dir

Compile PHP comme module Pike pour utilisation avec Caudium. DIR est le serveur Caudium. Par défaut, c'est /usr/local/caudium/server.

--disable-cli

Empêche la compilation de la version CLI de PHP (cela force aussi l'option --without-pear). Disponible depuis PHP 4.3.0.

--enable-embed[=type]

Active la compilation de la librairie intégrée SAPI. TYPE vaut soit shared, soit static. Par défaut, c'est shared. Disponible depuis PHP 4.3.0.

--with-fhttpd[=dir]

Compile le module fhttpd. DIR est le dossier d'installation de fhttpd. Par défaut, c'est /usr/local/src/fhttpd.

--with-isapi=dir

Compile PHP sous forme de module ISAPI pour utiliser avec le serveur Zeus.

--with-nsapi=dir

Spécifie le chemin vers le serveur Netscape Server.

--with-phttpd=dir

Aucune information fournie.

--with-pi3web=dir

Compile PHP sous forme de module pour utiliser avec le serveur Pi3Web.

--with-roxen=dir

Compile PHP sous forme de module Pike. DIR est le chemin d'installation de Roxen. Par défaut, c'est /usr/local/roxen/server.

--enable-roxen-zts

Compile PHP sous forme de module Roxen, en utilisant Zend Thread Safety.

--with-servlet[=dir]

Inclut le support des servlets. DIR est le chemin d'installation du JSDK. Cette SAPI impose que l'extension java soit compilée comme une librairie partagée.

--with-thttpd=srcdir

Compile PHP comme module thttpd.

--with-tux=moduledir

Compile PHP comme module TUX (Linux uniquement).

--with-webjames=srcdir

Build PHP as a WebJames module (RISC OS only)

--disable-cgi

Empêche la compilation de la version CGI de PHP. Disponible depuis PHP 4.3.0.

--enable-force-cgi-redirect

Active la sécurité lors des redirections internes du serveur. Il est recommandé d'utiliser cette option lorsque vous utilisez PHP en CGI avec Apache.

--enable-discard-path

Si cette option est activée, l'exécutable CGI PHP peut être placé hors de l'arborescence web, en toute sécurité. Il ne sera pas possible de contourner les fichiers .htaccess.

--with-fastcgi

Compile PHP comme application FastCGI. Cette option n'est plus disponible depuis PHP 4.3.0.

--enable-fastcgi

Si cette option est activée, le module CGI sera compilé avec le support FastCGI. Cette option est disponible depuis PHP 4.3.0.

--disable-path-info-check

Si cette option est désactivée, des chemins tels que /info.php/test?a=b ne pourront pas fonctionner. Cette option est disponible depuis PHP 4.3.0. Pour plus d'informations, voir le Manuel Apache.

Précédent | Sommaire | Suivant
Des problèmes? | Niveau supérieur | Configuration


Configuration

Manuel PHP
Précédent Suivant

Chapitre 4. Configuration

Table des matières
Le fichier de configuration
Comment modfier la configuration
Directives de configuration

Le fichier de configuration

Le fichier de configuration (appelé php3.ini dans la version 3.0 du PHP, et simplement php.ini dans la version 4.0) est lu par PHP au démarrage. Si vous avez compilé PHP en module, le fichier n'est lu qu'une seule fois, au lancement du démon HTTP. Pour la version CGI le fichier est lu à chaque invocation.

La localisation par défaut du php.ini est une option de compilation (voir FAQ), mais elle peut être changée pour les versions CGI et CLI avec l'option de ligne de commande -c : voyez le chapitre sur l'utilisation de PHP en ligne de commande. Vous pouvez aussi utiliser la variable d'environnement PHPRC pour indiquer des chemins supplémentaires pour rechercher le fichier php.ini.

Toutes les directives PHP ne sont pas documentées ci-dessous. Pour une liste de toutes les directives, lisez le php.ini, qui est très bien documenté. Vous pouvez jeter un oeil à sa toute dernière version dans le CVS.

Note : La valeur par défaut de la directive PHP register_globals a été changée de on à off en PHP 4.2.0.

Exemple 4-1. Extrait du php.ini

; tout texte sur une ligne, situ&eacute; apr&egrave;s un point-virgule  ";" est ignor&eacute;
[php] ; les marqueur de section (texte entre crochets) sont aussi ignor&eacute;s
; Les valeurs bool&eacute;enne peuvent &ecirc;tre sp&eacute;cifi&eacute;es comme ceci :
;    true, on, yes
; ou false, off, no, none
register_globals = off
magic_quotes_gpc = yes
; vous pouvez placer les cha&icirc;nes de caract&egrave;res entre guillemets
include_path = ".:/usr/local/lib/php"
; Les anti-slash sont trait&eacute;s comme n'importe quel caract&egrave;re
include_path = ".;c:\php\lib"
</programlisting>
<!-- TODO: add more details about values and expressions -->

Précédent | Sommaire | Suivant
Liste des options de configuration diverses | Niveau supérieur | Comment modfier la configuration


Comment modfier la configuration

Exécuter PHP comme module Apache

Lorsque vous utilisez le module Apache, vous pouvez aussi changer les paramètres de configuration en utilisant les directives dans les fichiers de configuration d'Apache et dans les fichiers .htaccess.

Dans la version 3.0, à chaque directive de configuration présente dans le fichier de configuration d'Apache correspond une directive de configuration dans le fichier php3.ini, à l'exception des directives préfixées par "php3_".

Dans la version 4.0, il y a de nombreuses directives Apache qui vous permettent de modifier la configuration de PHP.

php_value name value

Modifie la valeur de la directive spécifiée. Cette instruction n'est utilisable qu'avec les directives PHP de type PHP_INI_ALL et PHP_INI_PERDIR. Pour annuler une valeur qui aurait été modifiée au préalable, utilisez la valeur none.

php_value auto_prepend_file none

php_flag name on|off

Cette instruction est utilisée pour activer ou désactiver une option. Cette instruction n'est utilisable qu'avec les directives PHP de type PHP_INI_ALL et PHP_INI_PERDIR.

php_admin_value name value

Cette instruction affecte une valeur à la variable spécifiée. Cette instruction NE peux PAS être utilisée dans un fichier .htaccess. Toute directive de PHP configurée avec le type php_admin_value ne peut pas être modifiée en utilisant le fichier .htaccess.

php_admin_value open_basedir none

php_admin_flag name on|off

Cette directive est utilisée pour activer ou désactiver l'option précédente. Cette instruction NE peux PAS être utilisée dans un fichier .htaccess. Toute directive de PHP configurée avec le type php_admin_value ne peut pas être modifiée en utilisant le fichier .htaccess.

Exemple 4-2. Exemple de configuration Apache

<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

Note : Les constantes PHP n'existent pas en dehors de PHP. Par exemple, dans le fichier httpd.conf, vous ne pouvez pas utiliser des constantes PHP telles que E_ALL ou E_NOTICE pour fixer le niveau de rapport d'erreur, car ces constantes n'ont pas de signification pour Apache, et seront remplacées par 0. Utilisez les valeurs numériques à la place. Les valeurs numériques peuvent aussi être utilisées dans le php.ini

Autres interfaces de configuration de PHP

Indépendamment de l'interface de PHP, vous pouvez modifier certaines valeurs de la configuration durant l'exécution des scripts, grâce à la fonction ini_set(). La table suivante fournit une présentation des différents endroits où la directive peut être modifiée.

Tableau 4-1. Definition des constantes PHP_INI_*

Constante | Valeur | Signification
PHP_INI_USER | 1 | La directive peut être configurée dans les scripts.
PHP_INI_PERDIR | 2 | La directive peut être configurée dans le fichier php.ini, le fichier .htaccess ou encore dans le fichier httpd.conf
PHP_INI_SYSTEM | 4 | La directive peut être configurée dans le fichier php.ini ou dans httpd.conf
PHP_INI_ALL | 7 | La directive peut être modifiée n'importe où.

Vous pouvez voir l'état de votre configuration en utilisant la fonction phpinfo(). Vous pouvez aussi accéder aux valeurs de votre configuration de manière individuelle en utilisant les fonctions ini_get() or get_cfg_var().

Précédent | Sommaire | Suivant
Configuration | Niveau supérieur | Directives de configuration


Directives de configuration

Options Httpd

Tableau 4-2. Options Httpd

Nom | Valeur par défaut | Modifications
async_send | "0" | PHP_INI_ALL

Options du langage

Tableau 4-3. Options du langage

Nom | Valeur par défaut | Modifications
short_open_tag | On | PHP_INI_SYSTEM|PHP_INI_PERDIR
asp_tags | Off | PHP_INI_SYSTEM|PHP_INI_PERDIR
precision | "14" | PHP_INI_ALL
y2k_compliance | Off | PHP_INI_ALL
allow_call_time_pass_reference | On | PHP_INI_SYSTEM|PHP_INI_PERDIR
expose_php | On | PHP_INI_SYSTEM

Voici un éclaircissement sur l'utilisation des directives de configuration.

short_open_tag bool

Active le support de la forme courte des balises PHP : <? ?>. Si vous voulez utiliser PHP avec du XML, vous pouvez désactiver cette option afin que vous puissiez utiliser <?xml ?>. Sinon vous pouvez l'afficher avec PHP comme ceci : <?php echo '<?xml version="1.0"'; ?>. Si cette directive est désactivée, vous devez utiliser la forme longue des balises PHP <?php ?>.

Note : Cette directive affecte aussi les raccourcis <?=, qui est l'équivalent de <? echo. Utiliser ce raccourci impose l'activation de la directive short_open_tag.

asp_tags bool

Active l'utilisation des balises de type ASP <% %>, en plus des traditionnelles balises <?php ?> . Cela inclut l'utilisation du raccourcid <%= $value %>. Pour plus d'informations, reportez-vous à inclusion dans le HTML.

Note : Le support des balises ASP a été ajouté dans la version 3.0.4.

precision integer

Le nombre de chiffres significatifs à afficher avec les nombre à virgule flottante.

y2k_compliance bool

Active la compatibilité an 2000 (Cela posera des problèmes avec les navigateurs qui ne sont pas compatibles)

allow_call_time_pass_reference bool

Cette directive force le passage des arguments par référence au moment de l'appel des fonctions. Cette méthode est obsolète, et il est probable qu'elle soit abandonnée dans les futures versions de PHP et Zend. La méthode qui est recommandée est d'indiquer le passage par référence dans la déclaration de la fonction. Nous vous recommandons de tenter de désactiver cette directive et d'adapter vos scripts, afin d'en garantir leur portabilité (vous verrez une alerte s'afficher à chaque fois que vous utilisez cette fonctionnalité, et les arguments seront passés par valeur plutôt quee par référence).

Voir aussi Les références.

expose_php bool

Cette directive active ou non le fait que PHP est marqué comme installé sur le serveur web (en ajoutant sa propre signature dans les en-têtes du serveur web). Cet affichage n'est pas une menace en terme de sécurité, mais il permet de déterminer l'utilisation de PHP sur votre serveur.

Limitation des ressources

Tableau 4-4. Limitation des ressources

Nom | Valeur par défaut | Modifications
memory_limit | "8M" | PHP_INI_ALL

Voici un éclaircissement sur l'utilisation des directives de configuration.

memory_limit integer

Cette directive fixe la quantité maximale de mémoire, exprimée en octets, qu'un script peut réserver. Cela évite que des scripts mal écrits consomment toute la mémoire sur le serveur. Afin d'utiliser cette directive, vous devez l'avoir activée au moment de la compilation. De ce fait, vous devez trouver dans la ligne de configuration l'option --enable-memory-limit. Notez que vous pouvez lui donner la valeur de -1 si vous ne souhaitez pas de limitation de consommation de mémoire.

Voir aussi max_execution_time.

Gestion des données

Tableau 4-5. Options de gestion des données

Nom | Par défaut | Modifiable
track-vars | "On" | PHP_INI_??
arg_separator.output | "&" | PHP_INI_ALL
arg_separator.input | "&" | PHP_INI_SYSTEM|PHP_INI_PERDIR
variables_order | "EGPCS" | PHP_INI_ALL
register_globals | "Off" | PHP_INI_PERDIR|PHP_INI_SYSTEM
register_argc_argv | "On" | PHP_INI_PERDIR|PHP_INI_SYSTEM
post_max_size | "8M" | PHP_INI_SYSTEM|PHP_INI_PERDIR
gpc_order | "GPC" | PHP_INI_ALL
auto_prepend_file | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR
auto_append_file | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR
default_mimetype | "text/html" | PHP_INI_ALL
default_charset | "iso-8859-1" | PHP_INI_ALL
always_populate_raw_post_data | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR
allow_webdav_methods | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR

Voici un éclaircissement sur l'utilisation des directives de configuration.

track_vars bool

Si activé, les variables de l'environnement, GET, POST, Cookie et du serveur sont disponibles respectivement dans les tableaux associatifs $_ENV, $_GET, $_POST, $_COOKIE et $_SERVER.

Notez que depuis PHP 4.0.3, track_vars est toujours activée.

arg_separator.output string

Le séparateur utilisé par PHP dans les URL générées par PHP pour séparer les arguments.

arg_separator.input string

Liste de séparateur(s) utilisé par PHP pour analyser les URL d'entrées, et en déduire les variables.

Note : Chacun des caractères de cette directive est considéré comme un séparateur.

variables_order string

Etablit l'ordre de priorité des méthodes GET/POST/COOKIE et des valeurs issues de l'environnement et du serveur. Par défaut, cette directive est établie à "EGPCS". En affectant "GP" à cette directive, PHP ignorera les cookies, le serveur et l'environnement et écrasera toute variable issue de la méthode GET par les valeurs des variables de même nom, issues de la méthode POST.

Voir aussi register_globals.

register_globals bool

Cette option active l'enregistrement des variables EGPCS (Environnement, GET, POST, Cookie, Serveur), en tant que variables globales. Par exemple, si register_globals = on, l'URL suivante http://www.example.com/test.php?id=3 va créer la variable $id dans votre script. Ou bien, $DOCUMENT_ROOT, issue de $_SERVER['DOCUMENT_ROOT']. Vous pouvez désactiver cette fonction si vous ne voulez pas truffer vos scripts avec des valeurs utilisateurs. Depuis PHP 4.2.0, cette directive vaut par défaut off. Il est recommandé de lire la liste des Variables prédéfinies, pour découvrir les super-globales : $_ENV, $_GET, $_POST, $_COOKIE et $_SERVER. Lisez aussi le chapitre sur la sécurité Utilisation des variables super-globales pour plus de détails.

Notez que register_globals ne peut être modifiée durant l'exécution du script (avec ini_set()). Cependant, vous pouvez utiliser le fichier .htaccess si votre hôte les supporte, comme décrit ci-dessus. Par exemple, vous pouvez inscrire dans votre fichier .htaccess : php_flag register_globals on.

Note : register_globals est combiné avec la directive variables_order.

register_argc_argv bool

Indique à PHP s'il doit déclarer les variables argv et argc (qui contiendront alors les mêmes informations passées par méthode GET).

Voir aussi utiliser PHP en ligne de commande. De plus, cette directive a été introduite en PHP 4.0.0 et a toujours été à "on" jusque là.

register_long_arrays boolean

Indique à PHP s'il doit enregistrer les anciens tableaux $HTTP_*_VARS, comme variables prédéfinies. Lorsque cette option est activée (par défaut), les anciens tableaux tels que $HTTP_GET_VARS seront définis. Si vous ne les utilisez pas, il est recommandé de les désactiver, pour des raisons de performances. A la place, utilisez les super globales, telles que $_GET.

Cette directive a été introduite avec PHP 5.0.0.

post_max_size integer

Configure la taille maximale de données par méthode POST. Cette configuration affecte aussi le téléchargement de fichiers. Pour autoriser l'upload de grands fichiers, il faut que cette configuration soit plus grande encore, et plus grande que upload_max_filesize.

Si la limitation de mémoire est activée dans votre script de configuration memory_limit va aussi affecter le téléchargement de fichiers. En général, memory_limit doit être plus grand que post_max_size.

gpc_order string

Cette directive est obsolète. Voyez plutôt variables_order.

auto_append_file string

Spécifie le nom d'un fichier qui sera automatiquement ajouté après le fichier principal. Le fichier est inclus comme s'il avait été appelé avec la fonction include(), donc include_path est utilisé.

Le mot réservé none désactive l'auto-appending.

Note : Si le script s'arrête par la fonction exit(), auto-append ne fonctionnera pas.

auto_prepend_file string

Spécifie le nom d'un fichier qui sera automatiquement ajouté avant le fichier principal. Le fichier est inclus comme s'il avait été appelé avec la fonction include(), donc include_path est utilisé.

Le mot réservé none désactive l'auto-appending.

default_mimetype string

default_charset string

Depuis la version 4.0b4, PHP fournit toujours une indication du jeu de caractères pour les fichiers générés, dans l'en-tête HTTP Content-type. Pour désactiver l'envoi de cette indication, laissez cette directive vide.

always_populate_raw_post_data bool

Force le remplissage de la variable $HTTP_RAW_POST_DATA.

allow_webdav_methods bool

Cette directive autorise la gestion de requêtes HTTP WebDAV par PHP : PROPFIND, PROPPATCH, MOVE, COPY, etc... Si vous voulez les données postées par ces requêtes, vous devez aussi activer always_populate_raw_post_data.

Voir aussi magic_quotes_gpc, magic-quotes-runtime et magic_quotes_sybase.

Dossiers

Tableau 4-6. Options de dossiers

Nom | Par défaut | Modifiable
include_path | PHP_INCLUDE_PATH | PHP_INI_ALL
doc_root | PHP_INCLUDE_PATH | PHP_INI_SYSTEM
user_dir | NULL | PHP_INI_SYSTEM
extension_dir | PHP_EXTENSION_DIR | PHP_INI_SYSTEM
cgi.force_redirect | "1" | PHP_INI_SYSTEM
cgi.redirect_status_env | "" | PHP_INI_SYSTEM
fastcgi.impersonate | "0" | PHP_INI_SYSTEM

Voici un éclaircissement sur l'utilisation des directives de configuration.

include_path string

Spécifie une liste de dossiers, où les fonctions require(), include() et fopen_with_path() iront chercher les fichiers. Le format est le même que celui de la variable d'environnement PATH : une liste de dossiers, séparés par des deux points (:) sous UNIX, et par des points virgules (;) sous Windows.

Exemple 4-3. UNIX include_path

include_path=".:/php/includes"

Exemple 4-4. Windows include_path

include_path=".;c:\php\includes"

Utiliser un point (.) dans l'include_path permet de réaliser des inclusions relatives au dossier courant.

doc_root string

Le dossier racine de PHP. Cette directive n'est utilisée que si elle est définie. Si PHP est configuré en safe mode, aucun fichier en dehors de ce dossier ne sera accessible. Si PHP n'a pas été compilé avec l'option FORCE_REDIRECT, vous DEVRIEZ utiliser cette option, si vous exécutez PHP en tant que CGI avec serveur web autre que IIS. La solution alternative est d'utiliser la directive cgi.force_redirect ci-dessous.

user_dir string

Répertoire où sont stockés les fichiers PHP dans le répertoire d'un utilisateur. Par exemple, public_html.

extension_dir string

Définit le répertoire dans lequel le PHP doit chercher les extensions lors du chargement dynamique. Voir aussi enable_dl et dl().

extension string

Définit les extensions qui doivent être chargées lors du démarrage du PHP.

cgi.force_redirect bool

cgi.force_redirect est nécesssaire pour assurer la sécurité de PHP, lorsqu'il fonctionne en tant que CGI pour la plupart des serveurs web. Même si laissé vide, PHP va activer cette option par défaut. Vous pouvez la désactiver à vos risques et périls.

Note : Utilisateurs Windows : vous pouvez désactiver cette option sans problème avec IIS et en fait, vous DEVEZ la désactiver. Pour faire fonctionner OmniHTTPD ou Xitami, vous devrez aussi la désactiver.

cgi.cgi.redirect_status_env string

Si la directive cgi.force_redirect est activée, et que vous ne fonctionnez pas sous Apache ou Netscape (iPlanet), vous POURRIEZ devoir allouer une variable d'environnement que PHP ira rechercher pour s'assurer qu'il peut continuer son exécution.

Note : Allouer cette variable PEUT causer des problèmes de sécurité, RENSEIGNEZ VOUS AVANT DE LE FAIRE.

cgi.rfc2616_headers int

Indique à PHP quel type d'en-tête utiliser lorsqu'il envoie les en-têtes de réponse HTTP. Si cette option vaut 0, PHP envoie un en-tête Status: qui est supporté par Apache et d'autres serveurs web. Lorsque cette option vaut 1, PHP va envoyer des en-têtes compatibles RFC 2616. Laissez le à 0 si vous ne savez pas de quoi il s'agit.

fastcgi.impersonate string

FastCGI sous IIS (sur Windows NT) supporte la possibilité de traiter les tokens de sécurité du client. Cela permet à IIS de définir le contexte de sécurité à utiliser. mod_fastcgi sous Apache ne supporte pas encore cette fonctionnalité (17/03/2002). Utilisez la valeur de 1 pour l'activer sous IIS. La valeur par défaut est zéro.

Chargement de fichiers

Tableau 4-7. Options de configuration pour le chargement de fichiers

Nom | Par défaut | Modifiable
file_uploads | "1" | PHP_INI_SYSTEM
upload_tmp_dir | NULL | PHP_INI_SYSTEM
upload_max_filesize | "2M" | PHP_INI_SYSTEM|PHP_INI_PERDIR

Voici un éclaircissement sur l'utilisation des directives de configuration.

file_uploads bool

Cette directive indique si les chargements de fichiers sont supportés sur le serveur. Voir aussi upload_max_filesize, upload_tmp_dir et post_max_size.

upload_tmp_dir string

Indique le répertoire utilisé lors du chargement d'un fichier sur le serveur. Ce répertoire doit être accessible en écriture pour l'utilisateur qui exécute le script PHP, ou par le serveur web. Si il n'est pas spécifié, PHP utilisera le répertoire par défaut du système.

upload_max_filesize integer

La taille maximale d'un fichier chargé sur le serveur. La valeur est en octets. Par défaut, elle est de 2 méga-octets.

Options de SQL

Tableau 4-8. Options de SQL

Nom | Par défaut | Modifiable
sql.safe_mode | "0" | PHP_INI_SYSTEM

Voici un éclaircissement sur l'utilisation des directives de configuration.

sql.safe_mode bool

Configuration des débogeurs

debugger.host string

Nom DNS ou adresse IP de l'hôte du débogueur.

debugger.port string

Numéro de port du débogueur.

debugger.enabled bool

Indique si le débogeur est activé ou pas.

Précédent | Sommaire | Suivant
Comment modfier la configuration | Niveau supérieur | Référence


Référence

Manuel PHP
Précédent Suivant

II. Référence

Table des matières
5. La syntaxe de base
6. Les types
7. Les variables
8. Les constantes
9. Les expressions
10. Les opérateurs
11. Les structures de contrôle
12. Les fonctions
13. Les classes et les objets
14. Les références

Précédent | Sommaire | Suivant
Directives de configuration |  | La syntaxe de base


La syntaxe de base

Manuel PHP
Précédent Suivant

Chapitre 5. La syntaxe de base

Table des matières
Passer du HTML au PHP
Le séparateur d'instructions
Commentaires

Passer du HTML au PHP

Lorsque PHP commence à traiter un fichier, il ne fait qu'afficher le texte qu'il rencontre, jusqu'à ce qu'il rencontre une balise spéciale qui lui indiquera qu'il peut interpréter le code qui suit. L'analyseur PHP va alors exécuter ce code, jusqu'à ce qu'il rencontre une balise de fin de code PHP. A ce moment là, il retourne en mode texte, et il affiche simplement le contenu. C'est ce mécanisme qui vous permet d'inclure du code PHP dans des pages HTML : tout ce qui est placé hors des balises PHP est affiché sans modification, tandis que le contenu est exécuté.

Il y a quatre jeux de balises qui servent à délimiter des blocs de code PHP. Seules deux d'entre elles sont toujours actives : c'est <?php. . .?> et <script language="php">. . .</script>). Tandis que les autres peuvent être activées et désactivées depuis le fichier de configuration php.ini. Les balises courtes et les balises ASP peuvent être pratiques, mais elles ne sont pas aussi portables que les versions longues. De plus, si vous envisagez d'inclure du PHP dans des fichiers XML ou XHTML, vous devrez utiliser la forme <?php. . .?> pour vous conformer au XML.

Exemple 5-1. Le passage du HTML à PHP

<?php
1.  <?php echo("Si vous voulez afficher du XML ou du XHTML, faites comme ceci.\n"); ?>

2.  <? echo ("Ceci est un exemple d'affichage &agrave; l'&eacute;cran en PHP, sous forme d'expression SGML.\n"); ?>
    <?= expression ?>  Raccourci de "<? echo expression ?>"

3.  <script language="php">
        echo ("Certains &eacute;diteurs HTML (comme FrontPage)
         n'acceptent pas les expressions telles que celle-ci.");
    </script>

4.  <% echo ("Vous pouvez aussi utiliser le style ASP comme d&eacute;limiteur."); %>
    <%= $variable; # ceci est un raccourci pour  "<%%echo .." %>
?>

La première méthode est généralement utilisée, car elle permet une implémentation aisée de PHP avec la prochaine génération de XHTML.

La deuxième forme n'est valable que si vous l'avez activée. Soit en faisant appel à la fonction short_tags() (uniquement en PHP 3), soit en utilisant l'option d'exécution short_open_tag dans le fichier de configuration php.ini, soit encore en utilisant l'option de compilation --enable-short-tags. Même si les balises courtes sont activées dans le fichier de configuration php.ini-dist, leur utilisation est déconseillée.

La quatrième forme est seulement disponible si vous l'avez activée en utilisant l'option d'exécution asp_tags.

Note : Le support des balises ASP a été ajouté en PHP 3.0.4.

Note : L'utilisation des balises courtes doit être évitées lors du développement d'applications et de librairies destinées à être distribuées ou déployées sur des serveurs qui sont hors de votre contrôle, car ces balises ne seront pas forcément supportées par le serveur de destination. Pour rendre vos scripts portables et faciles à distribuer, évitez les balises courtes.

La marque de fermeture d'un bloc (?>) comprend le caractère de nouvelle ligne qui le suit immédiatement, s'il y en a un. De plus, la balise fermante implique un point-virgule. Vous n'êtes pas obligés de mettre le point-virgule à la fin d'un bloc de PHP.

PHP vous permet d'utiliser des structures telles que :

Exemple 5-2. Méthode avancée

<?php
  if ( expression-bool&eacute;enne ) {
?>
  <strong>Ceci est vrai.</strong>
<?php
  } else {
?>
<strong>Ceci est faux.</strong>
<?php
  }
?>
Cela fonctionne comme on peut s'y attendre, car PHP affiche le texte entre les balises ?> et <?php sans modification. L'exemple ci-dessus est très simple, mais c'est un bon système à garder en tête pour afficher de grandes quantités de texte : c'est même plus efficace que d'utiliser les fonctions echo() ou print().

Précédent | Sommaire | Suivant
Référence | Niveau supérieur | Le séparateur d'instructions


Le séparateur d'instructions

Les instructions sont séparées par un point virgule à chaque fin d'instruction, comme en langage C ou en Perl.

La balise de fin (?>) implique la fin d'une instruction, et donc ajoute implicitement un point virgule. Les deux exemples suivants sont équivalents.

Exemple 5-3. Le séparateur d'instructions

<?php
    echo "Ceci est un test";
?>
<?php echo "Ceci est un test" ?>

Précédent | Sommaire | Suivant
La syntaxe de base | Niveau supérieur | Commentaires


Commentaires

PHP supporte les commentaires comme en C, C++ et Shell Unix. Par exemple :

Exemple 5-4. Commentaires en PHP

<?php
    echo "Ceci est un test"; // Ceci est un commentaire sur une ligne comme en C++
    /* Ceci est un commentaire sur plusieurs lignes,
       comme en C et C++  */
    echo "Ceci est encore un test";
    echo "Enfin, le test final"; # Ceci est un commentaire comme en Shell Unix
?>

Exemple 5-5. Commentaires en PHP (2)

<h1>Ceci est un <?php # echo "simple";?> exemple.</h1>
<p>L'ent&ecirc;te ci-dessus affiche 'Ceci est un exemple'.

Faites attention à ne pas emboîter les commentaires de type langage C, ce qui arrive de temps en temps lorsque vous voulez commenter une grande partie de code.

Exemple 5-6. Commentaires emboîtés

<?php
 /*
    echo "Ceci est un test"; /* Ce commentaire va poser un probl&egrave;me */
 */
?>

Les commentaires // commentent jusqu'à la fin de la ligne ou bien jusqu'à la fin du bloc (le premier des deux). Cela signifie que du code HTML placé après // ?> sera affiché, car PHP retourne alors en mode texte juste après la balise ?>.

Précédent | Sommaire | Suivant
Le séparateur d'instructions | Niveau supérieur | Les types


Les types

Manuel PHP
Précédent Suivant

Chapitre 6. Les types

Table des matières
Introduction
Booléens
Entiers
Les nombres à virgule flottante
Les chaînes de caractères
Les tableaux
Les objets
Ressources
La valeur NULL
Pseudo-types utilisés dans cette documentation
Définition du type

Introduction

PHP supporte les huit types basiques suivants :

PHP supporte quatre types scalaires :

  • booléen

  • entier

  • nombre à virgule flottante

  • chaîne de caractères

PHP supporte deux types composés :

  • tableau

  • objet

PHP supporte deux types spéciaux :

  • ressource

  • null

Note : Dans ce manuel, vous rencontrerez souvent le type mixed. C'est un pseudo-type, qui indique que le paramètre peut indifféremment prendre plusieurs types.

Habituellement, le type d'une variable n'est pas déclaré par le programmeur. Il est décidé au moment de l'exécution par le PHP, en fonction du contexte dans lequel la variable est utilisée.

Note : Si vous voulez vérifier le type et la valeur d'une variable ou d'une expression, utilisez la fonction var_dump().

Note : Si vous souhaitez simplement une représentation lisible pour du débogage, utilisez la fonction gettype(). Pour vérifier la présence de certains types, n'utilisez pas gettype(), mais plutôt les fonctions is_type. Par exemple :

Exemple 6-1. Exemples de vérification de type de variable

<?php
$bool = TRUE;   // un booléen
$str  = "foo";  // une chaîne de caractères
$int  = 12;     // un entier

echo gettype($bool); // affiche "boolean"
echo gettype($str);  // affiche "string"

// Ceci est un engier, on l'incrémente de 4
if (is_int($int)) {
    $int += 4;
}

// Si $bool est une chaîne, l'afficher
// (Ne pas imprimer n'importe quoi).
if (is_string($bool)) {
    echo "Chaine : $bool";
}
?>

Si vous voulez forcer une variable à être convertie en un certain type, vous devez transtyper (cast) la variable ou utiliser la fonction settype().

Il est à noter qu'une variable peut se comporter de manière différente suivant les situations, en fonction du type qui lui est affecté. Pour plus d'informations, voir le paragraphe transtypage.

Précédent | Sommaire | Suivant
Commentaires | Niveau supérieur | Booléens


Booléens

C'est le type le plus simple. Un booléen exprime les valeurs de TRUE ou FALSE.

Syntaxe

Vous pouvez utiliser les constantes 'TRUE' et 'FALSE' pour spécifier une valeur de type bool. Ces constantes sont insensibles à la casse.

Exemple 6-2. Utilisation des constantes TRUE et FALSE

<?php
  $foo = True;
  // assigne la valeur TRUE à la variable $foo
?>

Généralement, vous les créerez avec un des opérateurs qui retourne une valeur bool, pour le passer à une structure de contrôle.

Exemple 6-3. Utilisation des constantes TRUE et FALSE avec une structure de contrôle

// == est un opérateur d'égalité
// qui retourne un booléen
if ($action == "show_version") {
    echo "La version est la 1.23";
}

// Ceci n'est pas nécessaire
if ($show_separators == TRUE) {
    echo "<hr>\n";
}

// car vous pouvez simplement utiliser
if ($show_separators) {
    echo "<hr>\n";
}

Conversion en booléen

Reportez-vous au chapitre "Définition du type" pour plus d'informations sur les conversions.

Lors des conversions de valeurs de type bool, les valeurs suivantes sont considérées comme fausse (FALSE) :

  • Le booléen FALSE

  • L'entier 0 (zéro)

  • Le nombre à virgule flottante 0.0 (zéro)

  • La chaîne vide, et la chaîne "0"

  • Le tableau vide (aucun élément)

  • L'objet vide (aucun élément)

  • La constante spéciale NULL

Toutes les autres valeurs sont considérées comme vraies (TRUE (y compris les ressources).

Avertissement

-1 est considéré comme vrai!

Exemple 6-4. Conversion en booléen

<?php
echo gettype((bool) "");        // bool(false)
echo gettype((bool) 1);         // bool(true)
echo gettype((bool) -2);        // bool(true)
echo gettype((bool) "foo");     // bool(true)
echo gettype((bool) 2.3e5);     // bool(true)
echo gettype((bool) array(12)); // bool(true)
echo gettype((bool) array());   // bool(false)
?>

Précédent | Sommaire | Suivant
Les types | Niveau supérieur | Entiers


Entiers

Un entier est un nombre de l'ensemble des entiers naturels Z : Z = {...., -2, -1, 0, 1, 2, ...}. Il est possible de spécifier les nombres entiers (integer) de toutes les manières suivantes : décimale (base 10), hexadécimale (base 16), octale (base 8) éventuellement précédé du signe moins (-).

Syntaxe

Les entiers peuvent être spécifiés en base décimale (dite aussi base 10), en hexadécimale (base 16) ou octale (base 8). Les entiers peuvent être optionnellement précédés par le signe plus ou moins (- or +).

Pour utiliser la notation octale, vous devez préfixer le nombre avec un zéro; pour utiliser la notation hexadécimale, vous devez préfixer le nombre avec 0x.

Exemple 6-5. Notations entières

$a = 1234; // nombre entier en base 10
$a = -123; // nombre entier n&eacute;gatif
$a = 0123; // nombre entier en base 8, octale (équivalent à 83 en base 10)
$a = 0x1A; // nombre entier en base 16, hexadécimale
           // (équivalent à 26 en base 10)
Techniquement, la structure d'un entier suit les règles suivantes :

Exemple 6-6. Structure d'un entier

decimal     : [1-9][0-9]*
            | 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal       : 0[0-7]+

integer     : [+-]?decimal
            | [+-]?hexadecimal
            | [+-]?octal
La taille des entiers dépend de la plate-forme de support, mais la valeur maximale est généralement de 2 milliards et des poussières (c'est un entier signé de 32 bits). PHP ne supporte pas les entiers non signés.

Dépassement de capacité des entiers

Si un nombre est hors de l'intervalle de validité des entiers, il sera interprèté comme un float.

Exemple 6-7. Dépassement de capacité des entiers

<?php
$large_number =  2147483647;
var_dump($large_number);
// affiche : int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// affiche : float(2147483648)

// this goes also for hexadecimal specified integers:
var_dump( 0x80000000 );
// affiche : float(2147483648)

$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);
// affiche : float(50000000000)
?>
De même, si une fonction ou un opérateur retourne un entier qui est hors des limites de validité des entiers, il sera aussi automatiquement converti en float.

En PHP, il n'y a pas de division entière. 1/2 sera un nombre à virgule flottante (float) de valeur 0.5.

Avertissement

Malheureusement, il y a un bug dans le moteur (corrigé en 4.1.0), qui fait que PHP ne fonctionne pas toujours bien lorsque des nombres négatifs sont utilisés. Lorsque les deux opérandes sont positifs, il n'y a pas de problèmes. Par exemple : -50000 * $million, conduit à -429496728.

Il n'existe pas de division entière en PHP. 1/2 générera le float 0.5. Vous pouvez forcer la valeur au format entier pour faire l'arrondi, ou bien utiliser les fonctions round(), floor() ou ceil().

Exemple 6-8. Divisions entières

<?php
var_dump(25/7);
  // float(3.5714285714286)
var_dump((int) (25/7));
  // int(3)
var_dump(round(25/7));
  // float(4)
?>

Conversion en entiers

Pour explicitement convertir une valeur en entier, utilisez les opérateurs de transtypage (int) ou (integer). Cependant, dans la plupart des situations, vous n'en aurez pas besoin, car une valeur sera automatiquement convertie si un opérateur, une fonction ou tout autre élément du langage requiert un entier.

Reportez-vous à la section définition de type pour plus d'informations sur les conversions.

Depuis un booléen

FALSE devient 0 (zéro), et TRUE devient 1 (un).

Depuis un nombre à virgule flottante

Lors de conversion entre un nombre à virgule flottante et un entier, le nombre sera arrondi à la valeur inférieure s'il est positif, et supérieure s'il est négatif (conversion dite 'vers zéro').

Si le nombre est hors de l'intervalle de validité des entiers, (généralement +/- 2.15e+9 = 2^31), le résultat est indéfini, car les nombres à virgule flottante n'ont pas assez de précision pour fournir une valeur exacte pour un entier.

Avertissement

Aucune alerte, même pas le plus petit message ne sera affiché dans ce cas.

Avertissement

Ne transformez jamais une fraction inconnue en entier, car cela peut conduire à des résultats irrationnels.

Exemple 6-9. Attention aux erreurs de fractions

<?php
  echo (int) ( (0.1+0.7) * 10 );
// affiche 7!
?>
Pour plus d'informations, reportez-vous aux alertes liées aux nombres à virgule flottante.

A partir de chaînes de caractères

Reportez-vous à la section des conversions de chaînes.

Conversion d'autres types

La conversion d'autres types en entier est indéfinie. Actuellement, PHP convertit d'abord la valeur en booléen.

Attention

Mais, ne vous fiez pas à ce comportement, car il est susceptible de changer sans préavis!

Voir aussi : Nombres de grande taille et Nombres à virgules flottantes.

Précédent | Sommaire | Suivant
Booléens | Niveau supérieur | Les nombres à virgule flottante


Les nombres à virgule flottante

Les nombres à virgule flottante (connus aussi sous le vocable de "double" ou "float" "nombre rééls") peuvent être spécifiés en utilisant la syntaxe suivante :

Exemple 6-10. Exemple de nombres à virgule flottante

<?php
  $a = 1.234;
  $a = 1.2e3;
?>

Précision des nombres à virgule flottante

Il est fréquent que de simples fractions décimales telles que 0.1 ou 0.7 ne puissent être converties au format interne binaire sans une légère perte de précision. Cela peut conduire à des résultats étonnants : par exemple, floor((0.1+0.7)*10) retournera 7 au lieu de 8 car le résultat de la représentation interne est 7.9999999999....

Tout ceci est lié au fait qu'il est impossible d'exprimer certaines fractions en un nombre fini de chiffres. Par exemple 1/3 s'écrira 0.3333333... en mode décimal.

Ne faites donc jamais confiance aux nombres à virgule jusqu'à leur dernière décimale, et ne comparez jamais ces nombres avec l'opérateur d'égalité. Si vous avez besoin d'une précision particulière, reportez-vous au traitement des nombres de grande taille avec les librairies BC ou GMP.

Conversion d'un nombre à virgule flottante

Pour savoir quand et comment des chaînes sont converties en nombre à virgule flottante, voyez la section Conversion de chaînes de caractères. Pour les valeurs d'autres types, la conversion est la même que si la valeur était d'abord convertie en entier, puis en nombre décimal. Voyez la section Conversion d'un entier.

Précédent | Sommaire | Suivant
Entiers | Niveau supérieur | Les chaînes de caractères


Les chaînes de caractères

Les chaînes de caractères sont des séquences de caractères. En PHP, un caractère est un octet, et il y en 256 de possibles. PHP n'a pas (encore?) de support natif d'Unicode.

Note : La taille n'est pas un problème majeur pour une chaîne. Elle peut devenir très grande sans problème. Il n'y a pas à s'en faire pour cela.

Syntaxe

Une chaîne peut être spécifiée de trois manières différentes :

  • guillemets simples

  • guillemets doubles

  • syntaxe HereDoc

Guillemets simples

Le moyen le plus simple de spécifier une chaîne de caractères est d'utiliser les guillemets simples : '.

Pour spécifier un guillemet simple littéral, vous devez l'échapper avec un anti-slash (\), comme dans de nombreux langages. Si un anti-slash doit apparaître dans votre chaîne ou bien en fin de chaîne, il faudra le doubler. Notez que si vous essayez d'échapper n'importe quel autre caractère, l'anti-slash sera conservé! Il n'y a pas besoin d'échapper d'autres caractères que le guillemet lui-même.

Note : En PHP 3, une alerte sera affichée si cela arrive avec un niveau de rapport d'erreur de E_NOTICE.

Note : Contrairement aux autres syntaxes, les variables présentes dans la chaîne ne seront PAS remplacées par leurs valeurs.

Exemple 6-11. Exemples d'interpolation des chaînes de caractères

<?php
  echo 'Ceci est une chaîne simple';
  echo 'Vous pouvez inclure des nouvelles lignes dans une chaîne,
  comme ceci.';
  echo 'Arnold a coutume de dire : "I\'ll be back"';
// affiche : ... "I'll be back"
  echo 'Etes vous sûr de vouloir effacer le dossier C:\\*.*?';
// affiche : Etes vous sûr de vouloir effacer le dossier C:\*.*?
  echo 'Etes vous sûr de vouloir effacer le dossier C:\*.*?';
// affiche : Etes vous sûr de vouloir effacer le dossier C:\*.*?
  echo 'Je suis en train de mettre une nouvelle ligne comme ceci : \n';
// affiche : Je suis en train de mettre une nouvelle ligne comme ceci : \n
?>

Guillemets doubles

Si la chaîne est entourée de guillemets doubles, PHP va comprendre certaines séquences de caractères :

Tableau 6-1. Les caractères spéciaux

Séquence | Valeur
\n | Nouvelle ligne (linefeed, LF ou 0x0A (10) en ASCII)
\r | Retour à la ligne (carriage return, CR ou 0x0D (13) en ASCII)
\t | Tabulation horizontale (HT ou 0x09 (9) en ASCII)
\\ | Anti-slash
\$ | Caractère $
\" | Guillemets doubles
\[0-7]{1,3} | Une séquence de caractères qui permet de rechercher un nombre en notation octale.
\x[0-9A-Fa-f]{1,2} | Une séquence de caractères qui permet de rechercher un nombre en notation hexadécimale.

Si vous essayez d'utiliser l'anti-slash sur n'importe quelle autre séquence, l'anti-slash sera affiché dans votre chaîne.

Le plus important pour les chaînes à guillemets doubles est le fait que les variables qui s'y trouvent seront remplacées par leur valeur. Voir la section sur le traitement des variables dans les chaînes pour plus de détails.

Syntaxe Heredoc

Un autre moyen de délimiter les chaînes est d'utiliser la syntaxe dite "Heredoc" (en français, documentation ici): <<<, suivi d'un identifiant arbitraire, puis de la chaîne. Cette séquence se termine par l'identifiant initial, placé en premier sur une nouvelle ligne.

L'identifiant utilisé doit suivre les mêmes règles que les étiquettes PHP : il ne doit contenir uniquement que des caractères alpha-numériques, et des soulignés ("_"), et enfin, commencer par un caractère alphabétique ou un souligné.

Avertissement

Il est très important de noter que la ligne qui contient l'identifiant de fermeture ne doit contenir aucun autre caractère, hormis, éventuellement, un point-virgule ;. Cela signifie notamment que l'identifiant ne doit pas être indenté, et qu'il n'y a aucun caractère blanc entre le retour à la ligne et l'identifiant, ou bien entre l'identifiant et le ;.

Le plus dur est peut être qu'il ne faut pas qu'il y ait un retour à la ligne ((\r) à la fin de cette ligne, mais seulement un retour chariot (\n). Puisque Microsoft Windows utilise la séquence \r\n comme terminaison de ligne, la syntaxe heredoc risque de ne pas fonctionner là. Cependant, la plupart des éditeurs PHP fournissent une sauvegarde au format UNIX.

La syntaxe Heredoc se comporte exactement comme une chaîne à guillemets doubles, sans les guillemets doubles. Cela signifie que vous n'avez pas à échapper les guillemets (simples ou doubles) dans cette syntaxe. Les variables sont remplacées par leur valeur, et le même soin doit leur être apporté que dans les chaînes à guillemets doubles.

Exemple 6-12. Exemple de chaîne HereDoc

<?php
  $str = <<<EOD
  Exemple de chaîne
  s'étalant sur
  plusieurs lignes
  avec la syntaxe heredoc
EOD;
/* Exemple plus complexe, avec des variables. */
  class foo {
    var $foo;
    var $bar;
    function foo() {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
  }
  $foo = new foo();
  $name = 'MonNom';
  echo <<<EOT
  Mon nom est "$name". J'affiche des $foo->foo.
  Maintenant, j'affiche un {$foo->bar[1]}.
  Ceci se traduit par un 'A' majuscule: \x41
EOT;
?>

Note : Le support Here doc a été ajouté en PHP 4.

Traitement des variables dans les chaînes

Lorsqu'une chaîne est spécifiée avec des guillemets doubles, ou en utilisant la syntaxe heredoc, les variables qu'elle contient sont remplacées par leur valeur.

Il y a deux types de syntaxe, une simple et une complexe. La syntaxe simple est la plus courante, et la plus pratique : elle fournit un moyen d'utiliser les variables, que ce soient des chaînes, des tableaux ou des membres d'objets.

La syntaxe complexe a été introduite en PHP 4 et peut être reconnue grâce aux accolades entourant les expressions.

Syntaxe simple

Dès qu'un signe dollar $ est rencontré, l'analyseur PHP va lire autant de caractère qu'il peut pour former un nom de variable valide. Entourez le nom de la variable avec des accolades pour indiquer explicitement son nom.

Exemple 6-13. Utilisation des accolades {} dans les chaînes

<?php
  $boisson = 'vin';
  echo "Du $boisson, du pain et du fromage!";
 // OK, car "," n'est pas autorisé dans les noms de variables
  echo "Il a goûté plusieurs $boissons";
 // Pas OK, car 's' peut faire partie d'un nom de variable, et PHP recherchera alors $boissons
  echo "Il a goûté plusieurs ${boisson}s";
 // OK
?>

Similairement, vous pouvez aussi utiliser un élément de tableau, ou un membre d'objet. Pour les éléments de tableau, le crochet fermant ']' marquera la fin du nom de la variable. Pour les membres d'objets, les mêmes règles que ci-dessus s'appliquent. Cependant, il n'existe pas de truc comme pour les variables simples.

Exemple 6-14. Utilisation des accolades {} dans les chaînes pour les tableaux

<?php
// Ces exemples sont spécifiques à l'utilisation de tableaux dans une chaîne.
// Lorsque vous êtes hors d'une chaîne, utilisez toujours des guillemets
// autour des index de tableau, et n'utilisez pas d'{accolades}.

// Affichons toutes les erreurs
error_reporting(E_ALL);

$fruits = array('fraise' => 'rouge', 'banane' => 'jaune');

// Fonctionne mais notez que cela fonctionne pas comme
// si cela était hors d'une chaîne
echo "Une banane est $fruits[banane].";

// Fonctionne
echo "Une banane est {$fruits['banane']}.";

// Fonctionne mais PHP cherche une constante appelée banane
// tel que décrit ci-dessous
echo "Une banane est {$fruits[banane]}.";

// Ne fonctionne pas, il manque les accolades. Cela donne une erreur d'analyse
echo "Une banane est  $fruits['banane'].";

// Fonctionne
echo "Une banane est " . $fruits['banane'] . ".";

// Fonctionne
echo "Ce carré a un coté de $square->width mètres de large.";

// Ne fonctionne pas. Pour une solution, voyez la syntaxe complexe.
echo "Ce carré a un coté de $square->width00 centimètres.";
?>

Pour tout ce qui sera plus compliqué, voyez la syntaxe complexe.

Syntaxe complexe

La syntaxe est dite "complexe" car elle permet l'utilisation d' expressions complexes, et non pas parcequ'elle serait obscure. Nuance.

En fait, vous pouvez inclure n'importe quelle valeur qui est dans l'espace de nom avec cette syntaxe. Il suffit d'écrire une expression exactement comme si elle était hors de la chaîne, puis de l'entourer d'accolades {}. Puisque vous ne pouvez pas échapper les accolades, cette syntaxe ne commence qu'à partir du signe dollar, qui suit immédiatement l'accolade ouvrante. Par exemple, vous pouvez utiliser "{\$" pour obtenir un "{$" littéral. Voici quelques exemples :

Exemple 6-15. Syntaxe complexe de chaîne

<?php
// Affichons toutes les erreurs
error_reporting(E_ALL);

$super = 'fantastique';

// Ne fonctionne pas. Affiche : Ceci est { fantastique}
echo "Ceci est { $super}";

// Fonctionne. Affiche Ceci est fantastique
echo "This is {$super}";
echo "This is ${super}";

// Fonctionne
echo "Ce carr&eacute; a un cot&eacute; de {$square->width}00 centim&egrave;tres.";

// Fonctionne
echo "Ceci fonctionne : {$arr[4][3]}";

// Ceci est faut pour la m&ecirc;me raison que $foo[bar] est faux
// hors d'une cha&icirc;ne. En d'autres terme, cela va fonctionne
// car PHP recherche d'abord une constante appel&eacute;e foo, mais
// il g&eacute;n&eacute;rera une note E_NOTICE (undefined constant).
echo "Ceci est faux : {$arr[foo][3]}";

// Fonctionne. Lorsque vous utilisez un tableau multidimensionnel dans
// une cha&icirc;ne, n'oubliez jamais les accolades.
echo "Ceci fonctionne : {$arr['foo'][3]}";

// Fonctionne
echo "Ceci fonctionne : " . $arr['foo'][3];

echo "Vous pouvez m&ecirc;me &eacute;crire {$obj->values[3]->name}";

echo "Ceci est une valeur de variable variable : {${$name}}";
?>

Accès et modification des caractères d'une chaîne

Les caractères d'une chaîne sont accessibles et modifiables en spécifiant leur offset (le premier caractère est d'offset 0) entre accolade, après le nom de la variable.

Note : Pour assurer la compatibilité ascendante, vous pouvez toujours accéder aux caractères avec des crochets. Mais cette syntaxe est obsolète en PHP 4.

Exemple 6-16. Exemples de chaînes

<?php
// Lit le premier caractère de la chaîne
$str = 'Ceci est un test.';
$first = $str{0};

// Lit le troisième caractère de la chaîne
$third = $str{2};

// Lit le dernier caractère de la chaîne
$str = 'Ceci est un test.';
$last = $str{strlen($str)-1};

// Modifie le dernier caractère de la chaîne
$str = 'Ceci est un test.';
$str{strlen($str)-1} = '!';

?>

Fonctions et opérateurs pratiques

Les chaînes peuvent être concaténées avec l'opérateur '.' (point). Notez que l'opérateur d'addition '+' (plus) ne fonctionnera pas. Reportez-vous à la section opérateurs de chaînes.

Il y a une grande quantité de fonctions pratiques pour modifier les chaînes.

Reportez-vous à la section chaînes de caractères pour les fonctions les plus générales, à Expressions régulières Perl et Expressions régulières POSIX étendues pour les recherches et remplacements.

Il y a aussi les fonctions sur les URL, ainsi que des fonctions de chiffrage (mcrypt et mhash).

Finalement, si vous ne trouvez toujours pas votre bonheur, il y a les fonctions de types de caractères.

Conversion en une chaîne de caractères

Vous pouvez convertir une valeur en une chaîne de caractères en utilisant l'opérateur (string), ou bien la fonction strval(). La conversion en chaîne de caractères est automatiquement faite dans toutes les situations qui nécessitent une chaîne de caractères. Cela arrive lorsque vous utilisez des fonctions comme echo() ou print(), ou encore lorsque vous comparez une valeur avec une chaîne de caractères.

Le booléen TRUE est converti en la chaîne de caractères "1", et le booléen FALSE est représenté par la chaîne de caractères vide "". De cette façon, vous pouvez convertir des booléens en chaîne de caractères et vice-versa.

Un entier ou un nombre à virgule flottante est converti en une chaîne de caractères qui représente ce nombre en décimal (y compris l'exposant des nombres à virgule flottante).

Les tableaux sont toujours convertis en la chaîne de caractères "Array", ce qui fait que vous ne pouvez pas afficher le contenu d'un tableau avec la fonction echo() ou print(). Voyez les informations ci-dessous pour plus de conseils.

Les objets sont automatiquement convertis en la chaîne de caractères "Object". Si vous souhaitez afficher le membre d'un objet, lisez le paragraphe ci-dessous. Si vous voulez connaître le nom de la classe de cet objet, utilisez la fonction get_class().

Les ressources sont toujours converties en chaîne de caractères "Resource id #1" où 1 est le nombre unique représentant la ressource, assigné par PHP au moment de l'exécution. Si vous souhaitez connaître le type d'une ressource, utilisez get_resource_type().

NULL est toujours converti en une chaîne de caractères vide.

Comme vous pouvez le voir, afficher des tableaux, des objets ou des ressources n'est pas pertinent par cette méthode. Reportez-vous aux fonctions print_r() et var_dump() pour avoir des outils plus pratiques.

Vous pouvez aussi convertir des valeurs PHP en chaînes pour les sauver dans un stockage. Cette méthode est appelée la linéarisation, et peut être exploitée avec la fonction serialize(). Vous pouvez aussi linéariser des valeurs PHP en structure XML si vous avez le support WDDX.

Conversion de chaînes de caractères

Lorsqu'une chaîne de caractère est évaluée comme une valeur numérique, le résultat et le type de la variable sont déterminés comme suit.

La chaîne de caractères est de type "double" si elle contient un des caractères '.', 'e' ou 'E'. Sinon, elle est de type entier ("integer").

La valeur est définie par la première partie de la chaîne. Si la chaîne de caractères débute par une valeur numérique cette valeur sera celle utilisée. Sinon, la valeur sera égale à 0 (zéro).

Lorsque la première expression est une chaîne de caractères, le type de la variable dépend de la seconde expression.

Exemple 6-17. Exemples de conversions automatiques

<?php
  $foo = 1 + "10.5";              // $foo est du type  float (11.5)
  $foo = 1 + "-1.3e3";            // $foo est du type  float (-1299)
  $foo = 1 + "bob-1.3e3";         // $foo est du type  integer (1)
  $foo = 1 + "bob3";              // $foo est du type  integer (1)
  $foo = 1 + "10 petits cochons";     // $foo est du type  integer (11)
  $foo = 1 + "10 gros cochons"; // $foo est du type  integer (11)
  $foo = "10.0 cochons " + 1;        // $foo est du type  integer (11)
  $foo = "10.0 cochons " + 1.0;      // $foo est du type  float (11)
?>

Pour plus d'informations sur les conversions de type, voir les pages de man à propos de la fonction strtod(3).

Si vous voulez tester l'un des exemples de cette section, vous pouvez faire un copier/coller et l'insérer dans un script pour voir comment il se comporte.

Exemple 6-18. Exemples de conversions

<?php
  echo "\$foo==$foo; type is " . gettype( $foo ) . "<br>\n";
?>

Précédent | Sommaire | Suivant
Les nombres à virgule flottante | Niveau supérieur | Les tableaux


Les tableaux

Un tableau PHP est en fait une association ordonnée (littéralement, une map). Une association est un type qui fait correspondre des valeurs à des clés. Ce type est optimisé de diverses façons, qui font que vous pouvez le manipuler comme un tableau à indices réels, une liste (vecteur), ou un table de hachage (qui est une implémentation d'association), dictionnaire, collection, pile, queue et encore d'autres. Comme une valeur peut elle-même être un tableau, vous pouvez simuler facilement un arbre.

Les détails d'implémentation de ces structures sont hors du champs de ce manuel, mais vous trouverez ici un exemple de toutes ces structures.

Syntaxe

Créer un tableau array()

Un tableau array peut être créé avec la fonction array(). Cette fonction prend en argument des structures key => value, séparées par des virgules.

array( [key =>]
value , ... )
// key est soit une string
soit un integer positif
// value peut être n'importe quoi

Exemple 6-19. Affectations de tableaux

<?php
$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // bar
echo $arr[12];    // 1
?>

Une clé key est soit un entier ou bien une chaîne. Si une clé est la représentation standard d'un entier positif, elle sera interprètée comme tel. (i.e. '8' sera interprèté comme 8, tandis que '08' sera interprèté comme '08').

Une valeur peut être n'importe quoi.

Exemple 6-20. Création d'un tableau

<?php
  array("untableau" => array(6 => 5, 13 => 9, "a" => 43));

echo $arr["untableau"][6];    // 5
echo $arr["untableau"][13];   // 9
echo $arr["untableau"]["a"];  // 43

?>

Si vous omettez une clé lors de la spécification d'un tableau, l'indice maximum + 1 sera utilisé comme clé par défaut. Si aucun indice numérique n'a été généré, ce sera 0. Si vous en spécifiez une qui a déjà été assignée, la nouvelle valeur écrasera la précédente.

Exemple 6-21. Indexation automatique de tableau

<?php
// Ce tableau est identique à
array(5 => 43, 32, 56, "b" => 12);

// Celui ci
array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
?>

Utiliser TRUE comme clé revient à utiliser le type integer de valeur 1. Utiliser FALSE comme clé revient à utiliser le type integer de valeur 0. Utiliser NULL comme clé revient à utiliser le type string de valeur "". Utiliser la chaîne vide comme index va créer cet index, et ce n'est pas la même chose que d'utiliser des crochets vides.

Il n'est pas possible d'utiliser des tableaux ou des objets comme clés. Ce faisant, vous généreriez une alerte : Illegal offset type.

La syntaxe à crochets

Vous pouvez aussi modifier un tableau existant en lui assignant simplement des valeurs.

L'assignation de valeurs de tableau se fait en spécifiant la clé entre crochets. Si vous omettez la clé ("$tableau[]"), la valeur sera ajoutée à la fin du tableau.
$arr[key] = value;
$arr[] = value;
// key est soit une chaîne, soit un entier
// value peut être n'importe quoi
Si $arr n'existe pas, il sera créé. Cela en fait une alternative pour créer un tableau. Pour modifier une valeur, assignez-lui une nouvelle valeur. Pour supprimer une valeur, utilisez la fonction unset().

Exemple 6-22. Manipuler des éléments de tableau

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // Ceci revient à $arr[13] = 56;
                // à ce moment du script

$arr["x"] = 42; // Ceci ajoute un nouvel élément
                // avec l'index "x"

unset($arr[5]); // Ceci efface un élément du tableau

unset($arr);    // Ceci efface tout le tableau
?>

Fonctions pratiques

Il y a toute une panoplie de fonctions pratiques pour travailler avec les tableaux.

Note : La fonction unset() permet d'effacer des index dans un tableau. Sachez bien que le tableau ne sera PAS réindexé. Si vous utilisez uniquement des index numériques (commençant à zéro, et incrémentés de un), vous pouvez effectuer la réindexation en utilisant array_values().

Exemple 6-23. Manipuler des éléments de tableau

<?php
$a = array(1 => 'un', 2 => 'deux', 3 => 'trois');
unset($a[2]);
/* Cela va produire un tableau qui aurait été
   $a = array(1 => 'un', 3 => 'trois');
   et non pas
   $a = array(1 => 'un', 2 =>'trois');
*/

$b = array_values($a);
// Maintenant b est le tableau array(1 => 'un', 2 =>'trois')
?>

L'élément de langage foreach est spécifiquement dédié aux tableaux : il permet de passer en revue simplement les valeurs d'un tableau.

A faire et à ne pas faire avec les tableaux

Pourquoi est ce que $foo[bar] est invalide?

Dans vos vieux scripts, vous pouvez avoir utilisé la syntaxe suivante :

Exemple 6-24. Accès aux index de tableaux, ancienne méthode

<?php
  $foo[bar] = 'ennemi';
  echo $foo[bar];
?>
Cela est mauvais, mais ca marche. Pourquoi est-ce mauvais? La raison est que PHP attend une constante entre crochets (bar) plutôt qu'une chaîne ('bar', notez les guillemets). Or, PHP pourrait définir dans le futur des constantes qui, malheureusement pour votre code, auront ce nom. Actuellement, cela fonctionne car la constante indéfinie est transformée en chaîne ayant la même valeur.

D'autres exemples :

Exemple 6-25. Exemples de conflits de constantes indéfinies

<?php
// Affichons toutes les erreurs
error_reporting(E_ALL);

$arr = array('fruit' => 'pomme', 'légume' => 'carotte');

// Correct
print $arr['fruit'];  // pomme
print $arr['légume']; // carotte

// Incorrect.  Cela fonctionne mais PHP affiche une alerte car
// il y a utilisation d'une constante indéfinie appelée fruit
//
// Notice: Use of undefined constant fruit - assumed 'fruit' in...
print $arr[fruit];    // pomme

// Définissons une constante pour illustrer le problème.
// Nous créons une constante appelée fruit, qui vaut 'légume'.
define('fruit','légume');

// Notez la différence
print $arr['fruit'];  // pomme
print $arr[fruit];    // carotte

// La suite est correcte si cela se passe dans une chaîne.
// Les constantes ne sont pas remplacées par leur valeur dans une chaîne
print "Bonjour $arr[fruit]";      // Bonjour pomme

// A une exception, les accolades entourant un tableau dans une chaîne
// permettent d'utiliser les constantes
print "Bonjour {$arr[fruit]}";    // Bonjour carotte
print "Bonjour {$arr['fruit']}";  // Bonjour pomme

// Ceci ne fonctionnera pas, et donnera une erreur d'analyse
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// Cela s'applique aussi aux autoglobales dans les chaînes
print "Bonjour $arr['fruit']";
print "Bonjour $_GET['foo']";

// La concatenation est une alternative
print "Bonjour " . $arr['fruit']; // Bonjour pomme
?>

Lorsque vous activez l'error_reporting() pour afficher les erreurs de niveau E_NOTICE (en utilisant le niveau E_ALL) alors, vous verrez ces erreurs. Par défaut, error_reporting est trop faible pour les afficher.

Comme indiqué dans la section syntaxe, il doit y avoir une expression entre les crochets ('[' et ']'). Cela signifie que vous pouvez écrire ceci :

Exemple 6-26. Utilisation d'une expression dans un index de tableau

<?php
echo $arr[somefunc($bar)];
?>
Ceci est un exemple d'utilisation de retour de fonction comme index de tableau. PHP reconnaît aussi les constantes, comme la famille des E_*.

Exemple 6-27. Utilisation d'une constante dans un index de tableau

<?php
$error_descriptions[E_ERROR]   = "Une erreur fatale est survenue";
$error_descriptions[E_WARNING] = "PHP émet une alerte";
$error_descriptions[E_NOTICE]  = "Ceci est juste une alerte informationnelle";
?>
Notez que E_ERROR est aussi un identifiant valide, tout comme bar dans le premier exemple. Mais le dernier exemple est identique à ceci :

Exemple 6-28. Utilisation d'une constante dans un index de tableau(2)

<?php
$error_descriptions[1] = "Une erreur fatale est survenue";
$error_descriptions[2] = "PHP émet une alerte";
$error_descriptions[8] = "Ceci est juste une alerte informationnelle";
?>
car E_ERROR vaut 1, etc...

Comme nous l'avons déjà expliqué dans les exemples ci-dessus, $foo[bar] fonctionne mais est dangereux. Cela fonctionne car bar est identifié comme une constante. Mais, si la constante n'existe pas, PHP suppose que vous souhaitez utiliser bar littéralement, sous la forme "bar", mais que vous avez oublié les guillemets.

Pourquoi est-ce aussi dangereux?

A l'avenir, le groupe PHP peut décider d'ajouter une constante ou un autre mot clé, ou bien vous souhaiterez aussi ajouter une constante dans votre application, et vous serez bloqué. Par exemple, vous ne pouvez pas utiliser des mots comme empty et default de cette manière, car il sont déjà réservés.

Note : Pour insister, à l'intérieur d'une chaîne de caractères (string) à guillemets doubles, il est correct de ne pas utiliser les guillemets simples dans les index, et "$foo[bar]" est valide. Voyez les exemples ci-dessus pour plus de détails sur la syntaxe des variables dans les chaînes.

Conversion en tableau

Pour les types scalaires (integer, float, string, boolean et resource), convertir une valeur en tableau retourne un tableau qui contient un élément (à l'index 0) qui est la valeur originale.

Si vous convertissez un tableau en objet, vous obtiendrez des propriétés ou bien cet objet comme éléments de tableau. Les clés créées sont les noms des membres.

Si vous convertissez la valeur NULL en tableau, vous obtiendrez un tableau vide.

Exemples

Le type tableau de PHP est très souple. Voici quelques exemples d'utilisation :

Exemple 6-29. Utilisation des tableaux

<?php
// ceci
  $a = array( 'couleur' => 'rouge'
            , 'gout' => 'sucre'
            , 'forme' => 'rond'
            , 'nom'  => 'pomme'
            ,            4        // cette clé sera 0
          );
// est complétement équivalent à
  $a['couleur'] = 'rouge';
  $a['gout'] =    'sucre';
  $a['forme'] =   'rond';
  $a['nom'] =     'pomme';
  $a[]        = 4;        // cette clé sera 0
  $b[] = 'a';
  $b[] = 'b';
  $b[] = 'c';
// va créer le tableau array( 0 => 'a' , 1 => 'b' , 2 => 'c' )
// ou plus simplement array('a' , 'b' , 'c' )
?>

Exemple 6-30. Utilisation de array()

<?php
// Array comme correspondance
  $map = array( 'version'    => 4
              , 'OS'         => 'Linux'
              , 'langue'       => 'français'
              , 'short_tags' => TRUE             );
// valeur strictement numériques
  $array = array( 7
                , 8
                , 0
                , 156
                , -10
                );
// ceci est la même chose que array( 0 => 7, 1 => 8, ...)
  $switching = array(         10 // clé = 0
                    , 5    =>  6
                    , 3    =>  7
                    , 'a'  =>  4
                    ,         11 // clé = 6 (index maximum : 5)
                    , '8'  =>  2 // clé = 8 (entier!)
                    , '02' => 77 // clé = '02'
                    , 0    => 12 // la valeur de la clé 10 sera remplacée par 12
                    );
// empty array
$empty = array();
?>

Exemple 6-31. Collection

<?php
  $couleurs = array('rouge','bleu','vert','jaune');
  foreach ( $couleurs as $couleur ){
    echo "Aimez-vous la couleur $couleur?\n";
  }
/* Affiche :
Aimez-vous la couleur rouge?
Aimez-vous la couleur bleu?
Aimez-vous la couleur vert?
Aimez-vous la couleur jaune?
*/
?>

Notez qu'il n'est pas possible actuellement de modifier les valeurs d'un tableau avec une telle boucle. Une solution pour cela est :

Exemple 6-32. Collection

<?php
  foreach( $couleurs as $cle => $couleur ){
// ne marche pas
//$couleur = strtoupper($couleur);
//marche :
    $couleurs[$cle] = strtoupper($couleur);
  }
  print_r($couleur);
/* Affiche :
Array
(
    [0] => ROUGE
    [1] => BLEU
    [2] => VERT
    [3] => JAUNE
)
*/
?>

Cet exemple crée un tableau d'index minimal 1.

Exemple 6-33. Tableau en 1

<?php
  $firstquarter  = array(1 => 'Janvier', 'Février', 'Mars');
  print_r($firstquarter);
/* Affiche:
Array
(
    [1] => 'Janvier'
    [2] => 'Février'
    [3] => 'Mars'
)
*/
?>

Exemple 6-34. Remplissage d'un tableau

<?php
// remplit un tableau avec les noms de fichiers d'un dossier
  $handle = opendir('.');
  while ( $file = readdir($handle) ){
    $files[] = $file;
  }
  closedir($handle);
?>

Les tableaux sont ordonnés. Vous pouvez modifier l'ordre des valeurs avec de nombreuses fonctions de classement. Voyez les fonctions de tableaux.

Exemple 6-35. Tri de tableaux

<?php
  sort($files);
  print_r($files);
?>

Comme une valeur de tableau peut être n'importe quoi, elle peut aussi être un autre tableau. Comme cela, vous pouvez avoir des tableaux multi-dimensionnels, ou récursifs.

Exemple 6-36. Tableaux multi-dimensionnels, et récursifs

<?php
$fruits = array ( "fruits"  => array ( "a" => "orange",
                                       "b" => "banane",
                                       "c" => "pomme"
                                     ),
                  "nombre" => array ( 1,
                                       2,
                                       3,
                                       4,
                                       5,
                                       6,
                                     ),
                  "trou"   => array (      "premier",
                                       5 => "second",
                                            "troisième"
                                     )
                );

// Exemples d'utilisations des tableaux ci-dessus
echo $fruits["trou"][5];    // affiche "second"
echo $fruits["fruits"]["a"]; // affiche "orange"
unset($fruits["trou"][0]);  // supprime "premier"

// Créer un tableau multidimensionnel
$juices["pomme"]["vert"] = "bon";
?>

Précédent | Sommaire | Suivant
Les chaînes de caractères | Niveau supérieur | Les objets


Les objets

Initialisation d'un objet

Pour initialiser un objet, vous devez utiliser la commande "new" afin de créer l'instance de l'objet.

Exemple 6-37. Création d'un objet

<?php
class foo
{
    function faire_foo()
    {
        echo "Faisant foo.";
    }
}

$bar = new foo;
$bar->faire_foo();
?>

Conversion en objet

Si un objet est converti en objet, il n'est pas modifié. Si une valeur d'un autre type est convertie en objet, une nouvelle instance de la classe stdClass sera créée. Si la valeur était NULL la nouvelle instance sera vide. Pour les autres valeurs, un membre de l'objet appelé scalar contiendra la valeur.

Exemple 6-38. Transtypage

<?php
  $obj = (object) 'au revoir';
  echo $obj->scalar;  // affiche 'au revoir'
?>

Précédent | Sommaire | Suivant
Les tableaux | Niveau supérieur | Ressources


Ressources

Une ressource ("resource" en anglais), est un type spécial, qui représente une référence sur une ressource externe. Les ressources sont créées par des fonctions dédiées. Reportez vous à l'annexe Types des ressources PHP pour une liste exhaustive des fonctions créant et utilisant ces ressources.

Note : Le type de données "resource" a été introduit en PHP 4.

Conversion en ressource

Comme les ressources contiennent des valeurs très spéciales, comme des fichiers ouverts, des connexions aux bases de données, des images ou n'importe quoi d'autre, vous ne pouvez pas convertir une valeur en ressource.

Libérer des ressources

Grâce au système de comptabilisation des références introduit en PHP 4 (avec le moteur Zend), PHP détecte automatiquement qu'une ressource n'est plus utilisée (comme Java). Dans ce cas, toutes les ressources systèmes utilisées par cette ressource sont libérées automatiquement.

Note : Les connexions persistantes représentent un cas particulier, elles ne seront PAS détruites. Voyez connexions persistantes.

Précédent | Sommaire | Suivant
Les objets | Niveau supérieur | La valeur NULL


Pseudo-types utilisés dans cette documentation

mixed

mixed indique qu'un paramètre accepte plusieurs types, mais pas forcément tous les types.

gettype() par exemple, accepte tous les types de variables PHP, mais str_replace() n'accepte que des chaîne de caractères et des tableau.

number

number indique qu'un paramètre peut être du type entier ou nombre à virgule flottante.

callback

Certaines fonctions comme par exemple call_user_function() ou usort() accepte une fonction définie par l'utilisateur comme fonction de callback. Les fonctions de callback peuvent être des fonctions simples, mais aussi des objets ou des méthodes statiques de classe.

Une fonction PHP est passée simplement en indiquant son nom, sous
forme de chaîne de caractères. Vous pouvez passer une fonction
intégrée au langage, ou une fonction définie par vos soins, à
l'exception de
array(),
echo(),
empty(),
eval(),
exit(),
isset(),
list(),
print() et
unset().

Une méthode d'un objet instancié est passée sous forme de tableau, contenant un objet comme élément d'index 0, et un nom de méthode comme élément 1.

Les méthodes statiques de classe peuvent aussi être passées dans l'objet instancié, mais en passant le nom de la classe comme valeur de l'index 0.

Exemple 6-40. Exemple de fonction de callback

<?php

// simple callback example
function foobar() {
    echo "hello world!";
}
call_user_function("foobar");

// method callback examples
class foo {
  function bar() {
    echo "hello world!";
  }
}

$foo = new foo;

call_user_function(array($foo, "bar")); // object method call

call_user_function(array("foo", "bar")); // static class method call

?>

Précédent | Sommaire | Suivant
La valeur NULL | Niveau supérieur | Définition du type


Définition du type

PHP ne nécessite pas de déclaration explicite du type d'une variable. Le type d'une variable est déterminé par le contexte d'utilisation. Par exemple, si vous assignez une chaîne de caractères à la variable var, var devient une chaîne de caractère. Si vous assignez un nombre entier à var, elle devient un entier.

Un exemple de convertisseur automatique de type est l'opérateur '+'. Si un des opérandes est de type double, alors tous les opérandes sont évalués comme des variables de type double et le résultat est de type double. Sinon, tous les opérandes sont évalués comme des variables de type entier et le résultat sera du type entier. Il est à noter que cela NE CHANGE PAS le type des opérandes. Le seul changement est la manière dont les opérandes sont évaluées.

Exemple 6-41. Conversion automatique

<?php
  $foo = "0";  // $foo est une chaîne de caractères (ASCII 48)
  $foo += 2;   // $foo est maintenant du type entier (2)
  $foo = $foo + 1.3;  // $foo est maintenant du type double (3.3)
  $foo = 5 + "10 Petits cochons"; // $foo est du type entier (15)
  $foo = 5 + "10 cochonnets";     // $foo est du type entier (15)
?>

Si les deux derniers exemples vous semblent obscurs ou si vous voulez forcer une variable a être évaluée avec un certain type, reportez-vous au paragraphe Conversion de type ci-dessous. Si vous voulez changer le type d'une variable, intéressez-vous à aux fonctions de conversion de chaînes.

Si vous voulez forcer le type d'une variable, vous pouvez vous reporter à la section transtypage. Si vous voulez changer le type d'une variable, utilisez settype().

Pour tester les exemples de cette section, il suffit d'en faire un copier/coller, et d'insérer les lignes dans un script PHP.

Exemple 6-42. Exploitation des exemples

<?php
  echo "\$foo==$foo; le type est " . gettype( $foo ) . "<br>\n";
?>

Note : Le comportement de la conversion automatique est actuellement indéfinie.

Exemple 6-43. Conversion automatique indéfinie

<?php
$a = "1";     // $a est une chaîne
$a[0] = "f";  // Mais que sont les index de chaîne?
?>

Etant donné que PHP supporte l'indexation de chaîne avec des offsets identiques à celles des tableaux, l'exemple ci-dessus conduit à un problème : est ce que $a est un tableau, dont le premier élément est "f", ou bien est ce que "f" est le premier élément de la chaîne de caractères $a?

Les versions courantes de PHP interprète la seconde assignation comme un index de chaîne, et donc $a devient "f", et le résultat de cette conversion automatique doit être considéré comme indéfini. PHP 4 a introduit la syntaxe avec les accolades pour accéder aux caractères d'une chaîne. Utilisez plutôt le code ci-dessous :

Exemple 6-44. Conversion automatique indéfinie(2)

<?php
$a    = "abc"; // $a est une chaîne
$a{1} = "f";   // $a vaut maintenant "afc"
?>
Voyez la section Accès aux caractères d'une chaîne pour plus de détails.

Transtypage

La conversion de type en PHP fonctionne de la même manière qu'en C: le nom du type désiré est écrit entre parenthèses devant la variable à transtyper ("cast").

Exemple 6-45. Transtypage

<?php
  $foo = 10;   // $foo est un entier
  $bar = (double) $foo;   // $bar est un double
?>

Les conversions autorisées sont:

  • (int), (integer) - type entier

  • (bool), (boolean) - booléen

  • (real), (double), (float) - type double

  • (string) - type chaîne

  • (array) - type tableau

  • (object) - type objet

Il est à noter que les tabulations et les espaces sont autorisés à l'intérieur des parenthèses, donc les lignes suivantes sont équivalentes:

Exemple 6-46. Transtypage et espaces

<?php
  $foo = (int) $bar;
  $foo = ( int ) $bar;
?>

Note : Au lieu de transtyper une variable en chaîne, vous pouvez aussi l'insérer entre deux guillemets doubles :

Exemple 6-47. Transtypage en chaîne

<?php
$foo = 10;            // $foo est un entier
$str = "$foo";        // $str est une chaîne
$fst = (string) $foo; // $fst est aussi une chaîne

// Ceci affiche : "Identique"
if ($fst === $str) {
    echo "Identique";
}
?>

Le transtypage n'a pas toujours de résultat prévisible. Pour plus d'informations, voyez :

  • Conversion en booléen

  • Conversion en entier

  • Conversion en nombre à virgule flottante

  • Conversion en chaîne de caractères

  • Conversion en tableau

  • Conversion en objet

  • Conversion en ressource

Précédent | Sommaire | Suivant
Pseudo-types utilisés dans cette documentation | Niveau supérieur | Les variables


Les variables

Manuel PHP
Précédent Suivant

Chapitre 7. Les variables

Table des matières
Essentiel
Variables prédéfinies
Portée des variables
Les variables dynamiques
Variables externes à PHP

Essentiel

En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le nom est sensible à la casse (i.e. $x != $X).

Les noms de variables suivent les mêmes règles de nommage que les autres entités PHP. Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. Exprimé sous la forme d'une expression régulière, cela donne : '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Note : Dans nos propos, une lettre peut être une des lettres minuscules (a à z) ou majuscules (A à Z), et les caractères ASCII de 127 à 255 (0x7f-0xff).

Exemple 7-1. Validité des noms de variables

<?php
  $var = "Jean";
  $Var = "Paul";
  echo "$var, $Var";         // affiche "Jean, Paul"
  $4site = 'pas encore';     // invalide : commence par un nombre
  $_4site = 'pas encore';    // valide : commence par un soulign&eacute;
  $ma&#239;s = 'jaune';      // valide; '&iuml;' est ASCII 239.
?>

En PHP 3, les variables sont toujours assignées par valeur. C'est-à-dire, lorsque vous assignez une expression à une variable, la valeur de l'expression est recopiée dans la variable. Cela signifie, par exemple, qu'après avoir assigné la valeur d'une variable à une autre, modifier l'une des variables n'aura pas d'effet sur l'autre. Pour plus de détails sur ce genre d'assignation, reportez-vous à Expressions.

PHP 4 permet aussi d'assigner les valeurs aux variables par référence. Cela signifie que la nouvelle variable ne fait que référencer (en d'autres terme, "devient un alias de", ou encore "pointe sur") la variable originale. Les modifications de la nouvelle variable affecteront l'ancienne, et vice versa. Cela signifie aussi qu'aucune copie n'est faite : l'assignation est donc beaucoup plus rapide. Cela se fera notamment sentir dans des boucles, ou lors d'assignation de grands objets (tableaux).

Pour assigner par référence, ajoutez simplement un & (ET commercial) au début de la variable qui est assignée (la variable source). Dans l'exemple suivant, Mon nom est Pierre s'affichera deux fois :

Exemple 7-2. Assignation de référence

<?php
$foo = 'Pierre';              // Assigne la valeur 'Pierre' &agrave; $foo
$bar = &$foo;                 // R&eacute;f&eacute;rence $foo avec $bar.
$bar = "Mon nom est Pierre";  // Modifie $bar...
echo $foo;                    // $foo est aussi modifi&eacute;e
echo $bar;
?>

Une chose importante à noter est que seules les variables nommées peuvent être assignées par référence.

Exemple 7-3. Assignation de référence et variables anonymes

<?php
$foo = 25;
$bar = &$foo;      // assignation valide .
$bar = &(24 * 7);  // assignation invalide : r&eacute;f&eacute;rence une expression sans nom
function test() {
   return 25;
}
$bar = &test();    // assignation invalide.
?>

PHP suit les conventions de Perl pour la gestion des opérateurs arithmétiques, et non pas celles du langage C. Par exemple, en Perl 'Z'+1 devient 'AA', tandis que en langage C 'Z'+1 devient '[' (ord('Z') == 90, ord('[') == 91).

Exemple 7-4. Opérations arithmétiques et caractères

<?php
$i = 'W';
for($n=0; $n<6; $n++)
  echo ++$i . "\n";

/*
  Affiche ceci :

X
Y
Z
AA
AB
AC

*/
?>

Précédent | Sommaire | Suivant
Définition du type | Niveau supérieur | Variables prédéfinies


Variables prédéfinies

PHP fourni un grand nombre de variables prédéfinies. Cependant, beaucoup de ces variables ne peuvent pas être présentées ici, car elles dépendent du serveur sur lequel elles tournent, de la version du serveur, et de la configuration du serveur, ou encore d'autres facteurs. Certaines de ces variables ne seront pas accessibles lorsque PHP fonctionne en exécutable.

Avertissement

Depuis la version PHP 4.2.0, la valeur par défaut de la directive PHP register_globals est off. Ceci est une évolution majeure de PHP. Avoir la directive register_globals à off affecte les variables prédéfinies du contexte globale. Par exemple, pour lire DOCUMENT_ROOT vous devez utiliser $_SERVER['DOCUMENT_ROOT'] au lieu de $DOCUMENT_ROOT, ou bien il faut lire $_GET['id'] dans l'URL http://www.example.com/test.php?id=3 au lieu de $id, ou encore $_ENV['HOME'] au lieu de $HOME.

Pour des informations liées à cette évolution, lisez la documentation de la directive register_globals, le chapitre sur la sécurité, à propos de l'Utilisation des variables superglobales, ainsi que les annonces de PHP 4.1.0 et 4.2.0.

L'utilisation des variables prédéfinies de PHP, comme les tableaux superglobaux, est recommandé.

Depuis la version 4.1.0, PHP fournit un jeu de tableaux prédéfinis, contenant les variables du serveur (si possible), les variables d'environnement et celle d'entrées. Ces nouveaux tableaux sont un peut particuliers, car ils ont automatiquement globaux : ils sont automatiquement disponibles dans tous les environnements d'exécution, sans avoir à utiliser le mot réservé global. Pour cette raison, ils sont dits 'auto-globaux' ou bien encore 'superglobaux' (il n'y a pas de mécanisme PHP pour créer de telles variables. Les superglobales sont listées ci-dessous. Cependant, pour connaître le détails de leur contenu, et une présentation approfondie sur les variables prédéfinies PHP, et leur nature, reportez vous à la section variables prédéfinies. De plus, vous noterez que les anciennes variables prédéfinies ($HTTP_*_VARS) existent toujours. Depuis PHP 5.0.0, les tableaux prédéfinis PHP peuvent être désactivés avec l'option de configuration register_long_arrays.

Variables variables : Les superglobales ne peuvent pas être utilisées comme variable variables.

Si certaines variables de variables_order ne sont pas définies, leur tableau prédéfini PHP correspondant est laissé vide.

Tableaux superglobaux de PHP

$GLOBALS

Contient une référence sur chaque variable qui est actuellement disponible dans l'environnement d'exécution global. Les clés de ce tableau sont les noms des variables globales.

$_SERVER

Les variables fournies par le serveur web, ou bien directement liées à l'environnement d'exécution du script courant. C'est la nouvelle version de l'ancienne variable $HTTP_SERVER_VARS, qui est maintenant obsolète, mais toujours là.

$_GET

Les variables fournies par le protocole HTTP en méthode GET. C'est la nouvelle version de l'ancienne variable $HTTP_GET_VARS qui est maintenant obsolète, mais toujours là.

$_POST

Les variables fournies par le protocole HTTP en méthode POST. C'est la nouvelle version de l'ancienne variable $HTTP_POST_VARS qui est maintenant obsolète, mais toujours là.

$_COOKIE

Les variables fournies par le protocole HTTP, dans les cookies. C'est la nouvelle version de l'ancienne variable $HTTP_COOKIE_VARS qui est maintenant obsolète, mais toujours là.

$_FILES

Les variables fournies par le protocole HTTP, suite à un téléchargement de fichier. C'est la nouvelle version de l'ancienne variable $HTTP_POST_FILES qui est maintenant obsolète, mais toujours là. Voir Téléchargement par méthode POST, pour plus d'informations.

$_ENV

Les variables fournies par l'environnement. C'est la nouvelle version de l'ancienne variable $HTTP_ENV_VARS qui est maintenant obsolète, mais toujours là.

$_REQUEST

Les variables fournies au script par n'importe quel mécanisme d'entrée et qui ne doit recevoir une confiance limitée. Note : lorsque vous exécutez un script en ligne de commande, cette variable ne va pas inclure les variables argv et argc. Elles seront présentes dans la variable $_SERVER. La présence et la valeur des entrées de ce tableau sont réglés par la directive variables_order. Ce tableau n'est l'évolution d'aucune variable d'avant PHP 4.1.0.

$_SESSION

Les variables qui sont actuellement enregistrées dans la session attachée au script. C'est la nouvelle version de l'ancienne variable $HTTP_SESSION_VARS. Voir le chapitre gestion des sessions pour plus d'informations.

Précédent | Sommaire | Suivant
Les variables | Niveau supérieur | Portée des variables


Portée des variables

La portée d'une variable dépend du contexte dans lequel la variable est définie. Pour la majorité des variables, la portée concerne la totalité d'un script PHP. Mais, lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction. Par exemple:

Exemple 7-5. Les variables sont locales à la fonction

<?php
$a = 1;
include "b.inc";
?>

Ici, la variable $a sera accessible dans le script inclus b.inc. Cependant, dans les fonctions définies par l'utilisateur, une nouvelle définition de cette variable sera donnée, limitée à la fonction. Toute variable utilisée dans une fonction est par définition, locale. Par exemple :

Exemple 7-6. Les variables sont locales à la fonction (2)

<?php
$a = 1; /* port&eacute;e globale */
function test() {
    echo $a; /* port&eacute;e locale */
}
test();
?>

Le script n'affichera rien à l'écran car la fonction echo() utilise la variable locale $a, et celle-ci n'a pas été assignée préalablement dans la fonction. Vous pouvez noter que ce concept diffère un petit peu du langage C dans lequel une variable globale est automatiquement accessible dans les fonctions, à moins d'être redéfinie localement dans la fonction. Cela peut poser des problèmes si vous redéfinissez des variables globales localement. En PHP, une variable globale doit être déclarée à l'intérieur de chaque fonction afin de pouvoir être utilisée dans cette fonction.

Le mot clé global

Commençons par un exemple avec global :

Exemple 7-7. Exemple avec global

<?php
$a = 1;
$b = 2;
function somme() {
    global $a, $b;
    $b = $a + $b;
}
somme();
echo $b;

Le script ci-dessus va afficher la valeur 3. En déclarant globales les variables $a et $b locales de la fonction somme(), toutes les références à ces variables concerneront les variables globales. Il n'y a aucune limite au nombre de variables globales qui peuvent être manipulées par une fonction.

Une deuxième méthode pour accéder aux variables globales est d'utiliser le tableau associatif prédéfini $GLOBALS. Le précédent exemple peut être réécrit de la manière suivante:

Exemple 7-8. Les variables globales et $GLOBALS

<?php
  $a = 1;
  $b = 2;
  function somme() {
    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
  }
  somme();
  echo $b;
?>

Le tableau $GLOBALS est un tableau associatif avec le nom des variables globales comme clef et les valeurs des éléments du tableau comme valeur des variables. Notez que $GLOBALS existe dans tous les contextes, car $GLOBALS est un superglobal. Voici un exemple des super globaux :

Exemple 7-9. Les variables super globales

<?php
function test_global()
{
    // La plupart des variables pr&eacute;d&eacute;finies ne sont pas des "superglobales" et
    // requiert le mot cl&eacute; 'global' pour &ecirc;tre disponible dans une fonction.
    global $HTTP_POST_VARS;

    print $HTTP_POST_VARS['name'];

    // Les superglobales sont accessibles dans tous les contextes
    // et ne requi&egrave;rent pas 'global'.  Les superglobales sont disponibles
    // depuis &php; 4.1.0
    print $_POST['name'];
}
?>

Utilisation des variables static

Une autre caractéristique importante de la portée des variables est la notion de variable static. Une variable statique a une portée locale uniquement, mais elle ne perd pas sa valeur lorsque le script appelle la fonction. Prenons l'exemple suivant:

Exemple 7-10. Les variables statiques

<?php
function test() {
    $a = 0;
    echo $a;
    $a++;
}
?>

Cette fonction est un peu inutile car à chaque fois qu'elle est appelée, elle initialise $a à 0 et affiche "0". L'incrémentation de la variable ($a++) ne sert pas à grand chose, car dès que la fonction est terminée la variable disparaît. Pour faire une fonction de comptage utile, c'est-à-dire qui ne perdra pas la trace du compteur, la variable $a est déclarée comme une variable statique:

Exemple 7-11. Les variables statiques (2)

<?php
function test() {
    static $a = 0;
    echo $a;
    $a++;
}
?>

Maintenant, à chaque fois que la fonction Test() est appelée, elle affichera une valeur de $a incrémentée de 1.

Les variables statiques sont essentielles lorsque vous faites des appels récursifs à une fonction. Une fonction récursive est une fonction qui s'appelle elle-même. Il faut faire attention lorsque vous écrivez une fonction récursive car il est facile de faire une boucle infinie. Vous devez vérifier que vous avez bien une condition qui permet de terminer votre récursivité. La fonction suivante compte récursivement jusqu'à 10:

Exemple 7-12. Les variables statiques et la récursivité

<?php
function test() {
    static $count = 0;
    $count++;
    echo $count;
    if ($count < 10) {
        test();
    }
    $count--;
}
?>

Les références avec la variables global et static

Le Zend Engine 1, sur qui repose PHP4, implémente les options static et global pour les variables, en terme de références. Par exemple, une vraie variable globale est importée dans un contexte de fonction avec global. Cette commande crée en fait une référence sur la variable globale. Ce peut vous mener à des comportement inattendus, comme par exemple :

Exemple 7-13. Les variables statiques et les références

<?php
function test_global_ref() {
    global $obj;
    $obj = &new stdclass;
}

function test_global_noref() {
    global $obj;
    $obj = new stdclass;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>

Exécuter cet exemple vous donnera :

NULL
object(stdClass)(0) {
}

Un comportement similaire s'applique à la commande static. Les références ne sont pas stockées dynamiquement :

Exemple 7-14. Les variables statiques et les références (2)

<?php
function &get_instance_ref() {
    static $obj;

    echo "Objet statique : ";
    var_dump($obj);
    if (!isset($obj)) {
        // Assigne une r&eacute;f&eacute;rence &agrave; une variable statique
        $obj = &new stdclass;
    }
    $obj->property++;
    return $obj;
}

function &get_instance_noref() {
    static $obj;

    echo "Objet statique : ";
    var_dump($obj);
    if (!isset($obj)) {
        // Assigne une objet &agrave; une variable statique
        $obj = new stdclass;
    }
    $obj->property++;
    return $obj;
}

$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?>

Exécuter cet exemple vous donnera :

Objet statique : NULL
Objet statique : NULL

Objet statique : NULL
Objet statique : object(stdClass)(1) {
  ["property"]=>
  int(1)
}

Ces exemples illustrent les problèmes rencontrés lors de l'assignation de référence à des variables statiques, qui sont oubliées lorsque vous appelez &get_instance_ref() une seconde fois.

Précédent | Sommaire | Suivant
Variables prédéfinies | Niveau supérieur | Les variables dynamiques


Les variables dynamiques

Il est pratique d'avoir parfois des noms de variables qui sont variables. C'est-à-dire un nom de variable qui est affectée et utilisée dynamiquement. Une variable classique est affecté avec l'instruction suivante:

Exemple 7-15. Une variable classique

<?php
$a = "bonjour";
?>

Une variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable. Dans l'exemple ci-dessous, bonjour peut être utilisé comme le nom d'une variable en utilisant le "$$" précédent la variable. C'est-à-dire

Exemple 7-16. Les variables variables

<?php
$$a = "monde";
?>

A ce niveau, deux variables ont été définies et stockées dans l'arbre des symboles PHP : $a avec comme valeur "bonjour" et $bonjour avec comme valeur "monde". Alors, l'instruction

Exemple 7-17. Equivalent de variables variables

<?php
echo "$a ${$a}";
?>

produira le même affichage que :

Exemple 7-18. Equivalent de variables variables

<?php
echo "$a $bonjour";
?>

c'est-à-dire : bonjour monde.

Afin de pouvoir utiliser les variables dynamiques avec les tableaux, vous avez à résoudre un problème ambigu. Si vous écrivez $$a[1], l'analyseur a besoin de savoir si vous parler de la variable qui a pour nom $a[1] ou bien si vous voulez l'index [1] de la variable $$a. La syntaxe pour résoudre cette ambiguïté est la suivante: ${$a[1]} pour le premier cas, et ${$a}[1] pour le deuxième.

Précédent | Sommaire | Suivant
Portée des variables | Niveau supérieur | Variables externes à PHP


Les constantes

Manuel PHP
Précédent Suivant

Chapitre 8. Les constantes

Table des matières
Syntaxe
Constantes prédéfinies

Une constante est un identifiant (un nom) qui représente une valeur simple. Comme son nom le suggère, cette valeur ne peut jamais être modifiée durant l'exécution du script (les constantes magiques __FILE__ et __LINE__ sont les seules exceptions). Le nom d'une constante est sensible à la casse, par défaut. Par convention, les constantes sont toujours en majuscules.

Les noms de constantes suivent les mêmes règles que n'importe quel nom en PHP. Un nom de constante valide commence par une lettre ou un souligné (_), suivi d'un nombre quelconque de lettre, chiffres ou soulignés. Sous forme d'expression régulière, cela peut s'exprimer comme ceci : [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Note : Dans cette documentation, une lettre peut être un des caractères suivants : de a à z, de A à Z et tous les caractères ASCII de 127 à 255 (0x7f-0xff).

Tous comme les superglobals, les constantes sont accessibles de manière globale. Vous pouvez la définir n'importe où, et y accéder depuis n'importe quelle fonction.

Syntaxe

Vous pouvez définir une constante en utilisant la fonction define(). Une fois qu'une constante est définie, elle ne peut jamais être modifiée, ou détruite.

Seuls les types de données scalaires peuvent être placés dans une constante : c'est à dire les types booléen, entier, double et chaîne de caractères (soit bool, integer, double et string).

Vous pouvez accéder à la valeur d'une constante en spécifiant simplement son nom. Contrairement aux variables, vous ne devez PAS préfixer le nom de la constante avec $. Vous pouvez aussi utiliser la fonction constant(), pour lire dynamiquement la valeur d'une constante, dont vous obtenez le nom dynamiquement (retour de fonction, par exemple). Utilisez la fonction get_defined_constants() pour connaître la liste de toutes les constantes définies.

Note : Les constantes et les variables globales utilisent deux espaces de noms différents. Ce qui implique que TRUE et $TRUE sont généralement différents (en tous cas, ils peuvent avoir des valeurs différentes).

Lorsque vous utilisez une constante non définie, PHP suppose que vous utilisez le nom de la constante. Une note sera générée. Utilisez la fonction defined() pour savoir si une constante existe ou pas.

Il y a des différences entre les constantes et les variables :

  • Les constantes ne commencent pas par le signe ($);

  • Les constantes sont définies et accessibles à tout endroit du code, globalement.

  • Les constantes ne peuvent pas être redéfinies ou indéfinies une fois qu'elles ont été définies.

  • Les constantes ne peuvent contenir que des scalaires.

Exemple 8-1. Définir une constante

<?php
  define("CONSTANTE", "Bonjour le monde.");
  echo CONSTANTE; // affiche "Bonjour le monde."
  echo Constante; // affiche "Constante" et une note.
?>

Précédent | Sommaire | Suivant
Variables externes à PHP | Niveau supérieur | Constantes prédéfinies


Constantes prédéfinies

PHP fournit un grand nombre de constantes prédéfinies. Certaines constantes sont définies par différentes extensions, et ne seront présentes que si ces extensions sont compilées avec PHP, ou bien si l'extension a été chargée dynamiquement.

Une liste des constantes prédéfinies est disponible dans la section Constantes prédéfinies.

Précédent | Sommaire | Suivant
Les constantes | Niveau supérieur | Les expressions


Les expressions

Manuel PHP
Précédent Suivant

Chapitre 9. Les expressions

Les expressions sont la partie la plus importante du PHP. En PHP, presque tout ce que vous écrivez est une expression. La manière la plus simple de définir une expression est : "tout ce qui a une valeur".

Les formes les plus simples d'expressions sont les constantes et les variables. Lorsque vous écrivez "$a = 5", vous assignez la valeur '5' à la variable $a. Bien évidemment, '5' vaut 5 ou, en d'autres termes, '5' est une expression avec pour valeur 5 (dans ce cas, '5' est un entier constant).

Après cette assignation, vous pouvez considérer que $a a pour valeur 5 et donc, écrire $b = $a, revient à écrire $b = 5. En d'autres termes, $a est une expression avec une valeur de 5. Si tout fonctionne correctement, c'est exactement ce qui arrive.

Un exemple plus complexe concerne les fonctions. Par exemple, considérons la fonction suivante :

<?php
function foo () {
    return 5;
}
?>

Considérant que vous êtes familier avec le concept de fonction, (si ce n'est pas le cas, jetez un oeil au chapitre concernant les fonctions), vous serez d'accord que $c = foo() est équivalent à $c = 5, et vous aurez tout à fait raison. Les fonctions sont des expressions qui ont la valeur de leur "valeur de retour". Si foo() renvoie 5, la valeur de l'expression 'foo()' est 5. Habituellement, les fonctions ne font pas que renvoyer une valeur constante mais réalisent des traitements.

Bien sûr, les valeurs en PHP n'ont pas à être des valeurs numériques, comme c'est souvent le cas. PHP supporte 3 types de variables scalaires : les valeurs entières, les nombres à virgule flottante et les chaînes de caractères (une variable scalaire est une variable que vous ne pouvez pas scinder en morceaux, au contraire des tableaux par exemple). PHP supporte aussi deux types composés : les tableaux et les objets. Chacun de ces types de variables peut être affecté ou renvoyé par une fonction.

Les utilisateurs de PHP/FI 2 ne verront aucun changement. Malgré tout, PHP va plus loin dans la gestion des expressions, comme le font d'autres langages. PHP est un langage orienté expression, dans le sens où presque tout est une expression. Considérons l'exemple dont nous avons déjà parlé, '$a = 5'. Il est facile de voir qu'il y a deux valeurs qui entrent en jeu ici, la valeur numérique constante '5' et la valeur de la variable $a qui est mise à jour à la valeur 5. Mais, la vérité est qu'il y a une autre valeur qui entre en jeu ici et c'est la valeur de l'assignation elle-même. L'assignation elle-même est assignée à une valeur, dans ce cas-là 5. En pratique, cela signifie que '$a = 5' est une expression qui a pour valeur 5. Donc, écrire '$b = ($a = 5)' revient à écrire '$a = 5; $b = 5;' (un point virgule marque la fin d'une instruction). Comme les assignations sont analysées de droite à gauche, vous pouvez aussi bien écrire '$b = $a = 5'.

Un autre bon exemple du langage orienté expression est la pré-incrémentation et la post-incrémentation, (ainsi que la décrémentation). Les utilisateurs de PHP/FI 2 et ceux de nombreux autres langages sont habitués à la notation "variable++" et "variable--". Ce sont les opérateurs d'incrémentation et de décrémentation. En PHP/FI 2, l'instruction '$a++' n'a aucune valeur (c'est-à-dire que ce n'est pas une expression) et vous ne pouvez donc pas l'utiliser. PHP ajoute les possibilités d'incrémentation et de décrémentation comme c'est le cas dans le langage C. En PHP, comme en C, il y a deux types d'opérateurs d'incrémentation (pré-incrémentation et post-incrémentation). Les deux types d'opérateur d'incrémentation jouent le même rôle (c'est-à-dire qu'ils incrémentent la variable). La différence vient de la valeur de l'opérateur d'incrémentation. L'opérateur de pré-incrémentation, qui s'écrit '++$variable', évalue la valeur incrémentée (PHP incrémente la variable avant de lire la valeur de cette variable, d'où le nom de 'pré-incrémentation'). L'opérateur de post-incrémentation, qui s'écrit '$variable++', évalue la valeur de la variable avant de l'incrémenter (PHP incrémente la variable après avoir lu sa valeur, d'où le nom de 'post-incrémentation').

Un type d'expression très commun est l'expression de comparaison. Ces expressions sont évaluées à 0 ou 1, autrement dit FALSEou TRUE (respectivement). PHP supporte les opérateurs de comparaison > (plus grand que), => (plus grand ou égal), == (égal à), < (plus petit que), <= (plus petit ou égal). Ces expressions sont utilisées de manière courante dans les instructions conditionnelles, comme l'instruction if.

Pour le dernier exemple d'expression, nous allons parler des combinaisons d'opérateurs/assignation. Vous savez que si vous voulez incrémenter la variable $a d'une unité, vous devez simplement écrire '$a++'. Mais si vous voulez ajouter la valeur '3' à votre variable ? Vous pouvez écrire plusieurs fois '$a++', mais ce n'est pas la meilleure des méthodes. Un pratique plus courante est d'écrire '$a = $a + 3'. L'expression '$a + 3' correspond à la valeur $a plus 3, et est de nouveau assignée à la variable $a. Donc, le résultat est l'incrémentation de 3 unités. En PHP, comme dans de nombreux autres langages comme le C, vous pouvez écrire cela de manière plus concise, manière qui avec le temps se révélera plus claire et plus rapide à comprendre. Ajouter 3 à la valeur de la variable $a peut s'écrire '$a += 3'. Cela signifie précisément : "on prend la valeur de la variable $a, on ajoute la valeur 3 et on assigne cette valeur à la variable $a". Et pour être plus concis et plus clair, cette expression est plus rapide. La valeur de l'expression '$a += 3', comme l'assignation d'une valeur quelconque, est la valeur assignée. Il est à noter que ce n'est pas 3 mais la combinaison de la valeur de la variable $a plus la valeur 3. (c'est la valeur qui est assignée à la variable $a). N'importe quel opérateur binaire peut utiliser ce type d'assignation, par exemple '$a -= 5' (soustraction de 5 de la valeur de la variable $a), '$b *= 7' (multiplication de la valeur de la variable $b par 7).

Il y a une autre expression qui peut paraître complexe si vous ne l'avez pas vue dans d'autres langages, l'opérateur conditionnel ternaire :

<?php
  $first ? $second : $third
?>

Si la valeur de la première sous-expression est vraie (différente de 0), alors la deuxième sous-expression est évaluée et constitue le résultat de l'expression conditionnelle. Sinon, c'est la troisième sous-expression qui est évaluée et qui constitue le résultat de l'expression.

Les exemples suivants devraient vous permettre de mieux comprendre la pré-incrémentation, la post-incrémentation et le concept des expressions en général :

<?php
function double($i) {
    return $i*2;
}

$b = $a = 5;        /* assigne la valeur 5 aux variables $a et $b  */
$c = $a++;          /* post-incr&eacute;mentation de la variable $a et assignation de
                       la valeur &agrave; la variable $c */
$e = $d = ++$b;     /* Pr&eacute;-incr&eacute;mentation, et assignation de la valeur aux
                       variables $d et $e  */
/* &agrave; ce niveau, les variables $d et $e sont &eacute;gales &agrave; 6 */
$f = double($d++);  /* assignation du double de la valeur de $d &agrave; la variable $f ($f vaut 12),
                       puis incr&eacute;mentation de la valeur de $d  */
$g = double(++$e);  /* assigne deux fois la valeur de $e <emphasis>apr&egrave;s</emphasis>
                       incr&eacute;mentation, 2*7 = 14 to $g */
$h = $g += 10;      /* Tout d'abord, $g est incr&eacute;ment&eacute;e de 10, et donc $g vaut 24.
                       Ensuite, la valeur de $g, (24) est assign&eacute;e &agrave; la variable $h,
                       qui vaut donc elle aussi 24. */
?>

Au début de ce chapitre, nous avons dit que nous allions décrire les différents types d'instructions, et donc, comme promis, nous allons voir que les expressions peuvent être des instructions. Mais, attention, toutes les expressions ne sont pas des instructions. Dans ce cas-là, une instruction est de la forme 'expr ;', c'est-à-dire, une expression suivie par un point-virgule. L'expression '$b = $a = 5;', '$a = 5' est valide, mais ce n'est pas une instruction en elle-même. '$b = $a = 5' est une instruction valide.

La dernière chose qui mérite d'être mentionnée est la véritable valeur des expressions. Lorsque vous faites des tests sur une variable, dans une boucle conditionnelle par exemple, cela ne vous intéresse pas de savoir quelle est la valeur exacte de l'expression. Mais vous voulez seulement savoir si le résultat signifie TRUE ou FALSE (PHP n'a pas de type booléen). La véritable valeur d'une expression en PHP est calculée de la même manière qu'en Perl. Toute valeur numérique différente de 0 est considérée comme étant TRUE. Une chaîne de caractères vide et la chaîne de caractère 0 sont considérées comme FALSE. Toutes les autres valeurs sont vraies. Avec les types de variables non-scalaires (les tableaux et les objets), s'ils ne contiennent aucun élément, renvoient FALSE, sinon, ils renvoient TRUE.

PHP propose une implémentation complète et détaillée des expressions. PHP documente toutes ses expressions dans le manuel que vous êtes en train de lire. Les exemples qui vont suivre devraient vous donner une bonne idée de ce qu'est une expression et comment construire vos propres expressions. Dans tout ce qui va suivre, nous écrirons expr pour indiquer toute expression PHP valide.

Précédent | Sommaire | Suivant
Constantes prédéfinies | Niveau supérieur | Les opérateurs


Les opérateurs

Manuel PHP
Précédent Suivant

Chapitre 10. Les opérateurs

Table des matières
La précédence des opérateurs
Les opérateurs arithmétiques
Les opérateurs d'assignation
Opérateurs sur les bits
Opérateurs de comparaison
Opérateur de contrôle d'erreur
Opérateur d'exécutions
Opérateurs d'incrémentation/Décrémentation
Les opérateurs logiques
Opérateurs de chaînes
Opérateurs de tableaux

La précédence des opérateurs

La priorité des opérateurs spécifie l'ordre dans lequel les valeurs doivent être analysées. Par exemple, dans l'expression 1 + 5 * 3, le résultat est 16 et non 18, car la multiplication ("*") a une priorité supérieure par rapport à l'addition ("+").

Le tableau suivant dresse une liste de la priorité des différents opérateurs dans un ordre croissant de priorité.

Tableau 10-1. Précédence des opérateurs

Associativité | Opérateurs
gauche | ,
gauche | or
gauche | xor
gauche | and
droite | print
gauche | = += -= *= /= .= %= &= |= ^= ~= <<=>>=
gauche | ? :
gauche | ||
gauche | &&
gauche | |
gauche | ^
gauche | &
non-associatif | == != === !==
non-associatif | < <= > >=
gauche | << >>
gauche | + - .
gauche | * / %
droite | ! ~ ++ -- (int) (double) (string) (array) (object) @
droite | [
non-associatif | new

Note : Bien que ! soit prioritaire sur =, PHP va tout de même exécuter des expressions comme : if (!$a = foo()). Dans cette situation, le résultat de foo() sera placé dans la variable $a.

Précédent | Sommaire | Suivant
Les expressions | Niveau supérieur | Les opérateurs arithmétiques


Les opérateurs arithmétiques

Vous rappelez-vous des opérations élémentaires apprises à l'école ?

Tableau 10-2. Opérations élémentaires

Exemple | Nom | Résultat
$a + $b | Addition | Somme de $a et $b.
$a - $b | Soustraction | Différence de $a et $b.
$a * $b | Multiplication | Produit de $a et $b.
$a / $b | Division | Quotient de $a et $b.
$a % $b | Modulo | Reste de $a divisé par $b.

L'opérateur de division ("/") retourne une valeur entière (le résultat d'une division entière) si les deux opérandes sont entiers (ou bien des chaînes converties en entier. Si l'un des opérandes est un nombre à virgule flottante, ou bien le résultat d'une opération qui retourne une valeur non entière, un nombre à virgule flottante sera retourné.

Voir aussi le manuel sur les fonctions mathématiques.

Précédent | Sommaire | Suivant
Les opérateurs | Niveau supérieur | Les opérateurs d'assignation


Les opérateurs d'assignation

L'opérateur d'assignation le plus simple est le signe "=". Le premier réflexe est de penser que ce signe veut dire "égal à". Ce n'est pas le cas. Il signifie que l'opérande de gauche se voit affecter la valeur de l'expression qui est à droite du signe égal.

La valeur d'une expression d'assignation est la valeur assignée. Par exemple, la valeur de l'expression '$a = 3' est la valeur 3. Cela permet d'utiliser des astuces telles que :

Exemple 10-1. Astuce d'assignation

<?php
  $a = ($b = 4) + 5;
// $a est maintenant &eacute;gal &agrave; 9, et $b vaut 4.
?>

En plus du simple opérateur d'assignation, il existe des "opérateurs combinés" pour tous les opérateurs arithmétiques et pour les opérateurs sur les chaînes de caractères. Cela permet d'utiliser la valeur d'une variable dans une expression et d'affecter le résultat de cette expression à cette variable. Par exemple :

Exemple 10-2. Exemples avec les opérateurs d'assignation

<?php
  $a = 3;
  $a += 5;
// affecte la valeur 8 &agrave; la variable $a.
// correspond &agrave; l'instruction '$a = $a + 5');
  $b = "Bonjour ";
  $b .= " tout le monde!";
// affecte la valeur "Bonjour tout le monde!" &agrave;
//  la variable $b
//  identique &agrave; $b = $b." tout le monde!";
?>

On peut noter que l'assignation copie le contenu de la variable originale dans la nouvelle variable (assignation par valeur), ce qui fait que les changements de valeur d'une variable ne modifieront pas la valeur de l'autre. Cela peut se révéler important lors de la copie d'un grand tableau durant une boucle. PHP 4 supporte aussi l'assignation par référence, en utilisant la syntaxe $var = &$othervar;, mais ce n'était pas possible en PHP 3. 'L'assignation par référence' signifie que les deux variables contiennent les mêmes données, et que la modification de l'une affecte l'autre. D'un autre côté, la recopie est très rapide.

Précédent | Sommaire | Suivant
Les opérateurs arithmétiques | Niveau supérieur | Opérateurs sur les bits


Opérateurs sur les bits

Les opérateurs sur les bits vous permettent de manipuler les bits dans un entier.

Exemple 10-3. Exemples avec les opérateurs sur les bits

<?php
    echo 12 ^ 9;
// Affiche '5'

    echo "12" ^ "9";
// Affiche le caract&egrave;re d'effacement (ascii 8)
// ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

echo "hallo" ^ "hello";
// Affiche la valeur asciie : s #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>

Tableau 10-3. Les opérateurs sur les bits

Exemple | Nom | Résultat
$a & $b | ET (AND) | Les bits positionnés à 1 dans $a ET dans $b sont positionnés à 1.
$a | $b | OU (OR) | Les bits positionnés à 1 dans $a OU $b sont sont positionnés à 1.
$a ^ $b | Xor | Les bits positionnés à 1 dans $a OU dans $b mais pas dans les deux sont positionnés à 1.
~ $a | NON (Not) | Les bits qui sont positionnés à 1 dans $a sont positionnés à 0, et vice versa.
$a << $b | Décalage à gauche | Décale les bits de $a $b fois sur la gauche (chaque décalage équivaut à une multiplication par 2).
$a >> $b | Décalage à droite | Décalage des bits de $a $b fois par la droite (chaque décalage équivaut à une division par 2).

Précédent | Sommaire | Suivant
Les opérateurs d'assignation | Niveau supérieur | Opérateurs de comparaison


Opérateurs de comparaison

Les opérateurs de comparaison, comme leur nom l'indique, vous permettent de comparer deux valeurs.

Tableau 10-4. Opérateurs de comparaison

Exemple | Nom | Résultat
$a == $b | Egal | Vrai si $a est égal à $b.
$a === $b | Identique | Vrai si $a est égal à $b et qu'ils sont de même type (PHP 4 seulement).
$a != $b | Différent | Vrai si $a est différent de $b.
$a <> $b | Différent | Vrai si $a est différent de $b.
$a < $b | Plus petit que | Vrai si $a est plus petit strictement que $b.
$a > $b | Plus grand | Vrai si $a est plus grand strictement que $b.
$a <= $b | Inférieur ou égal | Vrai si $a est plus petit ou égal à $b.
$a >= $b | Supérieur ou égal | Vrai si $a est plus grand ou égal à $b.

Un autre opérateur conditionnel est l'opérateur ternaire (":?"), qui fonctionne comme en langage C.

<?php
// Exemple d'utilisation pour l'op&eacute;rateur ternaire
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// L'expression ci-dessus est identique &agrave;
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}
?>

L'expression (expr1) ? (expr2) : (expr3) renvoie la valeur de l'expression expr2 si l'expression expr1 est vraie, et l'expression expr3 si l'expression expr1 est fausse.

Voir aussi strcasecmp(), strcmp() et le chapitre sur les types.

Précédent | Sommaire | Suivant
Opérateurs sur les bits | Niveau supérieur | Opérateur de contrôle d'erreur


Opérateur de contrôle d'erreur

PHP supporte un opérateur de contrôle d'erreur : c'est @. Lorsque cet opérateur est ajouté en préfixe d'une expression PHP, les messages d'erreur qui peuvent être générés par cette expression seront ignorés.

Si l'option track_errors est activée, les messages d'erreurs générés par une expression seront sauvés dans la variable globale $php_errormsg. Cette variable sera écrasée à chaque erreur. Il faut alors la surveiller souvent pour pouvoir l'utiliser.

<?php
/* Erreur intentionnelle (le fichier n'existe pas): */
  $my_file = @file ('non_persistent_file') or
    die ("Impossible d'ouvrir le fichier : L'erreur est : '$php_errormsg'");
// Cela fonctionne avec n'importe quelle expression, pas seulement les fonctions
  $value = @$cache[$key];
// la ligne ci-dessus n'affichera pas d'alerte si la cl&eacute; $key du tableau n'existe pas
?>

Note : L'opérateur @ ne fonctionne qu'avec les expressions. La règle générale de fonctionnement est la suivante : si vous pouvez prendre la valeur de quelque chose, vous pouvez le préfixer avec @. Par exemple, vous pouvez ajouter @ aux variables, fonctions, à include(), aux constantes, etc. Vous ne pourrez pas le faire avec des éléments de langage tels que les classes, if et foreach, etc.

Note : La plupart des fonctions d'accès aux bases de données ne retournent pas d'erreur PHP. Il faut y accéder avec une fonction du type base_de_donnees_get_error().

Voir aussi error_reporting().

Précédent | Sommaire | Suivant
Opérateurs de comparaison | Niveau supérieur | Opérateur d'exécutions


Opérateur d'exécutions

PHP supporte un opérateur d'exécution : guillemets obliques ("``"). Notez bien la différence entre les guillemets simples (sur la touche 4), et ceux-ci (sur la touche de la livre anglaise). PHP essaiera d'exécuter le contenu de ces guillemets obliques comme une commande shell. Le résultat sera retourné (i.e. : il ne sera pas simplement envoyé à la sortie standard, il peut être assigné à une variable).

<?php
  $output = `ls -al`;
  echo "<pre>$output</pre>";
?>

Note : Cet opérateur est désactivé lorsque le safe mode est activé ou bien que la fonction shell_exec() est désactivée.

Voir aussi
system(),
passthru(),
exec(),
shell_exec(),
popen() et
escapeshellcmd().

Précédent | Sommaire | Suivant
Opérateur de contrôle d'erreur | Niveau supérieur | Opérateurs d'incrémentation/Décrémentation


Opérateurs d'incrémentation/Décrémentation

PHP supporte les opérateurs de pré et post incrémentation et décrémentation, comme en C.

Tableau 10-5. Opérateurs d'incrémentation/Décrémentation

Exemple | Nom | Résultat
++$a | Pré-incrémente | Incrémente $a de 1, puis retourne $a.
$a++ | Post-incrémente | Retourne $a, puis l'incrémente de 1.
--$a | Pré-décrémente | Décrémente $a de 1, puis retourne $a.
$a-- | Post-décrémente | Retourne $a, puis décrémente $a de 1.

Voici un exemple simple

<?php
  echo "<h3>Post-incr&eacute;mentation</h3>";
  $a = 5;
  echo "Devrait valoir  5: " . $a++ . "<br>\n";
  echo "Devrait valoir  6: " . $a . "<br>\n";
  echo "<h3>Pr&eacute;-incr&eacute;mentation</h3>";
  $a = 5;
  echo "Devrait valoir  6: " . ++$a . "<br>\n";
  echo "Devrait valoir  6: " . $a . "<br>\n";
  echo "<h3>Post-d&eacute;cr&eacute;mentation</h3>";
  $a = 5;
  echo "Devrait valoir  5: " . $a-- . "<br>\n";
  echo "Devrait valoir  4: " . $a . "<br>\n";
  echo "<h3>Pr&eacute;-d&eacute;cr&eacute;mentation</h3>";
  $a = 5;
  echo "Devrait valoir  4: " . --$a . "<br>\n";
  echo "Devrait valoir  4: " . $a . "<br>\n";
?>

PHP suit les conventions de Perl pour la gestion des opérateurs arithmétiques, et non pas celle du C. Par exemple, en Perl 'Z'+1 retourne 'AA', alors qu'en C, 'Z'+1 retourne '[' ( ord('Z') == 90, donc ord('[') == 91 ). Notez que les variables de caractères peuvent être incrémentées, mais pas décrémentées.

Exemple 10-4. Opérations arithmétiques sur un caractère

<?php
$i = 'W';
for($n=0; $n<6; $n++)
  echo ++$i . "\n";

/*
  Produit un r&eacute;sultat identique &agrave; celui-ci :

X
Y
Z
AA
AB
AC

*/
?>

Précédent | Sommaire | Suivant
Opérateur d'exécutions | Niveau supérieur | Les opérateurs logiques


Les opérateurs logiques

Tableau 10-6. Les opérateurs logiques

Exemple | Nom | Résultat
$a and $b | ET (And) | Vrai si $a ET $b sont vrais.
$a or $b | OU (Or) | Vrai si $a OU $b est vrai
$a xor $b | XOR (Xor) | Vrai si $a OU $b est vrai, mais pas les deux en même temps.
! $a | NON (Not) | Vrai si $a est faux.
$a && $b | ET (And) | Vrai si $a ET $b sont vrais.
$a || $b | OU (Or) | Vrai si $a OU $b est vrai.

La raison pour laquelle il existe deux types de "ET" et de "OU" est qu'ils ont des priorités différentes. Voir le paragraphe précédence d'opérateurs.

Précédent | Sommaire | Suivant
Opérateurs d'incrémentation/Décrémentation | Niveau supérieur | Opérateurs de chaînes


Opérateurs de chaînes

Il y a deux opérateurs de chaînes. Le premier est l'opérateur de concaténation ('.'), qui retourne la concaténation de ses deux arguments. Le second est l'opérateur d'assignation concaténant (.=). Reportez-vous à opérateurs d'assignation pour plus de détails.

<?php
  $a = "Bonjour ";
  $b = $a . "Monde!";
// $b contient "Bonjour Monde!"
  $a = "Bonjour ";
  $a = $a . "Monde!";
// $a contient "Bonjour Monde!"
?>

Précédent | Sommaire | Suivant
Les opérateurs logiques | Niveau supérieur | Opérateurs de tableaux


Opérateurs de tableaux

Le seul opérateur en PHP pour les tableaux est l'opérateur +. Cet opérateur ajoute le tableau de droite au tableau de gauche. Les clés communes sont laissées inchangées.

Exemple 10-5. Addition de tableaux

<?php
$a = array("a" => "pomme", "b" => "banane");
$b = array("a" =>"poire", "b" => "fraise", "c" => "cerise");

$c = $a + $b;

var_dump($c);
?>
array(3) {
  ["a"]=>
  string(5) "pomme"
  ["b"]=>
  string(6) "banane"
  ["c"]=>
  string(6) "cerise"
}

Précédent | Sommaire | Suivant
Opérateurs de chaînes | Niveau supérieur | Les structures de contrôle


Les structures de contrôle

Manuel PHP
Précédent Suivant

Chapitre 11. Les structures de contrôle

Table des matières
if
else
elseif
Syntaxe alternative
while
do..while
for
foreach
break
continue
switch
declare
return
require()
include()
require_once()
include_once()

Tous les scripts PHP sont une suite d'instructions. Une instruction peut être une assignation, un appel de fonction, une instruction conditionnelle ou bien une instruction qui ne fait rien (une instruction vide). Une instruction se termine habituellement par un point virgule (";"). De plus, plusieurs instructions peuvent être regroupées en bloc, délimité par des accolades ("{}"). Un bloc est considéré comme une instruction. Les différents types d'instruction sont décrits dans ce chapitre.

if

L'instruction if est une des plus importantes instructions de tous les langages, PHP inclus. Elle permet l'exécution conditionnelle d'une partie de code. Les fonctionnalités de l'instruction if sont les mêmes en PHP qu'en C :

Exemple 11-1. Instruction if ()

<?php
  if (expression)
    commandes
?>

Comme nous l'avons vu dans le paragraphe consacré aux expressions, expr est convertie en sa valeur booléenne. Si l'expression expr vaut TRUE, PHP exécutera l'instruction et si elle vaut FALSE, l'instruction sera ignorée. Plus de détails sur les valeurs qui valent FALSE sont disponibles dans la section Conversion en booléen.

L'exemple suivant affiche la phrase a est plus grand que b si $a est plus grand que $b:

Exemple 11-2. Instruction if () (2)

<?php
  if ($a > $b)
    print "a est plus grand que b";
?>

Souvent, vous voulez que plusieurs instructions soient exécutées après un branchement conditionnel. Bien évidemment, il n'est pas obligatoire de répéter l'instruction conditionnelle autant de fois que vous avez d'instructions à exécuter. A la place, vous pouvez rassembler toutes les instructions dans un bloc. L'exemple suivant affiche a est plus grand que b, et assigne la valeur de la variable $a à la variable $b:

Exemple 11-3. Instruction if () et bloc

<?php
if ($a > $b) {
    print "a est plus grand que b";
    $b = $a;
}
?>

Vous pouvez imbriquer indéfiniment des instructions if les unes dans les autres, ce qui permet une grande flexibilité dans l'exécution d'une partie de code suivant un grand nombre de conditions.

Précédent | Sommaire | Suivant
Opérateurs de tableaux | Niveau supérieur | else


Syntaxe alternative

PHP propose une autre manière de rassembler des instructions à l'intérieur d'un bloc, pour les fonctions de contrôle if, while, for, foreach et switch. Dans chaque cas, le principe est de remplacer l'accolade d'ouverture par deux points (:) et l'accolade de fermeture par, respectivement, endif;, endwhile;, endfor;, ou endswitch;.

Exemple 11-6. Instruction if () alternative

<?php if ($a == 5): ?>
A &eacute;gal 5
<?php endif; ?>

Dans l'exemple ci-desssus, le bloc HTML "A = 5" est inclus à l'intérieur d'un if en utilisant cette nouvelle syntaxe. Ce code HTML ne sera affiché que si la variable $a est égale à 5.

Cette autre syntaxe fonctionne aussi avec le else et elseif. L'exemple suivant montre une structure avec un if, un elsif et un else utilisant cette autre syntaxe:

Exemple 11-7. Instruction alternative if () elseif et else

<?php
if ($a == 5):
    print "a &eacute;gale 5";
    print "...";
elseif ($a == 6):
    print "a &eacute;gale 6";
    print "!!!";
else:
    print "a ne vaut ni 5 ni 6";
endif;
?>

Voir aussi while, for, et if pour d'autres exemples.

Précédent | Sommaire | Suivant
elseif | Niveau supérieur | while


return

Si appelée depuis une fonction, la commande return() termine immédiatement la fonction, et retourne l'argument qui lui est passé. return() interromp aussi l'exécution de commande eval() ou de scripts.

Si appelée depuis l'environnement global, l'exécution du script est interrompue. Si le script courant était include() ou require(), alors le contrôle est rendu au script appelant, et la valeur retournée sera utilisée comme résultat de la fonction include(). Si return() est appelée depuis le script principal, alors l'exécution du script s'arrête. Si le script courant est auto_prepend_file ou auto_append_file dans le fichier php.ini, alors l'exécution du script s'arrête.

Pour plus d'informations, voyez retourner des valeurs.

Note : Notez que puisque return() est une structure de langage et non pas une fonction, les parenthèses ne sont pas requises : en fait, il est classique de les ignorer, même si cela ne change rien.

Précédent | Sommaire | Suivant
declare | Niveau supérieur | require()


Manuel PHP
Précédent Suivant

Chapitre 12. Les fonctions

Table des matières
Les fonctions
Les arguments de fonction
Les valeurs de retour
Variables fonctions
Fonctions internes

Les fonctions

Une fonction peut être définie en utilisant la syntaxe suivante :

Exemple 12-1. Définition d'une fonction

<?php
function foo ($arg_1, $arg_2, ..., $arg_n) {
    echo "Exemple de fonction.\n";
    return $retval;
}
?>

Tout code PHP, correct syntaxiquement, peut apparaître dans une fonction et dans une définition de classe.

En PHP 3, les fonctions doivent être définies avant qu'elles ne soient utilisées. Ce n'est plus le cas en PHP 4.

Lorsqu'une fonction est définie de manière conditionnelle, comme dans les exemples ci-dessous, leur définition doit précéder leur utilisation.

Exemple 12-2. Fonctions conditionnelles

<?php

$makefoo = true;

/* Impossible d'appeler foo() ici,
   car cette fonction n'existe pas.
   Mais nous pouvons utiliser bar() */

bar();

if ($makefoo) {
  function foo ()
  {
    echo "Je n'existe pas tant que le programme n'est pas pass&eacute; ici.\n";
  }
}

/* Maitenant, nous pouvons appeler foo()
   car $makefoo est maintenant vrai */

if ($makefoo) foo();

function bar() {
{
  echo "J'existe d&egrave;s de d&eacute;but du programme.\n";
}

?>

Exemple 12-3. Fonctions dans une autre fonctions

<?php
function foo()
{
  function bar()
  {
    echo "Je n'existe pas tant que foo() n'est pas appel&eacute;.\n";
  }
}

/* Impossible d'appeler bar() ici
   car il n'existe pas. */

foo();

/* Maintenant, nous pouvons appeler bar(),
   car l'utilisation de foo() l'a rendu
   accessible. */

bar();

?>

PHP ne supporte pas le surchargement de fonction, ni la destruction ou la redéfinition de fonctions déjà déclarées.

PHP 3 ne supporte pas un nombre variable d'arguments (voir valeurs par défaut d'arguments pour plus d'informations). PHP 4 supporte les deux : voir liste variable d'arguments de fonction et les fonctions de références que sont func_num_args(), func_get_arg(), et func_get_args() pour plus d'informations.

Précédent | Sommaire | Suivant
include_once() | Niveau supérieur | Les arguments de fonction


Les arguments de fonction

Des informations peuvent être passées à une fonction en utilisant un tableau d'arguments, dont chaque élément est séparé par une virgule. Un élément peut être une variable ou une constante.

PHP supporte le passage d'arguments par valeur (méthode par défaut), par référence. Les listes variables d'arguments sont supportées par PHP 4 et les versions plus récentes. Voir liste variable d'arguments de fonction et les fonctions utiles que sont func_num_args(), func_get_arg(), et func_get_args(). Fonctionnellement, on peut arriver au même résultat en passant un tableau comme argument :

Exemple 12-4. Nombre variable d'argument sous forme de tableau

<?php
function takes_array($input) {
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

Passage d'arguments par référence

Par défaut, les arguments sont passés à la fonction par valeur (donc vous pouvez changer la valeur d'un argument dans la fonction, cela ne change pas sa valeur à l'extérieur de la fonction). Si vous voulez que vos fonctions puissent changer la valeur des arguments, vous devez passer ces arguments par référence.

Si vous voulez qu'un argument soit toujours passé par référence, vous pouvez ajouter un '&' devant l'argument dans la déclaration de la fonction :

Exemple 12-5. Passage d'arguments par référence

<?php
function add_some_extra(&$string) {
    $string .= ', et un peu plus.';
}
$str = 'Ceci est une cha&icirc;ne';
add_some_extra($str);
echo $str;    // affiche 'Ceci est une cha&icirc;ne, et un peu plus.'
?>

Si vous souhaitez passer une variable par référence à une fonction mais de manière ponctuelle, vous pouvez ajouter un '&' devant l'argument dans l'appel de la fonction:

Exemple 12-6. Passage de valeur par référence, ponctuellement

<?php
function foo ($bar) {
    $bar .= ', et un peu plus.';
}
$str = Ceci est une cha&icirc;ne';
foo ($str);
echo $str;    // affiche 'Ceci est une cha&icirc;ne'
foo (&$str);
echo $str;    // affiche 'Ceci est une cha&icirc;ne, et un peu plus.'
?>

Valeur par défaut des arguments

Vous pouvez définir comme en C++ des valeurs par défaut pour les arguments de type scalaire :

Exemple 12-7. Valeur par défaut des arguments de fonctions

<?php
function servir_apero ($type = "ricard") {
    return "Servir un verre de $type.\n";
}
echo servir_apero();
echo servir_apero("whisky");
?>

La fonction ci-dessus affichera :
Servir un verre de ricard.
Servir un verre de whisky.

La valeur par défaut d'un argument doit obligatoirement être une constante, et ne peut être ni une variable, ni un membre de classe.

Il est à noter que si vous utilisez des arguments avec valeur par défaut avec d'autres sans valeur par défaut, les premiers doivent être placés à la suite de tous les paramètres sans valeur par défaut. Sinon, cela ne fonctionnera pas. Considérons le code suivant :

Exemple 12-8. Les arguments à valeur par défaut doivent être en premier : erreur

<?php
function faireunyaourt ($type = "acidophilus", $flavour) {
    return "Pr&eacute;parer un bol de $type $flavour.\n";
}
echo faireunyaourt ("framboise");   // ne fonctionne pas comme voulu
?>

L'affiche du code ci-dessus est le suivant :
Warning: Missing argument 2 in call to faireunyaourt() in
/usr/local/etc/httpd/htdocs/PHP 3test/functest.html on line 41
Préparer un bol de framboise.

Maintenant comparons l'exemple précédent avec l'exemple suivant :

Exemple 12-9. Les arguments à valeur par défaut doivent être en premier : valide

<?php
function faireunyaourt ($flavour, $type = "acidophilus") {
    return "Pr&eacute;parer un bol de $type $flavour.\n";
}
echo faireunyaourt ("framboise");   // fonctionne comme voulu
?>

L'affichage de cet exemple est le suivant :
Préparer un bol de acidophilus framboise.

Nombre d'arguments variable

PHP 4 supporte les fonctions à nombre d'arguments variable. C'est très simple à utiliser, avec les fonctions func_num_args(), func_get_arg(), et func_get_args().

Aucune syntaxe particulière n'est nécessaire, et la liste d'argument doit toujours être fournie explicitement avec la définition de la fonction, et se comportera normalement.

Précédent | Sommaire | Suivant
Les fonctions | Niveau supérieur | Les valeurs de retour


Les valeurs de retour

Les valeurs sont renvoyées en utilisant une instruction de retour optionnelle. Tous les types de variables peuvent être renvoyés, tableaux et objets compris.

Exemple 12-10. Retourner des valeurs de fonction

<?php
function carre ($num) {
    return $num * $num;
}
echo carre (4);   // affiche '16'.
?>

Vous ne pouvez pas renvoyer plusieurs valeurs en même temps, mais vous pouvez obtenir le même résultat en renvoyant un tableau.

Exemple 12-11. Retourner plusieurs valeurs d'une fonction

<?php
function petit_nombre() {
    return array (0, 1, 2);
}
list ($zero, $one, $two) = petit_nombre();
?>

Pour retourner une référence d'une fonction, utilisez l'opérateur & aussi bien dans la déclaration de la fonction que dans l'assignation de la valeur de retour.

Exemple 12-12. Retourner une référence d'une fonction

<?php
function &retourne_reference() {
    return $uneref;
}
$newref =& retourne_reference();
?>

Précédent | Sommaire | Suivant
Les arguments de fonction | Niveau supérieur | Variables fonctions


Variables fonctions

PHP supporte le concept de variables fonctions. Cela signifie que si le nom d'une variable est suivi de parenthèses, PHP recherchera une fonction de même nom, et essaiera de l'exécuter. Cela peut servir, entre autre, pour faire des fonctions callback, des tables de fonctions...

Les variables fonctions ne peuvent pas fonctionner avec les éléments de langage comme les echo(), unset(), isset(), empty(), etc... C'est une des différences majeures entre les fonctions PHP et les éléments de langage.

Exemple 12-13. Exemple de variable fonction

<?php
function foo() {
    echo "dans foo()<br>\n";
}
function bar( $arg = '' ) {
    echo "Dans bar(); l'argument &eacute;tait '$arg'.<br>\n";
}
$func = 'foo';
$func();
$func = 'bar';
$func( 'test' );
?>

Voir aussi call_user_func(), les variables variables et function_exists().

Précédent | Sommaire | Suivant
Les valeurs de retour | Niveau supérieur | Fonctions internes


Fonctions internes

PHP dispose de nombreuses fonctions et structures standards. Il y a aussi des fonctions qui requièrent des extensions spécifiques de PHP, sans lesquelles vous obtiendrez l'erreur fatale undefined function. Par exemple, pour utiliser les fonctions d'images, telles que imagecreatetruecolor(), vous aurez besoin du support de GD dans PHP. Ou bien, pour utiliser mysql_connect(), vous aurez besoin de l'extension MySQL. Il y a des fonctions de base qui sont inclues dans toutes les versions de PHP, telles que les fonctions de chaînes de caractères et les fonctions de variables. Utilisez phpinfo() ou get_loaded_extensions() pour savoir quelles sont les extensions qui sont compilées avec votre PHP. Notez aussi que de nombreuses extensions sont activées par défaut, et que le manuel PHP est compartimenté par extension. Voyez les chapitres de configuration, installation ainsi que les détails particuliers à chaque extension, pour savoir les mettre en place.

Lire et comprendre le prototype d'une fonction est décrit dans l'annexe Comment lire la définition d'une fonction (prototype). Il est important de comprendre ce qu'une fonction retourne, ou si une fonction travaille directement sur la valeur des paramètres fournis. Par exemple, str_replace() va retourne une chaîne modifiée, tandis que usort() travaille directement sur la variable passée en paramètre. Chaque page du manuel a des informations spécifiques sur chaque fonction, comme le nombre de paramètres, les évolutions de spécifications, les valeurs retournées en cas de succès ou d'échec, et la disponibilité en fonction des versions. Bien connaître ces différences, parfois subtiles, est crucial pour bien coder en PHP.

Voir aussi function_exists(), l'index des fonctions, get_extension_funcs() et dl().

Précédent | Sommaire | Suivant
Variables fonctions | Niveau supérieur | Les classes et les objets


Les classes et les objets

Manuel PHP
Précédent Suivant

Chapitre 13. Les classes et les objets

Table des matières
Les classes : class
extends : héritage
Constructor : constructeur
Opérateur ::
parent
Sauvegarde d'objets - cas des sessions
Les fonctions magiques __sleep et __wakeup
Références dans un constructeur
Comparer des objets en PHP 4
Comparer des objets en PHP 5

Les classes : class

Une classe est une collection de variables et de fonctions qui fonctionnent avec ces variables. Une classe est définie en utilisant la syntaxe suivante :

Exemple 13-1. Les classes en PHP

<?php
class Caddie {
// El&eacute;ments de notre panier
    var $items;

// Ajout de $num articles de type $artnr au panier
    function add_item ($artnr, $num) {
        $this->items[$artnr] += $num;
    }

// Suppression de $num articles du type $artnr du panier
    function remove_item ($artnr, $num) {
        if ($this->items[$artnr] > $num) {
            $this->items[$artnr] -= $num;
            return &true;;
        } else {
            return FALSE;
        }
    }
}
?>

L'exemple ci-dessus définit la classe Caddie qui est composée d'un tableau associatif contenant les articles du panier et de deux fonctions, une pour ajouter et une pour enlever des éléments au panier.

Attention

Les notes suivantes ne sont valable que pour PHP 4.

Le nom stdClass est utilisé en interne par Zend et ne doit pas être utilisé. Vous ne pouvez pas nommer une classe stdClass en PHP.

Les noms de fonctions __sleep et __wakeup sont magiques en PHP. Vous ne pouvez pas utiliser ces noms de fonctions dans vos classes, à moins que vous ne souhaitiez utiliser la magie qui y est associée.

PHP se réserve l'usage de tous les noms de fonctions commençants par __, pour sa propre magie. Il est vivement recommandé de ne pas utiliser des noms de fonctions commençants par __, à moins que vous ne souhaitiez utiliser la magie qui y est associée.

Note : En PHP 4, seuls les initialiseurs constants pour les variables var sont autorisés. Utilisez les constructeurs pour les initialisations variables, ou utilisant des expressions.

Exemple 13-2. Initialisation de membres de classe

<?php
/* Aucune de ces syntaxes ne fonctionnera en PHP 4 */
class Caddie {
    var $date_du_jour = date("d/m/Y");
    var $name = $firstname;
    var $owner = 'Fred ' . 'Jones';
    var $items = array("DVD", "T&eacute;l&eacute;","Magn&eacute;toscope");
}
/* Voici comment cela doit se faire d&eacute;sormais. */
class Caddie {
    var $date_du_jour;
    var $name;
    var $owner;
    var $items;
    function Caddie() {
        $this->date_du_jour = date("d/m/Y");
        $this->name = $GLOBALS['firstname'];
        /* etc... */
    }
}
?>

Les classes forment un type de variable. Pour créer une variable du type désiré, vous devez utiliser l'opérateur new.

Exemple 13-3. Création d'un objet de classe

<?php
 $cart = new Caddie;
 $cart->add_item("10", 1);
 $another_cart = new Caddie;
 $another_cart->add_item("0815", 3);
?>

L'instruction ci-dessus crée l'objet $cart de la classe Caddie. La fonction add_idem() est appelée afin d'ajouter l'article numéro 10 dans le panier. 3 articles numéro 0815 sont ajoutés au caddie $another_cart.

$cart et $another_cart disposent des fonctions add_item(), remove_item() et de la variable items. Ce sont des fonctions et variables distinctes. Vous pouvez vous représenter les objets comme des dossiers sur votre disque dur. Vous pouvez avoir deux fichiers lisez-moi.txt sur votre disque dur, tant qu'ils ne sont pas dans le même répertoire. De même que vous devez alors taper le chemin complet jusqu'au fichier, vous devez spécifier le nom complet de la méthode avant de l'employer : en termes PHP, le dossier racine est l'espace de nom global, et le séparateur de dossier est ->. Par exemple, les noms $cart->items et $another_cart->items représentent deux variables distinctes. Notez que le nom de la variable est alors $cart->items, et non pas $cart->$items : il n'y a qu'un seul signe $ dans un nom de variable.

Exemple 13-4. Accès aux membres d'une classe

<?php
// correct, le signe $ est unique
$cart->items  = array("10" => 1);
// incorrect, car $cart->$items devient $cart->""
$cart->$items = array("10" => 1);
// correct, mais risque de ne pas se comporter comme pr&eacute;vu
// $cart->$myvar devient $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);
?>

A l'intérieur d'une définition de classe, vous ne savez pas le nom de la variable à partir duquel l'objet sera accessible dans le script. On ne peut prévoir que l'objet créé sera affecté à la variable $cart ou $another_cart. Donc, vous ne pouvez pas utiliser la syntaxe $cart->items. Mais pour pouvoir accéder à aux méthodes et membres d'un objet, vous pouvez utiliser la variable spéciale $this, qui peut s'interpréter comme 'moi-même', ou bien 'l'objet courant'. Par exemple, '$this->items[$artnr] += $num;' peut se lire comme 'ajouter $num au compteur $artnr de mon propre tableau de compteur' ou bien 'ajouter $num au compteur $artnr du tableau de compteurs de l'objet courant'.

Précédent | Sommaire | Suivant
Fonctions internes | Niveau supérieur | extends : héritage


Sauvegarde d'objets - cas des sessions

Note : En PHP 3, les objets perdent leur association de classe à travers le processus de sauvegarde et relecture. Le type de la variable après relecture est bien objet mais il n'a plus de méthode ou de nom de classe. Cela rend la fonctionnalité plutôt inutile (l'objet est devenu un tableau avec une syntaxe étrange).

Attention

La documentation suivante n'est valable que pour PHP 4.

serialize() retourne une chaîne représentant une valeur qui peut être stockée dans les sessions de PHP, ou une base de données. unserialize() peut relire cette chaîne pour recréer la valeur originale. serialize() va sauver toutes les variables d'un objet. Le nom de la classe sera sauvé mais par les méthodes de cet objet.

Pour permettre à unserialize() de lire un objet, la classe de cet objet doit être définie. C'est-à-dire, si vous avez un objet $a de la classe A dans une page php1.php, et que vous le linéarisez avec serialize(), vous obtiendrez une chaîne qui fait référence à la classe A, et contient toutes les valeurs de $a. Pour pouvoir le relire avec la fonction unserialize() dans une page page2.php, il faut que la définition de la classe A soit présente dans cette deuxième page. Cela peut se faire de manière pratique en sauvant la définition de la classe A dans un fichier séparé, et en l'incluant dans les deux pages page1.php et page2.php.

<?php
classa.inc:
  class A {
    var $one = 1;
    function show_one() {
      echo $this->one;
    }
  }
?>
page1.php:
<?php
  include("classa.inc");
  $a = new A;
  $s = serialize($a);
  // enregistrez $s o&ugrave; la page2.php pourra le trouver.
  $fp = fopen("store", "w");
  fputs($fp, $s);
  fclose($fp);
?>
page2.php:
<?php
  // Ceci est n&eacute;cessaire pour que unserialize() fonctionne correctement
  include("classa.inc");
  $s = implode("", @file("store"));
  unserialize($s);
  // maintenant, utilisez la m&eacute;thode show_one de l'objet $a.
  $a->show_one();
?>

Si vous utilisez les sessions et la fonction session_register() pour sauver des objets, ces objets seront linéarisés automatiquement avec la fonction serialize() à la fin de chaque script, et relus avec unserialize() au début du prochain script. Cela signifie que ces objets peuvent apparaître dans n'importe quelle page qui utilise vos sessions.

Il est vivement recommandé d'inclure la définition de classe dans toutes vos pages, même si vous n'utilisez pas ces classes dans toutes vos pages. Si vous l'oubliez et qu'un tel objet est présent, il perdra sa classe, et deviendra un objet de classe stdClass sans aucune fonction, et donc, plutôt inutile.

Si, dans l'exemple ci-dessus, $a devient un objet de session avec l'utilisation de session_register("a"), vous devez pensez à inclure le fichier classa.inc dans toutes vos pages, et pas seulement page1.php et page2.php.

Précédent | Sommaire | Suivant
parent | Niveau supérieur | Les fonctions magiques __sleep et __wakeup


Références dans un constructeur

Créer des références dans un constructeur peut conduire à des résultats étranges. Ce tutoriel vous guide pour éviter ces problèmes.

<?php
class foo {
    function foo($name) {
        // cr&eacute;e une r&eacute;f&eacute;rence dans le tableau global $globalref
        global $globalref;
        $globalref[] = &$this;
        // donne le nom de la variable
        $this->setName($name);
        // et l'affiche
        $this->echoName();
    }
    function echoName() {
        echo "<br>",$this->Name;
    }
    function setName($name)	{
        $this->Name = $name;
    }
}
?>

Vérifions maintenant qu'il y a une différence entre $bar1 qui a été créé avec = et $bar2 qui a été créé avec l'opérateur de référence =& :

<?php
    $bar1 = new foo('cr&eacute;e dans le constructeur');
    $bar1->echoName();
    $globalref[0]->echoName();
    /* affiche :
    cr&eacute;e dans le constructeur
    cr&eacute;e dans le constructeur
    cr&eacute;e dans le constructeur */
    $bar2 =&new foo('cr&eacute;e dans le constructeur');
    $bar2->echoName();
    $globalref[1]->echoName();
    /* affiche :
    cr&eacute;e dans le constructeur
    cr&eacute;e dans le constructeur
    cr&eacute;e dans le constructeur */
?>

Apparemment, il n'y a pas de différence, mais en fait, il y en a une significative : $bar1 et $globalref[0] ne sont pas référencées, ces deux variables sont différentes. Cela est du au fait que l'opérateur "new"ne retourne par de référence, mais retourne une copie.

Note : Il n'y a aucune perte de performances (puisque PHP 4 utilise un compteur de références) à retourner des copies au lieu de références. Au contraire, il est souvent mieux de travailler sur les copies plutôt que sur les références, car créer une référence prend un peu plus de temps que de créer une copie qui ne prend virtuellement pas de temps (à moins de créer un tableau géant ou un objet monstrueux, auquel cas il est préférable de passer par des références).

Pour prouver ceci, regardez le code suivant :

Exemple 13-13. Références et constructeurs

<?php
        // maintenant, nous allons changer de nom. Qu'attendez-vous?
        // Vous pouvez vous attendre &agrave; ce que les deux variables $bar
        // et  $globalref[0] changent de nom...
        $bar1->setName('modifi&eacute;');
        // comme pr&eacute;dit, ce n'est pas le cas
        $bar1->echoName();
        $globalref[0]->echoName();
        /* affiche :
        cr&eacute;e dans le constructeur
        modifi&eacute; */
        // quelle est la diff&eacute;rence entre $bar2 et $globalref[1]
        $bar2->setName('modifi&eacute;');
        // Heureusement, elles sont non seulement &eacute;gales, mais
        // elles repr&eacute;sentent la m&ecirc;me variable.
        // donc $bar2->Name et $globalref[1]->Name sont les m&ecirc;mes
        $bar2->echoName();
        $globalref[1]->echoName();
        /* affiche :
        modifi&eacute;
        modifi&eacute; */
?>

Un dernier exemple pour bien comprendre.

<?php
class a {
    function a($i) {
        $this->value = $i;
        // Essayez de comprendre on n'a pas besoin de
        // r&eacute;f&eacute;rence ici
        $this->b = new b($this);
    }
    function createRef() {
        $this->c = new b($this);
    }
    function echoValue() {
        echo "<br>","class ",get_class($this),': ',$this->value;
    }
}
class b  {
    function b(&$a) {
        $this->a = &$a;
    }
   function echoValue() {
        echo "<br>","class ",get_class($this),': ',$this->a->value;
        }
}
// Essayez de comprendre pourquoi une copie simple va
// conduire &agrave; un r&eacute;sultat ind&eacute;sirable &agrave;
// la ligne marqu&eacute;e d'une &eacute;toile
$a =&new a(10);
$a->createRef();
$a->echoValue();
$a->b->echoValue();
$a->c->echoValue();
$a->value = 11;
$a->echoValue();
$a->b->echoValue(); // *
$a->c->echoValue();
/*
output:
class a: 10
class b: 10
class b: 10
class a: 11
class b: 11
class b: 11
*/
?>

Précédent | Sommaire | Suivant
Les fonctions magiques __sleep et __wakeup | Niveau supérieur | Comparer des objets en PHP 4


Les références

Manuel PHP
Précédent Suivant

Chapitre 14. Les références

Table des matières
Qu'est ce qu'une référence?
Que font les références ?
Ce que les références ne sont pas
Passage par référence
Retourner des références
Détruire une référence
Repérer une référence

Qu'est ce qu'une référence?

En PHP, les références sont destinées à appeler le contenu d'une variable avec un autre nom. Ce n'est pas comme en C : ici, les références sont des alias dans la table des symboles. Le nom de la variable et son contenu ont des noms différents, ce qui fait que l'on peut donner plusieurs noms au même contenu. On peut faire l'analogie avec les fichiers sous Unix, et leur nom de fichier : les noms des variables sont les entrées dans un répertoire, tandis que le contenu de la variable est le contenu même du fichier. Faire des références en PHP revient alors à faire des liens sous Unix.

Précédent | Sommaire | Suivant
Comparer des objets en PHP 5 | Niveau supérieur | Que font les références ?


Que font les références ?

Les références vous permettent de faire pointer deux variables sur le même contenu. Par exemple, lorsque vous faites :

<?php
$a =& $b
?>

cela signifie que $a et $b pointent sur la même variable.

Note : $a et $b sont complètement égales ici : ce n'est pas $a qui pointe sur $b, ou vice versa. C'est bien $a et $b qui pointent sur le même contenu.

La même syntaxe peut être utilisée avec les fonctions qui retournent des références, et avec l'opérateur new (PHP 4.0.4 et plus récent):

<?php
  $bar =& new fooclass();
  $foo =& find_var ($bar);
?>

Note : A moins d'utiliser la syntaxe ci-dessus, le résultat de $bar = new fooclass() ne sera pas la même variable que $this dans le constructeur, ce qui signifie que si vous avez utilisé la référence $this dans le constructeur, vous devez assigner la référence, ou bien obtenir deux objets différents.

Le deuxième intérêt des références est de pouvoir passer des variables par référence. On réalise ceci en faisant pointer des variables locales vers le contenu des variables de fonction. Exemple :

<?php
  function foo(&$var) {
    $var++;
  }
  $a=5;
  foo($a);
?>

$a vaut 6. Cela provient du fait que dans la fonction foo, la variable $var pointe sur le même contenu que $a. Voir aussi les explications détaillées dans passage par référence.

Le troisième intérêt des références est de retourner des valeurs par référence.

Précédent | Sommaire | Suivant
Les références | Niveau supérieur | Ce que les références ne sont pas


Ce que les références ne sont pas

Comme précisé ci-dessus, les références ne sont pas des pointeurs. Cela signifie que le script suivant ne fera pas ce à quoi on peut s'attendre :

<?php
  function foo(&$var) {
    $var =& $GLOBALS["baz"];
  }
  foo($bar);
?>

Il va se passer que $var dans foo() sera lié à $bar, mais il sera aussi relié à $GLOBALS["baz"]. Il n'y a pas moyen de lier $bar à quelque chose d'autre en utilisant le mécanisme de référence, car $bar n'est pas accessible dans la fonction foo() (certes, il est représenté par $var et $var possède la même valeur, mais n'est pas relié par la table des symboles).

Précédent | Sommaire | Suivant
Que font les références ? | Niveau supérieur | Passage par référence


Passage par référence

Vous pouvez passer des variables par référence, de manière à ce que la fonction modifie ses arguments. La syntaxe est la suivante :

<?php
  function foo(&$var) {
    $var++;
  }
  $a=5;
  foo ($a);
// $a vaut 6 maintenant
?>

Notez qu'il n'y a pas de signe de référence dans l'appel de la fonction, uniquement sur sa définition. La définition de la fonction est suffisante pour passer correctement des arguments par référence.

Les objets suivants peuvent être passés par référence :

  • Une variable, i.e. foo($a)

  • Un nouvel objet, i.e. foo(new foobar())

  • Une référence, retournée par une fonction :

    <?php
  function &bar() {
   $a = 5;
   return $a;
  }
  foo(bar());
?>

    Voir aussi des détails dans retourner des références.

Toutes les autres expressions ne doivent pas être passées par référence, car le résultat sera indéfini. Par exemple, les passages par référence suivants sont invalides :

<?php
  function bar() // Notez l'absence de &
  {
        $a = 5;
        return $a;
  }
  foo(bar);
  foo($a = 5) // Expression, pas une variable
  foo(5) // Constante, pas une variable
?>

Ces fonctionnalités sont valables à partir de PHP 4.0.4.

Précédent | Sommaire | Suivant
Ce que les références ne sont pas | Niveau supérieur | Retourner des références


Retourner des références

Retourner des références est toujours utile lorsque vous voulez utiliser une fonction pour savoir à quoi est liée une variable. Lorsque vous retournez une variable par paramètre, utilisez le code suivant

<?php
  function &find_var($param) {
  //    ...code...
    return $found_var;
  }
  $foo =& find_var ($bar);
  $foo->x = 2;
?>

Dans cet exemple, la propriété de l'objet est retournée dans find_var et lui sera affectée, et non pas à la copie, comme cela sera le cas avec une syntaxe par référence.

Note : Contrairement au passage de paramètre, vous devez utiliser & aux deux endroits, à la fois pour indiquer que vous retournez par référence (pas une copie habituelle), et pour indiquer que vous assignez aussi par référence (pas la copie habituelle).

Précédent | Sommaire | Suivant
Passage par référence | Niveau supérieur | Détruire une référence


Détruire une référence

Lorsque vous détruisez une référence, vous ne faites que casser le lien entre le nom de la variable et son contenu. Cela ne signifie pas que le contenu est détruit. Par exemple,

<?php
$a = 1;
$b =& $a;
unset ($a);
?>

Cet exemple ne détruira pas $b, mais juste $a.

Encore une fois, on peut comparer cette action avec la fonction unlink d'Unix.

Précédent | Sommaire | Suivant
Retourner des références | Niveau supérieur | Repérer une référence


Repérer une référence

De nombreuses syntaxes de PHP sont implémentées via le mécanisme de référence, et tout ce qui a été vu concernant les liaisons entre variables s'applique à ces syntaxes. Par exemple, le passage et le retour d'arguments par référence. Quelques autres exemples de syntaxes :

Références globales

Lorsque vous déclarez une variable global $var, vous créez en fait une référence sur une variable globale. Ce qui signifie que

<?php
$var =& $GLOBALS["var"];
?>

Et que, si vous détruisez la variable $var, la variable globale ne sera pas détruite.

$this

Dans une méthode d'objet $this est toujours une référence sur l'objet courant.

Précédent | Sommaire | Suivant
Détruire une référence | Niveau supérieur | Security


Security

Manuel PHP
Précédent Suivant

III. Security

Table des matières
15. Security

Précédent | Sommaire | Suivant
Repérer une référence |  | Security


Security

Manuel PHP
Précédent Suivant

Chapitre 15. Security

Table des matières
General considerations
Installed as CGI binary
Installed as an Apache module
Filesystem Security
Database Security
Error Reporting
Using Register Globals
User Submitted Data
Hiding PHP
Keeping Current

PHP is a powerful language and the interpreter, whether included in a web server as a module or executed as a separate CGI binary, is able to access files, execute commands and open network connections on the server. These properties make anything run on a web server insecure by default. PHP is designed specifically to be a more secure language for writing CGI programs than Perl or C, and with correct selection of compile-time and runtime configuration options, and proper coding practices, it can give you exactly the combination of freedom and security you need.

As there are many different ways of utilizing PHP, there are many configuration options controlling its behaviour. A large selection of options guarantees you can use PHP for a lot of purposes, but it also means there are combinations of these options and server configurations that result in an insecure setup.

The configuration flexibility of PHP is equally rivalled by the code flexibility. PHP can be used to build complete server applications, with all the power of a shell user, or it can be used for simple server-side includes with little risk in a tightly controlled environment. How you build that environment, and how secure it is, is largely up to the PHP developer.

This chapter starts with some general security advice, explains the different configuration option combinations and the situations they can be safely used, and describes different considerations in coding for different levels of security.

General considerations

A completely secure system is a virtual impossibility, so an approach often used in the security profession is one of balancing risk and usability. If every variable submitted by a user required two forms of biometric validation (such as a retinal scan and a fingerprint), you would have an extremely high level of accountability. It would also take half an hour to fill out a fairly complex form, which would tend to encourage users to find ways of bypassing the security.

The best security is often inobtrusive enough to suit the requirements without the user being prevented from accomplishing their work, or over-burdening the code author with excessive complexity. Indeed, some security attacks are merely exploits of this kind of overly built security, which tends to erode over time.

A phrase worth remembering: A system is only as good as the weakest link in a chain. If all transactions are heavily logged based on time, location, transaction type, etc. but the user is only verified based on a single cookie, the validity of tying the users to the transaction log is severely weakened.

When testing, keep in mind that you will not be able to test all possibilities for even the simplest of pages. The input you may expect will be completely unrelated to the input given by a disgruntled employee, a cracker with months of time on their hands, or a housecat walking across the keyboard. This is why it's best to look at the code from a logical perspective, to discern where unexpected data can be introduced, and then follow how it is modified, reduced, or amplified.

The Internet is filled with people trying to make a name for themselves by breaking your code, crashing your site, posting inappropriate content, and otherwise making your day interesting. It doesn't matter if you have a small or large site, you are a target by simply being online, by having a server that can be connected to. Many cracking programs do not discern by size, they simply trawl massive IP blocks looking for victims. Try not to become one.

Précédent | Sommaire | Suivant
Security | Niveau supérieur | Installed as CGI binary


Installed as CGI binary

Possible attacks

Using PHP as a CGI binary is an option for setups that for some reason do not wish to integrate PHP as a module into server software (like Apache), or will use PHP with different kinds of CGI wrappers to create safe chroot and setuid environments for scripts. This setup usually involves installing executable PHP binary to the web server cgi-bin directory. CERT advisory CA-96.11 recommends against placing any interpreters into cgi-bin. Even if the PHP binary can be used as a standalone interpreter, PHP is designed to prevent the attacks this setup makes possible:

  • Accessing system files: http://my.host/cgi-bin/php?/etc/passwd

    The query information in a url after the question mark (?) is passed as command line arguments to the interpreter by the CGI interface. Usually interpreters open and execute the file specified as the first argument on the command line.

    When invoked as a CGI binary, PHP refuses to interpret the command line arguments.

  • Accessing any web document on server: http://my.host/cgi-bin/php/secret/doc.html

    The path information part of the url after the PHP binary name, /secret/doc.html is conventionally used to specify the name of the file to be opened and interpreted by the CGI program. Usually some web server configuration directives (Apache: Action) are used to redirect requests to documents like http://my.host/secret/script.php to the PHP interpreter. With this setup, the web server first checks the access permissions to the directory /secret, and after that creates the redirected request http://my.host/cgi-bin/php/secret/script.php. Unfortunately, if the request is originally given in this form, no access checks are made by web server for file /secret/script.php, but only for the /cgi-bin/php file. This way any user able to access /cgi-bin/php is able to access any protected document on the web server.

    In PHP, compile-time configuration option --enable-force-cgi-redirect and runtime configuration directives doc_root and user_dir can be used to prevent this attack, if the server document tree has any directories with access restrictions. See below for full the explanation of the different combinations.

Case 1: only public files served

If your server does not have any content that is not restricted by password or ip based access control, there is no need for these configuration options. If your web server does not allow you to do redirects, or the server does not have a way to communicate to the PHP binary that the request is a safely redirected request, you can specify the option --enable-force-cgi-redirect to the configure script. You still have to make sure your PHP scripts do not rely on one or another way of calling the script, neither by directly http://my.host/cgi-bin/php/dir/script.php nor by redirection http://my.host/dir/script.php.

Redirection can be configured in Apache by using AddHandler and Action directives (see below).

Case 2: using --enable-force-cgi-redirect

This compile-time option prevents anyone from calling PHP directly with a url like http://my.host/cgi-bin/php/secretdir/script.php. Instead, PHP will only parse in this mode if it has gone through a web server redirect rule.

Usually the redirection in the Apache configuration is done with the following directives:

Action php-script /cgi-bin/php
AddHandler php-script .php

This option has only been tested with the Apache web server, and relies on Apache to set the non-standard CGI environment variable REDIRECT_STATUS on redirected requests. If your web server does not support any way of telling if the request is direct or redirected, you cannot use this option and you must use one of the other ways of running the CGI version documented here.

Case 3: setting doc_root or user_dir

To include active content, like scripts and executables, in the web server document directories is sometimes considered an insecure practice. If, because of some configuration mistake, the scripts are not executed but displayed as regular HTML documents, this may result in leakage of intellectual property or security information like passwords. Therefore many sysadmins will prefer setting up another directory structure for scripts that are accessible only through the PHP CGI, and therefore always interpreted and not displayed as such.

Also if the method for making sure the requests are not redirected, as described in the previous section, is not available, it is necessary to set up a script doc_root that is different from web document root.

You can set the PHP script document root by the configuration directive doc_root in the configuration file, or you can set the environment variable PHP_DOCUMENT_ROOT. If it is set, the CGI version of PHP will always construct the file name to open with this doc_root and the path information in the request, so you can be sure no script is executed outside this directory (except for user_dir below).

Another option usable here is user_dir. When user_dir is unset, only thing controlling the opened file name is doc_root. Opening an url like http://my.host/~user/doc.php does not result in opening a file under users home directory, but a file called ~user/doc.php under doc_root (yes, a directory name starting with a tilde [~]).

If user_dir is set to for example public_php, a request like http://my.host/~user/doc.php will open a file called doc.php under the directory named public_php under the home directory of the user. If the home of the user is /home/user, the file executed is /home/user/public_php/doc.php.

user_dir expansion happens regardless of the doc_root setting, so you can control the document root and user directory access separately.

Case 4: PHP parser outside of web tree

A very secure option is to put the PHP parser binary somewhere outside of the web tree of files. In /usr/local/bin, for example. The only real downside to this option is that you will now have to put a line similar to:

#!/usr/local/bin/php

as the first line of any file containing PHP tags. You will also need to make the file executable. That is, treat it exactly as you would treat any other CGI script written in Perl or sh or any other common scripting language which uses the #! shell-escape mechanism for launching itself.

To get PHP to handle PATH_INFO and PATH_TRANSLATED information correctly with this setup, the PHP parser should be compiled with the --enable-discard-path configure option.

Précédent | Sommaire | Suivant
Security | Niveau supérieur | Installed as an Apache module


Installed as an Apache module

When PHP is used as an Apache module it inherits Apache's user permissions (typically those of the "nobody" user). This has several impacts on security and authorization. For example, if you are using PHP to access a database, unless that database has built-in access control, you will have to make the database accessible to the "nobody" user. This means a malicious script could access and modify the database, even without a username and password. It's entirely possible that a web spider could stumble across a database administrator's web page, and drop all of your databases. You can protect against this with Apache authorization, or you can design your own access model using LDAP, .htaccess files, etc. and include that code as part of your PHP scripts.

Often, once security is established to the point where the PHP user (in this case, the apache user) has very little risk attached to it, it is discovered that PHP is now prevented from writing any files to user directories. Or perhaps it has been prevented from accessing or changing databases. It has equally been secured from writing good and bad files, or entering good and bad database transactions.

A frequent security mistake made at this point is to allow apache root permissions, or to escalate apache's abilitites in some other way.

Escalating the Apache user's permissions to root is extremely dangerous and may compromise the entire system, so sudo'ing, chroot'ing, or otherwise running as root should not be considered by those who are not security professionals.

There are some simpler solutions. By using open_basedir you can control and restrict what directories are allowed to be used for PHP. You can also set up apache-only areas, to restrict all web based activity to non-user, or non-system, files.

Précédent | Sommaire | Suivant
Installed as CGI binary | Niveau supérieur | Filesystem Security


Filesystem Security

PHP is subject to the security built into most server systems with respect to permissions on a file and directory basis. This allows you to control which files in the filesystem may be read. Care should be taken with any files which are world readable to ensure that they are safe for reading by all users who have access to that filesystem.

Since PHP was designed to allow user level access to the filesystem, it's entirely possible to write a PHP script that will allow you to read system files such as /etc/passwd, modify your ethernet connections, send massive printer jobs out, etc. This has some obvious implications, in that you need to ensure that the files that you read from and write to are the appropriate ones.

Consider the following script, where a user indicates that they'd like to delete a file in their home directory. This assumes a situation where a PHP web interface is regularly used for file management, so the Apache user is allowed to delete files in the user home directories.

Exemple 15-1. Poor variable checking leads to....

<?php
// remove a file from the user's home directory
$username = $_POST['user_submitted_name'];
$homedir = "/home/$username";
$file_to_delete = "$userfile";
unlink ("$homedir/$userfile");
echo "$file_to_delete has been deleted!";
?>
Since the username is postable from a user form, they can submit a username and file belonging to someone else, and delete files. In this case, you'd want to use some other form of authentication. Consider what could happen if the variables submitted were "../etc/" and "passwd". The code would then effectively read:

Exemple 15-2. ... A filesystem attack

<?php
// removes a file from anywhere on the hard drive that
// the PHP user has access to. If PHP has root access:
$username = "../etc/";
$homedir = "/home/../etc/";
$file_to_delete = "passwd";
unlink ("/home/../etc/passwd");
echo "/home/../etc/passwd has been deleted!";
?>
There are two important measures you should take to prevent these issues.

  • Only allow limited permissions to the PHP web user binary.

  • Check all variables which are submitted.

Here is an improved script:

Exemple 15-3. More secure file name checking

<?php
// removes a file from the hard drive that
// the PHP user has access to.
$username = $_SERVER['REMOTE_USER']; // using an authentication mechanisim

$homedir = "/home/$username";

$file_to_delete = basename("$userfile"); // strip paths
unlink ($homedir/$file_to_delete);

$fp = fopen("/home/logging/filedelete.log","+a"); //log the deletion
$logstring = "$username $homedir $file_to_delete";
fputs ($fp, $logstring);
fclose($fp);

echo "$file_to_delete has been deleted!";
?>
However, even this is not without it's flaws. If your authentication system allowed users to create their own user logins, and a user chose the login "../etc/", the system is once again exposed. For this reason, you may prefer to write a more customized check:

Exemple 15-4. More secure file name checking

<?php
$username = $_SERVER['REMOTE_USER']; // using an authentication mechanisim
$homedir = "/home/$username";

if (!ereg('^[^./][^/]*$', $userfile))
     die('bad filename'); //die, do not process

if (!ereg('^[^./][^/]*$', $username))
     die('bad username'); //die, do not process
//etc...
?>

Depending on your operating system, there are a wide variety of files which you should be concerned about, including device entries (/dev/ or COM1), configuration files (/etc/ files and the .ini files), well known file storage areas (/home/, My Documents), etc. For this reason, it's usually easier to create a policy where you forbid everything except for what you explicitly allow.

Précédent | Sommaire | Suivant
Installed as an Apache module | Niveau supérieur | Database Security


Database Security

Nowadays, databases are cardinal components of any web based application by enabling websites to provide varying dynamic content. Since very sensitive or secret information can be stored in a database, you should strongly consider protecting your databases.

To retrieve or to store any information you need to connect to the database, send a legitimate query, fetch the result, and close the connection. Nowadays, the commonly used query language in this interaction is the Structured Query Language (SQL). See how an attacker can tamper with an SQL query.

As you can surmise, PHP cannot protect your database by itself. The following sections aim to be an introduction into the very basics of how to access and manipulate databases within PHP scripts.

Keep in mind this simple rule: defense in depth. The more places you take action to increase the protection of your database, the less probability of an attacker succeeding in exposing or abusing any stored information. Good design of the database schema and the application deals with your greatest fears.

Designing Databases

The first step is always to create the database, unless you want to use one from a third party. When a database is created, it is assigned to an owner, who executed the creation statement. Usually, only the owner (or a superuser) can do anything with the objects in that database, and in order to allow other users to use it, privileges must be granted.

Applications should never connect to the database as its owner or a superuser, because these users can execute any query at will, for example, modifying the schema (e.g. dropping tables) or deleting its entire content.

You may create different database users for every aspect of your application with very limited rights to database objects. The most required privileges should be granted only, and avoid that the same user can interact with the database in different use cases. This means that if intruders gain access to your database using your applications credentials, they can only effect as many changes as your application can.

You are encouraged not to implement all the business logic in the web application (i.e. your script), instead do it in the database schema using views, triggers or rules. If the system evolves, new ports will be intended to open to the database, and you have to re-implement the logic in each separate database client. Over and above, triggers can be used to transparently and automatically handle fields, which often provides insight when debugging problems with your application or tracing back transactions.

Connecting to Database

You may want to estabilish the connections over SSL to encrypt client/server communications for increased security, or you can use ssh to encrypt the network connection between clients and the database server. If either of these is used, then monitoring your traffic and gaining information about your database will be difficult for a would-be attacker.

Encrypted Storage Model

SSL/SSH protects data travelling from the client to the server, SSL/SSH does not protect the persistent data stored in a database. SSL is an on-the-wire protocol.

Once an attacker gains access to your database directly (bypassing the webserver), the stored sensitive data may be exposed or misused, unless the information is protected by the database itself. Encrypting the data is a good way to mitigate this threat, but very few databases offer this type of data encryption.

The easiest way to work around this problem is to first create your own encryption package, and then use it from within your PHP scripts. PHP can assist you in this with several extensions, such as Mcrypt and Mhash, covering a wide variety of encryption algorithms. The script encrypts the data before inserting it into the database, and decrypts it when retrieving. See the references for further examples of how encryption works.

In case of truly hidden data, if its raw representation is not needed (i.e. not be displayed), hashing may also be taken into consideration. The well-known example for the hashing is storing the MD5 hash of a password in a database, instead of the password itself. See also crypt() and md5().

Exemple 15-5. Using hashed password field

// storing password hash
$query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

// querying if user submitted the right password
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

if (pg_numrows($result) > 0) {
    echo "Welcome, $username!";
}
else {
    echo "Authentication failed for $username.";
}

SQL Injection

Many web developers are unaware of how SQL queries can be tampered with, and assume that an SQL query is a trusted command. It means that SQL queries are able to circumvent access controls, thereby bypassing standard authentication and authorization checks, and sometimes SQL queries even may allow access to host operating system level commands.

Direct SQL Command Injection is a technique where an attacker creates or alters existing SQL commands to expose hidden data, or to override valuable ones, or even to execute dangerous system level commands on the database host. This is accomplished by the application taking user input and combining it with static parameters to build a SQL query. The following examples are based on true stories, unfortunately.

Owing to the lack of input validation and connecting to the database on behalf of a superuser or the one who can create users, the attacker may create a superuser in your database.

Exemple 15-6. Splitting the result set into pages ... and making superusers (PostgreSQL and MySQL)

$offset = argv[0]; // beware, no input validation!
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
// with PostgreSQL
$result = pg_exec($conn, $query);
// with MySQL
$result = mysql_query($query);
Normal users click on the 'next', 'prev' links where the $offset is encoded into the URL. The script expects that the incoming $offset is a decimal number. However, what if someone tries to break in by appending a urlencode()'d form of the following to the URL

// in case of PostgreSQL
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--

// in case of MySQL
0;
UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
FLUSH PRIVILEGES;

If it happened, then the script would present a superuser access to him. Note that 0; is to supply a valid offset to the original query and to terminate it.

Note : It is common technique to force the SQL parser to ignore the rest of the query written by the developer with -- which is the comment sign in SQL.

A feasible way to gain passwords is to circumvent your search result pages. The only thing the attacker needs to do is to see if there are any submitted variables used in SQL statements which are not handled properly. These filters can be set commonly in a preceding form to customize WHERE, ORDER BY, LIMIT and OFFSET clauses in SELECT statements. If your database supports the UNION construct, the attacker may try to append an entire query to the original one to list passwords from an arbitrary table. Using encrypted password fields is strongly encouraged.

Exemple 15-7. Listing out articles ... and some passwords (any database server)

$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);
The static part of the query can be combined with another SELECT statement which reveals all passwords:

'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--

If this query (playing with the ' and --) were assigned to one of the variables used in $query, the query beast awakened.

SQL UPDATE's are also susceptible to attack. These queries are also threatened by chopping and appending an entirely new query to it. But the attacker might fiddle with the SET clause. In this case some schema information must be possessed to manipulate the query successfully. This can be acquired by examining the form variable names, or just simply brute forcing. There are not so many naming conventions for fields storing passwords or usernames.

Exemple 15-8. From resetting a password ... to gaining more privileges (any database server)

$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
But a malicious user sumbits the value ' or uid like'%admin%'; -- to $uid to change the admin's password, or simply sets $pwd to "hehehe', admin='yes', trusted=100 " (with a trailing space) to gain more privileges. Then, the query will be twisted:

// $uid == ' or uid like'%admin%'; --
$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;"

A frightening example how operating system level commands can be accessed on some database hosts.

Exemple 15-9. Attacking the database hosts operating system (MSSQL Server)

$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);
If attacker submits the value a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- to $prod, then the $query will be:

$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);

MSSQL Server executes the SQL statements in the batch including a command to add a new user to the local accounts database. If this application were running as sa and the MSSQLSERVER service is running with sufficient privileges, the attacker would now have an account with which to access this machine.

Note : Some of the examples above is tied to a specific database server. This does not mean that a similar attack is impossible against other products. Your database server may be similarly vulnerable in another manner.

Avoiding techniques

You may plead that the attacker must possess a piece of information about the database schema in most examples. You are right, but you never know when and how it can be taken out, and if it happens, your database may be exposed. If you are using an open source, or publicly available database handling package, which may belong to a content management system or forum, the intruders easily produce a copy of a piece of your code. It may be also a security risk if it is a poorly designed one.

These attacks are mainly based on exploiting the code not being written with security in mind. Never trust any kind of input, especially that which comes from the client side, even though it comes from a select box, a hidden input field or a cookie. The first example shows that such a blameless query can cause disasters.

  • Never connect to the database as a superuser or as the database owner. Use always customized users with very limited privileges.

  • Check if the given input has the expected data type. PHP has a wide range of input validating functions, from the simplest ones found in Variable Functions and in Character Type Functions (e.g. is_numeric(), ctype_digit() respectively) and onwards to the Perl compatible Regular Expressions support.

  • If the application waits for numerical input, consider verifying data with is_numeric(), or silently change its type using settype(), or use its numeric representation by sprintf().

    Exemple 15-10. A more secure way to compose a query for paging

    settype($offset, 'integer');
$query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

// please note %d in the format string, using %s would be meaningless
$query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",
                 $offset);

  • Quote each non numeric user input which is passed to the database with addslashes() or addcslashes(). See the first example. As the examples shows, quotes burnt into the static part of the query is not enough, and can be easily cracked.

  • Do not print out any database specific information, especially about the schema, by fair means or foul. See also Error Reporting and Error Handling and Logging Functions.

  • You may use stored procedures and previously defined cursors to abstract data access so that users do not directly access tables or views, but this solution has another impacts.

Besides these, you benefit from logging queries either within your script or by the database itself, if it supports logging. Obviously, the logging is unable to prevent any harmful attempt, but it can be helpful to trace back which application has been circumvented. The log is not useful by itself, but through the information it contains. More detail is generally better than less.

Précédent | Sommaire | Suivant
Filesystem Security | Niveau supérieur | Error Reporting


Error Reporting

With PHP security, there are two sides to error reporting. One is beneficial to increasing security, the other is detrimental.

A standard attack tactic involves profiling a system by feeding it improper data, and checking for the kinds, and contexts, of the errors which are returned. This allows the system cracker to probe for information about the server, to determine possible weaknesses. For example, if an attacker had gleaned information about a page based on a prior form submission, they may attempt to override variables, or modify them:

Exemple 15-11. Attacking Variables with a custom HTML page

<form method="POST" action="attacktarget?username=badfoo&password=badfoo">
<input type="hidden" name="username" value="badfoo">
<input type="hidden" name="password" value="badfoo">
</form>

The PHP errors which are normally returned can be quite helpful to a developer who is trying to debug a script, indicating such things as the function or file that failed, the PHP file it failed in, and the line number which the failure occured in. This is all information that can be exploited. It is not uncommon for a php developer to use show_source(), highlight_string(), or highlight_file() as a debugging measure, but in a live site, this can expose hidden variables, unchecked syntax, and other dangerous information. Especially dangerous is running code from known sources with built-in debugging handlers, or using common debugging techniques. If the attacker can determine what general technique you are using, they may try to brute-force a page, by sending various common debugging strings:

Exemple 15-12. Exploiting common debugging variables

<form method="POST" action="attacktarget?errors=Y&amp;showerrors=1&amp;debug=1">
<input type="hidden" name="errors" value="Y">
<input type="hidden" name="showerrors" value="1">
<input type="hidden" name="debug" value="1">
</form>

Regardless of the method of error handling, the ability to probe a system for errors leads to providing an attacker with more information.

For example, the very style of a generic PHP error indicates a system is running PHP. If the attacker was looking at an .html page, and wanted to probe for the back-end (to look for known weaknesses in the system), by feeding it the wrong data they may be able to determine that a system was built with PHP.

A function error can indicate whether a system may be running a specific database engine, or give clues as to how a web page or programmed or designed. This allows for deeper investigation into open database ports, or to look for specific bugs or weaknesses in a web page. By feeding different pieces of bad data, for example, an attacker can determine the order of authentication in a script, (from the line number errors) as well as probe for exploits that may be exploited in different locations in the script.

A filesystem or general PHP error can indicate what permissions the webserver has, as well as the structure and organization of files on the web server. Developer written error code can aggravate this problem, leading to easy exploitation of formerly "hidden" information.

There are three major solutions to this issue. The first is to scrutinize all functions, and attempt to compensate for the bulk of the errors. The second is to disable error reporting entirely on the running code. The third is to use PHP's custom error handling functions to create your own error handler. Depending on your security policy, you may find all three to be applicable to your situation.

One way of catching this issue ahead of time is to make use of PHP's own error_reporting(), to help you secure your code and find variable usage that may be dangerous. By testing your code, prior to deployment, with E_ALL, you can quickly find areas where your variables may be open to poisoning or modification in other ways. Once you are ready for deployment, by using E_NONE, you insulate your code from probing.

Exemple 15-13. Finding dangerous variables with E_ALL

<?php
if ($username) {  // Not initialized or checked before usage
    $good_login = 1;
}
if ($good_login == 1) { // If above test fails, not initialized or checked before usage
    readfile ("/highly/sensitive/data/index.html");
}
?>

Précédent | Sommaire | Suivant
Database Security | Niveau supérieur | Using Register Globals


Using Register Globals

Perhaps the most controversial change in PHP is when the default value for the PHP directive register_globals went from ON to OFF in PHP 4.2.0. Reliance on this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works. This page will explain how one can write insecure code with this directive but keep in mind that the directive itself isn't insecure but rather it's the misuse of it.

When on, register_globals will inject (poison) your scripts will all sorts of variables, like request variables from HTML forms. This coupled with the fact that PHP doesn't require variable initialization means writing insecure code is that much easier. It was a difficult decision, but the PHP community decided to disable this directive by default. When on, people use variables yet really don't know for sure where they come from and can only assume. Internal variables that are defined in the script itself get mixed up with request data sent by users and disabling register_globals changes this. Let's demonstrate with an example misuse of register_globals:

Exemple 15-14. Example misuse with register_globals = on

<?php
// define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}

// Because we didn't first initialize $authorized as false, this might be
// defined through register_globals, like from GET auth.php?authorized=1
// So, anyone can be seen as authenticated!
if ($authorized) {
    include "/highly/sensitive/data.php";
}
?>

When register_globals = on, our logic above may be compromised. When off, $authorized can't be set via request so it'll be fine, although it really is generally a good programming practice to initialize variables first. For example, in our example above we might have first done $authorized = false. Doing this first means our above code would work with register_globals on or off as users by default would be unauthorized.

Another example is that of sessions. When register_globals = on, we could also use $username in our example below but again you must realize that $username could also come from other means, such as GET (through the URL).

Exemple 15-15. Example use of sessions with register_globals on or off

<?php
// We wouldn't know where $username came from but do know $_SESSION is
// for session data
if (isset($_SESSION['username'])) {

    echo "Hello <b>{$_SESSION['username']}</b>";

} else {

    echo "Hello <b>Guest</b><br />";
    echo "Would you like to login?";

}
?>

It's even possible to take preventative measures to warn when forging is being attempted. If you know ahead of time exactly where a variable should be coming from, you can check to see if the submitted data is coming from an inappropriate kind of submission. While it doesn't guarantee that data has not been forged, it does require an attacker to guess the right kind of forging. If you don't care where the request data comes from, you can use $_REQUEST as it contains a mix of GET, POST and COOKIE data. See also the manual section on using variables from outside of PHP.

Exemple 15-16. Detecting simple variable poisoning

<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {

    // MAGIC_COOKIE comes from a cookie.
    // Be sure to validate the cookie data!

} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {

   mail("admin@example.com", "Possible breakin attempt", $_SERVER['REMOTE_ADDR']);
   echo "Security violation, admin has been alerted.";
   exit;

} else {

   // MAGIC_COOKIE isn't set through this REQUEST

}
?>

Of course, simply turning off register_globals does not mean your code is secure. For every piece of data that is submitted, it should also be checked in other ways. Always validate your user data and initialize your variables! To check for unitialized variables you may turn up error_reporting() to show E_NOTICE level errors.

Superglobales : disponiblité : Depuis PHP 4.1.0, les tableaux superglobaux tels que $_GET, $_POST et $_SERVER, etc... sont disponibles. Pour plus d'informations, lisez la section superglobals

Précédent | Sommaire | Suivant
Error Reporting | Niveau supérieur | User Submitted Data


User Submitted Data

The greatest weakness in many PHP programs is not inherent in the language itself, but merely an issue of code not being written with security in mind. For this reason, you should always take the time to consider the implications of a given piece of code, to ascertain the possible damage if an unexpected variable is submitted to it.

Exemple 15-17. Dangerous Variable Usage

<?php
// remove a file from the user's home directory... or maybe
// somebody else's?
unlink ($evil_var);

// Write logging of their access... or maybe an /etc/passwd entry?
fputs ($fp, $evil_var);

// Execute something trivial.. or rm -rf *?
system ($evil_var);
exec ($evil_var);

?>
You should always carefully examine your code to make sure that any variables being submitted from a web browser are being properly checked, and ask yourself the following questions:

  • Will this script only affect the intended files?

  • Can unusual or undesirable data be acted upon?

  • Can this script be used in unintended ways?

  • Can this be used in conjunction with other scripts in a negative manner?

  • Will any transactions be adequately logged?

By adequately asking these questions while writing the script, rather than later, you prevent an unfortunate re-write when you need to increase your security. By starting out with this mindset, you won't guarantee the security of your system, but you can help improve it.

You may also want to consider turning off register_globals, magic_quotes, or other convenience settings which may confuse you as to the validity, source, or value of a given variable. Working with PHP in error_reporting(E_ALL) mode can also help warn you about variables being used before they are checked or initialized (so you can prevent unusual data from being operated upon).

Précédent | Sommaire | Suivant
Using Register Globals | Niveau supérieur | Hiding PHP


Hiding PHP

In general, security by obscurity is one of the weakest forms of security. But in some cases, every little bit of extra security is desirable.

A few simple techniques can help to hide PHP, possibly slowing down an attacker who is attempting to discover weaknesses in your system. By setting expose_php = off in your php.ini file, you reduce the amount of information available to them.

Another tactic is to configure web servers such as apache to parse different filetypes through PHP, either with an .htaccess directive, or in the apache configuration file itself. You can then use misleading file extensions:

Exemple 15-18. Hiding PHP as another language

# Make PHP code look like other code types
AddType application/x-httpd-php .asp .py .pl
Or obscure it completely:

Exemple 15-19. Using unknown types for PHP extensions

# Make PHP code look like unknown types
AddType application/x-httpd-php .bop .foo .133t
Or hide it as HTML code, which has a slight performance hit because all HTML will be parsed through the PHP engine:

Exemple 15-20. Using HTML types for PHP extensions

# Make all PHP code look like HTML
AddType application/x-httpd-php .htm .html
For this to work effectively, you must rename your PHP files with the above extensions. While it is a form of security through obscurity, it's a minor preventative measure with few drawbacks.

Précédent | Sommaire | Suivant
User Submitted Data | Niveau supérieur | Keeping Current


Keeping Current

PHP, like any other large system, is under constant scrutiny and improvement. Each new version will often include both major and minor changes to enhance and repair security flaws, configuration mishaps, and other issues that will affect the overall security and stability of your system.

Like other system-level scripting languages and programs, the best approach is to update often, and maintain awareness of the latest versions and their changes.

Précédent | Sommaire | Suivant
Hiding PHP | Niveau supérieur | Caractéristiques


Caractéristiques

Manuel PHP
Précédent Suivant

IV. Caractéristiques

Table des matières
16. Authentification HTTP avec PHP
17. Cookies
18. Gestion des chargements de fichier
19. Utilisation des fichiers à distance
20. Gestion des connexions
21. Connexions persistantes aux bases de données
22. Safe mode
23. Utiliser PHP en ligne de commande

Précédent | Sommaire | Suivant
Keeping Current |  | Authentification HTTP avec PHP


Authentification HTTP avec PHP

Manuel PHP
Précédent Suivant

Chapitre 16. Authentification HTTP avec PHP

Les fonctions d'authentification HTTP de PHP ne sont disponibles que si PHP est exécuté comme module Apache, et non pas sous la forme d'un CGI. Sous cette forme, il est possible d'utiliser la fonction header() pour demander une authentification ("Authentication Required" ) au client, générant ainsi l'apparition d'une fenêtre de demande d'utilisateur et de mot de passe. Une fois que les champs ont été remplis, l'URL sera de nouveau appelée, avec les variables $PHP_AUTH_USER, $PHP_AUTH_PW et $PHP_AUTH_TYPE contenant respectivement le nom d'utilisateur, le mot de passe et le type d'authentification. Actuellement, seule l'authentification simple ("Basic") est supportée. Reportez-vous à la fonction header() pour plus d'informations.

Note sur les versions de PHP : Les auto-globales, telles que $_SERVER, ont été ajoutée en PHP à partir de la version 4.1.0. $HTTP_SERVER_VARS est disponible depuis PHP 3.

Voici un exemple de script qui force l'authentification du client pour accéder à une page :

Exemple 16-1. Exemple d'authentification HTTP

<?php
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Texte utilis&eacute; si le visiteur utilise le bouton d\'annulation';
    exit;
  } else {
    echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
  }
?>

Note de compatibilité : Soyez bien prudent lorsque vous utilisez des en-têtes HTTP avec PHP. Afin de garantir un maximum de compatibilité entre les navigateurs, le mot clé "Basic" doit être écrit avec un B majuscule, et le texte de présentation doit être placé entre guillemets simples, et exactement un espace doit précéder le code 401 dans l'en-tête HTTP/1.0 401.

Au lieu d'afficher simplement les variables globales $PHP_AUTH_USER et $PHP_AUTH_PW, vous préférerez sûrement vérifier la validité du nom d'utilisateur et du mot de passe. Par exemple, en envoyant ces informations à une base de données, ou en recherchant dans un fichier dbm.

Méfiez-vous des navigateurs buggés, tels que Internet Explorer. Ils semblent très susceptibles concernant l'ordre des en-têtes. Envoyer l'en-tête d'authentification (WWW-Authenticate) avant le code de HTTP/1.0 401 semble lui convenir jusqu'à présent.

Pour éviter que quelqu'un écrive un script qui révèle les mots de passe d'une page, à la quelle on a accédé par une authentification traditionnelle, les variables globales PHP_AUTH ne seront pas assignées si l'authentification externe a été activée pour cette page. Dans ce cas, la variable REMOTE_USER peut être utilisée pour identifier l'utilisateur à l'extérieur. De même que $_SERVER['REMOTE_USER'].

Note de configuration : PHP utilise la présence de la directive AuthType pour déterminer si une authentification externe est activé. évitez donc cette directive de contexte si vous voulez utiliser l'authentification de PHP (sinon, les deux authentifications se contrediront, et échoueront).

Notez cependant que les manipulations ci-dessus n'empêchent pas quiconque possède une page non authentifiée de voler les mots de passe des pages protégées, sur le même serveur.

Netscape et Internet Explorer effaceront le cache d'authentification client s'ils recoivent une réponse 401. Cela permet de déconnecter un utilisateur, pour le forcer à ré-entrer son nom de compte et son mot de passe. Certains programmeurs l'utilisent pour donner un délai d'expiration, ou alors, fournissent un bouton de déconnexion.

Exemple 16-2. Authentification HTTP avec nom d'utilisateur/mot de passe forcé

<?php
  function authenticate() {
    header('WWW-Authenticate: Basic realm="Test Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
    echo "Vous devez entrer un identifiant et un mot de passe valide pour acc&eacute;der
    &agrave; cette ressource.\n";
    exit;
  }

  if ( !isset($_SERVER['PHP_AUTH_USER']) ||
       ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
   authenticate();
  }
  else {
   echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br>";
   echo "Old: {$_REQUEST['OldAuth']}";
   echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
   echo "<input type='hidden' name='SeenBefore' value='1'>\n";
   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'>\n";
   echo "<input type='submit' value='Re Authenticate'>\n";
   echo "</form></p>\n";
  }
?>

Ce comportement n'est pas nécessaire par le standard d'authentification HTTP Basic. Les tests avec Lynx ont montré qu'il n'affectait pas les informations de session lors de la réception d'un message de type 401. Ce qui fait que presser la touche "retour" (back) à un client lynx précédemment authentifié donnera l'accès direct à la ressource. Cependant, l'utilisateur peut utiliser la touche '_' pour détruire les anciennes authentifications.

Notez aussi que tout ceci ne fonctionne pas sous Microsoft IIS et que les limitations de PHP en version CGI sont dues aux limitations de IIS.

Note : Si le safe mode est activé, l'uid du script es ajouté automatiquement dans l'en-tête realm, comme faisant partie de l'en-tête WWW-Authenticate.

Précédent | Sommaire | Suivant
Caractéristiques | Niveau supérieur | Cookies


Cookies

Manuel PHP
Précédent Suivant

Chapitre 17. Cookies

PHP supporte les cookies de manière transparente. Les cookies sont un mécanisme d'enregistrement d'informations sur le client, et de lecture de ces informations. Ce système permet d'authentifier et de suivre les visiteurs. Vous pouvez envoyer un cookie avec la commande setcookie(). Les cookies font partie des en-têtes HTTP, ce qui impose que setcookie() soit appelée avant tout affichage de texte. Ce sont les mêmes limitations que pour header().

Tous les cookies qui sont envoyés au client seront automatiquement retournés au script PHP, et transformés en variable, exactement comme pour GET et POST. Si vous souhaitez affecter plusieurs valeurs à un seul cookie, ajoutez [] au nom du cookie. Pour plus détails, reportez-vous à la fonction setcookie().

En PHP 4.1.0 et plus récent, le tableau superglobal $_COOKIE sera aussi prédéfini avec les cookies transmis par l'internaute. $HTTP_COOKIE_VARS est aussi prédéfini dans les versions de PHP plus anciennes, lorsque la directive track_vars est activée.

Pour plus de détails, y compris des notes sur les bogues des navigateurs, voyez la fonction setcookie().

Précédent | Sommaire | Suivant
Authentification HTTP avec PHP | Niveau supérieur | Gestion des chargements de fichier


Gestion des chargements de fichier

Manuel PHP
Précédent Suivant

Chapitre 18. Gestion des chargements de fichier

Table des matières
Chargements de fichiers par méthode POST
Explication sur les messages d'erreurs de chargement de fichiers
Erreurs classiques
Télécharger plusieurs fichiers simultanément
Chargement par méthode PUT

Chargements de fichiers par méthode POST

PHP est capable de recevoir des fichiers émis par un navigateur conforme à la norme RFC-1867 (c'est-à-dire Netscape Navigator 3 ou supérieur, Microsoft Internet Explorer 3 avec un patch de Microsoft, ou supérieur sans le patch). Cette fonctionnalité permet de charger des fichiers textes ou binaires. Avec l'authentification et les fonctions de manipulation des fichiers, vous avez un contrôle total sur le chargement et la gestion des fichiers chargés.

Notes de configuration : Voir aussi les directives file_uploads, upload_max_filesize, upload_tmp_dir et post_max_size, dans php.ini

Notez bien que PHP supporte aussi le chargement par la méthode PUT comme dans le navigateur Netscape Composer et les clients Amaya du W3C. Reportez-vous au chapitre sur le support de la méthode PUT.

Un écran de chargement de fichiers peut être constitué en créant un formulaire de la manière suivante :

Exemple 18-1. Formulaire de chargement de fichier

<FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD="POST">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
Envoyez ce fichier : <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>
Le paramètre _URL_ doit pointer sur un fichier PHP. L'option MAX_FILE_SIZE cachée doit précéder le nom du fichier à charger, et représente la taille maximale du fichier à charger. La valeur est donnée en octets. Dans ce script, les valeurs suivantes doivent être définies pour assurer un chargement correct.

Avertissement

Le champ MAX_FILE_SIZE est là à titre de conseil au navigateur. Il est très facile de contourner cette restriction. Ne comptez pas sur le respect de cette configuration par le navigateur! La configuration de PHP sur la taille maximale à respecter (upload_max_filesize) ne peut être contournée, elle.

Les variables définies après un téléchargement de fichiers diffèrent beaucoup de version en version. La variable $_FILES existe depuis PHP 4.1.0. Le tableau $HTTP_POST_FILES existe depuis PHP 4.0.0. Ces tableaux contiennent toutes les données sur les fichiers téléchargés. L'utilisation de la variable $_FILES est recommandée. Si la directive PHP register_globals vaut on, les variables reliées existeront aussi. register_globals vaut par défaut off depuis PHP 4.2.0.

Le contenu du tableau $_FILES est détaillé dans notre exmple ci-dessous. Notez que l'un suppose que le nom de la variable du fichier téléchargé est userfile, tel que défini dans le formulaire ci-dessus.

$_FILES['userfile']['name']

Le nom original du fichier, tel que sur la machine du client web.

$_FILES['userfile']['type']

Le type MIME du fichier, si le navigateur a fourni cette information. Par exemple, cela pourra être "image/gif".

$_FILES['userfile']['size']

La taille, en octets, du fichier téléchargé.

$_FILES['userfile']['tmp_name']

Le nom temporaire du fichier qui sera chargé sur la machine serveur.

$_FILES['userfile']['error']

Le code d'erreur error code associaé au téléchargement de fichier. ['error'] a été introduit en PHP 4.2.0

Note : Dans les versions de PHP antérieure à la version 4.1.0, la variable $_FILES s'appelait $HTTP_POST_FILES et ce n'était pas une variable autoglobale comme l'est $_FILES. PHP 3 ne supporte pas $HTTP_POST_FILES.

Lorsque register_globals vaut on dans le php.ini, des variables supplémentaires sont rendues disponibles. Par exemple $userfile_name vaut $_FILES['userfile']['name'], $userfile_type vaut $_FILES['userfile']['type'], etc... Gardez à l'esprit que depuis PHP 4.2.0, register_globals vaut off par défaut. Il n'est pas prudent de supposer que cette directive vaut on.

Le fichier téléchargé sera stocké temporairement dans le dossier temporaire du système, à moins qu'un autre dossier soit fourni avec la directive upload_tmp_dir du php.ini. Le dossier par défaut du serveur peut être changé dans l'environnement via la variable TMPDIR. Modifier la valeur de cette variable avec la fonction putenv() dans un script PHP sera sans effet. Cette variable d'environnement peut aussi être utilisée pour s'assurer que d'autres opérations fonctionnent aussi sur les fichiers téléchargés.

Exemple 18-2. Validation de téléchargement de fichiers

Les exemples ci-dessous sont valables avec les versions de PHP plus récentes que la 4.0.2. Voyez les fonctions is_uploaded_file() et move_uploaded_file().

<?php
// En PHP < 4.1.0, $HTTP_POST_FILES doit &ecirc;tre utilis&eacute;
//    &agrave; la place de $_FILES.
// En PHP plus ancien que 4.0.3, utilisez copy() et is_uploaded_file()
//    &agrave; la place de move_uploaded_file

$uploaddir = '/var/www/uploads/';

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print "Le fichier est valide, et a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;
           avec succ&egrave;s. Voici plus d'informations :\n";
    print_r($_FILES);
} else {
    echo "Attaque par upload potentielle. Voici plus d'informations :\n";
    print_r($_FILES);
}
?>

Le script PHP qui reçoit le fichier chargé doit pouvoir gérer le fichier de manière appropriée. Vous pouvez utiliser la variable $file_size pour recaler tous les fichiers qui sont trop gros ou trop petits. Vous pouvez utiliser la variable $file_type pour recaler les fichiers qui n'ont pas le bon type. Quelques soient les actions, ce script doit pouvoir supprimer le fichier du dossier temporaire, ou le déplacer ailleurs. Depuis PHP 4.2.0, vous pouvez utiliser l'information dans $_FILES['userfile']['error'] et adapter votre politique en fonction des code d'erreur. Quelque soit votre politique, vous devriez soit effacer le fichier du dossier temporaire, soit le déplacer.

Le fichier sera automatiquement effacé du fichier temporaire à la fin du script, s'il n'a pas été déplacé ou renommé.

Précédent | Sommaire | Suivant
Cookies | Niveau supérieur | Explication sur les messages d'erreurs de chargement de fichiers


Explication sur les messages d'erreurs de chargement de fichiers

Depuis PHP 4.2.0, PHP retourne un code d'erreur approprié dans le tableau de fichiers. Ce code d'erreur est accessible à l'index error du tableau, qui est créé durant le téléchargement, par PHP. En d'autres termes, le message d'erreur est accessible dans la variable $_FILES['userfile']['error'].

UPLOAD_ERR_OK

Valeur : 0. Aucune erreur, le téléchargement est correct.

UPLOAD_ERR_INI_SIZE

Valeur : 1. Le fichier téléchargé excède la taille de upload_max_filesize, configuré dans le php.ini.

UPLOAD_ERR_FORM_SIZE

Valeur : 2. Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.

UPLOAD_ERR_PARTIAL

Valeur : 3. Le fichier n'a été que partiellement téléchargé.

UPLOAD_ERR_NO_FILE

Valeur : 4. Aucun fichier n'a été téléchargé.

Note : Ces constantes sont apparues en PHP 4.3.0.

Précédent | Sommaire | Suivant
Gestion des chargements de fichier | Niveau supérieur | Erreurs classiques


Erreurs classiques

La variable MAX_FILE_SIZE ne peut pas spécifier une taille de fichier plus grande que la taille qui a été fixée par upload_max_filesize, dans le fichier php3.ini, ou par php3_upload_max_filesize dans les directives Apache. La valeur par défaut est 2 mégaoctets.

Ne pas valider les fichiers que vous manipulez peut donner l'accès aux utilisateurs à des fichiers sensibles dans d'autres dossiers!

Attention : il semble que CERN httpd supprime tout ce qui est après le premier caractère dans l'en-tête MIME. Tant que c'est le cas, CERN httpd ne pourra pas effectuer de chargement.

Précédent | Sommaire | Suivant
Explication sur les messages d'erreurs de chargement de fichiers | Niveau supérieur | Télécharger plusieurs fichiers simultanément


Télécharger plusieurs fichiers simultanément

Le téléchargement de plusieurs fichiers est possible en utilisant des noms différents dans l'attribut name de la balise input.

Il est aussi possible de télécharger plusieurs fichiers simultanément et d'obtenir les informations sous forme de tableau. Pour cela, vous devez utiliser la syntaxe de tableau dans les noms de balises HTML, comme vous l'avez fait avec les sélections multiples et les boîtes à cocher.

Note : Le support des téléchargement multiples a été ajouté en PHP 3.0.10.

Exemple 18-3. Télécharger plusieurs fichiers simultanément

<FORM ACTION="file-upload.php" METHOD="post" ENCTYPE="multipart/form-data">
  Envoyez plusieurs fichiers : <BR>
  <INPUT NAME="userfile[]" TYPE="file"><BR>
  <INPUT NAME="userfile[]" TYPE="file"><BR>
  <INPUT TYPE="submit" VALUE="Send files">
</FORM>

Lorsque le formulaire ci-dessus a été envoyé, les tableaux $_FILES['userfile'], $_FILES['userfile']['name'], et $_FILES['userfile']['size'] seront initialisés (tout comme $HTTP_POST_FILES pour les versions de PHP antérieure à la 4.1.0). Lorsque register_globals est activé, les variables globales concernant les fichiers téléchargés sont aussi initialisées. Chacune d'entre elle contiendra un tableau numériquement indexé, avec les valeurs décrivant les fichiers téléchargés.

Par exemple, supposons que les fichiers /home/test/review.html et /home/test/xwp.out ont été téléchargé. Dans ce cas, $_FILES['userfile']['name'][0] contient review.html et $_FILES['userfile']['name'][1] contient xwp.out. Similairement, $_FILES['userfile']['size'][0] va contenir la taille du fichier review.html, etc...

$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0] et $_FILES['userfile']['type'][0] sont aussi créées.

Précédent | Sommaire | Suivant
Erreurs classiques | Niveau supérieur | Chargement par méthode PUT


Chargement par méthode PUT

Le suppor de la méthode PUT a été modifié entre PHP 3 et PHP 4. En PHP 4, il faut utiliser le flux d'entrée standard pour recevoir le contenu du fichier.

Exemple 18-4. Sauver un fichier par méthode PUT en PHP 4

<?php
/* Les donn&eacute;es via la m&eacute;thode PUT arrivent dans stdin */
$putdata = fopen("php://stdin","r");

/* Ouvre un fichier pour &eacute;criture */
$fp = fopen("myputfile.ext","w");

/* Lit les donn&eacute;es par bloc de 1ko
   et les &eacute;crit dans le fichier */
while ($data = fread($putdata,1024))
  fwrite($fp,$data);

/* Ferme les flux */
fclose($fp);
fclose($putdata);
?>

Note : Toute la documentation ci-dessous s'applique à PHP 3 uniquement.

PHP supporte la méthode HTTP PUT utilisée par les navigateurs tels que Netscape Composer et W3C Amaya. Les requêtes de type PUT sont beaucoup plus simples que les chargements de fichiers, et elles ressemblent à :

PUT /path/filename.html HTTP/1.1

Normalement, cela signifie que le client distant va sauver les données qui suivent dans le fichier: /path/filename.html de votre disque. Ce n'est évidemment pas très sécurisé de laisser Apache ou PHP écraser n'importe quel fichier de l'arborescence. Pour éviter ceci, il faut d'abord dire au serveur que vous voulez qu'un script PHP donné gère la requête. Avec Apache, il y a une directive pour cela : Script. Elle peut être placée n'importe où dans le fichier de configuration d'Apache. En général, les webmestres la place dans le bloc <Directory>, ou peut être dans le bloc <Virtualhost>. La ligne suivante fera très bien l'affaire :

Script PUT /put.php3

Elle indique à Apache qu'il doit envoyer les requêtes de chargement par méthode PUT au script put.php3. Bien entendu, cela présuppose que vous avez activé PHP pour qu'il prenne en charge les fichiers de type .php3, et que PHP est actif.

Dans le fichier put.php3, vous pouvez mettre ceci :

<?php
 copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI);
?>

Ce script va copier le fichier chargé par le client distant à l'endroit désiré. Vous aurez probablement à effectuer quelques tests et des authentifications d'utilisateur, avant d'effectuer cette copie. Le seul piège est que lorsque PHP reçoit un chargement par méthode PUT, il va enregistrer le fichier dans le dossier temporaire, tout comme avec la méthode POST. A la fin de la requête, le fichier sera effacé. Ce qui fait que ce script doit placer le fichier chargé quelque part. Le nom du fichier temporaire est placé dans la variable globale $PHP_PUT_FILENAME, et la destination prévue est placée dans $REQUEST_URI (ces noms peuvent changer d'une configuration d'Apache à l'autre). Cette destination est celle qui est demandée par le client, et vous n'avez pas à obéir aveuglément au client. Vous pourriez par exemple, déplacer le fichier dans un dossier de chargement.

Précédent | Sommaire | Suivant
Télécharger plusieurs fichiers simultanément | Niveau supérieur | Utilisation des fichiers à distance


Utilisation des fichiers à distance

Manuel PHP
Précédent Suivant

Chapitre 19. Utilisation des fichiers à distance

Aussi longtemps que le support des gestionnaires d'URL ("URL fopen wrapper") sont activés dans le php.ini, vous pouvez utiliser des URLs (HTTP et FTP) avec la majorité des fonctions qui utilisent un nom de fichier comme paramètre. Cela inclut notamment include(), include_once(), require() et require_once(). Reportez-vous à Annexe I pour plus d'informations sur les protocoles supportés par PHP.

Note : En PHP 4.0.3 et plus récent, pour pouvoir utiliser les gestionnaires d'URL, vous devez configurer PHP avec l'option --enable-url-fopen-wrapper.

Note : Les versions de PHP pour Windows plus anciennes que 4.3 de supportait pas les gestionnaires d'URL avec les fonctions suivantes : include(), include_once(), require(), require_once(), et les fonctions de création d'images de l'extension Référence XLI, Images.

Par exemple, vous pouvez suivre l'exemple suivant pour ouvrir un fichier sur un serveur web distant, analyser les résultats pour extraire les informations dont vous avez besoin, et ensuite l'utiliser dans une requête de base de données, ou simplement éditer les informations dans le style de votre site.

Exemple 19-1. Connaître le titre d'une page distante

<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
    echo "<p>Impossible de lire la page.\n";
    exit;
}
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    /* Cela ne fonctionne que si les balises Title sont correctement utilis&eacute;es */
    if (eregi ("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
    }
}
fclose($file);
?>

Vous pouvez aussi écrire des fichiers sur un serveur FTP aussi longtemps que vous êtes connecté avec un utilisateur ayant les bons droits d'accès, alors que le fichier n'existait pas encore.

Pour vous connecter avec un utilisateur autre qu'anonyme, vous devez spécifier un nom d'utilisateur (et certainement le mot de passe) dans l'URL, comme par exemple 'ftp://user:password@ftp.example.com/path/to/file'. (Vous pouvez utiliser le même type de syntaxe pour accéder aux fichiers via HTTP lorsqu'ils nécessitent une authentification basique).

Exemple 19-2. Stocker des données sur un serveur distant

<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Unable to open remote file for writing.\n";
    exit;
}
  /* Ecriture des donn&eacute;es. */
fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>

Note : Remarque: Vous pouvez avoir l'idée,à partir de l'exemple ci-dessus, d'utiliser la même technique pour écrire sur un log distant, mais comme mentionné ci-dessus vous ne pouvez qu'écrire sur un nouveau fichier en utilisant les fonctions fopen() avec une URL. Pour faire des log distribués, nous vous conseillons de regarder la partie syslog().

Précédent | Sommaire | Suivant
Chargement par méthode PUT | Niveau supérieur | Gestion des connexions


Gestion des connexions

Manuel PHP
Précédent Suivant

Chapitre 20. Gestion des connexions

Note : Les informations suivantes ne sont valables qu'à partir de la version 3.0.7.

Le statut des connexions est conservé en interne par PHP. Il y a trois états possibles :

  • 0 - NORMAL (normal)

  • 1 - ABORTED (annulé)

  • 2 - TIMEOUT (périmé)

Lorsqu'un script PHP est en cours d'exécution, son état est NORMAL. Si le client distant se déconnecte, le statut devient ABORTED. En général, une telle déconnexion provient d'un arrêt temporaire. Si la durée maximale d'exécution de PHP est dépassée, (voir set_time_limit()), le script prend le statut TIMEOUT.

Vous pouvez en outre décider si vous voulez que la déconnexion d'un client provoque l'arrêt de votre script. Il est parfois pratique que vos scripts continuent à s'exécuter jusqu'à la fin, même si le client n'est plus là pour recevoir les informations. Cependant, par défaut, le script s'arrêtera dès que le client se déconnecte. Ce comportement peut être modifié avec la directive ignore_user_abort dans le fichier php.ini ou bien avec la directive Apache ignore_user_abort du fichier Apache httpd.conf ou avec la fonction ignore_user_abort(). Si vous ne demandez pas à PHP d'ignorer la déconnexion, et que l'utilisateur se déconnecte, le script sera terminé. La seule exception est si vous avez enregistré une fonction de fermeture, avec register_shutdown_function(). Avec une telle fonction, lorsque l'utilisateur interrompt sa requête, à la prochaine exécution du script, PHP va s'apercevoir que le dernier script n'a pas été terminé, et il va déclencher la fonction de fermeture. Cette fonction sera aussi appelée à la fin du script, si celui-ci se termine normalement. Pour pouvoir avoir un comportement différent suivant l'état du script lors de sa finalisation, vous pouvez exécutez des commandes spécifiques à la déconnexion grâce à la commande connection_aborted(). Cette fonction retournera TRUE si la connexion a été annulée.

Votre script peut aussi être automatiquement interrompu après une certaine durée de temps. Par défaut, le délai est de 30 secondes. Cette valeur peut être changée en utilisant la directive PHP max_execution_time dans le fichier php.ini ou avec la directive php3_max_execution_time, dans le fichier Apache .conf ou encore avec la fonction set_time_limit(). Lorsque le délai expire, le script est terminé, et comme pour la déconnexion du client, une fonction de finalisation sera appelée. Dans cette fonction, vous pouvez savoir si c'est le délai d'expiration qui a causé la fin du script, en appelant la fonction connection_timeout(). Cette fonction retournera vrai si le délai d'expiration a été dépassé.

Une chose à noter est que les deux cas ABORTED et TIMEOUT peuvent être appelés en même temps. Ceci est possible si vous demandez à PHP d'ignorer les déconnexions des utilisateurs. PHP va quand même noter le fait que l'utilisateur s'est déconnecté, mais le script va continuer. Puis, lorsqu'il atteint la limite de temps, le script va expirer. A ce moment-là, les deux fonctions connection_timeout() et connection_aborted() vont retourner TRUE. Vous pouvez aussi vérifier les deux états en un seul appel avec la fonction connection_status(). Cette fonction va retourner un champ de bits, avec les états. Si les deux états sont actifs, l'état retourné prendra la valeur 3.

Précédent | Sommaire | Suivant
Utilisation des fichiers à distance | Niveau supérieur | Connexions persistantes aux bases de données


Connexions persistantes aux bases de données

Manuel PHP
Précédent Suivant

Chapitre 21. Connexions persistantes aux bases de données

Les connexions persistantes aux bases de données SQL sont des connexions qui ne se referment pas à la fin du script. Lorsqu'une connexion persistante est demandée, PHP s'assure qu'il n'y a pas une autre connexion identique (qui serait ouverte précédemment, avec le même nom d'hôte, d'utilisateur et le même mot de passe), et si une telle connexion existe, elle est utilisée. Sinon, elle est créée. Une connexion identique est une connexion qui a ouvert le même hôte, avec le même nom et le même mot de passe (s'ils sont nécessaires).

Ceux qui ne sont pas rompus aux techniques des serveurs web et leur distribution de la charge de travail, se font parfois une fausse idée de ces connexions persistantes. En particulier, les connexions persistantes ne permettent pas l'ouverture de plusieurs sessions avec le même lien, ne permettent pas la réalisation de transactions efficaces et ne font pas le café. En fait, pour être extrêmement clair sur le sujet, les connexions persistantes ne vous donnent aucune fonctionnalité de plus que les connexions non persistantes.

Alors pourquoi les connexions persistantes?

Cela s'explique par la manière avec laquelle les serveurs web fonctionnent. Il y a trois manières d'utiliser PHP pour générer des pages.

La première est d'utiliser PHP comme un CGI (Common Interface Gateway). Lorsque PHP fonctionne de cette manière, une instance de l'interpréteur PHP est créée puis détruite pour chaque page demandée. Etant donné que cet interpreteur est détruit après chaque requête, toutes les ressources acquises (comme une connexion à une base SQL), sont purement et simplement détruites.

La deuxième méthode, et de loin, la plus prisée, est d'exécuter PHP sous la forme d'un module sur un serveur multi-processus, ce qui revient à dire : Apache. Un tel serveur a typiquement un processus parent qui coordonne un ensemble de processus fils, qui servent les fichiers. Lorsque les requêtes parviennent depuis un client, elles sont transmises à un fils disponible. Cela signifie que si un client fait une deuxième requête, il peut être servi par un processus client différent du premier. Les connexions persistantes vous permettent alors de ne vous connecter à une base SQL que la première fois. Lors des connexions ultérieures, les processus fils pourront réutiliser la connexion ouverte précédemment.

La dernière méthode est d'utiliser PHP sous la forme d'un module de serveur multi-threads. Actuellement, PHP 4 supporte ISAPI, WSAPI, et NSAPI (sous Windows), qui permettent tous d'utiliser PHP comme un module sur un serveur multi-threads tel que Netscape FastTrack (iPlanet), Microsoft's Internet Information Server (IIS), et O'Reilly's WebSite Pro. Le comportement est essentiellement le même que pour les serveurs multi-processus décrits précédemment. Notez que SAPI n'est pas disponible avec PHP 3.

Si les connexions persistantes n'ont aucune fonctionnalité de plus, à quoi servent-elles?

La réponse est extrêmement simple : efficacité. Les connexions persistantes sont un bon moyen d'accélérer les accès à une base SQL si le traitement de connexion à la base est long. Ce temps dépend de nombreux facteurs : le type de base de données, cette base est-elle sur le même serveur ou pas, quelle est la charge du serveur de base de données, etc... Si le temps de connexion est long, les connexions persistantes seront bien utiles, car une fois ouverte par un processus fils, la connexion est réutilisable sans avoir à se reconnecter. Si vous avez 20 processus fils, il suffit d'avoir 20 connexions persistantes ouvertes, une par fils.

Notez que les connexions persistantes ont quelques inconvénients si vous hébergez une base de données, dont le nombre maximal de connexion risque d'être atteint par les connexions persistantes. Si votre base de données accepte jusqu'à 16 connexions simultanées et que, 17 processus essaient de se connecter, le dernier restera sur la touche. S'il y a des erreurs dans les scripts qui ne permettent pas de fermer la connexion (par exemple, une boucle infinie), votre serveur sera rapidement engorgé. Vérifiez la documentation de votre base de données pour savoir comment elle traite les connexions inactives ou abandonnées.

Résumons-nous : les connexions persistantes ont été définies pour avoir les mêmes fonctionnalités que les connexions non persistantes. Les deux types de connexions sont parfaitement interchangeables, et n'affecteront pas le comportement de votre script : uniquement son efficacité.

Voir aussi
fbsql_pconnect(),
ibase_pconnect(),
ifx_pconnect(),
imap_popen(),
ingres_pconnect(),
msql_pconnect(),
mssql_pconnect(),
mysql_pconnect(),
ociplogon(),
odbc_pconnect(),
ora_plogon(),
pfsockopen(),
pg_pconnect() et
sybase_pconnect().

Précédent | Sommaire | Suivant
Gestion des connexions | Niveau supérieur | Safe mode


Safe mode

Manuel PHP
Précédent Suivant

Chapitre 22. Safe mode

Table des matières
Securité et Safe Mode
Fonctions désactivées par le Safe Mode

Le "Safe Mode" est le mode de sécurité de PHP : une solution au problème de partage de PHP sur un serveur. Ce système pêche au niveau de l'architecture car il n'est pas correct de tenter de résoudre ce problème au niveau de PHP, mais les solutions alternatives basées sur le serveur web et l'OS ne sont pas réalistes. De nombreux intervenants, notamment les fournisseurs d'hébergement, utilisent le "Safe Mode".

Securité et Safe Mode

Tableau 22-1. Options de configuration

Nom | Par défaut | Modifiable
safe_mode | "0" | PHP_INI_SYSTEM
safe_mode_gid | "0" | PHP_INI_SYSTEM
safe_mode_include_dir | NULL | PHP_INI_SYSTEM
safe_mode_exec_dir | "" | PHP_INI_SYSTEM
safe_mode_allowed_env_vars | PHP_ | PHP_INI_SYSTEM
safe_mode_protected_env_vars | LD_LIBRARY_PATH | PHP_INI_SYSTEM
open_basedir | NULL | PHP_INI_SYSTEM
disable_functions | "" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici des éclaircissements sur ces directives.

safe_mode bool

Active ou non le mode de sécurité de PHP. Lisez le chapitre sécurité pour plus d'informations.

safe_mode_gid bool

Par défaut, le safe mode fait une comparaison des propriétaires, avant d'ouvrir un fichier. Si vous voulez alléger un peu ce niveau de sécurité, vous pouvez réaliser une comparaison de groupe, et activer cette directive. Si cette directive vaut FALSE (sa valeur par défaut), c'est une comparaison sur les UID, et sinon, sur les GID.

safe_mode_include_dir string

Les vérifications basées sur le UID ou GID sont ignorées lorsque les fichiers sont issus du dossier et de ses sous-dossiers, indiqué dans cette directive. Les dossiers peuvent être aussi dans l'include_path ou bien il faut inclure le chemin complet.

Depuis PHP 4.2.0, cette directive utilise le point virgule de la même façon que le fait include_path, pour permettre de configurer plusieurs dossiers.

La restriction spécifiée est en fait un préfixe, plus qu'un nom de dossier. Cela signifie que "safe_mode_include_dir = /dir/incl" autorise aussi bien "/dir/include" que "/dir/incls", si ils existent. Lorsque vous souhaitez restreindre l'accès à un dossier spécifique, il faut terminer cette directive avec un slash /. Par exemple "safe_mode_include_dir = /dir/incl/"

safe_mode_exec_dir string

Si PHP est utilisé en safe mode, les fonctions comme system() et toutes celles qui permettent l'exécution en ligne de commande refuseront d'exécuter des programmes qui ne sont pas dans ce dossier.

safe_mode_allowed_env_vars string

Modifier certaines variables d'environnement est un trou de sécurité potentiel. Cette directive contient une liste de noms variables d'environnement séparées par des virgules, ou de préfixes. En Safe mode, l'utilisateur ne pourra modifier que les variables d'environnement dont le nom commence par l'un des préfixes fourni ici. Par défaut, les utilisateurs ne peuvent modifier que les variables d'environnemt qui commencent par PHP_ (e.g. PHP_FOO=BAR).

Note : Si cette directive est vide, PHP autorisera la modification de TOUTES les variables d'environnement.

safe_mode_protected_env_vars string

Cette directive contient une liste de variables d'environnement que le programmeur ne pourra pas modifier en utilisant la fonction putenv(). Ces variables seront protégées, même is la directive safe_mode_allowed_env_vars autorise leur modification.

open_basedir string

Limite les fichiers accessibles par PHP dans l'arborescence. Cette directive n'est pas affectée par le safe mode.

Lorsqu'un script tente d'ouvrir un fichier, avec les fonctions fopen() ou gzopen(), la situation du fichier est vérifiée. Si le fichier se situe hors du dossier spécifié dans cette directive,PHP refusera de l'ouvrir. Les liens symboliques sont résolus, ce qui fait que cette restriction ne peut être contournée par un lien symbolique.

La valeur spéciale . indique que le dossier dans lequel le script est stocké, servira de dossier de base.

Sous Windows, séparez les dossiers par des deux points. Sur les autres systèmes, séparez les dossiers avec un point-virgule. Lorsque PHP est utilisé comme module Apache, les chemins de la directive open_basedir des dossiers parents sont automatiques transmis.

La restriction spécifiée par open_basedir est en fait un préfixe, et non un dossier. Cela signifie que "open_basedir = /dir/incl" donne accès au dossier "/dir/include" et aussi au dossier "/dir/incls" si il existe. Lorsque vous souhaitez restreindre l'accès à un dossier spécifique, ajoutez un slash final. Par exemple "open_basedir = /dir/incl/".

Note : Le support des dossiers multiples a été ajouté en PHP 3.0.7.

La valeur par défaut est de permettre l'ouverture de tous les fichiers.

disable_functions string

Cette directive vous permet de désactiver certaines fonctions pour des raisons de sécurité. Elle prend une liste de nom de fonctions, séparés par des virgules. disable_functions n'est pas affectée par le safe mode.

Cette directive doit être configurée dans le fichier php.ini. Par exemple, vous ne pourrez pas la configurer dans le fichier httpd.conf.

disable_classes string

Cette directive vous permet de désactiver certaines classes pour des raisons de sécurité. Elle prend une liste de nom de fonctions, séparés par des virgules. disable_functions n'est pas affectée par le safe mode.

Cette directive doit être configurée dans le fichier php.ini. Par exemple, vous ne pourrez pas la configurer dans le fichier httpd.conf.

Disponibilité : Cette directive est disponible depuis PHP 4.3.2

Voir aussi register_globals, display_errors et log_errors

Lorsque safe mode est actif, PHP vérifie que le propriétaire du script courant est le même que le propriétaire des fichiers qui seront manipulés par ce script. Par exemple, dans a la situation suivante :
-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
exécuter le script script.php
<?php
 readfile('/etc/passwd');
?>
générera cette erreur, si le Safe Mode est activé :
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

Cependant, il arrive que la vérification faite avec le nom du propriétaire du fichier soit trop restrictive, et qu'une vérification sur le nom du groupe soit suffisante. C'est une autre fonctionnalité supportée par la directive safe_mode_gid. En lui donnant la valeur de On, les vérifications seront faites sur le GID, alors qu'en lui laissant sa valeur par défaut de Off, les vérifications seront faites sur le UID.

Si vou utilisez la directive open_basedir au lieu du safe mode, alors les manipulations seront limitées aux fichiers situés dans les dossiers spécifiés. Par exemple :
<Directory /docroot>
  php_admin_value open_basedir /docroot
</Directory>
Si vous exécutez le script script.php ci-dessus avec la configuration d'open_basedir le résultat sera l'affichage suivant :
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2

Vous pouvez aussi désactiver individuellement les fonctions. Par exemple, en ajoutant cette ligne dans le fichier php.ini :
disable_functions readfile,system
toute utilisation des fonctions readfile() et system() générera l'affichage suivant :
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2

Précédent | Sommaire | Suivant
Connexions persistantes aux bases de données | Niveau supérieur | Fonctions désactivées par le Safe Mode


Fonctions désactivées par le Safe Mode

Voici une liste non-exhaustive des fonctions désactivées par le Safe Mode.

Tableau 22-2. Fonctions désactivées par le Safe Mode

Fonction | Limitations
dbmopen()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

dbase_open()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

filepro()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

filepro_rowcount()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

filepro_retrieve()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Fonctions ifx_ | restrictions sql_safe_mode, (!= Safe Mode)
Fonctions ingres_ | restrictions sql_safe_mode, (!= Safe Mode)
Fonctions mysql_ | restrictions sql_safe_mode, (!= Safe Mode)
pg_loimport()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

posix_mkfifo()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

putenv() | Obéis aux directives safe_mode_protected_env_vars et safe_mode_allowed_env_vars. Voir aussi la documentation de putenv()
move_uploaded_file()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

chdir()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

dl() | Cette fonction est désactivée par le safe-mode
opérateur guillemets obliques | Cette fonction est désactivée par le safe-mode
shell_exec() (équivalent fonctionnel des guillemets obliques) | Cette fonction est désactivée par le safe-mode
exec() | Vous ne pouvez exécuter que les programmes qui sont dans le dossier safe_mode_exec_dir. Pour des raisons pratiques, il n'est pas possible d'utiliser des jokers comme .. dans le chemin de ce dossier.
system() | Vous ne pouvez exécuter que les programmes qui sont dans le dossier safe_mode_exec_dir. Pour des raisons pratiques, il n'est pas possible d'utiliser des jokers comme .. dans le chemin de ce dossier.
passthru() | Vous ne pouvez exécuter que les programmes qui sont dans le dossier safe_mode_exec_dir. Pour des raisons pratiques, il n'est pas possible d'utiliser des jokers comme .. dans le chemin de ce dossier.
popen() | Vous ne pouvez exécuter que les programmes qui sont dans le dossier safe_mode_exec_dir. Pour des raisons pratiques, il n'est pas possible d'utiliser des jokers comme .. dans le chemin de ce dossier.
fopen()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

mkdir()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

rmdir()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

rename()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

unlink()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

copy()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

(on source and target)
chgrp()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

chown()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

chmod()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

De plus, vous ne pouvez pas modifier les SUID, SGID et sticky bit
touch()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

symlink()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

(note: only the target is checked)
link()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

(note: seule le fichier de destination est vérifié.
getallheaders() | En Safe Mode, les en-têtes commencants par 'authorization' (sensible à la casse) ne seront pas retournés. Attention : cette protection est mise en défaut par la fonction getallheaders() sur les serveurs AOL!
header() | Avec le safe mode, le uid du script est ajouté à la partie realm de l'en-tête WWW-Authenticate si vous utilisez cet en-tête pour l'authentification.
variables PHP_AUTH | Avec le safe mode, les variables PHP_AUTH_USER, PHP_AUTH_PW et PHP_AUTH_TYPE ne sont pas disponibles dans la variable $_SERVER. Indépendamment, vous pouvez utiliser la variable REMOTE_USER pour connaître le USER. (note : affectée uniquement depuis PHP 4.3.0)
highlight_file(), show_source()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

(note : affectée uniquement depuis PHP 4.2.1)
parse_ini_file()

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

(note : affectée uniquement depuis PHP 4.2.1)
Toutes les fonctions qui utilisent les wrappers de fichiers. (php4/main/fopen_wrappers.c) ??

Précédent | Sommaire | Suivant
Safe mode | Niveau supérieur | Utiliser PHP en ligne de commande


Utiliser PHP en ligne de commande

Manuel PHP
Précédent Suivant

Chapitre 23. Utiliser PHP en ligne de commande

Depuis la version 4.3, PHP supporte un nouveau type de SAPI (Server Application Programming Interface, c'est à dire Interface de Programmation d'Applications Serveur) appelé CLI, ce qui signifie Command Line Interface et se traduit par Interface de Ligne de Commande. Comme son nom l'indique, ce type SAPI cible les applications shell (ou desktop), écrites en PHP. Il y a pas mal de différences enter le type CLI SAPI et les autres SAPI, qui sont expliqués dans ce chapitre.

Le CLI SAPI a été publié pour la première fois avec la version PHP 4.2.0, mais il est resté expérimental, et doit être explicitement activé avec la commande --enable-cli, lorsque vous exécutez le script ./configure. Depuis PHP 4.3.0, le CLI SAPI n'est plus expérimental, et est donc toujours compilé et installé comme binaire PHP (appelé aussi php.exe sous Windows).

Les différences les plus notables entre le CLI SAPI et les SAPI sont :

  • Contrairement au CGI SAPI, aucun en-tête HTTP n'est écrit dans le résultat.

    Bien que le CGI SAPI fournisse un moyen de supprimer les en-têtes HTTP, il n'y a pas moyen d'activer les en-têtes HTTP dans le CLI SAPI.

  • Il y a plusieurs directives du php.ini qui sont ignorées par le CLI SAPI, car elles n'ont pas de sens, en environnement shell :

    Tableau 23-1. Directives php.ini ignorées

    Directive | Valeur par défaut pour CLI SAPI | Commentaire
    html_errors | FALSE | Il peut être bien difficile de lire les messages d'erreur sur un terminal lorsqu'ils sont noyés dans des balises HTML sans grand intérêts. Par conséquent, cette directive est forcée à FALSE.
    implicit_flush | TRUE | Il est souhaitable que tout affichage en provenance de print(), echo() et consorts soit immédiatement affiché dans le terminal, et non pas placé dans un buffer quelconque. Vous pouvez toujours utiliser la bufferisation de sortie si vous voulez retarder un affichage, ou bien en manipuler ultimement le contenu.
    max_execution_time | 0 (unlimited) | Etant donné les possibilités infinies de PHP en environnement shell, le temps d'exécution maximal d'un script PHP a été rendu illimité. Alors que les scripts destinés au web doivent s'accomplir en une fraction de seconde, il arrive que les scripts shell requièrent bien plus de temps.
    register_argc_argv TRUE

    En donnant la valeur de TRUE à cette directive, vous aurez toujours accès à la variable argc (représentant le nombre d'arguments passés à l'application) et argv (le tableau contenant les arguments passés) dans le CLI SAPI.

    Depuis PHP 4.3.0, les variables $argc et $argv sont définies et remplies avec les valeurs appropriées, en utilisant CLI SAPI. Avant cette version, la création de ces variables était liée au comportement des versions CGI et MODULE, qui requièrent l'activation de la directive PHP register_globals. Indépendamment de la version ou de la valeur de register_globals, vous pouvez toujour accéder à $_SERVER et $HTTP_SERVER_VARS. Par exemple: $_SERVER['argv']

    Note : Ces directives ne peuvent pas être initialisées avec d'autres valeurs dans le fichier php.ini ou par une autre méthode. C'est une limitation, car ces valeurs par défaut s'appliquent une fois que tous les autres fichiers de configuration ont été analysés. Cependant, ces valeurs peuvent être modifiées durant l'exécution (ce qui n'est pas logique pour certaines directives, comme par exemple register_argc_argv).

  • Pour faciliter le travail en environnement shell, les constantes suivantes sont définies :

    Tableau 23-2. Constantes spécifiques au CLI

    Constante Déscription
    STDIN Un descripteur de fichier déjà disponible vers stdin. Cela évite de l'ouvrir avec
    $stdin = fopen('php://stdin', 'r');
    STDOUT Un descripteur de fichier déjà disponible vers stdout. Cela évite de l'ouvrir avec
    $stdout = fopen('php://stdout', 'w');
    STDERR Un descripteur de fichier déjà disponible vers stderr. Cela évite de l'ouvrir avec
    $stderr = fopen('php://stderr', 'w');

    Etant donné ce qui précède, vous n'avez pas besoin d'ouvrir un fichier vers stderr par vous-même, mais vous pouvez utiliser cette constante directement, comme un descripteur de fichier :
    php -r 'fwrite(STDERR, "stderr\n");'
    Vous n'avez pas non plus à fermer explicitement ces fichiers, PHP s'en chargera automatiquement.

  • CLI SAPI ne transforme pas le dossier courant en dossier d'exécution du script!

    Exemple de différence entre CGI SAPI et CLI SAPI:
    <?php
    /* Un test simple : affiche le dossier d'ex&eacute;cution */
    echo getcwd(), "\n";
?>

    Lorsque vous utilisez la version CGI, l'affichage pourra être
    $ pwd
/tmp

$ php-cgi -f autre_dossier/test.php
/tmp/autre_dossier
    Cela monter clairement que PHP modifie le dossier courant, et utilise le dossier du script exécuté.

    En utilisant le CLI SAPI, on obtient :
    $ pwd
/tmp

$ php -f autre_dossier/test.php
/tmp
    Cela donne beaucoup plus de souplesse lorsque vous rédigez des scripts shell avec PHP.

    Note : CGI SAPI supporte le même comportement de CLI SAPI, en lui passant l'option -C, lorsque vous l'invoquez en ligne de commmande.

La liste des options de ligne de commande fournies par PHP est disponible en exécutant PHP avec l'option -h :
Usage: php [options] [-f] <file> [args...]
       php [options] -r <code> [args...]
       php [options] [-- args...]
  -s               Display colour syntax highlighted source.
  -w               Display source with stripped comments and whitespace.
  -f <file>        Parse <file>.
  -v               Version number
  -c <path>|<file> Look for php.ini file in this directory
  -a               Run interactively
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -z <file>        Load Zend extension <file>.
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -i               PHP information
  -r <code>        Run PHP <code> without using script tags <?..?>
  -h               This help

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

Le CLI SAPI dispose de trois moyens pour lire le code du script PHP que vous voulez exécuter :

  1. Indiquer à PHP d'exécuter un fichier :

    php mon_script.php

php -f mon_script.php
    Les deux méthodes (en utilisant -f ou pas) exécute le script contenu dans le fichier mon_script.php. Vous pouvez choisir n'importe quel fichier, et ces fichiers ne sont pas tenus d'utiliser l'extension .php. N'importe quelle extension peut faire l'affaire.

  2. Donner du code PHP à exécuter directement en ligne de commande.

    php -r 'print_r(get_defined_constants());'
    Une attention particulière doit alors être apportée aux variables d'environnement, qui seront remplacées, et aux guillements, qui ont des significations spéciales en ligne de commande.

    Note : Lisez l'exemple attentivement, il n'y a ni balise d'ouverture, ni balise de fermeture! L'option -r fonctionne sans ces balises, et les ajouter conduira alors à une erreur d'analyse.

  3. Donner du code PHP dans l'entrée standard (stdin).

    Cela donne la possibilité de créer dynamiquement du code PHP, puis de le fournir à PHP, et enfin, de le traiter à nouveau en shell. Voici un exemple fictif :
    $ some_application | some_filter | php | sort -u >final_output.txt

Il n'est pas possible de combiner ces trois modes d'exécution.

Comme toute application shell, l'exécutable PHP accepte des arguments, et votre script peut aussi les recevoirs. Le nombre d'arguments n'est pas limité par PHP, mais par le shell, qui a une limite en terme de nombre de caractères qui peuvent être passés. Généralement, vous n'atteidrez pas cette limite, mais cela reste possible. Les arguments passés au script seront transmis via la variable tableau $argv. L,index zéro contiendra toujours le nom du script appelé. Si le code a été fourni en ligne de commande, ou via stdin, ce premier élément vaudra -. L'autre variable globale fournie est $argc qui contient le nombre d'éléments dans le tableau $argv : ce nombre est différent du nombre d'arguments passés au script.

Tant que les arguments que vous passez à votre script ne commencent pas par le caractère -, il n'y a rien de spécial à surveiller. Si vous passez des arguments à voter script qui commencent par -, cela posera des problèmes car PHP va penser qu'il doit les interpréter. Pour éviter cela, utilisez le séparateur --. Après cet argument, tous les arguments suivants seront passés à votre script sans être modifié ou analysé par PHP.

# Cela ne va pas ex&eacute;cuter le code, mais afficher l'aide de PHP
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]

# Cela va passer l'argument '-h' &agrave; votre script, et &eacute;viter que PHP ne le traite
$ php -r 'var_dump($argv);' -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

Cependant, il y a une autre méthode pour utiliser PHP en script shell. Vous pouvez aussi utiliser la ligne #!/usr/bin/php en tout début de votre script, suivi de code PHP compris entre balise ouvrantes/fermantes. Vous pouvez aussi ajouter après #!/usr/bin/php les options nécessaires. Vous pouvez aussi le faire en ligne de commande. De cette manière, le script peut être exécuté comme un script shell habituel :
#!/usr/bin/php
<?php
    var_dump($argv);
?>
En supposant que ce fichier s'appelletest, dans le dossier courant, nous pouvons alors faire ceci :
$ chmod 755 test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}
Comme vous le voyez, aucune précaution n'est nécessaire pour passer des paramètres qui commencent par - à votre script.

Tableau 23-3. Options de ligne de commande

Option | Description
-s

Affiche le code avec la colorisation syntaxique.

Cette option utilise le mécanisme interne pour analyser le fichier, et produire une version colorisée du code source, au format HTML. Notez que cette option ne fait que générer un bloc HTML, sans les en-têtes. <code> [...] </code>

Note : Cette option ne fonctionne pas avec l'option -r.

-w

Affiche la source sans les commentaires et les espaces.

Note : Cette option ne fonctionne pas avec l'option -r.

-f

Analyse et exécute le fichier donné après l'option -f. Cette optione est optionnelle, et peut être omise. Le seul nom du fichier est suffisant.

-v

Affiche les versions de PHP, PHP SAPI, et Zend sur le terminal. Par exemple :
$ php -v
PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.2.1, Copyright (c) 1998-2002 Zend Technologies

-c

Avec cette option, vous pouvez spécifier le nom du dossier dans lequel PHP va recherche le fichier php.ini, ou encore vous pouvez spécifier un fichier de configuration directement (qui n'a pas obligatoirement à être appelé php.ini) :
$ php -c /custom/directory/ mon_script.php

$ php -c /custom/directory/custom-file.ini mon_script.php

-a

Exécute PHP de manière interactive.

-d

Cette option permet de modifier n'importe quelle directive de configuration du fichier php.ini. La syntaxe est :
-d configuration_directive[=value]

Exemples:
# L'omission de la valeur conduit &agrave; donner la valeur de "1"
$ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# Passer une valeur vide conduit &agrave; donner la valeur de ""
php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""

# La directive de configuration sera n'importe quelle valeur pass&eacute;e apr&egrave;s le caract&egrave;re '='
$  php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$  php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"

-e

Génére des informations étendues pour le profilage et le débogage.

-z

Charge une extension Zend. Si seulement un fichier est fourni, PHP essaie de charger cette extension dans le dossier courant par défaut des librairie sur votre système (généralement spécifié avec /etc/ld.so.conf sous Linux). Passer un nom de fichier avec le chemin complet fera que PHP utilisera ce fichier, sans recherche dans les dossiers classiques. Un chemin de dossier relatif indiquera à PHP qu'il doit chercher uniquement les extensions dans ce dossier.

-l

Cette option permet de faire une vérification syntaxique sur le code PHP fourni. En cas de réussite, le message No syntax errors detected in <filename> (Aucune d'erreur de syntaxe n'ont été détectées dans <nom_de_fichier> est affiché sur la sortie standard, et le script shell retourne 0. En cas d'erreur, le message Errors parsing <filename> (Erreurs d'analyse dans le fichier <filename>) est affiché, en plus des messages d'erreurs détectés par l'analyseur lui même. Le script shell retourne le code 255.

Cette option ne détecte pas les erreurs fatales (comme par exemple les fonctions non définies). Utilisez -f si vous voulez tester aussi ces erreurs.

Note : Cette option ne fonctionne pas avec l'option -r.

-m

Cette option liste les extensions PHP et Zend compilées et chargées :
$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-i | Cette option appelle la fonction phpinfo(), et affiche le résultat. Si PHP ne fonctionne pas correctement, il est recommandé d'utiliser la commande php -i et de voir si il n'y a pas d'erreurs affichées avant ou après la table d'information. N'oubliez pas que le résutltat de cette option est au format HTML, et donc grand et illisible directement.
-r

Cette option permet l'exécution de PHP directement dans la ligne de commande. Les balises de PHP (<?php et ?>) ne sont pas demandées, et coauseront une erreur d'analyse.

Note : De l'attention doit être portée lors de l'utilisation de cette option de PHP, pour qu'il n'y ait pas de collision avec les substitutions de variables en lignes de commande, réalisées par le shell.

Exemple conduisant à une erreur d'analyse :
$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '='
Le problème ici est que le shell (sh/bash) effectue une substitution de variables, grâce aux guillemets doubles ". puisque la variable $foo n'est probablement pas définie dans le shell, elle est remplacée par rien, ce qui fait que le code passé à PHP pour l'exécution est :
$ php -r " = get_defined_constants();"
La solution de ce problème est d'utiliser les guillemets simples '. Les variables de ces chaînes ne seront pas substituées par leurs valeurs par le shell.
$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
  ["E_ERROR"]=>
  int(1)
  ["E_WARNING"]=>
  int(2)
  ["E_PARSE"]=>
  int(4)
  ["E_NOTICE"]=>
  int(8)
  ["E_CORE_ERROR"]=>
  [...]
Si vous utilisez un shell différent de sh/bash, vous pouvez rencontrer d'autres problèmes. N'hésitez pas à ouvrir un rapport de bugs, ou d'envoyer un mail à phpdoc@lists.php.net. Il est toujours très facile d'avoir des problèmes lorsque vous essayez d'inclure des variables shell dans le code, ou d'utiliser les anti-slash pour l'échappement. Vous aurez été prévenu.

-h | Avec cette option, vous pouvez obtenir des informations sur la liste des options supporté par votre PHP, avec des explications succintes.

L'exécutable PHP peut être utilisé pour exécuter des scripts indépendants du serveur web. Si vous êtes sur un système Unix, il est recommandé d'ajouter la ligne de configuration en début de scripts, de le rendre exécutable de manière à ce que le système sache quel programme doit exécuter le script. Sous Windows, vous pouvez associer l'exécutable php.exe avec le double-clic sur les fichiers d'extension .php, ou bien vous pouvez faire un fichier batch pour exécuter le script grâce à PHP. La première ligne utilisée dans le monde Unix ne perturbera pas PHP sous Windows, ce qui rend les scripts facilements portables. Un exemple complet est disponible ci-dessous :

Exemple 23-1. Script prévu pour être exécuté en ligne de commande (script.php)

#!/usr/bin/php
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

C'est une ligne de commande &agrave; une option.

  Utilisation :
  <?php echo $argv[0]; ?> <option>

  <option> peut &ecirc;tre un mot que vous souhaitez afficher.
  Avec les options --help, -help, -h,
  et -?, vous obtiendrez cette aide.

<?php
} else {
    echo $argv[1];
}
?>

Dans le script ci-dessus, nous utilisons la première ligne pour indiquer que le fichier doit être exécuté par PHP. Nous travaillons avec une version CLI, donc il n'y a pas d'en-têtes HTTP qui soient affichés. Il y a deux variables que vous pouvez utiliser avec les applications de ligne de commande : $argc et $argv. La première est le nombre d'arguments plus un (le nom du script qui est exécuté). La seconde est un tableau contenant les arguments, commençant avec le nom du script en élément 0 ($argv[0]).

Dans notre exemple, nous avons vérifié qu'il y a plus ou moins d'un argument. De plus, si cet argument est --help, -help, -h ou -?, nous avons affiché un message d'aide, ainsi que le nom du script. Nous nous recevons un autre argument, cet argument est affiché dans le terminal.

Pour exécuter le script ci-dessus sous Unix, vous devez le rendre exécuétable, puis l'appeler avec une commande comme : script.php echothis ou script.php -h. Sous Windows, vous pouvez faire un fichier batch pour cela :

Exemple 23-2. Fichier batch pour exécuter un script PHP en ligne de commande (script.bat)

@c:\php\php.exe script.php %1 %2 %3 %4

Si vous avez nommé le programme ci-dessus script.php, et que vous avez votre exécutable php.exe situé à c:\php\php.exe, ce fichier batch l'exécutera avec les options que vous lui passez : script.bat echothis ou script.bat -h.

Voir aussi l'extension Readline, qui dispose de nombreuses fonctions pour améliorer la convivialité de vos applications en ligne de commande.

Précédent | Sommaire | Suivant
Fonctions désactivées par le Safe Mode | Niveau supérieur | Index des fonctions


Index des fonctions

Manuel PHP
Précédent Suivant

V. Index des fonctions

Table des matières
I. Apache
II. Tableaux
III. Aspell [Obs.]
IV. Nombres de grande taille BCMath
V. Compression Bzip2
VI. Calendrier
VII. Paiement CCVS
VIII. Support COM pour Windows
IX. Classes et Objets
X. ClibPDF
XI. Crack
XII. CURL
XIII. Paiement Cybercash
XIV. Administration Cyrus IMAP
XV. Caractères
XVI. DBA
XVII. Dates et heures
XVIII. dBase
XIX. DBM
XX. dbx
XXI. DB++
XXII. Direct IO
XXIII. Accès aux dossiers
XXIV. DOM XML
XXV. .NET
XXVI. Gestion des erreurs
XXVII. Fonctions de monitorage d'altération de fichiers
XXVIII. FrontBase
XXIX. FilePro
XXX. Système de fichiers
XXXI. Forms Data Format
XXXII. FriBiDi
XXXIII. FTP
XXXIV. Fonctions
XXXV. Gettext (GNU)
XXXVI. GMP
XXXVII. HTTP
XXXVIII. Hyperwave
XXXIX. Hyperwave API
XL. Iconv
XLI. Images
XLII. IMAP
XLIII. Informix
XLIV. InterBase
XLV. Ingres II
XLVI. IRC
XLVII. Java
XLVIII. LDAP
XLIX. Mail
L. Traitement de email
LI. Mathématiques
LII. Chaînes de caractères multi-octets
LIII. MCAL
LIV. Chiffrage mcrypt
LV. MCVE (Paiement)
LVI. Hash
LVII. Mimetype
LVIII. Microsoft SQL Server
LIX. Ming pour Flash
LX. Fonctions diverses
LXI. mnoGoSearch
LXII. mSQL
LXIII. MySQL
LXIV. Extension MySQL améliorée
LXV. Sessions Mohawk
LXVI. Muscat
LXVII. Réseau
LXVIII. Fonctions de contrôle d'écran de terminal
LXIX. Lotus Notes
LXX. Netscape Server API
LXXI. ODBC unifié
LXXII. Aggregation d'objets/Composition de fonctions
LXXIII. Oracle 8
LXXIV. OpenSSL
LXXV. Oracle
LXXVI. Ovrimos SQL
LXXVII. Bufferisation de sortie
LXXVIII. Overload
LXXIX. PDF
LXXX. Paiement par Verisign
LXXXI. Options PHP et informations
LXXXII. POSIX
LXXXIII. PostgreSQL
LXXXIV. Contrôle des processus
LXXXV. Exécution de programmes externes
LXXXVI. Impression
LXXXVII. Pspell
LXXXVIII. Readline (GNU)
LXXXIX. Recode (GNU)
XC. Expressions régulières compatibles Perl
XCI. qtdom
XCII. Expressions régulières
XCIII. Sémaphores et gestion de la mémoire partagée
XCIV. SESAM
XCV. Sessions
XCVI. Mémoire partagée
XCVII. SQLite
XCVIII. Shockwave Flash
XCIX. SNMP
C. Socket
CI. Flux
CII. Chaînes de caractères (Strings)
CIII. Sybase
CIV. Tidy
CV. Analyseur de code PHP
CVI. URL
CVII. Variables
CVIII. vpopmail
CIX. API windows
CX. WDDX
CXI. Analyseur syntaxique XML
CXII. XML-RPC
CXIII. XSLT
CXIV. YAZ
CXV. NIS
CXVI. Accès aux fichiers Zip (Lecture seule)
CXVII. Compression Zlib

Précédent | Sommaire | Suivant
Utiliser PHP en ligne de commande |  | Apache


Apache

Manuel PHP
Précédent Suivant

I. Apache

Introduction

Ces fonctions sont disponibles lorsque PHP est utilisé comme module Apache.

Installation

Pour savoir installer PHP sur Apache, reportez-vous à Apache section, dans le chapitre d'installation.

Configuration à l'exécution

Le comportement du module PHP d'Apache est configurable dans le fichier php.ini. Les configurations du php.ini peuvent être remplacées par l'option php_flag dans le fichier de configuration du serveur, ou dans les fichiers locaux .htaccess.

Exemple 1. Désactiver l'analyse des fichiers PHP dans un dossier avec .htaccess

php_flag engine off

Tableau 1. Options de configuration Apache

Nom | Défaut | Modifiable | Fonction
engine | On | PHP_INI_ALL | Active ou désactive l'analyse des fichiers PHP
child_terminate | Off | PHP_INI_ALL | Spécifie si les scripts PHP peuvent réclamer la fin des processus fils en fin de requête. Reportez-vous à apache_child_terminate()
last_modified | Off | PHP_INI_ALL | Envoie la date de modification des scripts PHP dans l'en-tête HTTP Last-Modified:
xbit_hack | Off | PHP_INI_ALL | Analyse avec PHP les fichiers exécutables, indépendemment de leur extension.

Voici un éclaircissement sur l'utilisation des directives de configuration.

engine booléen

Cette directive est utile uniquement pour le module Apache. Elle est utilisée par les sites qui souhaitent activer ou désactiver PHP, au cas par cas, par dossier ou par dossier virtuel. En utilisant engine off au bon endroit dans le fichier httpd.conf, PHP peut être activé ou désactivé.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
apache_child_terminate -- Termine le processus apache après cette requête
apache_get_version -- Retourne la version d'Apache
apache_lookup_uri -- Effectue une requête partielle pour l'URI spécifiée et renvoie toutes les informations.
apache_note -- Affiche ou affecte le paramètre "apache request notes"
apache_request_headers -- Lit tous les en-têtes HTTP de la requête
apache_response_headers -- Lit tous les en-têtes de réponse HTTP
apache_setenv -- Modifie une variable de subprocess_env Apache
ascii2ebcdic -- Transforme une chaîne ASCII en EBCDIC
ebcdic2ascii -- Transforme une chaîne EBCDIC en ASCII
getallheaders -- Lit tous les en-têtes de la requête HTTP
virtual -- Effectue une sous-requête Apache

Précédent | Sommaire | Suivant
Index des fonctions | Niveau supérieur | apache_child_terminate


apache_child_terminate

(PHP 4 >= 4.0.5)

apache_child_terminate -- Termine le processus apache après cette requête

Description

bool apache_child_terminate ( void )

apache_child_terminate() va programmer le processus Apache pour qu'il se termine une fois que la requête PHP courante sera terminée. Cela peut servir à terminer un processus après un script qui aurait consommé beaucoup de mémoire. En effet, la mémoire est généralement libérée de manière interne, mais pas rendue au système.

Note : La disponibilité de cette fonctionnalité est contrôlée par le fichier php.ini : c'est la directive apache.child_terminate, qui est mise à off par défaut.

Cette fonctionnalité n'est pas disponible dans les versions multi-threadées d'Apache sur Windows.

Voir aussi exit().

Précédent | Sommaire | Suivant
Apache | Niveau supérieur | apache_get_version


apache_get_version

(PHP 4 >= 4.3.2)

apache_get_version -- Retourne la version d'Apache

Description

string apache_get_version ( void )

apache_get_version() retourne une chaîne de caractères représentant la version Apache, ou FALSE en cas d'échec.

Exemple 1. Exemple avec apache_get_version()

<?php
$version = apache_get_version();
echo "$version\n";
?>

cela affichera par exemple :

Apache/1.3.29 (Unix) PHP/4.3.4

Voir aussi phpinfo().

Précédent | Sommaire | Suivant
apache_child_terminate | Niveau supérieur | apache_lookup_uri


apache_lookup_uri

(PHP 3>= 3.0.4, PHP 4 )

apache_lookup_uri -- Effectue une requête partielle pour l'URI spécifiée et renvoie toutes les informations.

Description

object apache_lookup_uri ( string filename)

apache_lookup_uri() effectue une requête partielle pour l'URI spécifiée. Cette requête permet de récupérer toutes les informations importantes à propos de la ressource concernée. Les propriétés de la classe renvoyée sont les suivantes :

status
the_request
status_line
method
content_type
handler
uri
filename
path_info
args
boundary
no_cache
no_local_copy
allowed
send_bodyct
bytes_sent
byterange
clength
unparsed_uri
mtime
request_time

Note : apache_lookup_uri() ne fonctionne que lorsque PHP est installé sous la forme d'un module Apache.

Précédent | Sommaire | Suivant
apache_get_version | Niveau supérieur | apache_note


apache_note

(PHP 3>= 3.0.2, PHP 4 )

apache_note -- Affiche ou affecte le paramètre "apache request notes"

Description

string apache_note ( string note_name [, string note_value])

apache_note() est une fonction spécifique au serveur Apache. Cette fonction affecte ou renvoie la valeur de la variable contenue dans la table notes d'Apache. Si la fonction est appelée avec un argument, elle renvoie la valeur courante de la variable note_name. Si apache_note() est appelée avec deux arguments, apache_note() affecte à la note note_value la valeur note_name et apache_note() retournera la valeur précédente de la variable note_name.

Précédent | Sommaire | Suivant
apache_lookup_uri | Niveau supérieur | apache_request_headers


apache_request_headers

(PHP 4 >= 4.3.0)

apache_request_headers -- Lit tous les en-têtes HTTP de la requête

Description

array apache_request_headers ( void )

apache_request_headers() retourne un tableau associatif avec tous les en-têtes HTTP de la requête courante. Cela n'est possible que lorsque PHP fonctionne comme module Apache.

Note :
      Avant la version PHP 4.3.0, apache_request_headers()
      était appelée getallheaders(). Depuis PHP 4.3.0,
      getallheaders() est un alias de
      apache_request_headers().

Exemple 1. Exemple avec apache_request_headers()

<?php
$headers = apache_request_headers();

foreach ($headers as $header => $value) {
    echo "$header: $value <br />\n";
}
?>

Note : Vous pouvez aussi obtenir les valeurs des variables CGI communes en les lisant dans l'environnement, ce qui fonctionne, que vous soyez ou non en module Apache. Utilisez la fonction phpinfo() pour connaître la liste des variables d'environnement disponibles.

Note : A partir de PHP 4.3.3 vous pouvez utiliser cette fonction avec le module serveur NSAPI et avec les serveurs web Netscape, iPlanet et SunONE.

Voir aussi apache_response_headers().

Précédent | Sommaire | Suivant
apache_note | Niveau supérieur | apache_response_headers


apache_response_headers

(PHP 4 >= 4.3.0)

apache_response_headers -- Lit tous les en-têtes de réponse HTTP

Description

array apache_response_headers ( void )

apache_response_headers() retourne un tableau avec tous les en-têtes de réponse Apache. Cette fonctionnalité n'est disponible qu'en PHP version 4.3.0 et plus récent.

Note : A partir de PHP 4.3.3 vous pouvez utiliser cette fonction avec le module serveur NSAPI et avec les serveurs web Netscape, iPlanet et SunONE.

Voir aussi apache_request_headers() et headers_sent().

Précédent | Sommaire | Suivant
apache_request_headers | Niveau supérieur | apache_setenv


apache_setenv

(PHP 4 >= 4.2.0)

apache_setenv -- Modifie une variable de subprocess_env Apache

Description

int apache_setenv ( string variable, string value [, bool walk_to_top])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
apache_response_headers | Niveau supérieur | ascii2ebcdic


ascii2ebcdic

(PHP 3>= 3.0.17)

ascii2ebcdic -- Transforme une chaîne ASCII en EBCDIC

Description

int ascii2ebcdic ( string ascii_str)

ascii2ebcdic() est une fonction spécifique à Apache, qui n'est disponible que sur les systèmes d'exploitation qui gèrent le format EBCDIC (OS/390, BS2000). Elle traduit la chaîne ASCII ascii_str en son équivalent EBCDIC (avec protection des données binaires) et retourne le résultat.

Voir aussi ebcdic2ascii()

Précédent | Sommaire | Suivant
apache_setenv | Niveau supérieur | ebcdic2ascii


ebcdic2ascii

(PHP 3>= 3.0.17)

ebcdic2ascii -- Transforme une chaîne EBCDIC en ASCII

Description

int ebcdic2ascii ( string ebcdic_str)

ebcdic2ascii() est une fonction spécifique à Apache, qui n'est disponible que sur les OS qui gèrent le format EBCDIC (OS/390, BS2000). Elle traduit la chaîne EBCDIC ebcdic_str en son équivalent ASCII (avec protection des données binaires) et retourne le résultat.

Voir aussi ascii2ebcdic()

Précédent | Sommaire | Suivant
ascii2ebcdic | Niveau supérieur | getallheaders


getallheaders

(PHP 3, PHP 4 )

getallheaders -- Lit tous les en-têtes de la requête HTTP

Description

array getallheaders ( void )

getallheaders() est un alias de apache_request_headers(). Elle retourne un tableau associatif avec tous les en-têtes HTTP émis par la requête courante. Lisez le manuel de apache_request_headers() pour plus de détails.

Note : En PHP 4.3.0, getallheaders() est devenu un alias de apache_request_headers(). En fait, la fonction a été renommée. Cela est dû au fait qu'elle ne fonctionne que lorsque PHP est compilé comme module Apache.

Note : A partir de PHP 4.3.3 vous pouvez utiliser cette fonction avec le module serveur NSAPI et avec les serveurs web Netscape, iPlanet et SunONE.

Voir aussi apache_request_headers().

Précédent | Sommaire | Suivant
ebcdic2ascii | Niveau supérieur | virtual


virtual

(PHP 3, PHP 4 )

virtual -- Effectue une sous-requête Apache

Description

int virtual ( string filename)

virtual() est une fonction spécifique au serveur Apache. Elle est équivalente à la directive "<!--#include virtual...-->" lorsque vous utilisez le module include d'Apache. Cette fonction effectue une sous-requête Apache. C'est très utile lorsque vous utilisez des scripts CGI, des fichiers .shtml ou n'importe quel type de fichier qui doit être analysé par le serveur Apache. Il est à noter que lors de l'utilisation avec des scripts CGI, ces derniers doivent générer un en-tête valide, c'est-à-dire, au minimum un en-tête Content-Type. Pour les fichiers PHP, il est conseillé d'utiliser les fonctions include() et require(). virtual() ne peut pas être utilisé pour inclure un fichier qui est lui-même un fichier PHP.

Note : A partir de PHP 4.3.3 vous pouvez utiliser cette fonction avec le module serveur NSAPI et avec les serveurs web Netscape, iPlanet et SunONE.

Précédent | Sommaire | Suivant
getallheaders | Niveau supérieur | Tableaux


Tableaux

Manuel PHP
Précédent Suivant

II. Tableaux

Introduction

Ces fonctions vous permettent de manipuler et de traiter les tableaux de nombreuses façons. Les tableaux sont très efficaces dès qu'il s'agit de stocker, gérer et traiter des données en groupe.

Les tableaux simples et multi-dimensionnels sont supportés et peuvent être créés par l'utilisateur, ou par une fonction. Il y a des fonctions spécifiques qui remplissent des tableaux à partir de résultats de requêtes, et de nombreuses fonctions retournent un tableau.

Reportez-vous à la section tableaux du manuel pour des explications détaillées sur l'implémentation des tableaux en PHP.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Les constantes listées ici sont toujours disponibles dans PHP.

CASE_LOWER (entier)

CASE_LOWER est utilisé avec array_change_key_case() et sert à convertir tous les index d'un tableau en minuscules. C'est aussi le comportement par défaut de array_change_key_case().

CASE_UPPER (entier)

CASE_UPPER est utilisé avec array_change_key_case() et sert à convertir tous les index d'un tableau en majuscule.

Constantes d'ordre de tri

SORT_ASC (entier)

SORT_ASC trie en ordre ascendant

SORT_DESC (entier)

SORT_DESC trie en ordre descendant

Autres constantes d'ordre de tri

SORT_REGULAR (entier)

SORT_REGULAR compare normalement les valeurs d'un tri

SORT_NUMERIC (entier)

SORT_NUMERIC compare numériquement les valeurs d'un tri

SORT_STRING (entier)

SORT_STRING compare alphabétiquement les valeurs d'un tri.

COUNT_NORMAL (entier)

COUNT_RECURSIVE (entier)

EXTR_OVERWRITE (entier)

EXTR_SKIP (entier)

EXTR_PREFIX_SAME (entier)

EXTR_PREFIX_ALL (entier)

EXTR_PREFIX_INVALID (entier)

EXTR_PREFIX_IF_EXISTS (entier)

EXTR_IF_EXISTS (entier)

EXTR_REFS (entier)

Voir aussi

Voir aussi
is_array(),
explode(),
implode(),
split(),
preg_split() et
unset().

Table des matières
array_change_key_case -- Change la casse des clés du tableau
array_chunk -- Sépare un tableau en tableaux de taille inférieure
array_combine -- Crée un tableau à partir de deux autres tableaux
array_count_values -- Compte le nombre de valeurs dans un tableau
array_diff_assoc -- Calcule la différence de deux tableaux, en prenant en compte les clés
array_diff_uassoc -- Calcule la différence entre deux tableaux associatifs, à l'aide d'une fonction utilisateur
array_diff -- Calcule la différence entre deux tableaux
array_fill -- Remplis un tableau avec une même valeur
array_filter -- Filtre les éléments d'un tableau
array_flip -- Remplace les clés par les valeurs, et les valeurs par les clés
array_intersect_assoc -- Calcule l'intersection de deux tableaux avec des tests sur les index
array_intersect -- Calcule l'intersection de tableaux
array_key_exists -- Vérifie si une clé existe dans un tableau
array_keys -- Retourne toutes les clés d'un tableau
array_map -- Applique sur fonction sur des tableaux
array_merge_recursive -- Combine plusieurs tableaux ensembles, récursivement
array_merge -- Fusionne plusieurs tableaux
array_multisort -- Tri multi-dimensionnel
array_pad -- Complète un tableau jusqu'à la longueur spécifiée, avec une valeur.
array_pop -- Dépile un élément de la fin d'un tableau
array_push -- Empile un ou plusieurs éléments à la fin d'un tableau
array_rand -- Prend une ou plusieurs valeurs, au hasard dans un tableau
array_reduce -- Réduit itérativement un tableau
array_reverse -- Inverse l'ordre des éléments d'un tableau
array_search -- Recherche dans un tableau la clé associée à une valeur
array_shift -- Dépile un élément au début d'un tableau
array_slice -- Extrait une portion de tableau
array_splice -- Efface et remplace une portion de tableau
array_sum -- Calcule la somme des valeurs du tableau
array_udiff_assoc -- Calcule la différence entre des tableaux avec vérification sur les index. Les données sont comparées en utilisant une fonction callback
array_udiff_uassoc -- Calcule la différence de deux tableaux associatifs, avec une fonction utilisateur
array_udiff -- Calcule la différence entre deux tableaux en utilisant une fonction callback pour comparer les données
array_unique -- Dédoublonne un tableau
array_unshift -- Empile un ou plusieurs éléments au début d'un tableau
array_values -- Retourne les valeurs d'un tableau
array_walk -- Exécute une fonction sur chacun des membres d'un tableau.
array -- Crée un tableau
arsort -- Trie un tableau en ordre inverse
asort -- Trie un tableau en ordre
compact -- Crée un tableau contenant les variables et leur valeur
count -- Compte le nombre d'éléments d'une variable
current -- Transforme une variable en tableau
each -- Retourne chaque paire clé/valeur d'un tableau
end -- Positionne le pointeur de tableau en fin de tableau
extract -- Importe les variables dans la table des symboles
in_array -- Indique si une valeur appartient à un tableau
key -- Retourne une clé d'un tableau associatif
krsort -- Trie un tableau en sens inverse et suivant les clés
ksort -- Trie un tableau suivant les clés
list -- Transforme une liste de variables en tableau
natcasesort -- Tri d'un tableau avec l'algorithme à "ordre naturel" insensible à la casse
natsort -- Tri d'un tableau avec l'algorithme à "ordre naturel"
next -- Avance le pointeur interne d'un tableau
pos -- Retourne l'élément courant d'un tableau
prev -- Recule le pointeur courant de tableau
range -- Crée un tableau contenant un intervalle d'éléments
reset -- Remet le pointeur interne de tableau au début
rsort -- Trie en ordre inverse
shuffle -- Mélange les éléments d'un tableau
sizeof -- Alias de count()
sort -- Trie un tableau
uasort -- Trie un tableau en utilisant une fonction de comparaison personnalisée
uksort -- Trie un tableau par ses clés en utilisant une fonction de comparaison définie par l'utilisateur
usort -- Trie un tableau en utilisant une fonction de comparaison personnalisée

Précédent | Sommaire | Suivant
virtual | Niveau supérieur | array_change_key_case


array_change_key_case

(PHP 4 >= 4.2.0)

array_change_key_case -- Change la casse des clés du tableau

Description

array array_change_key_case ( array input [, int case])

array_change_key_case() modifie les clés du tableau input, et force leur type. Le paramètre optionnel case permet de forcer les chaînes de caractères en majuscules CASE_UPPER ou minuscules CASE_LOWER. La valeur par défaut est CASE_LOWER. Cette fonction laissera les clés numériques inchangées.

Exemple 1. Exemple avec array_change_key_case()

<?php
  $input_array = array("PrEmIEr" => 1, "SecOnd" => 2);
  print_r(array_change_key_case($input_array, CASE_UPPER));
?>

L'exemple ci-dessus va afficher :

Array
(
    [PREMIER] => 1
    [SECOND] => 2
)

Précédent | Sommaire | Suivant
Tableaux | Niveau supérieur | array_chunk


array_chunk

(PHP 4 >= 4.2.0)

array_chunk -- Sépare un tableau en tableaux de taille inférieure

Description

array array_chunk ( array input, int size [, bool preserve_keys])

array_chunk() sépare le tableau input en plusieurs tableaux de taille size. Il est aussi possible que le dernier tableau ait moins de valeurs. Le résultat est un tableau multidimensionnel, indexé numériquement.

En passant la valeur TRUE au paramètre optionnel preserve_keys, vous pouvez forcer PHP à préserver les clés originales du tableau input. Si vous utilisez la valeur par défaut (FALSE), de nouveaux index numériques seront fournis, commençant à 0.

Exemple 1. Exemple avec array_chunk()

<?php
  $input_array = array('a', 'b', 'c', 'd', 'e');
  print_r(array_chunk($input_array, 2));
  print_r(array_chunk($input_array, 2, TRUE));
?>
L'exemple ci-dessus va afficher :
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)

Précédent | Sommaire | Suivant
array_change_key_case | Niveau supérieur | array_combine


array_combine

(PHP 5 CVS only)

array_combine -- Crée un tableau à partir de deux autres tableaux

Description

array array_combine ( array keys, array values)

array_combine() retourne un array, dont les clés sont les valeurs de keys, et les valeurs sont les valeurs de values.

array_combine() retourne FALSE si le nombre d'éléments de chaque tableau n'est pas égal, ou si les tableaux sont vides.

Exemple 1. Exemple avec array_combine()

<?php
$a = array('vert','rouge','jaune');
$b = array('avocat','pomme','banane');
$c = array_combine($a, $b);

print_r($c);
?>

Le script ci-dessus affichera :

Array
(
    [vert] => avocat
    [rouge] => pomme
    [jaune] => banane
)

Voir aussi
array_merge(),
array_walk() et
array_values().

Précédent | Sommaire | Suivant
array_chunk | Niveau supérieur | array_count_values


array_count_values

(PHP 4 )

array_count_values -- Compte le nombre de valeurs dans un tableau

Description

array array_count_values ( array input)

array_count_values() retourne un tableau contenant les valeurs du tableau input comme clés et leur fréquence comme valeur.

Exemple 1. Exemple avec array_count_values()

<?php
  $array = array(1, "bonjour", 1, "monde", "bonjour");
  print_r(array_count_values($array));
?>

Le résultat du programme ci-dessus est :
Array
(
    [1] => 2
    [bonjour] => 2
    [monde] => 1
)

Note : array_count_values() a été ajoutée en PHP 4.0.

Voir aussi
count(),
array_unique(),
array_values() et
count_chars().

Précédent | Sommaire | Suivant
array_combine | Niveau supérieur | array_diff_assoc


array_diff_assoc

(PHP 4 >= 4.3.0)

array_diff_assoc -- Calcule la différence de deux tableaux, en prenant en compte les clés

Description

array array_diff_assoc ( array array1, array array2 [, array ...])

array_diff_assoc() retourne un tableau contenant les valeurs du tableau array1 qui ne sont présente dans aucun autre argument. Notez que les clés sont utilisées durant la comparaison, contrairement à array_diff().

Exemple 1. Exemple avec array_diff_assoc()

<?php

$array1 = array ("a" => "vert", "b" => "brun", "c" => "bleu", "rouge");
$array2 = array ("a" => "vert", "jaune", "rouge");
$result = array_diff_assoc ($array1, $array2);

/* Le r&eacute;sultat est :

Array
(
    [b] => brun
    [c] => bleu
    [0] => rouge
)

*/

?>

Dans notre exemple ci-dessus, vous pouvez voir que la paire "a" => "vert" est présente dans les deux tableaux, et donc, n'est pas présente dans le résultat de la fonction. Au contraire, la paire 0 => "rouge" est présente dans le résultat, car le second argument "rouge" possède une clé qui est 1.

Les deux valeurs de la paire clé => valeur sont considérées égales uniquement si (string) $elem1 === (string) $elem2. En d'autre termes, une comparaison stricte est faite sur les représentation des index, avec le type chaîne.

Note : Notez bien que cette fonction ne travaille que sur une dimension de tableau. Bien sur, vous pouvez utiliser des sous dimensions de tableau comme ceci : array_diff_assoc($array1[0], $array2[0]);.

Voir aussi
array_diff(),
array_intersect() et
array_intersect_assoc().

Précédent | Sommaire | Suivant
array_count_values | Niveau supérieur | array_diff_uassoc


array_diff_uassoc

(no version information, might be only in CVS)

array_diff_uassoc -- Calcule la différence entre deux tableaux associatifs, à l'aide d'une fonction utilisateur

Description

array array_diff_assoc ( array array1, array array2 [, array ..., callback key_compare_func])

array_diff_uassoc() retourne un array contenant toutes les valeurs de array1 qui ne sont pas présentes dans l'un des autres arguments. Notez que les clefs sont utilisées dans les comparaisons contrairement à array_diff(). Cette comparaison est effectuée par une fonction callback de l'utilisateur. Cette fonction doit retourner un entier plus petit que, égal à, ou plus grand que zéro si le premier argument est respectivement plus petit que, égal au, ou plus grand que le second. Ce comportement est différent de celui de array_diff_assoc() où une fonction interne de comparaison des index est utilisée.

Exemple 1. Exemple avec array_diff_uassoc()

<?php
function key_compare_func($a, $b) {
    if ($a === $b) return 0;
    return ($a > $b)? 1:-1;
}

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");

?>

Le résultat est :

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

Dans notre exemple, vous voyez que la paire "a" => "green" est présente dans les deux tableaux et donc ne figure pas dans le résultat de la fonction. Contrairement à cela, la paire 0 => "red" est dans le résultat car dans le second argument, la clef de "red" est 1.

L'égalité de deux indices est vérifiée par la fonction utilisateur.

Note : Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multi-dimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple, array_diff_uassoc($array1[1], $array2[1], "key_compare_func");.

Voir aussi
array_diff(),
array_diff_assoc(),
array_udiff(),
array_udiff_assoc(),
array_udiff_uassoc(),
array_intersect(),
array_intersect_assoc(),
array_uintersect(),
array_uintersect_assoc() et
array_uintersect_uassoc().

Précédent | Sommaire | Suivant
array_diff_assoc | Niveau supérieur | array_diff


array_diff

(PHP 4 >= 4.0.1)

array_diff -- Calcule la différence entre deux tableaux

Description

array array_diff ( array array1, array array2 [, array ...])

array_diff() retourne un tableau qui contient toutes les valeurs du tableau array1 qui sont absentes de tous les autres arguments. Notez que les clés sont préservées.

Exemple 1. Exemple avec array_diff()

<?php
  $array1 = array ("a" => "vert", "rouge", "bleu", "rouge");
  $array2 = array ("b" => "vert", "jaune", "rouge");
  $result = array_diff ($array1, $array2);
  print_r($result);
?>

Les valeurs multiples dans $array1 seront toutes traitées de la même façon. L'exemple va afficher :

Array
(
    [1] => bleu
)

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

Avertissement

Cette fonction était inutilisable en PHP 4.0.4!

Voir aussi
array_diff_assoc(),
array_intersect() et
array_intersect_assoc().

Précédent | Sommaire | Suivant
array_diff_uassoc | Niveau supérieur | array_fill


array_fill

(PHP 4 >= 4.2.0)

array_fill -- Remplis un tableau avec une même valeur

Description

array array_fill ( int start_index, int num, mixed value)

array_fill() crée un tableau avec num entrées de la valeur value. Les index commençant à la valeur start_index.

Exemple 1. Exemple avec array_fill()

<?php
  $a = array_fill(5, 6, 'banane');
  print_r($a);
?>

$a vaut :
Array
(
    [5] => banane
    [6] => banane
    [7] => banane
    [8] => banane
    [9] => banane
    [10] => banane
)

Voir aussi str_repeat() et range().

Précédent | Sommaire | Suivant
array_diff | Niveau supérieur | array_filter


array_filter

(PHP 4 >= 4.0.6)

array_filter -- Filtre les éléments d'un tableau

Description

array array_filter ( array input [, callback callback])

array_filter() retourne un tableau contenant les éléments du tableau input, filtrés grâce à la fonction callback. Si input est un tableau associatif, les clés sont préservées.

Exemple 1. Exemple avec array_filter()

<?php
function impair($var) {
    return ($var % 2 == 1);
}

function pair($var) {
    return ($var % 2 == 0);
}

$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array (6, 7, 8, 9, 10, 11, 12);

echo "Impairs :\n";
print_r(array_filter($array1, "impair"));
echo "Pairs :\n";
print_r(array_filter($array2, "pair"));
?>

Le programme ci-dessus va afficher :
Impairs :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Pairs :
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

La fonction appelée ne doit pas modifier le tableau lui-même, c'est à dire ajouter ou supprimer une valeur. Si des éléments sont modifiés, le comportement de array_filter() est indéfini.

Si la fonction callback n'est pas fournie, array_filter() va supprimer toutes les entrées de input qui sont égales à FALSE. Voyez conversion en booléen pour plus d'informations.

Exemple 2. array_filter() sans callback

<?php

$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>

Cela va afficher :

Array
(
    [0] => foo
    [2] => -1
)

Voir aussi
array_map(),
array_reduce() et
array_walk().

Précédent | Sommaire | Suivant
array_fill | Niveau supérieur | array_flip


array_flip

(PHP 4 )

array_flip -- Remplace les clés par les valeurs, et les valeurs par les clés

Description

array array_flip ( array trans)

array_flip() retourne un tableau dont les clés sont les valeurs du précédent tableau, et les valeurs sont les clés. array_flip() ne fonctionne que sur des entiers et des chaînes, et affichera une erreur s'il détecte une clé ou une valeur de type invalide (tableau, objet, booléen, nombre à virgule flottante).

Notez bien que les valeurs de trans doivent être des clés valides, c'est à dire qu'elles doivent être des entiers (integer) ou des chaînes de caractères (string). Une alerte sera émise si une valeur a un type qui ne convient pas et la paire en question ne sera pas inversée.

Si une valeur n'est pas unique, seule la dernière clé sera utilisée comme valeur, et toutes les autres seront perdues.

array_flip() retourne FALSE en cas d'échec.

Exemple 1. Exemple avec array_flip()

<?php
  $trans = array_flip ($trans);
  $original = strtr ($str, $trans);
?>

Exemple 2. Exemple avec array_flip() : collision

<?php
  $trans = array ("a" => 1, "b" => 1, "c" => 2);
  $trans = array_flip ($trans);
  print_r($trans);
?>

maintenant $trans vaut :
Array
(
    [1] => b
    [2] => c
)

Voir aussi
array_values(),
array_keys() et
array_reverse().

Précédent | Sommaire | Suivant
array_filter | Niveau supérieur | array_intersect_assoc


array_intersect_assoc

(PHP 4 >= 4.3.0)

array_intersect_assoc -- Calcule l'intersection de deux tableaux avec des tests sur les index

Description

array array_intersect_assoc ( array array1, array array2 [, array ...])

array_intersect_assoc() retourne un tableau contenant toutes les valeurs de array1 qui sont aussi présentes dans tous les autres arguments. Notez que les clés sont utilisées durant la comparaison, contrairement à array_intersect().

Exemple 1. Exemple avec array_intersect_assoc()

<?php
$array1 = array ("a" => "vert", "b" => "brun", "c" => "bleu", "rouge");
$array2 = array ("a" => "vert", "jaune", "rouge");
$result_array = array_intersect_assoc ($array1, $array2);

/* $result_array ressemble &agrave; ceci :

Array
(
    [a] => vert
)

*/
?>

Dans notre exemple, vous pouvez voir que la paire "a" => "vert" est présente dans les deux tableaux, et donc placée dans le dernier tableau. La valeur rouge n'est pas retournée car dans $array1 son index est 2 tandis que dans le tableau $array2, son index est 1.

Les deux valeurs de la paire clé => valeur sont considérées égales uniquement si (string) $elem1 === (string) $elem2. En d'autre termes, une comparaison stricte est faite sur les représentation des index, avec le type chaîne.

Voir aussi array_diff() et array_intersect().

Précédent | Sommaire | Suivant
array_flip | Niveau supérieur | array_intersect


array_intersect

(PHP 4 >= 4.0.1)

array_intersect -- Calcule l'intersection de tableaux

Description

array array_intersect ( array array1, array array2 [, array ...])

array_intersect() retourne un tableau contenant toutes les valeurs de array1 qui sont présentes dans tous les autres arguments. Notez que les clés sont préservées.

Exemple 1. Exemple avec array_intersect()

<?php
  $array1 = array ("a" => "vert", "rouge", "bleu");
  $array2 = array ("b" => "vert", "jaune", "rouge");
  $result = array_intersect ($array1, $array2);
  print_r($result);
?>

$result vaut :
Array
(
    [a] => vert
    [0] => rouge
)

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

Avertissement

Cette fonction était boguée en PHP 4.0.4!

Voir aussi
array_intersect_assoc(),
array_diff() et
array_diff_assoc().

Précédent | Sommaire | Suivant
array_intersect_assoc | Niveau supérieur | array_key_exists


array_key_exists

(PHP 4 >= 4.1.0)

array_key_exists -- Vérifie si une clé existe dans un tableau

Description

bool array_key_exists ( mixed key, array search)

array_key_exists() retourne TRUE s'il existe une clé du nom de key dans le tableau search. key peut être n'importe quelle valeur valide d'index de tableau.

Exemple 1. Exemple avec array_key_exists()

<?php
  $search_array = array("premier" => 1, "second" => 4);
  if (array_key_exists("premier", $search_array)) {
    echo "L'&eacute;l&eacute;ment 'premier' existe dans le tableau";
  }
?>

Note : Cette fonction s'appelait key_exists() en PHP version 4.0.6.

Voir aussi
isset(),
array_keys() et
in_array().

Précédent | Sommaire | Suivant
array_intersect | Niveau supérieur | array_keys


array_keys

(PHP 4 )

array_keys -- Retourne toutes les clés d'un tableau

Description

array array_keys ( array input [, mixed search_value])

array_keys() retourne les clés numériques et littérales du tableau input.

Si l'option search_value est spécifiée, seules les clés ayant cette valeur seront retournées. Sinon, toutes les clés de input sont retournées.

Exemple 1. Exemple avec array_keys()

<?php
  $array = array (0 => 100, "couleur" => "rouge");
  print_r(array_keys ($array));

  $array = array ("bleu", "rouge", "vert", "bleu", "bleu");
  print_r(array_keys ($array, "bleu"));

  $array = array ("couleur" => array("bleu", "rouge", "vert"), "taille" => array("petit", "moyen", "grand"));
  print_r(array_keys ($array));
?>

Le résultat du script d'exemple est :
Array
(
    [0] => 0
    [1] => couleur
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => couleur
    [1] => taille
)

Note : array_keys() a été ajoutée en PHP 4. Ci-dessous, voici une implémentation qui fonctionnera sous PHP 3 :

Exemple 2. Implémentation de array_keys() pour les utilisateurs de PHP 3

<?php
function array_keys ($arr, $term="") {
    $t = array();
    while (list($k,$v) = each($arr)) {
        if ($term && $v != $term) {
            continue;
        }
        $t[] = $k;
    }
    return $t;
}
?>

Voir aussi array_values() et array_key_exists().

Précédent | Sommaire | Suivant
array_key_exists | Niveau supérieur | array_map


array_map

(PHP 4 >= 4.0.6)

array_map -- Applique sur fonction sur des tableaux

Description

array array_map ( mixed callback, array arr1 [, array ...])

array_map() retourne un tableau contenant tous les éléments du tableau arr1, après leur avoir appliqué la fonction callback. Le nombre de paramètres de la fonction callback doit être égal au nombre de tableaux passés dans la fonction array_map().

Exemple 1. Exemple avec array_map()

<?php
  function cube($n) {
      return $n*$n*$n;
  }
  $a = array(1, 2, 3, 4, 5);
  $b = array_map("cube", $a);
?>

Cela conduit à ce que la variable $b contienne :
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Exemple 2. array_map() : utilisation de plusieurs tableaux

<?php
  function parle_espagnol($n, $m) {
      return "Le nombre $n se dit $m en espagnol";
  }

  function map_espagnol($n, $m) {
   return array($n => $m);
  }

  $a = array(1, 2, 3, 4, 5);
  $b = array("uno", "dos", "tres", "cuatro", "cinco");
  $c = array_map("parle_espagnol", $a, $b);
  print_r($c);
?>

Cela va afficher :
// Contenu de $c
Array
(
    [0] => Le nombre 1 se dit uno en espagnol
    [1] => Le nombre 2 se dit dos en espagnol
    [2] => Le nombre 3 se dit tres en espagnol
    [3] => Le nombre 4 se dit cuatro en espagnol
    [4] => Le nombre 5 se dit cinco en espagnol
)

// Contenu de $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

Généralement, lors de l'utilisation de plusieurs tableaux, ils doivent être d'égale longueur, car la fonction de callback est appliquée de manière similaire à tous les tableaux. Si les tableaux sont de tailles inégales, les plus petits seront complétés avec des éléments vides.

Une utilisation intéressante de cette fonction est la construction de tableaux de tableaux, facilement réalisée en passant la valeur NULL comme nom de fonction de callback.

Exemple 3. Création d'un tableau de tableaux

<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array("un", "deux","trois","quatre","cinq");

$d = array_map(null, $a, $b, $c, $d);
print_r($d);
?>

Le programme ci-dessus va afficher :
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
            [3] => un
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
            [3] => deux
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
            [3] => trois
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
            [3] => quatre
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
            [3] => cinq
        )

)

Voir aussi
array_filter(),
array_reduce() et
array_walk().

Précédent | Sommaire | Suivant
array_keys | Niveau supérieur | array_merge_recursive


array_merge_recursive

(PHP 4 >= 4.0.1)

array_merge_recursive -- Combine plusieurs tableaux ensembles, récursivement

Description

array array_merge_recursive ( array array1, array array2 [, array ...])

array_merge_recursive() rassemble tous les éléments de plusieurs tableaux ensembles, en ajoutant les éléments de l'un à la suite des éléments du précédent. array_merge_recursive() retourne le tableau résultant.

Si les tableaux passés en arguments ont les mêmes clés (chaînes de caractères), les valeurs sont alors rassemblées dans un tableau, de manière récursive, de façon à ce que, si l'une de ces valeurs est un tableau elle-même, la fonction la rassemblera avec les valeurs de l'entrée courante. Cependant, si deux tableaux ont la même clé numérique, la dernière valeur n'écrasera pas la précédente, mais sera ajoutée à la fin du tableau.

Exemple 1. Exemple avec array_merge_recursive()

<?php
  $ar1 = array("couleur" => array("favorie" => "rouge"), 5);
  $ar2 = array(10, "couleur" => array("favorie" => "vert", "rouge"));
  $result = array_merge_recursive($ar1, $ar2);
  print_r($result);
?>

Le résultat sera
Array
(
    [couleur] => Array
        (
            [favorie] => Array
                (
                    [0] => rouge
                    [1] => vert
                )

            [0] => rouge
        )

    [0] => 5
    [1] => 10
)

Voir aussi array_merge().

Précédent | Sommaire | Suivant
array_map | Niveau supérieur | array_merge


array_merge

(PHP 4 )

array_merge -- Fusionne plusieurs tableaux

Description

array array_merge ( array array1, array array2 [, array ...])

array_merge() rassemble les éléments de plusieurs tableaux ensembles, en ajoutant les valeurs de l'un à la fin de l'autre. Le résultat est un tableau.

Si les tableaux ont des clés en commun, la dernière valeur rencontrée écrasera l'ancienne. Pour les valeurs numériques, cela n'arrive pas, car alors, les valeurs sont ajoutées en fin de tableau.

Exemple 1. Exemple avec array_merge()

<?php
  $array1 = array ("couleur" => "rouge", 2, 4);
  $array2 = array ("a", "b", "couleur" => "vert", "forme" => "trap&eacute;zo&iuml;de");
  $result = array_merge ($array1, $array2);
  print_r($result);
?>

La $result vaut :
Array
(
    [couleur] => vert
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [forme] => trap&eacute;zo&iuml;de
)

Exemple 2. Exemple avec array_merge()

<?php
  $array1 = array();
  $array2 = array(1 => "data");
  $result = array_merge($array1, $array2);
?>

N'oubliez pas que les index numériques seront renumérotés.
Array
(
    [0] => data
)

Si vous voulez préserver complètement les tableaux, et que vous souhaitez simplement les ajouter les uns aux autres, utilisez l'opérateur + :
<?php
  $array1 = array();
  $array2 = array(1 => "data");
  $result = $array1 + $array2;
?>
Les index numériques seront préservés. D'où le résultat :
Array
(
    [1] => data
)

Note : Les clés communes seront écrasées successivement par les clés identiques suivantes.

Voir aussi array_merge_recursive() et array_combine().

Précédent | Sommaire | Suivant
array_merge_recursive | Niveau supérieur | array_multisort


array_multisort

(PHP 4 )

array_multisort -- Tri multi-dimensionnel

Description

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]])

array_multisort() sert à trier simultanément plusieurs tableaux, ou bien à trier un tableau multi-dimensionnel, suivant l'une ou l'autre de ses dimensions. Les clés sont préservées.

Les tableaux passés en arguments sont traités comme les colonnes d'une table, triées par lignes (un peu comme la clause SQL ORDER BY). Le premier tableau est la clé primaire de tri. Les valeurs du premier tableau qui sont égales, sont triées grâce au tableau suivant, et ainsi de suite...

La structure des arguments de array_multisort() est un peu inhabituelle, mais elle est plus souple. Le premier argument DOIT être un tableau, mais les arguments suivants peuvent être des tableaux ou une ou deux options de tri, prises dans les valeurs suivantes :

Options de tri :

  • SORT_ASC : Tri en ordre ascendant

  • SORT_DESC : Tri en ordre descendant

Options de type de tri:

  • SORT_REGULAR : Comparaison normale des valeurs

  • SORT_NUMERIC : Comparaison numérique des valeurs

  • SORT_STRING : Comparaison alphabétique des valeurs

Une seule option de tri de chaque type peut être appliquée après un tableau. Une option ne s'applique qu'au tableau précédent. Tous les autres sont mis par défaut à SORT_ASC et SORT_REGULAR.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Trier plusieurs tableaux

<?php
  $ar1 = array ("10", 100, 100, "a");
  $ar2 = array (1, 3, "2", 1);
  array_multisort ($ar1, $ar2);
?>

Dans cet exemple, après le tri, le premier tableau contient 10, "a", 100, 100; Le deuxième tableau contient 1, 1, "2", 3. Les entrées du second tableau correspondant aux valeurs jumelles du premier tableau (100 et 100), sont aussi triées.

Exemple 2. Classer un tableau multi-dimensionnel

<?php
  $ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
  array_multisort($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);
?>

Dans cet exemple, après le tri, le premier tableau contient 10, 100, 100, "a" (tri alphabétique, ordre croissant); Le deuxième tableau contient 1, 3, "2", 1 (tri numérique, ordre décroissant).

Précédent | Sommaire | Suivant
array_merge | Niveau supérieur | array_pad


array_pad

(PHP 4 )

array_pad -- Complète un tableau jusqu'à la longueur spécifiée, avec une valeur.

Description

array array_pad ( array input, int pad_size, mixed pad_value)

array_pad() retourne une copie du tableau input complété jusqu'à la taille de pad_size avec la valeur pad_value. Si pad_size est positif, alors le tableau est complété à droite, s'il est négatif, il est complété à gauche. Si la valeur absolue de pad_size est plus petite que la taille du tableau input, alors le tableau n'est pas complété.

Exemple 1. Exemple avec array_pad()

<?php
  $input = array(12, 10, 9);
  $result = array_pad($input, 5, 0);
// Le r&eacute;sultat est array (12, 10, 9, 0, 0)
  $result = array_pad($input, -7, -1);
// Le r&eacute;sultat est array (-1, -1, -1, -1, 12, 10, 9)
  $result = array_pad($input, 2, "noop");
// pas compl&eacute;t&eacute;
?>

Voir aussi array_fill() et range().

Précédent | Sommaire | Suivant
array_multisort | Niveau supérieur | array_pop


array_pop

(PHP 4 )

array_pop -- Dépile un élément de la fin d'un tableau

Description

mixed array_pop ( array array)

array_pop() dépile et retourne le dernier élément du tableau array, le raccourcissant d'un élément. Si array est vide, ou n'est pas un tableau, array_pop() retourne NULL.

Note : Cette fonction remet le pointeur au début du tableau (équivalent de reset()).

Exemple 1. Exemple avec array_pop()

<?php
  $stack = array("orange", "banane", "pomme", "framboise");
  $fruit = array_pop($stack);
  print_r($stack);
  echo $fruit . "\n";
?>

Après ceci, $stack n'a plus que 3 éléments: "orange", "banane" et "pomme" :
Array
(
    [0] => orange
    [1] => banane
    [2] => pomme
)
framboise
tandis que $fruit contient "framboise".

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Voir aussi
array_push(),
array_shift() et
array_unshift().

Précédent | Sommaire | Suivant
array_pad | Niveau supérieur | array_push


array_push

(PHP 4 )

array_push -- Empile un ou plusieurs éléments à la fin d'un tableau

Description

int array_push ( array array, mixed var [, mixed ...])

array_push() considère array comme une pile, et empile les variables passées en paramètres à la fin de array. La longueur du tableau array augmente d'autant. Cela a le même effet que
<?php
  $array[] = $var;
?>
répété pour chaque var.

array_push() retourne le nouveau nombre d'éléments du tableau.

Exemple 1. Exemple avec array_push()

<?php
  $stack = array ("orange", "banane");
  array_push ($stack, "pomme", "bleuet");
  print_r($stack);
?>

$stack vaut alors :
Array
(
    [0] => orange
    [1] => banane
    [2] => pomme
    [3] => bleuet
)

Voir aussi
array_pop(),
array_shift() et
array_unshift().

Précédent | Sommaire | Suivant
array_pop | Niveau supérieur | array_rand


array_rand

(PHP 4 )

array_rand -- Prend une ou plusieurs valeurs, au hasard dans un tableau

Description

mixed array_rand ( array input [, int num_req])

array_rand() est pratique lorsque vous voulez sélectionner une ou plusieurs valeurs au hasard dans un tableau. Le paramètre input est un tableau, et num_req spécifie le nombre de valeurs que vous voulez obtenir (par défaut, c'est 1).

Si vous ne demandez qu'une entrée, array_rand() retourne l'index de la valeur. Sinon, elle retourne un tableau d'index. Cela vous permet de faire une sélection au hasard de clés, ou bien de valeurs.

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Exemple 1. Exemple avec array_rand()

<?php
  srand ((double) microtime() * 10000000);
  $input = array ("Neo", "Morpheus", "Trinit&eacute;e", "Cypher", "Tank");
  $rand_keys = array_rand ($input, 2);
  print $input[$rand_keys[0]]."\n";
  print $input[$rand_keys[1]]."\n";
?>

Voir aussi shuffle().

Précédent | Sommaire | Suivant
array_push | Niveau supérieur | array_reduce


array_reduce

(PHP 4 >= 4.0.5)

array_reduce -- Réduit itérativement un tableau

Description

mixed array_reduce ( array input, callback function [, int initial])

array_reduce() applique itérativement la fonction callback aux éléments du tableau input, de manière à réduire le tableau à une valeur simple. Si l'argument optionnel intial est disponible, il sera utilisé pour initialiser le processus, ou bien comme valeur finale si le tableau est vide.

Exemple 1. Exemple avec array_reduce()

<?php
  function rsum($v, $w) {
    $v += $w;
    return $v;
  }
  function rmul($v, $w) {
    $v *= $w;
    return $v;
  }
  $a = array(1, 2, 3, 4, 5);
  $x = array();
  $b = array_reduce($a, "rsum");
  $c = array_reduce($a, "rmul", 10);
  $d = array_reduce($x, "rsum", 1);
?>

Dans cet exemple, $b contiendra 15, $c contiendra 1200 (= 1*2*3*4*5*10), et $d contiendra 1.

Voir aussi
array_filter(),
array_map(),
array_unique() et
array_count_values().

Précédent | Sommaire | Suivant
array_rand | Niveau supérieur | array_reverse


array_reverse

(PHP 4 )

array_reverse -- Inverse l'ordre des éléments d'un tableau

Description

array array_reverse ( array array [, bool preserve_keys])

array_reverse() prend le tableau array et retourne un nouveau tableau qui contient les mêmes éléments mais dans l'ordre inverse, en préservant les clés si le paramètre preserve_keys vaut TRUE.

Exemple 1. Exemple avec array_reverse()

<?php
  $input = array ("php", 4.0, array ("rouge", "vert"));
  $result = array_reverse ($input);
  $result_keyed = array_reverse ($input, TRUE);
  print_r($result);
  print_r($result_keyed);
?>

Ce code fait que $result et $result_keyed contiennent les mêmes éléments, mais qu'ils diffèrent au niveau des clés. $result et $result_keyed contiennent :
Array
(
    [0] => Array
        (
            [0] => rouge
            [1] => vert
        )

    [1] => 4
    [2] => php
)
Array
(
    [2] => Array
        (
            [0] => rouge
            [1] => vert
        )

    [1] => 4
    [0] => php
)

Note : Le second paramètre preserve_keys a été ajouté en PHP 4.0.3.

Voir aussi array_flip().

Précédent | Sommaire | Suivant
array_reduce | Niveau supérieur | array_search


array_search

(PHP 4 >= 4.0.5)

array_search -- Recherche dans un tableau la clé associée à une valeur

Description

mixed array_search ( mixed needle, array haystack [, bool strict])

array_search() recherche needle dans haystack et retourne la clé associée s'il la trouve, ou FALSE sinon.

Note : Si needle est une chaîne de caractères, la comparaison est effectuée du manière sensible à la casse.

Note : Avant PHP 4.2.0, array_search() retournait NULL en cas d'échec, au lieu de FALSE.

Si le troisième paramètre strict vaut TRUE, alors array_search() s'assurera aussi que le type de needle est le même que celui de la valeur trouvée dans haystack.

Si needle est trouvé plus d'une fois dans haystack, la première clef concordante est retournée. Pour trouver toutes les clefs correspondantes, utilisez plutôt la fonction array_keys() avec le paramètre optionnel search_value.

Exemple 1. Exemple avec array_search()

<?php
$array = array(0 => "blue", 1 => "red", 2 => "green", 3 => "red");

$key = array_search($array, "green"); // $key = 2;
$key = array_search($array, "red");   // $key = 1;
?>

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Voir aussi
array_keys(),
array_values(),
array_key_exists() et
in_array().

Précédent | Sommaire | Suivant
array_reverse | Niveau supérieur | array_shift


array_shift

(PHP 4 )

array_shift -- Dépile un élément au début d'un tableau

Description

mixed array_shift ( array array)

array_shift() extrait la première valeur d'un tableau et la retourne, en raccourcissant le tableau d'un élément, et en déplaçant tous les éléments vers le bas. Si array est vide, ou n'est pas un tableau, array_shift() retourne NULL.

Note : Cette fonction remet le pointeur au début du tableau (équivalent de reset()).

Exemple 1. Exemple avec array_shift()

<?php
  $stack = array ("orange", "banane", "pomme", "bleuet");
  $fruit = array_shift ($stack);
  print_r($stack);
?>

$stack contient encore trois éléments :
Array
(
    [0] => banane
    [1] => pomme
    [2] => bleuet
)
et orange a été placé dans $fruit.

Voir aussi
array_unshift(),
array_push() et
array_pop().

Précédent | Sommaire | Suivant
array_search | Niveau supérieur | array_slice


array_slice

(PHP 4 )

array_slice -- Extrait une portion de tableau

Description

array array_slice ( array array, int offset [, int length])

array_slice() retourne une série d' élément du tableau array commençant à l'offset offset et représentant length éléments.

Si offset est positif, la série commencera à cet offset dans le tableau array. Si offset est négatif, cette série commencera à l'offset offset mais en commençant à la fin du tableau array.

Si length est fourni et positif, alors la série retournée aura autant d'éléments. Si length est fourni et négatif, alors la série contiendra les éléments depuis l'offset offset jusqu'à length éléments en partant de la fin. Si length est omis, la séquence lira tous les éléments du tableau, depuis l'offset précisé jusqu'à la fin du tableau.

Exemple 1. Exemples avec array_slice()

<?php
$input = array ("a", "b", "c", "d", "e");

$output = array_slice ($input, 2);      // retourne "c", "d" et "e"
$output = array_slice ($input, 2, -1);  // retourne "c", "d"
$output = array_slice ($input, -2, 1);  // retourne "d"
$output = array_slice ($input, 0, 3);   // retourne "a", "b" et "c"
?>

Voir aussi array_splice() et unset().

Précédent | Sommaire | Suivant
array_shift | Niveau supérieur | array_splice


array_splice

(PHP 4 )

array_splice -- Efface et remplace une portion de tableau

Description

array array_splice ( array input, int offset [, int length [, array replacement]])

array_splice() supprime les éléments désignés par offset et length du tableau input et les remplace par les éléments du tableau replacement, si ce dernier est présent.

Si offset est positif, la série commencera à cet offset dans le tableau input. Si offset est négatif, cette série commencera à l'offset offset mais en commençant à la fin du tableau input.

Si length est donné et positif, alors la série aura autant d'éléments. Si length est donné et négatif, les éléments seront pris dans l'ordre inverse. Si length est omis, la séquence lira tous les éléments du tableau, depuis l'offset offset jusqu'à la fin du tableau. Conseil : pour supprimer tous les éléments du tableau depuis offset jusqu'à la fin, même si un tableau de remplacement replacement est spécifié, utilisez count($input) à la place de length.

Si replacement est précisé, alors les éléments supprimés sont remplacés par les éléments de ce tableau. Si l'offset et length sont tels que la taille du tableau ne change pas, alors les éléments du tableau de remplacement replacement sont insérés à partir de l'offset offset.

Conseil : si le tableau de remplacement ne contient qu'un seul élément, il n'est pas obligatoire de forcer le type en tableau avec array(), à moins que cette variable ne soit elle-même un tableau.

Les codes suivants sont équivalents :

Tableau 1. Equivalents de array_splice()

array_push($input, $x, $y) | array_splice($input, count($input), 0, array($x, $y))
array_pop($input) | array_splice($input, -1)
array_shift($input) | array_splice($input, -1)
array_unshift($input, $x, $y) | array_splice($input, 0, 0, array($x, $y))
$a[$x] = $y | array_splice($input, $x, 1, $y)

array_splice() retourne le tableau des éléments supprimés.

Exemple 1. Exemples avec array_splice()

<?php
$input = array ("rouge", "vert", "bleu", "jaune");
array_splice ($input, 2);
// $input vaut array ("rouge", "vert")

$input = array ("rouge", "vert", "bleu", "jaune");
array_splice ($input, 1, -1);
// $input vaut array ("rouge", "jaune")

$input = array ("rouge", "vert", "bleu", "jaune");
array_splice ($input, 1, count($input), "orange");
// $input vaut array ("rouge", "orange")

$input = array ("rouge", "vert", "bleu", "jaune");
array_splice ($input, -1, 1, array("black", "marron"));
// $input vaut array ("rouge", "vert",
//          "bleu", "black", "marron")
?>

Voir aussi
array_slice(),
unset() et
array_merge().

Précédent | Sommaire | Suivant
array_slice | Niveau supérieur | array_sum


array_sum

(PHP 4 >= 4.0.4)

array_sum -- Calcule la somme des valeurs du tableau

Description

mixed array_sum ( array array)

array_sum() retourne la somme des valeurs du tableau, sous forme d'un entier ou d'un nombre à virgule flottante.

Exemple 1. Exemple avec array_sum()

$a = array(2, 4, 6, 8);
echo "sum(a) = ".array_sum($a)."\n";

$b = array("a"=>1.2,"b"=>2.3,"c"=>3.4);
echo "sum(b) = ".array_sum($b)."\n";

Le résultat de ce script sera :
sum(a) = 20
sum(b) = 6.9

Note : Dans les versions de PHP antérieure à la version 4.0.6, cette fonction modifiez le tableau passé en argument et convertissez ses arguments en chaînes de caractères (ce qui conduisait généralement à 0).

Précédent | Sommaire | Suivant
array_splice | Niveau supérieur | array_udiff_assoc


array_udiff_assoc

(no version information, might be only in CVS)

array_udiff_assoc -- Calcule la différence entre des tableaux avec vérification sur les index. Les données sont comparées en utilisant une fonction callback

Description

array array_udiff_assoc ( array array1, array array2 [, array ..., callback data_compare_func])

array_udiff_assoc() retourne un tableau contenant toutes les valeurs de array1 qui ne sont présentes dans aucun autre des arguments. Notez que les clefs sont utilisées dans les comparaisons contrairement à array_diff() et array_udiff(). La comparaison des données est effectuée en utilisant une fonction callback fournie par l'utilisateur. Ce comportement est différent de celui de array_diff_assoc() qui utilise une fonction de comparaison interne.

Exemple 1. Exemple avec array_udiff_assoc()

<?php
class cr {
    private $priv_member;
    function cr($val) {
        $this->priv_member = $val;
    }

    static function comp_func_cr($a, $b) {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr( 3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>

Le résultat est :

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

Dans notre exemple, vous voyez que la paire "1" => new cr(4) est présente dans les deux tableaux et donc absente du tableau résultant.

Pour la comparaison, la fonction callback de l'utilisateur est utilisée. Cette fonction doit retourner un entier inférieur, égal ou supérieur à zéro si le premier argument est respectivement plus petit, égal ou plus grand que le second.

Note : Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multi-dimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple, array_udiff_assoc($array1[1], $array2[1], "compare_func");.

Voir aussi
array_diff(),
array_diff_assoc(),
array_diff_uassoc(),
array_udiff(),
array_udiff_uassoc(),
array_intersect(),
array_intersect_assoc(),
array_uintersect(),
array_uintersect_assoc() et
array_uintersect_uassoc().

Précédent | Sommaire | Suivant
array_sum | Niveau supérieur | array_udiff_uassoc


array_udiff_uassoc

(no version information, might be only in CVS)

array_udiff_uassoc -- Calcule la différence de deux tableaux associatifs, avec une fonction utilisateur

Description

array array_udiff_uassoc ( array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func])

array_diff_uassoc() retourne un array contenant toutes les valeurs de array1 qui ne sont pas présentes dans l'un des autres arguments. Notez que les clefs sont utilisées dans les comparaisons contrairement à array_diff() et array_udiff(). Cette comparaison est effectuée par une fonction callback de l'utilisateur : data_compare_func. Ce comportement est différent de celui de array_diff_assoc() qui utilise une fonction interne pour les comparaisons. La comparaisons des clefs (indices) est effectuée par la fonction callback key_compare_func. Ce comportement est différent de celui de array_udiff_assoc(), vu que cette dernière utilise une fonction interne pour comparer les indices.

Exemple 1. Exemple avec array_udiff_uassoc()

<?php
class cr {
    private $priv_member;
        function cr($val) {
        $this->priv_member = $val;
    }
    static function comp_func_cr($a, $b) {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }
    static function comp_func_key($a, $b) {
        if ($a === $b) return 0;
        return ($a > $b)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr( 3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr","comp_func_key"));
print_r($result);
?>

Le résultat est :

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

Dans notre exemple, vous voyez que la paire "1" => new cr(4) est présente dans les deux tableaux et donc, absente du tableau résultant. Gardez en tête que vous devez fournir deux fonctions callback.

Pour la comparaison, la fonction callback de l'utilisateur est utilisée. Cette fonction doit retourner un entier inférieur, égal ou supérieur à zéro si le premier argument est respectivement plus petit, égal ou plus grand que le second.

Note : Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multi-dimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");.

Voir aussi
array_diff(),
array_diff_assoc(),
array_diff_uassoc(),
array_udiff(),
array_udiff_assoc(),
array_intersect(),
array_intersect_assoc(),
array_uintersect(),
array_uintersect_assoc() et
array_uintersect_uassoc().

Précédent | Sommaire | Suivant
array_udiff_assoc | Niveau supérieur | array_udiff


array_udiff

(no version information, might be only in CVS)

array_udiff -- Calcule la différence entre deux tableaux en utilisant une fonction callback pour comparer les données

Description

array array_udiff ( array array1, array array2 [, array ..., callback data_compare_func])

array_udiff() retourne un tableau contenant toutes les valeurs de array1 qui ne sont pas présents dans les autres arguments. Notez que les clefs sont préservées. Pour la comparaison des données, la fonction data_compare_function est utilisée. Cette fonction doit retourner un entier plus petit que, égal à, ou plus grand que zéro si le premier argument est respectivement plus petit que, égal au, ou plus grand que le second. Ce comportement est différent de celui de array_diff() où une fonction interne de comparaison des données est utilisée.

Exemple 1. Exemple avec array_udiff()

<?php
class cr {
    private $priv_member;
        function cr($val) {
        $this->priv_member = $val;
    }
    static function comp_func_cr($a, $b) {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr( 3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>

Le résultat est :

Array
(
    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )

)

Note : Deux éléments sont considérés égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne est la même.

Note : Notez que cette fonction ne vérifie qu'une seule dimension d'un tableau multi-dimensionnel. Vous pouvez, bien sûr, tester une dimension particulière en utilisant par exemple array_udiff($array1[0], $array2[0], "data_compare_func");.

Voir aussi
array_diff(),
array_diff_assoc(),
array_diff_uassoc(),
array_udiff_assoc(),
array_udiff_uassoc(),
array_intersect(),
array_intersect_assoc(),
array_uintersect(),
array_uintersect_assoc() et
array_uintersect_uassoc().

Précédent | Sommaire | Suivant
array_udiff_uassoc | Niveau supérieur | array_unique


array_unique

(PHP 4 >= 4.0.1)

array_unique -- Dédoublonne un tableau

Description

array array_unique ( array array)

array_unique() prend le tableau array et retourne un nouveau tableau, complètement dédoublonné.

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

Avertissement

Cette fonction était inutilisable en PHP 4.0.4!

Notez que les clés sont préservées. array_unique() conserve la clé de la première valeur rencontrée, et ignore toutes les suivantes.

Exemple 1. Exemple avec array_unique()

<?php
  $input = array ("a" => "vert", "rouge", "b" => "vert", "bleu", "rouge");
  $result = array_unique ($input);
  print_r($result);
?>

Cela va afficher :
Array
(
    [a] => vert
    [0] => rouge
    [1] => bleu
)

Exemple 2. array_unique() et les types de valeurs

<?php
  $input = array (4,"4","3",4,3,"3");
  $result = array_unique ($input);
  var_dump($result);
?>

Le résultat du programme sera (PHP 4.0.6) :
array(2) {
  [3]=>
  int(4)
  [4]=>
  int(3)
}

Précédent | Sommaire | Suivant
array_udiff | Niveau supérieur | array_unshift


array_unshift

(PHP 4 )

array_unshift -- Empile un ou plusieurs éléments au début d'un tableau

Description

int array_unshift ( array array, mixed var [, mixed ...])

array_unshift() ajoute les éléments passés en argument au début du tableau array. Notez que les éléments sont ajoutés comme un tout, et qu'ils restent dans le même ordre.

array_unshift() retourne le nouveau nombre d'éléments du tableau array.

Exemple 1. Exemples avec array_unshift()

<?php
  $queue = array ("orange", "banane");
  array_unshift ($queue, "pomme", "framboise");
  print_r($queue);
?>

$queue vaut :
Array
(
    [0] => pomme
    [1] => framboise
    [2] => orange
    [3] => banane
)

Voir aussi
array_shift(),
array_push() et
array_pop().

Précédent | Sommaire | Suivant
array_unique | Niveau supérieur | array_values


array_values

(PHP 4 )

array_values -- Retourne les valeurs d'un tableau

Description

array array_values ( array input)

array_values() retourne les valeurs du tableau input et indexe numériquement le tableau.

Exemple 1. Exemples avec array_values()

<?php
  $array = array ("taille" => "XL", "couleur" => "vert");
  print_r(array_values ($array));
?>

Cet exemple affiche :
Array
(
    [0] => XL
    [1] => vert
)

Note : array_values() a été ajoutée en PHP 4. Ci-dessous, voici une implémentation pour ceux qui utilisent toujours PHP 3.

Exemple 2. array_values() pour les utilisateurs PHP 3

<?php
function array_values ($arr) {
    $t = array();
    while (list($k, $v) = each ($arr)) {
        $t[] = $v;
    }
    return $t;
}
?>

Voir aussi array_keys().

Précédent | Sommaire | Suivant
array_unshift | Niveau supérieur | array_walk


array_walk

(PHP 3>= 3.0.3, PHP 4 )

array_walk -- Exécute une fonction sur chacun des membres d'un tableau.

Description

bool array_walk ( array array, callback function [, mixed userdata])

array_walk() exécute la fonction func avec chaque élément du tableau arr. Les éléments sont passés en tant que premier argument de la fonction func. func doit être une fonction définie par l'utilisateur, et non pas une fonction native PHP. Vous ne pouvez pas utiliser array_walk() directement avec str2lower(), il faut absolument passer par une fonction utilisateur. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Si func a besoin de plus d'un argument, une alerte sera générée pour chaque appel de func. Ces alertes sont supprimées en ajoutant le suffixe '@' avant l'appel de array_walk() ou simplement en utilisant error_reporting().

Note : Si func doit travailler avec les véritables valeurs du tableau, spécifiez que le premier paramètre de func doit être passé par référence. Alors, les éléments seront directement modifiés dans le tableau.

Note : Passer les clés et userdata à func a été ajouté en PHP 4.0.

En PHP 4, reset() doit être appelé si nécessaire, car array_walk() ne reinitialise pas automatiquement le tableau.

Exemple 1. Exemple avec array_walk()

<?&php;
  $fruits = array ("d"=>"citron", "a"=>"orange", "b"=>"banane", "c"=>"pomme");

  function test_alter (&$item1, $key, $prefix) {
    $item1 = "$prefix: $item1";
  }

  function test_print ($item2, $key) {
    echo "$key. $item2<br>\n";
  }

  array_walk ($fruits, 'test_print');
  reset ($fruits);

  array_walk ($fruits, 'test_alter', 'fruit');
  reset ($fruits);

  array_walk ($fruits, 'test_print');
?>

L'affichage de ce script sera :

d. citron<br>
a. orange<br>
b. banane<br>
c. pomme<br>
d. fruit: citron<br>
a. fruit: orange<br>
b. fruit: banane<br>
c. fruit: pomme<br>

Voir aussi each() et list().

Précédent | Sommaire | Suivant
array_values | Niveau supérieur | array


array

(PHP 3, PHP 4 )

array -- Crée un tableau

Description

array array ( [mixed ...])

array() retourne un tableau créé avec les paramètres passés. On peut attribuer un index particulier à une valeur avec l'opérateur =?>.

Note : array() est un élément de langage utilisé pour représenter des tableaux littéraux, et non pas une fonction au sens strict du terme.

La syntaxe "index => valeur", séparée par des virgules, définit les index et leur valeur. Un index peut être une chaîne ou un nombre. Si l'index est omis, un index numérique sera automatiquement généré (commençant à 0). Si l'index est un entier, le prochain index généré prendra la valeur d'index la plus grande + 1. Notez que si deux index identiques sont définis, le dernier remplacera le premier.

L'exemple suivant montre comment créer un tableau à deux dimensions, comment spécifier les index d'un tableau associatif, et comment générer automatiquement des index numériques.

Exemple 1. Exemple avec array()

<?php
$fruits = array (
    "fruits"  => array ("a"=>"orange", "b"=>"banane", "c"=>"pomme"),
    "nombres" => array (1, 2, 3, 4, 5, 6),
    "trous"   => array ("premier", 5 => "second", "troisi&egrave;me")
);

Exemple 2. Index automatique d'un tableau avec array()

<?php
  $array = array( 1, 1, 1, 1,  1, 8=>1,  4=>1, 19, 3=>13);
  print_r($array);
?>

qui affichera :

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)

Notez bien que l'index '3' est défini deux fois, et conserve finalement sa dernière valeur de 13. L'index '4' est défini après l'index '8', et l'index généré suivant (valeur 19) est 9, puisque le plus grand index est alors 8.

Cet exemple crée un tableau dont les index commencent à 1.

Exemple 3. Tableau d'index commençant à 1

<?php
  $firstquarter  = array(1 => 'Janvier', 'F&eacute;vrier', 'Mars');
  print_r($firstquarter);
?>

qui affichera :

Array
(
    [1] => Janvier
    [2] => F&eacute;vrier
    [3] => Mars
)

Voir aussi
array_pad(),
list() et
range().

Précédent | Sommaire | Suivant
array_walk | Niveau supérieur | arsort


arsort

(PHP 3, PHP 4 )

arsort -- Trie un tableau en ordre inverse

Description

void arsort ( array array [, int sort_flags])

arsort() trie un tableau de telle manière que la corrélation entre les index et les valeurs soit conservée. L'usage principal est lors de tri de tableaux associatifs où l'ordre des éléments est important.

Exemple 1. Exemple avec arsort()

<?php
  $fruits = array("d"=>"papaye","a"=>"orange","b"=>"banane","c"=>"ananas");
  arsort ($fruits);
  for (reset ($fruits); $key = key($fruits); next($fruits)) {
    echo "fruits[$key] = ".$fruits[$key]."\n";
  }
?>
Cet exemple va afficher:
fruits[d] = papaye
fruits[a] = orange
fruits[b] = banane
fruits[c] = ananas
 Les fruits ont été triés en ordre alphabétique inverse, et leurs index respectifs ont été conservés.

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().

Voir aussi
asort(),
rsort(),
ksort() et
sort().

Précédent | Sommaire | Suivant
array | Niveau supérieur | asort


asort

(PHP 3, PHP 4 )

asort -- Trie un tableau en ordre

Description

void asort ( array array [, int sort_flags])

asort() trie un tableau de telle manière que la corrélation entre les index et les valeurs soit conservée. L'usage principal est lors de tri de tableaux associatifs où l'ordre des éléments est important.

Exemple 1. Exemple avec asort()

<?php
  $fruits = array(  "d"=>"papaye",
                    "a"=>"orange",
                    "b"=>"banane",
                    "c"=>"ananas");
  asort($fruits);
  for(reset($fruits); $key = key($fruits); next($fruits)) {
    echo "fruits[$key] = ".$fruits[$key]."\n";
  }
?>
Cet exemple va afficher:
fruits[c] = ananas
fruits[b] = banane
fruits[a] = orange
fruits[d] = papaye
 Les fruits ont été triés par ordre alphabétique, et leurs index respectifs ont été conservés.

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().

Voir aussi
arsort(),
rsort(),
ksort() et
sort().

Précédent | Sommaire | Suivant
arsort | Niveau supérieur | compact


compact

(PHP 4 )

compact -- Crée un tableau contenant les variables et leur valeur

Description

array compact ( mixed varname [, mixed ...])

compact() accepte différents paramètres. Les paramètres peuvent être des variables contenant des chaînes, ou un tableau de chaînes, qui peut contenir d'autres tableaux de noms, que compact() traitera récursivement.

Pour chacun des arguments, compact() recherche une variable avec une variable de même nom dans la table courante des symboles, et l'ajoute dans le tableau, de manière à avoir la relation nom => 'valeur de variable'. En bref, c'est le contraire de la fonction extract(). compact() retourne le tableau ainsi créé.

Exemple 1. Exemple avec compact()

<?php
  $ville = "Montr&eacute;al";
  $province = "Qu&eacute;bec";
  $evenement = "Conf&eacute;rence PHP Qu&eacute;bec";
  $location_vars = array("ville", "province");
  $result = compact("evenement", $location_vars);
?>

Après ce programme, $result contiendra :
Array
(
    [evenement] => Conf&eacute;rence PHP Qu&eacute;bec
    [ville] => Montr&eacute;al
    [province] => Qu&eacute;bec
)

Voir aussi extract().

Précédent | Sommaire | Suivant
asort | Niveau supérieur | count


count

(PHP 3, PHP 4 )

count -- Compte le nombre d'éléments d'une variable

Description

int count ( mixed var [, int mode])

count() retourne le nombre d'éléments dans var, qui est généralement un tableau (et tout le reste n'aura qu'un élément).

Si var n'est pas un tableau, 1 sera retourné (exception : count(NULL) égale 0).

Note : Le paramètre optionnel mode est disponible depuis PHP 4.2.0.

Si le paramètre optionnel mode vaut COUNT_RECURSIVE (ou 1), count() va compter récursivement les tableaux. C'est particulièrement pratique pour compter le nombre d'éléments d'un tableau. La valeur par défaut pour mode est 0.

Avertissement

count() peut retourner 0 pour une variable qui n'a pas été affectée, ou pour un tableau vide. Utilisez plutôt isset() pour tester si la variable existe.

Reportez vous à la section sur les Tableaux du manuel, pour plus de détails sur le fonctionnement des tableaux en PHP.

Exemple 1. Exemple avec count()

<?php
  $a[0] = 1;
  $a[1] = 3;
  $a[2] = 5;
  $result = count ($a);
// $result == 3

  $b[0] = 7;
  $b[5] = 9;
  $b[10] = 11;
  $result = count ($b);
// $result == 3;
?>

Exemple 2. Exemple récursif avec count() (PHP >= 4.2.0)

<?php
$food = array( 'fruits'  => array('orange', 'banane', 'pommes'),
               'legumes'  => array('carotte', 'chou','pois'));

// count r&eacute;cursif
echo count($food, COUNT_RECURSIVE); // affiche 8

// count normal
echo count($food);                  // affiche 2

?>

Note : sizeof() est un alias de count().

Voir aussi
is_array(),
isset() et
strlen().

Précédent | Sommaire | Suivant
compact | Niveau supérieur | current


current

(PHP 3, PHP 4 )

current -- Transforme une variable en tableau

Description

mixed current ( array array)

Chaque tableau entretient un pointeur interne, qui est initialisé lorsque le premier élément est inséré dans le tableau.

current() ne fait que retourner l'élément courant pointé par le pointeur interne du tableau array. current() ne déplace pas le pointeur. Si le pointeur est au-delà du dernier élément de la liste, current() retourne FALSE.

Avertissement

Si le tableau des éléments vides ou des zéros (0 ou "", la chaîne vide) alors current() retournera FALSE pour ces éléments. Il est donc impossible de déterminer si vous êtes réellement à la fin de la liste en utilisant la fonction current(). Pour passer en revue proprement un tableau qui peut contenir des éléments vides ou des zéros, utilisez la fonction each().

Exemple 1. Exemple avec current()

<?php
$transport = array('pied', 'velo', 'voiture', 'avion');
$mode = current($transport); // $mode = 'pied';
$mode = next($transport);    // $mode = 'velo';
$mode = current($transport); // $mode = 'velo';
$mode = prev($transport);    // $mode = 'pied';
$mode = end($transport);     // $mode = 'avion';
$mode = current($transport); // $mode = 'avion';
?>

Voir aussi
end(),
key(),
next(),
prev() et
reset().

Précédent | Sommaire | Suivant
count | Niveau supérieur | each


each

(PHP 3, PHP 4 )

each -- Retourne chaque paire clé/valeur d'un tableau

Description

array each ( array array)

each() retourne la paire clé/valeur courante du tableau array et avance le pointeur de tableau. Cette paire est retournée dans un tableau de 4 éléments, avec les clés 0, 1, key, et value. Les éléments 0 et key contiennent le nom de la clé et, et 1 et value contiennent la valeur.

Si le pointeur interne de tableau est au-delà de la fin du tableau, each() retourne FALSE.

Exemple 1. Exemples avec each()

<?php
  $foo = array("ghislain", "damien", "didou", "guillaume", "jim", "christophe");
  $bar = each($foo);
  print_r($bar);
?>

$bar contient maintenant les paires suivantes :
Array
(
    [1] => ghislain
    [value] => ghislain
    [0] => 0
    [key] => 0
)
<?php
  $foo = array( "Mehdi" => "Didou","Damien" => "Dams");
  $bar = each($foo);
  print_r($bar);
?>

$bar contient maintenant les paires suivantes :
Array
(
    [1] => Didou
    [value] => Didou
    [0] => Mehdi
    [key] => Mehdi
)

each() est typiquement utilisé en conjonction avec list() pour passer en revue un tableau. Par exemple, avec $_POST :

Exemple 2. Passer en revue $_POST avec each()

echo "Valeurs transmises via la m&eacute;thode POST :<br />\n";
reset ($_POST);
while (list ($key, $val) = each ($_POST)) {
    echo "$key => $val<br />\n";
}

Après chaque each(), le pointeur de tableau est déplacé au prochain élément, ou sur le dernier élément, lorsqu'on arrive à la fin.

Voir aussi
key(),
list(),
current(),
reset(),
next() et
prev().

Précédent | Sommaire | Suivant
current | Niveau supérieur | end


end

(PHP 3, PHP 4 )

end -- Positionne le pointeur de tableau en fin de tableau

Description

mixed end ( array array)

end() déplace le pointeur interne du tableau array jusqu'au dernier élément.

Exemple 1. Exemple avec end()

<?php

  $fruits = array('pomme','banane','myrtille');

  print end($fruits); // myrtille

?>

Voir aussi
current(),
each(),
prev(),
next() et
reset().

Précédent | Sommaire | Suivant
each | Niveau supérieur | extract


extract

(PHP 3>= 3.0.7, PHP 4 )

extract -- Importe les variables dans la table des symboles

Description

int extract ( array var_array [, int extract_type [, string prefix]])

extract() sert à exporter un tableau vers la table des symboles. Elle prend un tableau associatif var_array, crée les variables dont les noms sont les index de ce tableau, et leur affecte la valeur associée. Pour chaque paire clé/valeur, extract() crée une variable, avec les paramètres extract_type et prefix.

Note : Depuis la version 4.0.5, extract() retourne le nombre de variables extraites.

Note : EXTR_IF_EXISTS et EXTR_PREFIX_IF_EXISTS ont été introduites en PHP version 4.2.0.

Note : EXTR_REFS a été introduite en PHP 4.3.0.

extract() vérifie l'existence de la variable avant de la créer. Le traitement des collisions est déterminé par extract_type. Ce paramètre peut prendre une des valeurs suivantes :

EXTR_OVERWRITE

Lors d'une collision, réécrire la variable existante.

EXTR_SKIP

Lors d'une collision, ne pas réécrire la variable existante.

EXTR_PREFIX_SAME

Lors d'une collision, ajouter le préfixe prefix, et créer une nouvelle variable.

EXTR_PREFIX_ALL

Ajouter le préfixe prefix, et créer une nouvelle variable.

EXTR_PREFIX_INVALID

Préfixer uniquement les variables aux noms invalides ou numériques avec le préfixe prefix. Ceci a été ajouté en PHP 4.0.5.

EXTR_IF_EXISTS

Ecrase la variable uniquement si elle existe déjà dans la table des symboles, et sinon, ne rien faire. Ceci est pratique pour définir une liste de variables valides, puis d'extraire du tableau les valeurs que vous avez déjà définies grâce à $_REQUEST, par exemple. Cette option a été ajoutée en PHP 4.2.0.

EXTR_PREFIX_IF_EXISTS

Ne crée que des variables préfixées, si la version non préfixée de la même variable existe dans la table des symboles courante. Cette option a été ajoutée en PHP 4.2.0.

EXTR_REFS

Extrait les variables sous forme de références. Cela signifie que les valeurs des variables importées font toujours référence aux valeurs des variables d'origine dans le paramètre var_array. Vous pouvez utiliser cette option seule, ou bien la combiner avec d'autres option avec l'opérateur OR, dans le paramètre extract_type. Cette option a été ajoutée en PHP 4.3.0.

Si extract_type est omis, extract() utilise EXTR_OVERWRITE par défaut.

Notez que prefix n'est nécessaire que pour les valeurs de extract_type suivantes : EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID ou EXTR_PREFIX_IF_EXISTS. Le résultat préfixé n'est pas un nom de variable valide, il ne sera pas importé dans la table des symboles.

extract() retourne le nombre de variables réellement importées dans la table des symboles.

Une utilisation possible de la fonction extract() est l'exportation vers la table des symboles de tableaux de variables retournés par wddx_deserialize().

Exemple 1. Exemple avec extract()

<?php
/* Supposons que $var_array est un tableau retourn&eacute;
   par wddx_deserialize() */
  $taille = "grand";
  $var_array = array("couleur" => "bleu",
                     "taille"  => "moyen",
                     "forme" => "sphere");
  extract($var_array, EXTR_PREFIX_SAME, "wddx");
  print "$couleur, $taille, $forme, $wddx_taille\n";
?>

L'exemple ci-dessus affiche :
bleu, grand, sphere, moyen

La variable $taille n'a pas été réécrite, car on avait spécifié le paramètre EXTR_PREFIX_SAME, qui a permis la création $wddx_size. Si EXTR_SKIP avait été utilisé, alors $wddx_size n'aurait pas été créé. Avec EXTR_OVERWRITE, $taille aurait pris la valeur "moyen", et avec EXTR_PREFIX_ALL, les variables créées seraient $wddx_couleur, $wddx_taille et $wddx_forme.

Vous devez utiliser un tableau associatif. Un tableau indexé numériquement ne produira aucun résultat, à moins que vous n'utilisiez l'option EXTR_PREFIX_ALL ou EXTR_PREFIX_INVALID.

Voir aussi compact().

Précédent | Sommaire | Suivant
end | Niveau supérieur | in_array


in_array

(PHP 4 )

in_array -- Indique si une valeur appartient à un tableau

Description

bool in_array ( mixed needle, array haystack [, bool strict])

in_array() recherche needle dans haystack et retourne TRUE s'il s'y trouve, ou FALSE sinon.

Le troisième paramètre strict est optionnel. S'il vaut TRUE alors in_array() vérifiera aussi que le types du paramètre needle correspond au type de la valeur trouvée dans haystack.

Note : Si needle est une chaîne, la comparaison est faîte en tenant compte de la casse.

Note : Dans les versions antérieure à 4.2.0, needle ne pouvait pas être un tableau.

Exemple 1. Exemple avec in_array()

<?php
  $os = array ("Mac", "NT", "Irix", "Linux");
  if (in_array ("Linux", $os)) {
    print "Trouv&eacute; Linux";
  }
  if (in_array ("mac", $os)) {
    print "Trouv&eacute; mac";
  }
?>

La seconde condition échoue, car in_array() est sensible à la casse. Le script retourne :
Trouv&eacute; Linux

Exemple 2. Exemple avec in_array() et le mode strict

<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, TRUE))
    echo "'12.4'  a ÈtÈ trouvÈ avec recherche stricte\n";
if (in_array(1.13, $a, TRUE))
    echo "1.13  a ÈtÈ trouvÈ avec recherche stricte\n";
?>

Ce script va afficher :
1.13 a ÈtÈ trouvÈ avec recherche stricte

Exemple 3. Exemple avec in_array() et deux tableaux en paramètres

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array ('p', 'h'), $a))
    echo "'ph' a ÈtÈ trouvÈ\n";
if (in_array(array ('f', 'i'), $a))
    echo "'fi' a ÈtÈ trouvÈ\n";
if (in_array('o', $a))
    echo "'o' a ÈtÈ trouvÈ\n";
?>

Cela affichera :

'ph' a ÈtÈ trouvÈ
'o' a ÈtÈ trouvÈ

Voir aussi
array_search(),
array_key_exists() et
isset().

Précédent | Sommaire | Suivant
extract | Niveau supérieur | key


key

(PHP 3, PHP 4 )

key -- Retourne une clé d'un tableau associatif

Description

mixed key ( array array)

key() retourne l'index de la clé courante dans un tableau.

Voir aussi current() et next().

Précédent | Sommaire | Suivant
in_array | Niveau supérieur | krsort


krsort

(PHP 3>= 3.0.13, PHP 4 )

krsort -- Trie un tableau en sens inverse et suivant les clés

Description

int krsort ( array array [, int sort_flags])

krsort() trie un tableau en ordre inverse et suivant les clés, en maintenant la correspondance entre les clés et les valeurs. Cette fonction est pratique pour les tableaux associatifs.

Exemple 1. Exemple avec krsort()

<?php
  $fruits = array("d"=>"papaye","a"=>"orange","b"=>"banane","c"=>"ananas");
  ksort($fruits);
  for(reset($fruits); $key = key($fruits); next($fruits)) {
    echo "fruits[$key] = ".$fruits[$key]."\n";
  }
?>
Cet exemple va afficher :
fruits[a] = orange
fruits[b] = banane
fruits[c] = ananas
fruits[d] = papaye

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().

Voir aussi
array-multisort(),
arsort(),
asort(),
ksort(),
natsort(),
natcasesort(),
rsort(),
sort(),
uasort(),
uksort() et
usort().

Précédent | Sommaire | Suivant
key | Niveau supérieur | ksort


ksort

(PHP 3, PHP 4 )

ksort -- Trie un tableau suivant les clés

Description

int ksort ( array array [, int sort_flags])

ksort() trie un tableau suivant les clés, en maintenant la correspondance entre les clés et les valeurs. Cette fonction est pratique pour les tableaux associatifs.

Exemple 1. Exemple avec ksort()

<?php
  $fruits = array("d"=>"papaye","a"=>"orange","b"=>"banane","c"=>"ananas");
  ksort($fruits);
  reset($fruits);
  while (list ($key, $val) = each ($fruits)) {
    echo "$key => $val\n";
  }
?>
Cet exemple va afficher :
a => orange
b => banane
c => ananas
d => papaye

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().

Voir aussi
array-multisort(),
arsort(),
asort(),
krsort(),
natsort(),
natcasesort(),
rsort(),
sort(),
uasort(),
uksort() et
usort().

Note : Le second paramètre a été ajouté en PHP 4.0.

Précédent | Sommaire | Suivant
krsort | Niveau supérieur | list


list

(PHP 3, PHP 4 )

list -- Transforme une liste de variables en tableau

Description

void list ( mixed ...)

Tout comme array(), list() n'est pas une véritable fonction, mais un élément de langage, qui permet d'assigner une série de variables en une seule ligne.

Note : list() fonctionne uniquement avec des tableaux à indexation numérique, et suppose que l'indexation commence à 0.

Exemple 1. Exemple avec list()

<?php

$info = array('caf&eacute;', 'noir', 'cafeine');

// Liste de toutes les variables
list($drink, $color, $power) = $info;
echo "$drink est $color et la $power le rend particulier.\n";

// Liste de certaines variables
list($drink, , $power) = $info;
echo "$drink contient de la $power.\n";

// Ou bien, n'utilisons que le troisi&egrave;me
list( , , $power) = $info;
echo "J'ai besoin de $power!\n";

?>

Exemple 2. Exemple avec list() et MySQL

<table>
 <tr>
  <th>Nom de l'employ&eacute;</th>
  <th>Salaire</th>
 </tr>

<?php

$resultat = mysql_query ("SELECT id, nom, salaire FROM employes",$conn);
while (list ($id, $nom, $salaire) = mysql_fetch_row ($resultat)) {
    echo " <tr>\n".
           "  <td><a href=\"info.php?id=$id\">$nom</a></td>\n".
           "  <td>$salaire</td>\n".
           " </tr>\n";
}

?>
</table>

Avertissement

list() assigne les valeurs en commençant par la valeur la plus à droite. Si vous utiliser ces variables, ce ne sera pas un problème. Mais si vous utilisez des tableaux, vous serez surpris de voir que list() les affecte de droite à gauche.

Exemple 3. Exemple avec list() en tenant compte de l'ordre

<?php

$info = array('caf&eacute;', 'noir', 'cafeine');

list($a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>
Cet exemple donne le résultat suivant (notez l'ordre d'affichage des éléments, en comparaison avec l'ordre dans lequel ils ont été écrits dans la syntaxe de list()) :
array(3) {
  [2]=>
  string(8) "cafeine"
  [1]=>
  string(5) "noir"
  [0]=>
  string(6) "caf&eacute;"
}

Voir aussi
each(),
array() et
extract().

Précédent | Sommaire | Suivant
ksort | Niveau supérieur | natcasesort


natcasesort

(PHP 4 )

natcasesort -- Tri d'un tableau avec l'algorithme à "ordre naturel" insensible à la casse

Description

void natcasesort ( array array)

natcasesort() implémente un algorithme de tri qui traite les chaînes alpha-numériques comme un être humain : c'est ce qui est appelé l'"ordre naturel".

natcasesort() est la version insensible à la casse de natsort(). Voir aussi natsort() pour un exemple illustré.

Pour plus de détails, rendez-vous sur le site de Martin Pool : Natural Order String Comparison.

Voir aussi
sort(),
natsort(),
strnatcmp() et
strnatcasecmp().

Précédent | Sommaire | Suivant
list | Niveau supérieur | natsort


natsort

(PHP 4 )

natsort -- Tri d'un tableau avec l'algorithme à "ordre naturel"

Description

void natsort ( array array)

natsort() implémente un algorithme de tri qui traite les chaînes alpha-numériques comme un être humain : c'est ce qui est appelé l'"ordre naturel". Un exemple de la différence de traitement entre un tel algorithme et un algorithme de tri de chaînes (comme lorsqu'on utilise sort()) est illustré ci-dessous :

Exemple 1. Exemple avec natsort()

<?php
$array1 = $array2 = array ("img12.png", "img10.png", "img2.png", "img1.png");

sort($array1);
echo "Tri standard\n";
print_r($array1);

natsort($array2);
echo "Tri en ordre naturel\n";
print_r($array2);
?>

Le code ci-dessus va afficher :

Tri standard
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)
Tri en ordre naturel
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)
Pour plus de détails, rendez-vous sur le site de Martin Pool : Natural Order String Comparison.

Note : Si vous souhaitez conserver la relation clé/valeur, utilisez plutôt uasort($arr, 'strnatcmp').

Voir aussi
natcasesort(),
strnatcmp() et
strnatcasecmp().

Précédent | Sommaire | Suivant
natcasesort | Niveau supérieur | next


next

(PHP 3, PHP 4 )

next -- Avance le pointeur interne d'un tableau

Description

mixed next ( array array)

next() retourne l'élément suivant du tableau array ou FALSE s'il n'y a plus d'éléments. Le pointeur de interne de tableau est avancé d'un élément.

next() se comporte comme current(), mais avec une différence : il avance le pointeur interne de tableau d'un élément avant de retourner la valeur qu'il pointe. Lorsque le pointeur dépasse le dernier élément, next() retourne FALSE.

Avertissement

Si le tableau contient des éléments vides ou des zéros, next() retournera FALSE pour ces éléments. Pour passer proprement en revue un tableau, il faut utiliser each().

Exemple 1. Exemples avec next()

<?php
$transport = array('pied', 'velo', 'voiture', 'avion');
$mode = current($transport); // $mode = 'pied';
$mode = next($transport);    // $mode = 'velo';
$mode = next($transport);    // $mode = 'voiture';
$mode = prev($transport);    // $mode = 'velo';
$mode = end($transport);     // $mode = 'avion';
?>

Voir aussi
current(),
end(),
prev() et
reset().

Précédent | Sommaire | Suivant
natsort | Niveau supérieur | pos


pos

(PHP 3, PHP 4 )

pos -- Retourne l'élément courant d'un tableau

Description

mixed pos ( array array)

pos() est une fonction alias de current().

Voir aussi
end(),
next(),
prev() et
reset().

Précédent | Sommaire | Suivant
next | Niveau supérieur | prev


prev

(PHP 3, PHP 4 )

prev -- Recule le pointeur courant de tableau

Description

mixed prev ( array array)

prev() repositionne le pointeur interne du tableau array à la dernière place qu'il occupait, ou bien retourne FALSE s'il ne reste plus d'éléments.

Avertissement

Si le tableau contient des éléments vides, prev() retournera FALSE pour ces éléments aussi. Pour passer en revue tous les éléments, utilisez plutôt each().

prev() se comporte exactement comme next(), mais il fait reculer le pointeur plutôt que de l'avancer.

Exemple 1. Exemples avec next()

<?php
$transport = array('pied', 'velo', 'voiture', 'avion');
$mode = current($transport); // $mode = 'pied';
$mode = next($transport);    // $mode = 'velo';
$mode = next($transport);    // $mode = 'voiture';
$mode = prev($transport);    // $mode = 'velo';
$mode = end($transport);     // $mode = 'avion';
?>

Voir aussi
current(),
end(),
next() et
reset().

Précédent | Sommaire | Suivant
pos | Niveau supérieur | range


range

(PHP 3>= 3.0.8, PHP 4 )

range -- Crée un tableau contenant un intervalle d'éléments

Description

array range ( int low, int high [, int step])

range() retourne un tableau contenant tous les entiers depuis low jusqu'à high, inclus. Si low est supérieur à high, la séquence sera en ordre décroissant.

Nouveau paramètre : Le paramètre optionnel step a été ajouté en PHP 5.0.

Si une valeur est donnée au paramètre step, il sera utilisé comme valeur incrémentale entre les éléments de la séquence. step doit être exprimé comme un nombre entier positif. Si il n'est pas spécifié, step vaut par défaut 1.

Exemple 1. Exemple avec range()

<?php
// array(0,1,2,3,4,5,6,7,8,9)
foreach(range(0, 9) as $number) {
    echo $number;
}

// La param&egrave;tre de pas (step) a &eacute;t&eacute; introduit en version 4.4.0
// array(0,10,20,30,40,50,60,70,80,90,100)
foreach(range(0, 100, 10) as $number) {
    echo $number;
}

// L'utilisation des caract&egrave;res a &eacute;t&eacute; introduit en version 4.1.0
// array('a','b','c','d','e','f','g','h','i');
foreach(range('a', 'i') as $letter) {
    echo $letter;
}
// array('c','b','a');
foreach(range('c', 'a') as $letter) {
    echo $letter;
}
?>

Note : Avant la version PHP 4.1.0, la fonction range() ne générait que des séquences d'entiers. Le support des séquences de caractères a été ajouté en PHP 4.1.0.

Attention

Dans les versions de PHP de 4.1.0 à 4.3.2, range() voyait les chaînes numériques comme des chaînes et non comme des entiers. Au lieu de cela, ils étaient utilisés comme séquence de caractères. Par exemple, "4242" était traité comme "4".

Voir aussi shuffle(), array_fill() et foreach.

Précédent | Sommaire | Suivant
prev | Niveau supérieur | reset


reset

(PHP 3, PHP 4 )

reset -- Remet le pointeur interne de tableau au début

Description

mixed reset ( array array)

reset() replace le pointeur de tableau array au premier élément.

reset() retourne la valeur du premier élément.

Voir aussi
current(),
each(),
next() et
prev().

Précédent | Sommaire | Suivant
range | Niveau supérieur | rsort


rsort

(PHP 3, PHP 4 )

rsort -- Trie en ordre inverse

Description

void rsort ( array array [, int sort_flags])

rsort() effectue un tri en ordre décroissant (du plus grand au plus petit).

Exemple 1. Exemple avec rsort()

<?php
  $fruits = array("papaye","orange","banane","ananas");
  rsort($fruits);
  for (reset($fruits); list($key,$value) = each($fruits); ) {
    echo "fruits[$key] = ", $value, "\n";
}
?>
Cet exemple va afficher:
fruits[0] = papaye
fruits[1] = orange
fruits[2] = banane
fruits[3] = ananas
 Les fruits ont été classés dans l'ordre alphabétique inverse.

Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().

Voir aussi
arsort(),
asort(),
ksort(),
sort() et
usort().

Précédent | Sommaire | Suivant
reset | Niveau supérieur | shuffle


shuffle

(PHP 3>= 3.0.8, PHP 4 )

shuffle -- Mélange les éléments d'un tableau

Description

void shuffle ( array array)

shuffle() mélange les éléments du tableau array.

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Exemple 1. Exemple avec shuffle()

<?php
$numbers = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numbers);
while (list (,$number) = each ($numbers)) {
    echo "$number ";
}
?>

Voir aussi
arsort(),
asort(),
ksort(),
rsort(),
sort() et
usort().

Précédent | Sommaire | Suivant
rsort | Niveau supérieur | sizeof


sizeof

sizeof -- Alias de count()

Description

sizeof() est un alias de count().

Précédent | Sommaire | Suivant
shuffle | Niveau supérieur | sort


sort

(PHP 3, PHP 4 )

sort -- Trie un tableau

Description

void sort ( array array [, int sort_flags])

sort() trie le tableau array. Les éléments seront triés du plus petit au plus grand.

Exemple 1. Exemple avec sort()

<?php
  $fruits = array("papaye","orange","banane","ananas");
  sort ($fruits);
  reset ($fruits);
  while (list ($key, $val) = each ($fruits)) {
    echo "fruits[".$key."] = ".$val."\n";
  }
?>
Cet exemple va afficher :
fruits[0] = ananas
fruits[1] = banane
fruits[2] = orange
fruits[3] = papaye
 Les fruits ont été classés dans l'ordre alphabétique.

Le paramètre optionnel sort_flags peut être utilisé pour modifier le comportement de trie en utilisant ces valeurs :

Constantes de type de tri :

  • SORT_REGULAR : compare les éléments normalement

  • SORT_NUMERIC : compare les éléments numériquement

  • SORT_STRING : compare les éléments comme des chaînes de caractères

Note : Le second paramètre a été ajouté en PHP 4.

Voir aussi
arsort(),
asort(),
ksort(),
natsort(),
natcasesort(),
rsort(),
usort(),
array_multisort() et
uksort().

Précédent | Sommaire | Suivant
sizeof | Niveau supérieur | uasort


uasort

(PHP 3>= 3.0.4, PHP 4 )

uasort -- Trie un tableau en utilisant une fonction de comparaison personnalisée

Description

void uasort ( array array, callback cmp_function)

uasort() trie le tableau array en conservant la correspondance entre les index et leurs valeurs. uasort() sert essentiellement lors de tri de tableaux associatifs où l'ordre des éléments est significatif. La fonction de comparaison utilisée cmp_function est définie par l'utilisateur.

Note : Voyez les fonctions usort() et uksort() pour des exemples de tris avec utilisation de fonction personnalisée.

Voir aussi
usort(),
uksort(),
sort(),
asort(),
arsort(),
ksort() et
rsort().

Précédent | Sommaire | Suivant
sort | Niveau supérieur | uksort


uksort

(PHP 3>= 3.0.4, PHP 4 )

uksort -- Trie un tableau par ses clés en utilisant une fonction de comparaison définie par l'utilisateur

Description

void uksort ( array array, callback cmp_function)

uksort() trie les clés du tableau array en utilisant la fonction utilisateur cmp_function. Si un tableau doit être trié avec un critère complexe, il est préférable d'utiliser uksort().

Exemple 1. Exemple avec uksort()

<?php
function compare ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

$a = array (4 => "quatre", 3 => "trois", 20 => "vingt", 10 => "dix");

uksort ($a, "compare");

while (list ($key, $value) = each ($a)) {
    echo "$key: $value\n";
}
?>
Cet exemple affichera: 20: vingt 10: dix 4: quatre 3: trois

Voir aussi
usort(),
uasort(),
sort(),
asort(),
arsort(),
ksort(),
natsort() et
rsort().

Précédent | Sommaire | Suivant
uasort | Niveau supérieur | usort


usort

(PHP 3>= 3.0.3, PHP 4 )

usort -- Trie un tableau en utilisant une fonction de comparaison personnalisée

Description

void usort ( array array, callback cmp_function)

usort() va trier le tableau array avec ses valeurs, en utilisant une fonction définie par l'utilisateur. Si un tableau doit être trié avec un critère complexe, il est préférable d'utiliser cette méthode.

La fonction de comparaison cmp_function doit retourner un entier, qui sera inférieur, égal ou supérieur à zéro suivant que le premier argument est considéré comme plus petit, égal ou plus grand que le second argument. Si les deux arguments sont égaux, leur ordre est indéfini.

Note : Si deux éléments sont égaux, au sens de la fonction cmp_function, leur ordre sera indéfini. Jusqu'en PHP 4.0.6, la fonction de tri leur conserverait leur ordre original, mais le nouvel algorithme introduit en PHP 4.1.0 fait que ce n'est plus le cas, car cela serait trop coûteux.

Exemple 1. Exemple avec usort()

<?php
function compare ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

$a = array (3, 2, 5, 6, 1);

usort ($a, "compare");

while (list ($key, $value) = each ($a)) {
    echo "$key: $value\n";
}
?>
Cet exemple va afficher : 0: 6 1: 5 2: 3 3: 2 4: 1

Note : Evidemment dans ce cas trivial, rsort() serait plus approprié.

Exemple 2. Tri avec usort() sur un tableau multi-dimensionnel

<?php
function compare($a, $b) {
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "citron";
$fruits[1]["fruit"] = "pommes";
$fruits[2]["fruit"] = "raisins";

usort($fruits, "cmp");

while (list ($key, $value) = each ($fruits)) {
    echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>

Lors du tri de tableau multi-dimensionnel, $a et $b contiennent des références sur le premier élément du tableau.

Cet exemple va afficher :

$fruits[0]: raisins
$fruits[1]: pommes
$fruits[2]: citron

Exemple 3. Tri avec usort() sur un objet

<?php
class TestObj {
    var $name;

    function TestObj($name)
    {
        $this->name = $name;
    }

    /* Ceci est une fonction de comparaison statique */
    function cmp_obj($a, $b)
    {
        $al = strtolower($a->name);
        $bl = strtolower($b->name);
        if ($al == $bl) return 0;
        return ($al > $bl) ? +1 : -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

uasort($a, array ("TestObj", "cmp_obj"));

foreach ($a as $item) {
    print $item->name."\n";
}
?>

Cet exemple va afficher :

b
c
d

Voir aussi
uasort(),
uksort(),
sort(),
asort(),
arsort(),
ksort(),
natsort() et
rsort().

Précédent | Sommaire | Suivant
uksort | Niveau supérieur | Aspell [Obs.]


Aspell [Obs.]

Manuel PHP
Précédent Suivant

III. Aspell [Obs.]

Introduction

Les fonctions Aspell vous permettent de vérifier l'orthographe d'un mot, et d'offrir des suggestions de correction. Plusieurs langues sont disponibles, comme le français, l'anglais, l'allemand, le suédois ou le danois.

Note : Cette extension a été retirée de PHP est n'est plus disponible depuis PHP 4.3.0. Si vou voulez utiliser un outil de correction orthographique avec PHP, voyez plutôt pspell. Elle utilise la librairie pspell et fonctionne avec les nouvelles versions de Aspell.

Pré-requis

Aspell fonctionne avec de très vielles versions (jusqu'à la version .27.* ou presque) de la librairie Aspell. Ce module, et ces versions d'Aspell, sont disponibles sur http://aspell.sourceforge.net/.

Installation

En PHP 4, ces fonctions ne sont disponibles que si PHP a été compilé avec l'option --enable-mailparse.

Voir aussi

Voir aussi pspell.

Table des matières
aspell_check_raw -- Vérifie un mot sans en changer la casse et sans essayer de supprimer les espaces aux extrémités. [Obsolète]
aspell_check -- Vérifie un mot [Obsolète]
aspell_new -- Charge un nouveau dictionnaire [Obsolète]
aspell_suggest -- Suggère l'orthographe d'un mot [Obsolète]

Précédent | Sommaire | Suivant
usort | Niveau supérieur | aspell_check_raw


aspell_check_raw

(PHP 3>= 3.0.7, PHP 4 <= 4.2.3)

aspell_check_raw -- Vérifie un mot sans en changer la casse et sans essayer de supprimer les espaces aux extrémités. [Obsolète]

Description

bool aspell_check_raw ( int dictionary_link, string word)

aspell_check_raw() vérifie l'orthographe d'un mot sans en changer la casse, et sans essayer de supprimer les espaces aux extrémités. Elle retourne TRUE si l'orthographe est bonne, et FALSE sinon.

Exemple 1. Exemple avec aspell_check_raw()

<?php
  $aspell_link = aspell_new("french");
  if (aspell_check_raw($aspell_link,"testt")) {
    echo "L'orthographe est OK";
  } else {
    echo "Attention : faute d'orthographe";
  }
?>

Précédent | Sommaire | Suivant
Aspell [Obs.] | Niveau supérieur | aspell_check


aspell_check

(PHP 3>= 3.0.7, PHP 4 <= 4.2.3)

aspell_check -- Vérifie un mot [Obsolète]

Description

bool aspell_check ( int dictionary_link, string word)

aspell_check() vérifie l'orthographe d'un mot et retourne TRUE si l'orthographe est correcte, et FALSE sinon.

Exemple 1. Exemple avec aspell_check()

<?php
  $aspell_link = aspell_new("english");
  if (aspell_check($aspell_link,"testt")) {
    echo "L'orthographe est correcte.";
  } else {
    echo "D&eacute;sol&eacute;, l'orthographe est incorrecte.";
  }
?>

Précédent | Sommaire | Suivant
aspell_check_raw | Niveau supérieur | aspell_new


aspell_new

(PHP 3>= 3.0.7, PHP 4 <= 4.2.3)

aspell_new -- Charge un nouveau dictionnaire [Obsolète]

Description

int aspell_new ( string master [, string personal])

aspell_new() ouvre un nouveau dictionaire, et retourne un identifiant de dictionnaire pour utilisation ultérieure dans les fonctions aspell. aspell_new() retourne FALSE en cas d'erreur.

Exemple 1. Exemple avec aspell_new()

<?php
  $aspell_link = aspell_new("english");
?>

Précédent | Sommaire | Suivant
aspell_check | Niveau supérieur | aspell_suggest


aspell_suggest

(PHP 3>= 3.0.7, PHP 4 <= 4.2.3)

aspell_suggest -- Suggère l'orthographe d'un mot [Obsolète]

Description

array aspell_suggest ( int dictionary_link, string word)

aspell_suggest() retourne un tableau contenant les orthographes possibles d'un mot mal formé.

Exemple 1. Exemple avec aspell_suggest()

<?php
  $aspell_link = aspell_new("french");
  if (!aspell_check($aspell_link,"testt")) {
    $suggestions=aspell_suggest($aspell_link,"testt");
    for($i=0; $i < count($suggestions); $i++) {
       echo "Orthographes envisageables : " . $suggestions[$i] . "<BR>";
    }
  }
?>

Précédent | Sommaire | Suivant
aspell_new | Niveau supérieur | Nombres de grande taille BCMath


Nombres de grande taille BCMath

Manuel PHP
Précédent Suivant

IV. Nombres de grande taille BCMath

Introduction

Cette extension permet de réaliser des calculs sur des nombres de précision arbitraire : la Calculatrice Binaire (Binary Calculator) supporte des nombres de toutes taille et précision, représentés sous forme de chaînes.

Pré-requis

Depuis PHP 4.0.4, libbcmath est distribuée avec PHP. Vous n'avez besoin d'aucune librairie externe pour cette extension.

Installation

En PHP 4, ces fonctions ne sont disponibles que si l'option de configuration --enable-bcmath a été activée lors de la compilation. En PHP 3, ces fonctions ne sont disponibles que si l'option de configuration --disable-bcmath n'a pas été activée lors de la compilation.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
bcmath.scale | 0 | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

bcmath.scale integer

Le nombre de décimales pour toutes les fonctions bcmath.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
bcadd -- Additionne deux nombres de grande taille
bccomp -- Compare deux nombres de grande taille
bcdiv -- Divise deux nombres de grande taille
bcmod -- Retourne le reste d'une division entre nombres de grande taille.
bcmul -- Multiplie deux nombres de grande taille
bcpow -- Elève un nombre à la puissance n-ième.
bcpowmod -- Calcule le reste modulo d'un nombre élevé à une puissance
bcscale -- Détermine le nombre de décimales par défaut
bcsqrt -- Renvoie la racine carrée d'un nombre de grande taille.
bcsub -- Soustrait un nombre de grande taille à un autre.

Précédent | Sommaire | Suivant
aspell_suggest | Niveau supérieur | bcadd


bcadd

(PHP 3, PHP 4 )

bcadd -- Additionne deux nombres de grande taille

Description

string bcadd ( string left_operand, string right_operand [, int scale])

bcadd() additionne left_operand avec l'opérande right_operand et renvoie la somme sous forme de chaîne de caractères. Le paramètre optionnel scale est utilisé pour définir le nombre de chiffres après la virgule dans le résultat.

Exemple 1. Exemple avec bcadd()

<?php

$a = 1.234;
$b = 5;

echo bcadd($a, $b);     // 6
echo bcadd($a, $b, 4);  // 6.2340

?>

Voir aussi bcsub().

Précédent | Sommaire | Suivant
Nombres de grande taille BCMath | Niveau supérieur | bccomp


bccomp

(PHP 3, PHP 4 )

bccomp -- Compare deux nombres de grande taille

Description

int bccomp ( string left_operand, string right_operand [, int scale])

bccomp() compare l'opérande left_operand avec l'opérande right_operand et renvoie le résultat sous forme de valeur numérique (entier). Le paramètre optionnel scale est utilisé pour définir le nombre de chiffres après la virgule utilisés lors de la comparaison. Le résultat est 0 si les deux opérandes sont égaux. Si l'opérande left_operand est plus grand que l'opérande right_operand, le résultat est 1. Si l'opérande left_operand est plus petit que l'opérande right_operand, le résultat est -1.

Précédent | Sommaire | Suivant
bcadd | Niveau supérieur | bcdiv


bcdiv

(PHP 3, PHP 4 )

bcdiv -- Divise deux nombres de grande taille

Description

string bcdiv ( string left_operand, string right_operand [, int scale])

bcdiv() divise l'opérande left_operand par l'opérande right_operand et renvoie le résultat. Le paramètre optionnel scale définit le nombre de chiffres après la virgule dans le résultat.

Voir aussi bcmul().

Précédent | Sommaire | Suivant
bccomp | Niveau supérieur | bcmod


bcmod

(PHP 3, PHP 4 )

bcmod -- Retourne le reste d'une division entre nombres de grande taille.

Description

string bcmod ( string left_operand, string modulus)

bcmod() retourne le reste de la division entre left_operand en utilisant modulus.

Voir aussi bcdiv().

Précédent | Sommaire | Suivant
bcdiv | Niveau supérieur | bcmul


bcmul

(PHP 3, PHP 4 )

bcmul -- Multiplie deux nombres de grande taille

Description

string bcmul ( string left_operand, string right_operand [, int scale])

bcmul() multiplie l'opérande left_operand par l'opérande right_operand et renvoie le résultat. Le paramètre optionnel scale définit le nombre de chiffres après la virgule dans le résultat.

Voir aussi bcdiv().

Précédent | Sommaire | Suivant
bcmod | Niveau supérieur | bcpow


bcpow

(PHP 3, PHP 4 )

bcpow -- Elève un nombre à la puissance n-ième.

Description

string bcpow ( string x, int y [, int scale])

bcpow() élève x à la puissance y. Le paramètre optionnel scale définit le nombre de chiffres après la virgule dans le résultat.

Voir aussi bcpowmod() et bcsqrt().

Précédent | Sommaire | Suivant
bcmul | Niveau supérieur | bcpowmod


bcpowmod

(PHP 5 CVS only)

bcpowmod -- Calcule le reste modulo d'un nombre élevé à une puissance

Description

string bcpowmod ( string x, string y, string modulus [, int scale])

bcpowmod() utilise la méthode d'exponentiation rapide pour élever le nombre x à la puissance y, et en calculant le reste modulo modulus. Le paramètre optionnel scale sert à indiquer le nombre de décimales à utiliser dans le résultat.

Les deux lignes suivantes sont fonctionnellement identiques. La version qui utilise bcpowmod() est bien plus rapide, et accepte des paramètres plus grands.

Exemple 1. Exemple avec bcpowmod()

<?php
$a = bcpowmod($x,$y,$mod);

$b = bcmod(bcpow($x,$y),$mod);

/* $a and $b are equal to each other. */
?>

Note : Comme cette méthode utilise les opérations de modulo, les nombres non naturels risquent de donner des résultats inattendus. Un nombre naturel est un entier positif.

Voir aussi bcpow() et bcmod().

Précédent | Sommaire | Suivant
bcpow | Niveau supérieur | bcscale


bcscale

(PHP 3, PHP 4 )

bcscale -- Détermine le nombre de décimales par défaut

Description

string bcscale ( int scale)

bcscale() définit la précision par défaut pour toutes les fonctions mathématiques sur des nombres de taille arbitraire qui suivent et qui omettent le paramètre scale.

Précédent | Sommaire | Suivant
bcpowmod | Niveau supérieur | bcsqrt


bcsqrt

(PHP 3, PHP 4 )

bcsqrt -- Renvoie la racine carrée d'un nombre de grande taille.

Description

string bcsqrt ( string operand [, int scale])

bcsqrt() renvoie la racine carrée de l'opérande operand. Le paramètre optionnel scale définit le nombre de chiffres après la virgule dans le résultat.

Voir aussi bcpow().

Précédent | Sommaire | Suivant
bcscale | Niveau supérieur | bcsub


bcsub

(PHP 3, PHP 4 )

bcsub -- Soustrait un nombre de grande taille à un autre.

Description

string bcsub ( string left_operand, string right_operand [, int scale])

bcsub() soustrait l'opérande right_operand à l'opérande left_operand et renvoie le résultat sous forme de chaîne de caractères. Le paramètre optionnel scale définit le nombre de chiffres après la virgule dans le résultat.

Exemple 1. Exemple avec bcsub()

<?php

$a = 1.234;
$b = 5;

echo bcsub($a, $b);     // -3
echo bcsub($a, $b, 4);  // -3.7660

?>

Voir aussi bcadd().

Précédent | Sommaire | Suivant
bcsqrt | Niveau supérieur | Compression Bzip2


Compression Bzip2

Manuel PHP
Précédent Suivant

V. Compression Bzip2

Introduction

Les fonctions bzip2 servent à lire et écrire dans les fichiers compressés avec la méthode bzip2 (.bz2). Il est possible de lire et d'écrire de tels fichiers.

Pré-requis

Ce module utilise les fonctions de la librairie bzip2, de Julian Seward pour écrire et lire des fichier bzip2 (.bz2) de manière transparente.

Installation

Le support bzip2 par PHP n'est pas activé par défaut. Vous devez utiliser l'option de configuration --with-bz2[=DIR] lors de la compilation de PHP pour l'activer. Ce module requiert la librairie bzip2/libbzip2, version >= 1.0.x.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension définit un type de ressource : un pointeur de fichier, identifiant un fichier compressé bzip2.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Cet exemple ouvre un fichier temporaire, et écrit une ligne de test, puis il en affiche le contenu.

Exemple 1. Petit exemple avec bzip2

<?php
  $filename = "/tmp/fichier_de_test.bz2";
  $str = "Ceci est une cha&icirc;ne de test.\n";

// ouvre le fichier en &eacute;criture
  $bz = bzopen($filename, "w");

// &eacute;crit une cha&icirc;ne dans le fichier
  bzwrite($bz, $str);

// ferme le fichier
  bzclose($bz);

// ouvre le fichier en lecture
  $bz = bzopen($filename, "r");

// lit 10 caract&egrave;res
  print bzread($bz, 10);

// affiche tout le reste du fichier, puis le ferme
  print bzread($bz);

  bzclose($bz);
?>

Table des matières
bzclose -- Ferme un fichier bzip2
bzcompress -- Compresse une chaîne avec bzip2
bzdecompress -- Décompresse une chaîne bzip2
bzerrno -- Retourne le numéro d'erreur bzip2
bzerror -- Retourne le numéro et le message d'erreur bzip2 dans un tableau
bzerrstr -- Retourne le message d'erreur bzip2
bzflush -- Force l'écriture de toutes les données compressées
bzopen -- Ouvre un fichier compressé avec bzip2
bzread -- Lecture binaire d'un fichier bzip2
bzwrite -- Ecriture binaire dans un fichier bzip2

Précédent | Sommaire | Suivant
bcsub | Niveau supérieur | bzclose


bzclose

(4.0.4 - 4.3.2 only)

bzclose -- Ferme un fichier bzip2

Description

int bzclose ( resource bz)

bzclose() ferme le fichier bzip2 représenté par le pointeur bz.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le pointeur de fichier bz doit être valide, et avoir été ouvert avec bzopen().

Voir aussi bzopen().

Précédent | Sommaire | Suivant
Compression Bzip2 | Niveau supérieur | bzcompress


bzcompress

(4.0.4 - 4.3.2 only)

bzcompress -- Compresse une chaîne avec bzip2

Description

string bzcompress ( string source [, int blocksize [, int workfactor]])

bzcompress() compresse la chaîne source et retourne les données ainsi encodées.

Le paramètre optionnel blocksize spécifie la taille de bloc utilisée durant la compression et doit être un nombre de 1 à 9, sachant que 9 représente la meilleure compression, mais qu'elle utilise plus de ressources pour se faire. blocksize vaut par défaut 4.

Le paramètre optionnel workfactor contrôle le comportement de la compression dans les pires cas de données hautement répétitives. Cette valeur peut aller de 0 à 250 (0 est une valeur spéciale et 30 la valeur par défaut). En dehors de workfactor, le résultat sera le même.

Exemple 1. Exemple avec bzcompress()

<?php
  $str = "donn&eacute;es de test";
  $bzstr = bzcompress($str, 9);
  echo $bzstr;
?>

Voir aussi bzdecompress().

Précédent | Sommaire | Suivant
bzclose | Niveau supérieur | bzdecompress


bzdecompress

(4.0.4 - 4.3.2 only)

bzdecompress -- Décompresse une chaîne bzip2

Description

string bzdecompress ( string source [, int small])

bzdecompress() décompresse la chaîne source, en supposant qu'elle a été compressée avec bzip2, puis la retourne. Si le paramètre optionnel small vaut TRUE, un autre algorithme de décompression sera utilisé : il consomme moins de mémoire (le maximum demandé tombe autour de 2300 ko), mais fonctionne globalement à la moitié de la vitesse. Reportez-vous à la documentation bzip2 pour plus de détails sur cette fonctionnalité.

Exemple 1. Exemple avec bzdecompress()

<?php
    $start_str = "Phrase &grave; compresser";
    $bzstr = bzcompress($start_str);

    echo "Compression : ";
    echo $bzstr;
    echo "\n<br />\n";

    $str = bzdecompress($bzstr);
    echo "D&eacute;compression : ";
    echo $str;
    echo "\n<br />\n";
?>

Voir aussi bzcompress().

Précédent | Sommaire | Suivant
bzcompress | Niveau supérieur | bzerrno


bzerrno

(4.0.4 - 4.3.2 only)

bzerrno -- Retourne le numéro d'erreur bzip2

Description

int bzerrno ( resource bz)

bzerrno() retourne le numéro d'erreur du fichier bz2 représenté par le pointeur bz.

Voir aussi bzerror() et bzerrstr().

Précédent | Sommaire | Suivant
bzdecompress | Niveau supérieur | bzerror


bzerror

(4.0.4 - 4.3.2 only)

bzerror -- Retourne le numéro et le message d'erreur bzip2 dans un tableau

Description

array bzerror ( resource bz)

bzerror() retourne le numéro et le message d'erreur du fichier bz2 représenté par le pointeur bz. bzerror() retourne un tableau associatif.

Exemple 1. Exemple avec bzerror()

<?php
  $error = bzerror($bz);
  echo $error["errno"];
  echo $error["errstr"];
?>

Voir aussi bzerrno() et bzerrstr().

Précédent | Sommaire | Suivant
bzerrno | Niveau supérieur | bzerrstr


bzerrstr

(4.0.4 - 4.3.2 only)

bzerrstr -- Retourne le message d'erreur bzip2

Description

string bzerrstr ( resource bz)

bzerrstr() retourne le message d'erreur du fichier bz2 représenté par le pointeur bz.

Voir aussi bzerrno() et bzerror().

Précédent | Sommaire | Suivant
bzerror | Niveau supérieur | bzflush


bzflush

(4.0.4 - 4.3.2 only)

bzflush -- Force l'écriture de toutes les données compressées

Description

int bzflush ( resource bz)

bzflush() vide les buffers d'écriture du fichier représenté par bz.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi bzread() et bzwrite().

Précédent | Sommaire | Suivant
bzerrstr | Niveau supérieur | bzopen


bzopen

(4.0.4 - 4.3.2 only)

bzopen -- Ouvre un fichier compressé avec bzip2

Description

resource bzopen ( string filename, string mode)

bzopen() ouvre un fichier bzip2 (.bz2) en écriture ou en lecture. filename est le nom du fichier à ouvrir. mode est similaire au même paramètre de la fonction fopen() (`r' pour lecture, `w' pour écriture, etc.).

Si l'ouverture échoue, bzopen() retourne FALSE, sinon, elle retourne un pointeur de fichier.

Exemple 1. Exemple avec bzopen()

<?php
  $file = "/tmp/foo.bz2";
  $bz = bzopen($file, "r") or die("Impossible d'ouvrir $file");

  bzclose($bz);
?>

Voir aussi bzclose().

Précédent | Sommaire | Suivant
bzflush | Niveau supérieur | bzread


bzread

(4.0.4 - 4.3.2 only)

bzread -- Lecture binaire d'un fichier bzip2

Description

string bzread ( resource bz [, int length])

bzread() lit jusqu'à length octets depuis le fichier bzip2, référencé par le pointeur bz. La lecture s'arrête lorsque length octets (non compressés) ont été lus, qu'une erreur est rencontrée, ou bien que la fin du fichier a été atteinte : le premier des trois qui survient. Si le paramètre optionnel length est omis, bzread() lit 1024 octets (non compressés) en même temps.

Exemple 1. Exemple avec bzread()

<?php
  $file = "/tmp/foo.bz2";
  $bz = bzopen($file, "r") or die("Impossible d'ouvrir $file");

  $decompressed_file = '';
  while (!feof($bz)) {
      $decompressed_file .= bzread($bz, 4096);
  }
  bzclose($bz);

  echo "Le contenu de $file est :<br />\n";
  echo $decompressed_file;
?>

Voir aussi
bzwrite(),
feof() and
bzopen().

Précédent | Sommaire | Suivant
bzopen | Niveau supérieur | bzwrite


bzwrite

(4.0.4 - 4.3.2 only)

bzwrite -- Ecriture binaire dans un fichier bzip2

Description

int bzwrite ( resource bz, string data [, int length])

bzwrite() écrit le contenu de la chaîne data dans le fichier bzip2 représenté par bz. Si le paramètre optionnel length est fourni, l'écriture sera arrêtée après l'écriture de length octets (non compressés), ou la fin de la chaîne (le premier qui survient).

Exemple 1. Exemple bzwrite()

<?php
  $str = "donn&eacute;es non compress&eacute;es";
  $bz = bzopen("/tmp/foo.bz2", "w");
  bzwrite($bz, $str, strlen($str));
?>

Voir aussi bzread() et bzopen().

Précédent | Sommaire | Suivant
bzread | Niveau supérieur | Calendrier


Calendrier

Manuel PHP
Précédent Suivant

VI. Calendrier

Introduction

L'extension de calendrier propose une série de fonctions qui simplifient les conversions entre les différents formats de calendrier. La référence est le nombre de jours du calendrier Julien. C'est le nombre de jours depuis une date qui commence bien au-delà des dates les plus reculées dont on a besoin (située en 4000 avant J.C.). Pour convertir une date d'un calendrier à un autre, il faut d'abord la convertir dans ce calendrier, puis convertir le résultat dans le calendrier désiré. Attention, le nombre de jours du calendrier Julien est un système très différent du calendrier Julien! Pour plus d'informations, rendez-vous sur le site de http://www.hermetic.ch/cal_stud/jdn.htm. Pour plus d'informations (en anglais), reportez-vous à http://www.boogle.com/info/cal-overview.html. Les traductions issues de ces pages seront mises entre guillemets.

Installation

Pour faire fonctionner ces fonctions avec PHP, vous devez le compiler avec l'option --enable-calendar.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

CAL_GREGORIAN (entier)

CAL_JULIAN (entier)

CAL_JEWISH (entier)

CAL_FRENCH (entier)

CAL_NUM_CALS (entier)

CAL_DOW_DAYNO (entier)

CAL_DOW_SHORT (entier)

CAL_DOW_LONG (entier)

CAL_MONTH_GREGORIAN_SHORT (entier)

CAL_MONTH_GREGORIAN_LONG (entier)

CAL_MONTH_JULIAN_SHORT (entier)

CAL_MONTH_JULIAN_LONG (entier)

CAL_MONTH_JEWISH (entier)

CAL_MONTH_FRENCH (entier)

Les constantes suivantes sont disponibles depuis PHP 4.3.0 :

CAL_EASTER_DEFAULT (entier)

CAL_EASTER_ROMAN (entier)

CAL_EASTER_ALWAYS_GREGORIAN (entier)

CAL_EASTER_ALWAYS_JULIAN (entier)

Table des matières
cal_days_in_month -- Retourne le nombre de jours dans un mois, pour une année donnée
cal_from_jd -- Convertit le nombre de jours Julien en un calendrier et retourne des détails
cal_info -- Retourne des détails sur un calendrier
cal_to_jd -- Convertit un calendrier en nombre de jours Julien
easter_date -- Retourne un timestamp UNIX pour Pâques, à minuit
easter_days -- Retourne le nombre de jours entre le 21 Mars et Pâques, pour une année donnée.
frenchtojd -- Convertit une date du calendrier français républicain en nombre de jours du calendrier Julien.
gregoriantojd -- Convertit une date grégorienne en nombre de jours du calendrier Julien
jddayofweek -- Retourne le numéro du jour de la semaine.
jdmonthname -- Retourne le nom du mois.
jdtofrench -- Convertit le nombre de jours du calendrier Julien en date du calendrier français républicain
jdtogregorian -- Convertit le nombre de jours du calendrier Julien en date grégorienne.
jdtojewish -- Convertit le nombre de jours du calendrier Julien en date du calendrier juif.
jdtojulian -- Convertit le nombre de jours du calendrier Julien en date du calendrier Julien.
jdtounix -- Convertit un nombre de jours Julien en timestamp UNIX
jewishtojd -- Convertit une date du calendrier juif en nombre de jours du calendrier Julien.
juliantojd -- Convertit le nombre de jours du calendrier Julien en date du calendrier Julien.
unixtojd -- Convertit un timestamp UNIX en nombre de jours Julien

Précédent | Sommaire | Suivant
bzwrite | Niveau supérieur | cal_days_in_month


cal_days_in_month

(PHP 4 >= 4.1.0)

cal_days_in_month -- Retourne le nombre de jours dans un mois, pour une année donnée

Description

int cal_days_in_month ( int calendar, int month, int year)

cal_days_in_month() retourne le nombre de jours dans le mois month de l'année year, pour le calendrier calendar.

Voir aussi jdtounix().

Précédent | Sommaire | Suivant
Calendrier | Niveau supérieur | cal_from_jd


cal_from_jd

(PHP 4 >= 4.1.0)

cal_from_jd -- Convertit le nombre de jours Julien en un calendrier et retourne des détails

Description

array cal_from_jd ( int jd, int calendar)

cal_from_jd() convertit le nombre de jours Julien jd en une date du calendrier calendar. Les valeurs possibles pour calendar sont CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH et CAL_FRENCH.

Voir aussi cal_to_jd().

Précédent | Sommaire | Suivant
cal_days_in_month | Niveau supérieur | cal_info


cal_info

(PHP 4 >= 4.1.0)

cal_info -- Retourne des détails sur un calendrier

Description

array cal_info ( [int calendar])

cal_info() retourne des informations sur le calendrier calendar() spécifié, ou sur tous les calendriers supportés si l'argument calendar est omis.

Les informations de calendriers sont retournés dans un tableau qui contient les éléments calname, calsymbol, month, abbrevmonth et maxdaysinmonth.

Si le paramètre calendar n'est pas spécifié, un tableau représentant tous les calendriers est retourné. Cette fonctionnalité sera disponible en PHP 5.

Précédent | Sommaire | Suivant
cal_from_jd | Niveau supérieur | cal_to_jd


cal_to_jd

(PHP 4 >= 4.1.0)

cal_to_jd -- Convertit un calendrier en nombre de jours Julien

Description

int cal_to_jd ( int calendar, int month, int day, int year)

cal_to_jd() calcule le nombre de jours Juliens pour une date, dans le calendrier calendar. Les valeurs possibles pour calendar sont CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH et CAL_FRENCH.

Voir aussi cal_to_jd().

Précédent | Sommaire | Suivant
cal_info | Niveau supérieur | easter_date


easter_date

(PHP 3>= 3.0.9, PHP 4 )

easter_date -- Retourne un timestamp UNIX pour Pâques, à minuit

Description

int easter_date ( [int year])

easter_date() retourne un timestamp UNIX pour Pâques, à minuit, pour une année donnée. Si l'année n'est pas précisée, c'est l'année en cours qui est utilisée.

Depuis PHP 4.3.0, le paramètre year est optionnel, et prend la valeur de l'année en cours par défaut.

Exemple 1. Exemples avec easter_date()

<?php
echo date( "M-d-Y", easter_date(1999) );        /* "Apr-04-1999" */
echo date( "M-d-Y", easter_date(2000) );        /* "Apr-23-2000" */
echo date( "M-d-Y", easter_date(2001) );        /* "Apr-15-2001" */
?>

Avertissement

easter_date() génère une alerte (Warning) si la date tombe hors de la zone de validité des timestamp UNIX (i.e. avant 1970 ou après 2037).

La date de Pâques a été fixée par le concile de Nicée, en 325 de notre ère, comme étant le dimanche après la première pleine lune qui suit l'équinoxe de printemps. L'équinoxe de printemps est considéré comme étant toujours le 21 mars, ce qui réduit le problème au calcul de la date de la lune pleine qui suit, et le dimanche suivant. L'algorithme fut introduit vers 532, par Dionysius Exiguus. Avec le calendrier Julien, (pour les années avant 1753), un cycle de 19 ans suffit pour connaître les date des phases de la lune. Avec le calendrier grégorien, (à partir des années 1753, conçu par Clavius et Lilius, puis introduit par le pape Grégoire XIII en octobre 1582, et en Grande Bretagne et ses colonies en septembre 1752), deux facteurs de corrections ont été ajoutés pour rendre le cycle plus précis.

(Ce code est basé sur le programme en C de Simon Kershaw, <webmaster@ely.anglican.org>)

Voir easter_days() pour les calculs de date de Pâques avant 1970 et après 2037.

Précédent | Sommaire | Suivant
cal_to_jd | Niveau supérieur | easter_days


easter_days

(PHP 3>= 3.0.9, PHP 4 )

easter_days -- Retourne le nombre de jours entre le 21 Mars et Pâques, pour une année donnée.

Description

int easter_days ( [int year [, int method]])

easter_days() retourne le nombre de jours entre le 21 Mars et Pâques, pour une année donnée. Si l'année n'est pas précisée, l'année en cours est utilisée par défaut.

Depuis PHP 4.3.0, le paramètre year est optionnel, et prend la valeur de l'année en cours par défaut.

Le paramètre method a été introduit en PHP 4.3.0 et permet de calculer les dates de Pâques dans le calendrier Grégorien, entre les années 1582 - 1752, lorsque ce paramètre prend la valeur de CAL_EASTER_ROMAN. Voyez les constantes calendaires pour plus de constantes valides.

easter_days() peut être utilisée à la place de easter_date() pour calculer la date de Pâques, pour les années qui tombent hors de l'intervalle de validité des timestamps UNIX (i.e. avant 1970 ou après 2037).

Exemple 1. Exemple avec easter_days()

<?php
  echo easter_days(1999);        /* 14, i.e. 4 Avril   */
  echo easter_days(1492);        /* 32, i.e. 22 Avril  */
  echo easter_days(1913);        /*  2, i.e. 23 Mars   */
?>

La date de Pâques a été fixée par le concile de Nicée, en 325 de notre ère, comme étant le dimanche après la première pleine lune qui suit l'équinoxe de printemps. L'équinoxe de printemps est considéré comme étant toujours le 21 mars, ce qui réduit le problème au calcul de la date de la lune pleine qui suit, et le dimanche suivant. L'algorithme fut introduit vers 532, par Dionysius Exiguus. Avec le calendrier Julien, (pour les années avant 1753), un cycle de 19 ans suffit pour connaître les date des phases de la lune. Avec le calendrier grégorien, (à partir des années 1753, conçu par Clavius et Lilius, puis introduit par le pape Grégoire XIII en octobre 1582, et en Grande Bretagne et ses colonies en septembre 1752), deux facteurs de corrections ont été ajoutés pour rendre le cycle plus précis.

(Ce code est basé sur le programme en C de Simon Kershaw, <webmaster@ely.anglican.org>)

Voir aussi easter_date().

Précédent | Sommaire | Suivant
easter_date | Niveau supérieur | frenchtojd


frenchtojd

(PHP 3, PHP 4 )

frenchtojd -- Convertit une date du calendrier français républicain en nombre de jours du calendrier Julien.

Description

int frenchtojd ( int month, int day, int year)

frenchtojd() convertit une date du calendrier français républicain en nombre de jours du calendrier Julien.

Ces fonctions convertissent les dates comprises entre l'an 1 et l'an 14 (22 Septembre 1792 à 22 Septembre 1806 en calendrier grégorien). Cela couvre plus que la durée d'existence de ce calendrier.

Précédent | Sommaire | Suivant
easter_days | Niveau supérieur | gregoriantojd


gregoriantojd

(PHP 3, PHP 4 )

gregoriantojd -- Convertit une date grégorienne en nombre de jours du calendrier Julien

Description

int gregoriantojd ( int month, int day, int year)

Intervalle de validité pour le calendrier grégorien : 4714 avant JC à 9999 après JC.A.D.

Bien qu'il soit possible de manipuler des dates jusqu'en 4714 avant JC, une telle utilisation n'est pas significative. En effet, ce calendrier fut créé le 18 octobre 1582 après J.C. (ou 5 octobre 1582 en calendrier grec). Certains pays ne l'acceptèrent que bien plus tard. Par exemple, les britanniques n'y passèrent en 1752, les Russes en 1918 et les Grecs en 1923. La plupart des pays européens utilisaient le calendrier Julien avant le Grégorien.

Exemple 1. Fonctions calendrier

<?php
  $jd = gregoriantojd(10,11,1970);
  echo("$jd\n");
  $gregorian = jdtogregorian($jd);
  echo("$gregorian\n");
?>

Précédent | Sommaire | Suivant
frenchtojd | Niveau supérieur | jddayofweek


jddayofweek

(PHP 3, PHP 4 )

jddayofweek -- Retourne le numéro du jour de la semaine.

Description

mixed jddayofweek ( int julianday, int mode)

jddayofweek() retourne le numéro du jour de la semaine. Peut retourner une chaîne ou un entier, en fonction du mode.

Tableau 1. Modes

Mode | Signification
0 | Retourne le numéro du jour comme un entier (0=dimanche, 1=lundi, etc.)
1 | Retourne une chaîne contenant le nom du jour (anglais grégorien)
2 | Retourne une chaîne contenant le nom abrégé du jour de la semaine (anglais grégorien).

Précédent | Sommaire | Suivant
gregoriantojd | Niveau supérieur | jdmonthname


jdmonthname

(PHP 3, PHP 4 )

jdmonthname -- Retourne le nom du mois.

Description

string jdmonthname ( int julianday, int mode)

jdmonthname() retourne une chaîne contenant le nom du mois. mode indique de quel calendrier dépend ce mois, et quel type de nom doit être retourné.

Tableau 1. Modes de calendrier

Mode | Signification
0 | Grégorien - abrégé
1 | Grégorien
2 | Julien - abrégé
3 | Julien
4 | Juif
5 | Républicain français

Précédent | Sommaire | Suivant
jddayofweek | Niveau supérieur | jdtofrench


jdtofrench

(PHP 3, PHP 4 )

jdtofrench -- Convertit le nombre de jours du calendrier Julien en date du calendrier français républicain

Description

string jdtofrench ( int juliandaycount)

jdtofrench() convertit le nombre de jours du calendrier julien en date du calendrier français républicain.

Précédent | Sommaire | Suivant
jdmonthname | Niveau supérieur | jdtogregorian


jdtogregorian

(PHP 3, PHP 4 )

jdtogregorian -- Convertit le nombre de jours du calendrier Julien en date grégorienne.

Description

string jdtogregorian ( int julianday)

jdtogregorian() convertit le nombre de jours du calendrier Julien en une chaîne contenant une date du calendrier grégorien, au format "mois/jour/année".

Précédent | Sommaire | Suivant
jdtofrench | Niveau supérieur | jdtojewish


jdtojewish

(PHP 3, PHP 4 )

jdtojewish -- Convertit le nombre de jours du calendrier Julien en date du calendrier juif.

Description

string jdtojewish ( int juliandaycount [, bool hebrew [, int fl]])

jdtojewish() convertit le nombre de jours du calendrier Julien en date du calendrier juif.

Les paramètres optionnels hebrew et fl sont disponibles depuis PHP 5.0.0.

Si le paramètre hebrew vaut TRUE, le paramètre fl sera utilisé pour générer une chaîne au format hébreux. Les formats disponibles sont : CAL_JEWISH_ADD_ALAFIM_GERESH, CAL_JEWISH_ADD_ALAFIM et CAL_JEWISH_ADD_GERESHAYIM.

Exemple 1. Exemple avec jdtojewish()

<?php
  echo jdtojewish(gregoriantojd(10,8,2002), true,
       CAL_JEWISH_ADD_GERESHAYIM + CAL_JEWISH_ADD_ALAFIM + CAL_JEWISH_ADD_ALAFIM_GERESH);
?>

Précédent | Sommaire | Suivant
jdtogregorian | Niveau supérieur | jdtojulian


jdtojulian

(PHP 3, PHP 4 )

jdtojulian -- Convertit le nombre de jours du calendrier Julien en date du calendrier Julien.

Description

string jdtojulian ( int julianday)

jdtojulian() convertit le nombre de jours du calendrier Julien en une chaîne contenant la date du calendrier Julien, au format "mois/jour/année".

Précédent | Sommaire | Suivant
jdtojewish | Niveau supérieur | jdtounix


jdtounix

(PHP 4 )

jdtounix -- Convertit un nombre de jours Julien en timestamp UNIX

Description

int jdtounix ( int jday)

jdtounix() retourne un timestamp UNIX correspondant au nombre de jours Julien jday ou FALSEsi jday n'est pas dans l'intervalle de validité de l'époque UNIX. (années grégoriennes entre 1970 et 2037 ou 2440588 <= jday <= 2465342 ).

Voir aussi unixtojd().

Précédent | Sommaire | Suivant
jdtojulian | Niveau supérieur | jewishtojd


jewishtojd

(PHP 3, PHP 4 )

jewishtojd -- Convertit une date du calendrier juif en nombre de jours du calendrier Julien.

Description

int jewishtojd ( int month, int day, int year)

Bien qu'il soit possible de manipuler des dates à partir de l'an 1 (3761 avant J.C.), une telle utilisation a peu de sens.

Le calendrier juif a été utilisé depuis plusieurs dizaines de siècles, mais dans les premiers temps, il n'y avait pas de formule pour déterminer le début du mois. Un nouveau mois commençait quand une nouvelle lune était observée.

Précédent | Sommaire | Suivant
jdtounix | Niveau supérieur | juliantojd


juliantojd

(PHP 3, PHP 4 )

juliantojd -- Convertit le nombre de jours du calendrier Julien en date du calendrier Julien.

Description

int juliantojd ( int month, int day, int year)

Intervalle de validité du calendrier Julien : 4713 avant JC à 9999 après J.C..

Bien qu'il soit possible de manipuler des dates jusqu'en 4713 avant JC, une telle utilisation n'est pas significative. En effet, ce calendrier fut créé en 46 avant J.C., et ses détails ne furent finalisés qu'au plus tôt en 8 après JC, et probablement pas avant le 4ième siècle après JC. De plus, le début de l'année variait suivant les peuples, certains n'acceptant pas janvier comme premier mois de l'année.

Précédent | Sommaire | Suivant
jewishtojd | Niveau supérieur | unixtojd


unixtojd

(PHP 4 )

unixtojd -- Convertit un timestamp UNIX en nombre de jours Julien

Description

int unixtojd ( [int timestamp])

unixtojd() retourne le nombre de jours Julien du timestamp UNIX timestamp (nombre de secondes depuis le 1/1/1970), ou pour le jour courant si timestamp est omis.

Voir aussi jdtounix().

Précédent | Sommaire | Suivant
juliantojd | Niveau supérieur | Paiement CCVS


Paiement CCVS

Manuel PHP
Précédent Suivant

VII. Paiement CCVS

Introduction

Ces fonctions font l'interface avec les API CCVS, vous permettant de travailler directement avec CCVS depuis vos scripts PHP. CCVS est la solution apportée par RedHat au problème de l'intermédiaire, lors du traitement de transactions de cartes de crédit. Il vous permet travailler directement avec les maisons de crédits, via votre boîte *nix et un modem. En utilisant le module CCVS pour PHP, vous pouvez effectuer des transactions avec les cartes de crédits, directement depuis vos scripts PHP via CCVS. La suite vous montrera comment procéder.

Note : CCVS a été abandonné par Red Hat et il n'y a pas de plan pour fournir de nouvelles clés ou du support. Ceux qui recherchent un système de remplacement peuvent regarder du coté de MCVE par Main Street Softworks. C'est une extension similaire à celle-ci, et qui dispose du support PHP.

Installation

Pour activer le support CCVS de PHP, commencez par vérifier votre installation CCVS. Vous devez configurer PHP avec l'option --with-ccvs. Si vous utilisez cette option sans spécifier le chemin de votre installation, PHP essaiera de la trouver à sa position par défaut (/usr/local/ccvs). Si CCVS est installé dans un autre dossier, lancez la configuration avec : --with-ccvs=$ccvs_path, où $ccvs_path est le chemin de votre installation CCVS. Notez bien que CCVS requiert que $ccvs_path/lib et $ccvs_path/include existent, et qu'ils contiennent respectivement cv_api.h et libccvs.a sous include et lib.

De plus, un démon ccvsd doit être disponible sur votre configuration, et qu'il soit accessible à vos scripts PHP. Assurez-vous aussi que l'utilisateur qui exécute les scripts PHP est le même que celui qui a installé CCVS (i.e. si vous avez installé CCVS avec l'utilisateur 'ccvs', vos scripts PHP doivent tourner aussi en 'ccvs').

Voir aussi

RedHat a arrété le support de CCVS. Cependant, un manuel légèrement en retard est disponible à http://redhat.com/docs/manuals/ccvs/.

Table des matières
ccvs_add -- Add data to a transaction
ccvs_auth -- Perform credit authorization test on a transaction
ccvs_command -- Performs a command which is peculiar to a single protocol, and thus is not available in the general CCVS API
ccvs_count -- Find out how many transactions of a given type are stored in the system
ccvs_delete -- Delete a transaction
ccvs_done -- Terminate CCVS engine and do cleanup work
ccvs_init -- Initialize CCVS for use
ccvs_lookup -- Look up an item of a particular type in the database #
ccvs_new -- Create a new, blank transaction
ccvs_report -- Return the status of the background communication process
ccvs_return -- Transfer funds from the merchant to the credit card holder
ccvs_reverse -- Perform a full reversal on an already-processed authorization
ccvs_sale -- Transfer funds from the credit card holder to the merchant
ccvs_status -- Check the status of an invoice
ccvs_textvalue -- Get text return value for previous function call
ccvs_void -- Perform a full reversal on a completed transaction

Précédent | Sommaire | Suivant
unixtojd | Niveau supérieur | ccvs_add


ccvs_add

(4.0.2 - 4.2.3 only)

ccvs_add -- Add data to a transaction

Description

string ccvs_add ( string session, string invoice, string argtype, string argval)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Paiement CCVS | Niveau supérieur | ccvs_auth


ccvs_auth

(4.0.2 - 4.2.3 only)

ccvs_auth -- Perform credit authorization test on a transaction

Description

string ccvs_auth ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_add | Niveau supérieur | ccvs_command


ccvs_command

(4.0.2 - 4.2.3 only)

ccvs_command -- Performs a command which is peculiar to a single protocol, and thus is not available in the general CCVS API

Description

string ccvs_command ( string session, string type, string argval)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_auth | Niveau supérieur | ccvs_count


ccvs_count

(4.0.2 - 4.2.3 only)

ccvs_count -- Find out how many transactions of a given type are stored in the system

Description

int ccvs_count ( string session, string type)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_command | Niveau supérieur | ccvs_delete


ccvs_delete

(4.0.2 - 4.2.3 only)

ccvs_delete -- Delete a transaction

Description

string ccvs_delete ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_count | Niveau supérieur | ccvs_done


ccvs_done

(4.0.2 - 4.2.3 only)

ccvs_done -- Terminate CCVS engine and do cleanup work

Description

string ccvs_done ( string sess)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_delete | Niveau supérieur | ccvs_init


ccvs_init

(4.0.2 - 4.2.3 only)

ccvs_init -- Initialize CCVS for use

Description

string ccvs_init ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_done | Niveau supérieur | ccvs_lookup


ccvs_lookup

(4.0.2 - 4.2.3 only)

ccvs_lookup -- Look up an item of a particular type in the database #

Description

string ccvs_lookup ( string session, string invoice, int inum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_init | Niveau supérieur | ccvs_new


ccvs_new

(4.0.2 - 4.2.3 only)

ccvs_new -- Create a new, blank transaction

Description

string ccvs_new ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_lookup | Niveau supérieur | ccvs_report


ccvs_report

(4.0.2 - 4.2.3 only)

ccvs_report -- Return the status of the background communication process

Description

string ccvs_report ( string session, string type)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_new | Niveau supérieur | ccvs_return


ccvs_return

(4.0.2 - 4.2.3 only)

ccvs_return -- Transfer funds from the merchant to the credit card holder

Description

string ccvs_return ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_report | Niveau supérieur | ccvs_reverse


ccvs_reverse

(4.0.2 - 4.2.3 only)

ccvs_reverse -- Perform a full reversal on an already-processed authorization

Description

string ccvs_reverse ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_return | Niveau supérieur | ccvs_sale


ccvs_sale

(4.0.2 - 4.2.3 only)

ccvs_sale -- Transfer funds from the credit card holder to the merchant

Description

string ccvs_sale ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_reverse | Niveau supérieur | ccvs_status


ccvs_status

(4.0.2 - 4.2.3 only)

ccvs_status -- Check the status of an invoice

Description

string ccvs_status ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_sale | Niveau supérieur | ccvs_textvalue


ccvs_textvalue

(4.0.2 - 4.2.3 only)

ccvs_textvalue -- Get text return value for previous function call

Description

string ccvs_textvalue ( string session)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_status | Niveau supérieur | ccvs_void


ccvs_void

(4.0.2 - 4.2.3 only)

ccvs_void -- Perform a full reversal on a completed transaction

Description

string ccvs_void ( string session, string invoice)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ccvs_textvalue | Niveau supérieur | Support COM pour Windows


Support COM pour Windows

Manuel PHP
Précédent Suivant

VIII. Support COM pour Windows

Les fonctions COM sont uniquement disponibles sur les versions Windows de PHP. Elles ont été ajoutées à partir de PHP 4.0.

Table des matières
COM -- Classe COM
VARIANT -- classe VARIANT
com_addref -- Incrémente le compteur de références
com_get -- Lit la valeur d'une propriété d'un composant COM
com_invoke -- Appelle une méthode d'un composant
com_isenum -- Récupère un IEnumVariant
com_load_typelib -- Charge un Typelib
com_load -- Crée une référence sur un composant COM
com_propget -- Lit la valeur d'un propriété d'un composant COM
com_propput -- Modifie une propriété d'un composant COM
com_propset -- Modifie une propriété d'un composant COM
com_release -- Décrémente le compteur de références
com_set -- Modifie une propriété d'un composant COM

Précédent | Sommaire | Suivant
ccvs_void | Niveau supérieur | COM


COM

(no version information, might be only in CVS)

COM -- Classe COM

Synopsis

$obj = new COM("server.object")

Description

La classe COM fournit un environnement d'intégration des composants (D)COM dans vos scripts PHP.

Methods

string com::com ( string module_name [, string server_name [, int codepage]])

Constructeur de la classe COM. Paramètres :

module_name

nom ou class-id du composant deamndé.

server_name

nom du serveur DCOM, auprès duquel le composant doit être sollicité. Si ce paramètre est NULL, localhost sera utilisé. Pour que les objets DCOM soient accessibles; il faut que com.allow_dcom ait la valeur TRUE dans le fichier php.ini.

codepage

spécifie le code qui est utilisé pour transformer les chaînes de caractères PHP en chaînes unicode, et vice-versa. Les valeurs possibles sont CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 et CP_UTF8.

Exemple 1. Exemple COM (1)

<?php
// démarrage de Word
$word = new COM("word.application") or die("Unable to instanciate Word");
print "Word lancé, version {$word->Version}\n";
//amener Word devant
$word->Visible = 1;
//cree un document vide
$word->Documents->Add();
//Quelques commandes
$word->Selection->TypeText("Ceci est un test...");
$word->Documents[1]->SaveAs("test.doc");
//Fermeture de word
$word->Quit();
//Libération des ressources
$word->Release();
$word = null;
?>

Exemple 2. Exemple COM (2)

<?php
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password");
$rs = $conn->Execute("SELECT * FROM sometable");    // Recordset
$num_columns = $rs->Fields->Count();
echo $num_columns . "\n";
for ($i=0; $i < $num_columns; $i++)
{
    $fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF)
{
    for ($i=0; $i < $num_columns; $i++)
    {
        echo $fld[$i]->value . "\t";
    }
    echo "\n";
    $rowcount++;            // incrémente le nombre de lignes
    $rs->MoveNext();
}
$rs->Close();
$conn->Close();
$rs->Release();
$conn->Release();
$rs = null;
$conn = null;
?>

Précédent | Sommaire | Suivant
Support COM pour Windows | Niveau supérieur | VARIANT


VARIANT

(no version information, might be only in CVS)

VARIANT -- classe VARIANT

Synopsis

$vVar = new VARIANT($var)

Description

Une classe container qui transforme les variables en structures VARIANT.

Methodes

string variant::variant ( [mixed value [, int type [, int codepage]]])

Constructeur VARIANT. Paramètres:

value

valeur initiale. Si omis, un objet VT_EMPTY.

type

spécifie le type d'objet VARIANT contenu. Les valeurs possibles VT_UI1, VT_UI2, VT_UI4, VT_I1, VT_I2, VT_I4, VT_R4, VT_R8, VT_INT, VT_UINT, VT_BOOL, VT_ERROR, VT_CY, VT_DATE, VT_BSTR, VT_DECIMAL, VT_UNKNOWN, VT_DISPATCH et VT_VARIANT. Ces valeurs sont mutuellement exclusives, mais elles peuvent être combinées avec VT_BYREF pour spécifier que c'est une valeur. Si omis le type de value est utilisé. Consultez la librairie MSDN pour plus de détails.

codepage

spécifie le code qui est utilisé pour transformer les chaînes de caractères PHP en chaînes unicode, et vice-versa. Les valeurs possibles sont CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 et CP_UTF8.

Précédent | Sommaire | Suivant
COM | Niveau supérieur | com_addref


com_addref

(4.1.0 - 4.3.2 only)

com_addref -- Incrémente le compteur de références

Description

void com_addref ( void )

com_addref() incrémente le compteur de références.

Précédent | Sommaire | Suivant
VARIANT | Niveau supérieur | com_get


com_get

(PHP 3>= 3.0.3, 4.0.5 - 4.3.2 only)

com_get -- Lit la valeur d'une propriété d'un composant COM

Description

mixed com_get ( resource com_object, string property)

com_get() retourne la valeur de la propriété property du composant COM com_object. com_get() retourne FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
com_addref | Niveau supérieur | com_invoke


com_invoke

(PHP 3>= 3.0.3)

com_invoke -- Appelle une méthode d'un composant

Description

mixed com_invoke ( resource com_object, string function_name [, mixed function parameters, ...])

com_invoke() appelle la méthode function_name du composant COM com_object. com_invoke() retourne FALSE en cas d'erreur, sinon retourne le résultat de la fonction function_name en cas de succès.

Précédent | Sommaire | Suivant
com_get | Niveau supérieur | com_isenum


com_isenum

(4.1.0 - 4.3.2 only)

com_isenum -- Récupère un IEnumVariant

Description

void com_isenum ( object com_module)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
com_invoke | Niveau supérieur | com_load_typelib


com_load_typelib

(4.1.0 - 4.3.2 only)

com_load_typelib -- Charge un Typelib

Description

void com_load_typelib ( string typelib_name [, int case_insensitive])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
com_isenum | Niveau supérieur | com_load


com_load

(PHP 3>= 3.0.3)

com_load -- Crée une référence sur un composant COM

Description

resource com_load ( string module_name [, string server_name])

com_load() crée une nouvelle référence au composant COM module_name, et retourne une référence dessus. com_load() retourne FALSE en cas d'échec.

Précédent | Sommaire | Suivant
com_load_typelib | Niveau supérieur | com_propget


com_propget

(PHP 3>= 3.0.3, 4.0.5 - 4.3.2 only)

com_propget -- Lit la valeur d'un propriété d'un composant COM

Description

mixed com_propget ( resource com_object, string property)

com_propget() est un alias de com_get().

Précédent | Sommaire | Suivant
com_load | Niveau supérieur | com_propput


com_propput

(PHP 3>= 3.0.3, 4.0.5 - 4.3.2 only)

com_propput -- Modifie une propriété d'un composant COM

Description

void com_propput ( resource com_object, string property, mixed value)

com_propput() est un alias de com_set().

Précédent | Sommaire | Suivant
com_propget | Niveau supérieur | com_propset


com_propset

(PHP 3>= 3.0.3, 4.0.5 - 4.3.2 only)

com_propset -- Modifie une propriété d'un composant COM

Description

void com_propset ( resource com_object, string property, mixed value)

com_propset() est un alias de com_propput().

Précédent | Sommaire | Suivant
com_propput | Niveau supérieur | com_release


com_release

(4.1.0 - 4.3.2 only)

com_release -- Décrémente le compteur de références

Description

void com_release ( void )

com_release() décrémente le compteur de références.

Précédent | Sommaire | Suivant
com_propset | Niveau supérieur | com_set


com_set

(PHP 3>= 3.0.3, 4.0.5 - 4.3.2 only)

com_set -- Modifie une propriété d'un composant COM

Description

void com_set ( resource com_object, string property, mixed value)

com_set() remplace la valeur de la propriété property du composante COM com_object par value. com_set() retourne TRUE en cas de succès, et FALSE sinon.

Précédent | Sommaire | Suivant
com_release | Niveau supérieur | Classes et Objets


Classes et Objets

Manuel PHP
Précédent Suivant

IX. Classes et Objets

Introduction

Ces fonctions vous donnent des informations sur les objets et les classes. Vous pouvez lire le nom de la classe qui est instanciée par un objet, ainsi que la liste des membres et des méthodes. En utilisant ces fonctions, vous pouvez non seulement connaitre la classe d'un objet, mais aussi tous ses ascendants (i.e. la classe qui est étendue par une autre classe).

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Dans cet exemple, on définit une classe de base, et une extension. La classe de base définit un légume, s'il est mangeable ou pas et sa couleur. La sous-classe epinard ajoute une méthode pour le cuisiner, et une autre pour savoir s'il est cuisiné.

Exemple 1. Fonctions d'objets : classes.inc

<?php

// classe de base, avec ses membres et ses m&eacute;thodes
class Legume {

    var $edible;
    var $color;

    function Legume( $edible, $color="green" ) {
        $this->edible = $edible;
        $this->color = $color;
    }

    function is_edible() {
        return $this->edible;
    }

    function what_color() {
        return $this->color;
    }

} // fin de la classe Legume

// Extension la classe de base
class Epinard extends Legume {
    var $cuit = FALSE;
    function Epinard() {
        $this->Legume( TRUE, "green" );
    }
    function cuisine() {
        $this->cuit = TRUE;
    }

    function is_cooked() {
        return $this->cooked;
    }

} // fin de la classe Epinard

?>

Lorsqu'on instantie deux objets de ces classes et que l'on affiche leurs informations, on affiche aussi leur héritage. On définit ici des utilitaires qui servent essentiellement à afficher ces informations proprement.

Exemple 2. Fonctions d'objets : test_script.php

<pre>
<?php

include "classes.inc";

// Fonctions utilitaires
function print_vars($obj) {
    $arr = get_object_vars($obj);
    while (list($prop, $val) = each($arr))
        echo "\t$prop = $val\n";
}

function print_methods($obj) {
    $arr = get_class_methods(get_class($obj));
    foreach ($arr as $method)
        echo "\tfonction $method()\n";
}

function class_parentage($obj, $class) {
    if (is_subclass_of($GLOBALS[$obj], $class)) {
        echo "L'objet $obj appartient &agrave; la classe ".get_class($$obj);
        echo " est une sous-classe de $class\n";
    } else {
        echo "L'objet $obj n'est pas une sous-classe de $class\n";
    }
}

// instantie 2 objets

$veggie = new Legume(true,"blue");
$leafy = new Epinard();

// affiche les informations sur ces objets
echo "l&eacute;gume : CLASS ".get_class($veggie)."\n";
echo "feuillues : CLASS ".get_class($leafy);
echo ", PARENT ".get_parent_class($leafy)."\n";

// affiche les propri&eacute;t&eacute;s du l&eacute;gume
echo "\nl&eacute;gumes : Propri&eacute;t&eacute;s\n";
print_vars($veggie);

// et les m&eacute;thodes des feuillus
echo "\nfeuillus : M&eacute;thodes\n";
print_methods($leafy);

  echo "\nParent&eacute;e:\n";
class_parentage("leafy", "Epinard");
class_parentage("leafy", "Legume");
?>
</pre>

Il est important de noter que dans les exemples ci-dessus, les objets $feuilles sont une instance de Epinard qui est une sous-classe de Legume, donc la dernière partie du script va afficher :

[...]
    Parent&eacute;e:
    L'objet feuilles n'est pas une sous classe epinard
    L'objet feuilles est une sous-classe de Legume

Table des matières
call_user_method_array -- Appelle une méthode utilisateur avec un tableau de paramètres
call_user_method -- Appelle une méthode utilisateur d'un objet
class_exists -- Vérifie qu'une classe a été définie
get_class_methods -- Retourne les noms des méthodes d'une classe
get_class_vars -- Retourne les valeurs par défaut des attributs d'une classe.
get_class -- Retourne la classe d'un objet
get_declared_classes -- Liste toutes les classes définies
get_object_vars -- Retourne un tableau associatif des propriétés d'un objet
get_parent_class -- Retourne le nom de la classe d'un objet
is_a -- Retourne TRUE si un objet a pour parent une classe donnée
is_subclass_of -- Détermine si un objet est une sous-classe
method_exists -- Vérifie que la méthode existe pour une classe.

Précédent | Sommaire | Suivant
com_set | Niveau supérieur | call_user_method_array


call_user_method_array

(PHP 4 >= 4.0.5)

call_user_method_array -- Appelle une méthode utilisateur avec un tableau de paramètres

Description

mixed call_user_method_array ( string method_name, object obj [, array paramarr])

call_user_method_array() appelle la méthode method_name de l'object obj, en utilisant les paramètres paramarr, rassemblés sous forme de tableau.

Voir aussi
call_user_func_array(),
call_user_func() et
call_user_method().

Note : call_user_method_array() a été ajoutée en version PHP 4.05.

Précédent | Sommaire | Suivant
Classes et Objets | Niveau supérieur | call_user_method


call_user_method

(PHP 3>= 3.0.3, PHP 4 )

call_user_method -- Appelle une méthode utilisateur d'un objet

Description

mixed call_user_method ( string method_name, object obj [, mixed parameter [, mixed ...]])

call_user_method() appelle la méthode method_name de l'objet obj. Un exemple d'utilisation de cet objet est présenté ci-dessous, où une classe est définie, puis instantiée. On utilise alors call_user_method() pour appeler indirectement les méthodes print_info.

Exemple 1. Exemple avec call_user_method()

<?php
class Country {
    var $NAME;
    var $TLD;

    function Country($name, $tld) {
        $this->NAME = $name;
        $this->TLD = $tld;
    }

    function print_info($prestr="") {
        echo $prestr."Pays : ".$this->NAME."\n";
        echo $prestr."Top Level Domain : ".$this->TLD."\n";
    }
}

$cntry = new Country("Perou","pe");

echo "* Appel de la m&eacute;thode de l'objet directement\n";
$cntry->print_info();

echo "\n* Appel de la m&eacute;thode de l'objet indirectement\n";
call_user_method ("print_info", $cntry, "\t");
?>

Voir aussi
call_user_func_array().
call_user_func() et
call_user_method_array().

Précédent | Sommaire | Suivant
call_user_method_array | Niveau supérieur | class_exists


class_exists

(PHP 4 )

class_exists -- Vérifie qu'une classe a été définie

Description

bool class_exists ( string class_name)

class_exists() retourne TRUE si la classe class_name a été définie, et FALSEsinon.

Précédent | Sommaire | Suivant
call_user_method | Niveau supérieur | get_class_methods


get_class_methods

(PHP 4 )

get_class_methods -- Retourne les noms des méthodes d'une classe

Description

array get_class_methods ( mixed class_name)

get_class_methods() retourne un tableau contenant les noms des méthodes de la classe class_name.

Note : A partir de PHP 4.0.6, vous pouvez spécifier l'objet lui-même, au lieu de sa classe class_name. Par exemple :

<?php
  $class_methods = get_class_methods($my_class);
?>

Exemple 1. Exemple avec get_class_methods()

<?php
class maclasse {
    // constructeur
    function maclasse() {
        return(TRUE);
    }
    // m&eacute;thode 1
    function myfunc1() {
        return(TRUE);
    }
    // m&eacute;thode 2
    function mafunc2() {
        return(TRUE);
    }
}
$ma_classe = new maclasse();

$class_methods = get_class_methods(get_class($ma_classe));

foreach ($class_methods as $method_name) {
    echo "$method_name\n";
}
?>

Va afficher :

maclasse
myfunc1
mafunc2

Voir aussi get_class_vars() et get_object_vars()

Précédent | Sommaire | Suivant
class_exists | Niveau supérieur | get_class_vars


get_class_vars

(PHP 4 )

get_class_vars -- Retourne les valeurs par défaut des attributs d'une classe.

Description

array get_class_vars ( string class_name)

get_class_vars() retourne un tableau contenant les valeurs par défaut des attributs de la classe class_name.

Note : Avant PHP 4.2.0, les variables de classe non initialisées n'étaient pas rapportées par get_class_vars().

Exemple 1. Exemple avec get_class_vars()

<?php

class myclass {

    var $var1; // this has no default value...
    var $var2 = "xyz";
    var $var3 = 100;

    // constructeur
    function myclass() {
        return(TRUE);
    }

}

$my_class = new myclass();

$class_vars = get_class_vars(get_class($my_class));

foreach ($class_vars as $name => $value) {
    echo "$name : $value\n";
}

?>

va afficher :

// Avant PHP 4.2.0
var2 : xyz
var3 : 100

// Depuis PHP 4.2.0
var1 :
var2 : xyz
var3 : 100

Précédent | Sommaire | Suivant
get_class_methods | Niveau supérieur | get_class


get_class

(PHP 4 )

get_class -- Retourne la classe d'un objet

Description

string get_class ( object obj)

get_class() retourne la classe de l'objet obj. get_class() retourne FALSE si obj n'est pas un objet.

Note : get_class() retourne un nom de classe utilisateur, en minuscules. Une classe définie par une extension PHP est retournée dans sa notation originale.

Exemple 1. Exemple avec get_class()

<?php

class foo {
    function foo() {
    // un peu de code
    }

    function name() {
        echo "Mon nom est " , get_class($this) , "\n";
    }
}

// create an object
$bar = new foo();

// external call
echo "Son nom est " , get_class($bar) , "\n";

// internal call
$bar->name();

?>

Le résultat sera :

Son nom est foo
Mon nom est foo

Voir aussi
gettype(),
get_parent_class() et
is_subclass_of()

Voir aussi
get_parent_class(),
gettype() et
is_subclass_of().

Précédent | Sommaire | Suivant
get_class_vars | Niveau supérieur | get_declared_classes


get_declared_classes

(PHP 4 )

get_declared_classes -- Liste toutes les classes définies

Description

array get_declared_classes ( void )

get_declared_classes() retourne un tableau contenant la liste des fonctions déclarées dans le script courant.

Note : En PHP 4.0.1pl2, trois classes supplémentaires sont retournées, au début de ce tableau : stdClass (définie dans Zend/zend.c), OverloadedTestClass (définie dans ext/standard/basic_functions.c) et Directory (définie dans ext/standard/dir.c).

Précédent | Sommaire | Suivant
get_class | Niveau supérieur | get_object_vars


get_object_vars

(PHP 4 )

get_object_vars -- Retourne un tableau associatif des propriétés d'un objet

Description

array get_object_vars ( object obj)

get_object_vars() retourne un tableau associatif contenant les propriétés de l'objet obj. Les clés du tableau sont les noms des propriétés de l'objet.

Note : Dans les versions antérieures à la PHP 4.2.0, si les variables déclarées dans la classe de l'objet obj, n'avaient pas été assignées, elles n'apparaissaient pas dans le tableau retourné. Depuis PHP 4.2.0, elles apparaissent, avec la valeur NULL.

Exemple 1. Exemple avec get_object_vars()

<?php
class Point2D {
    var $x, $y;
    var $label;

    function Point2D($x, $y) {
        $this->x = $x;
        $this->y = $y;
    }

    function setLabel($label) {
        $this->label = $label;
    }

    function getPoint() {
        return array("x" => $this->x,
                     "y" => $this->y,
                     "label" => $this->label);
    }
}

// "$label" est d&eacute;clar&eacute; mais non d&eacute;fini
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));

$p1->setLabel("point #1");
print_r(get_object_vars($p1));

?>
Le script ci-dessus va afficher :
Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] =>
 )

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

Voir aussi get_class_methods() et get_class_vars()

Précédent | Sommaire | Suivant
get_declared_classes | Niveau supérieur | get_parent_class


get_parent_class

(PHP 4 )

get_parent_class -- Retourne le nom de la classe d'un objet

Description

string get_parent_class ( mixed obj)

get_parent_class() retourne le nom de la classe de l'objet obj.

Si le paramètre obj est une chaîne, get_parent_class() retourne le nom de la classe parente. Cette fonctionnalité a été ajoutée en PHP 4.0.5.

Exemple 1. Exemple avec get_parent_class()

<?php

class papa {
    function papa() {
    // un peu de code
    }
}

class child extends papa {
    function child() {
        echo "je suis le fils de " , get_parent_class($this) , "\n";
    }
}

class child2 extends papa {
    function child2() {
        echo "Je suis aussi le papa de " , get_parent_class('child2') , "\n";
    }
}

$foo = new child();
$bar = new child2();

?>

The output is:

je suis le fils de papa
Je suis aussi le papa de papa

Voir aussi get_class() et is_subclass_of().

Voir aussi get_class() et is_subclass_of().

Précédent | Sommaire | Suivant
get_object_vars | Niveau supérieur | is_a


is_a

(PHP 4 >= 4.2.0)

is_a -- Retourne TRUE si un objet a pour parent une classe donnée

Description

bool is_a ( object object, string class_name)

is_a() retourne TRUE si l'objet object a pour classe class_name, ou bien si class_name est un de ses parents. is_a() retourne FALSE sinon.

Voir aussi
get_class(),
get_parent_class() et
is_subclass_of().

Précédent | Sommaire | Suivant
get_parent_class | Niveau supérieur | is_subclass_of


is_subclass_of

(PHP 4 )

is_subclass_of -- Détermine si un objet est une sous-classe

Description

bool is_subclass_of ( object object, string class_name)

is_subclass_of() retourne TRUE si l'objet object est une sous-classe de class_name, FALSE sinon.

Voir aussi get_class() et get_parent_class()

Précédent | Sommaire | Suivant
is_a | Niveau supérieur | method_exists


method_exists

(PHP 4 )

method_exists -- Vérifie que la méthode existe pour une classe.

Description

bool method_exists ( object object, string method_name)

method_exists() retourne TRUE si la méthode method_name a été définie pour la classe object, et sinon, retourne FALSE.

Précédent | Sommaire | Suivant
is_subclass_of | Niveau supérieur | ClibPDF


ClibPDF

Manuel PHP
Précédent Suivant

X. ClibPDF

Introduction

L'extension ClibPDF vous permet de créer des documents PDF avec PHP. Elle est disponible en téléchargement sur le site FastIO, mais requiert l'achat d'une licence pour utilisation commerciale. Les fonctionnalités et API de ClibPDF sont très similaires à PDFlib.

Cette documentation devrait être lue avec le manuel ClibPDF sous la main, car il est beaucoup plus détaillé.

Beaucoup de fonctions sont natives de ClibPDF et se retrouvent dans le module PHP, et tout comme pdflib, elles ont le même nom. Toutes les fonctions, hormis cpdf_open() utilisent un pointeur sur un document comme premier paramètre.

Actuellement, ce pointeur n'est pas utilisé en interne, car ClibPDF ne supporte pas la création de plusieurs documents PDF simultanément. En fait, il ne vaut mieux pas l'envisager, car les résultats sont aléatoires. Je ne veux même pas imaginer les problèmes qui pourraient se poser avec les environnements multi-tâches. Selon l'auteur de ClibPDF, cette situation va changer dans les prochaines versions (lorsque cette documentation a été traduite, c'était la version 1.10). Si vous avez besoin de cette fonctionnalité, utilisez pdflib.

Une caractéristique pratique de ClibPDF (et aussi de PDFlib) est celle de créer le document PDF en mémoire, sans fichiers temporaires. ClibPDF permet aussi de passer les coordonnées avec une unité prédéfinie (ce qui peut être simulé avec pdf_translate() de la librairie PDFlib).

Un autre atout de ClibPDF est que chaque page peut être modifiée à tout moment même si une nouvelle page a été ouverte. La fonction cpdf_set_current_page() vous permet de quitter temporairement une page et d'en modifier une autre.

La plupart des fonctions sont très simples d'emploi. Le plus difficile est probablement de créer un document PDF simple. L'exemple suivant devrait vous aider à démarrer. La page contient du texte qui utilise la police "Times-Roman" en taille 30, outlined. Le texte est souligné.

Pré-requis

Pour utiliser les fontions ClibPDF vous devez installer la libriaire ClibPDF. Elle est disponible au téléchargement sur le site de FastIO, mais elle impose l'achat d'une license pour utilisation commerciale. PHP requiert que vous utilisiez ClibPDF >= 2.

Installation

Pour faire fonctionner ces fonctions, vous devez compiler PHP avec l'option --with-cpdflib[=DIR]. DIR est le dossier d'installation de CPDFLib et, par défaut, il vaut /usr. De plus, vous pouvez spécifier les librairies TIFF et JPEG que vous utilisez. Pour cela, ajoutez les options de configuration --with-jpeg-dir[=DIR] et --with-tiff-dir[=DIR].

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

CPDF_PM_NONE (entier)

CPDF_PM_OUTLINES (entier)

CPDF_PM_THUMBS (entier)

CPDF_PM_FULLSCREEN (entier)

CPDF_PL_SINGLE (entier)

CPDF_PL_1COLUMN (entier)

CPDF_PL_2LCOLUMN (entier)

CPDF_PL_2RCOLUMN (entier)

Exemples

Exemple 1. Exemple simple ClibPDF

<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 750);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf, 50, 740);
cpdf_lineto($cpdf, 330, 740);
cpdf_stroke($cpdf);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

La distribution pdflib contient un exemple plus complet, qui crée des séries de pages avec une horloge. Voici cet exemple converti en script PHP qui utilise l'extension ClibPDF :

Exemple 2. Exemple pdfclock de la distribution pdflib 2.0

<?php
$radius = 200;
$margin = 20;
$pagecount = 40;

$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php3");
cpdf_set_title($pdf, "Analog Clock");

while($pagecount-- > 0) {
  cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);

  cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0);  /* wipe */

  cpdf_translate($pdf, $radius + $margin, $radius + $margin);
  cpdf_save($pdf);
  cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);

  /* minute strokes */
  cpdf_setlinewidth($pdf, 2.0);
  for ($alpha = 0; $alpha < 360; $alpha += 6)
    {
    cpdf_rotate($pdf, 6.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin/3, 0.0);
    cpdf_stroke($pdf);
    }

  cpdf_restore($pdf);
  cpdf_save($pdf);

  /* 5 minute strokes */
  cpdf_setlinewidth($pdf, 3.0);
  for ($alpha = 0; $alpha < 360; $alpha += 30)
  {
    cpdf_rotate($pdf, 30.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin, 0.0);
    cpdf_stroke($pdf);
  }

  $ltime = getdate();

  /* draw hour hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius/2, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw minute hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius * 0.8, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw second hand */
  cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
  cpdf_setlinewidth($pdf, 2);
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
  cpdf_moveto($pdf, -$radius/5, 0.0);
  cpdf_lineto($pdf, $radius, 0.0);
  cpdf_stroke($pdf);
  cpdf_restore($pdf);

  /* draw little circle at center */
  cpdf_circle($pdf, 0, 0, $radius/30);
  cpdf_fill($pdf);

  cpdf_restore($pdf);

  cpdf_finalize_page($pdf, $pagecount+1);
}

cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>

Voir aussi

Voir aussi la documentation de PDFlib.

Table des matières
cpdf_add_annotation -- Ajoute une annotation
cpdf_add_outline -- Ajoute un signet à la page courante
cpdf_arc -- Dessine un arc de cercle
cpdf_begin_text -- Démarre une section de texte
cpdf_circle -- Dessine un cercle
cpdf_clip -- Aligne les dessins sur le chemin courant
cpdf_close -- Ferme un fichier PDF
cpdf_closepath_fill_stroke -- Remplit le chemin, dessine le bord et ferme le chemin
cpdf_closepath_stroke -- Ferme le fichier et dessine une ligne le long du chemin.
cpdf_closepath -- Ferme le chemin
cpdf_continue_text -- Imprime le texte à la ligne suivante
cpdf_curveto -- Dessine une courbe
cpdf_end_text -- Termine une section de texte
cpdf_fill_stroke -- Remplit le chemin, et dessine le bord
cpdf_fill -- Remplit le chemin courant
cpdf_finalize_page -- Termine une page
cpdf_finalize -- Termine un document
cpdf_global_set_document_limits -- Fixe les limites d'un document PDF
cpdf_import_jpeg -- Ouvre une image JPEG
cpdf_lineto -- Dessine une ligne
cpdf_moveto -- Fixe le point courant
cpdf_newpath -- Commence un nouveau chemin
cpdf_open -- Ouvre un nouveau document PDF
cpdf_output_buffer -- Affiche le document PDF qui est en mémoire
cpdf_page_init -- Commence une nouvelle page
cpdf_place_inline_image -- Place une image dans une page
cpdf_rect -- Dessine un rectangle
cpdf_restore -- Restaure un environnement
cpdf_rlineto -- Dessine une ligne, relativement
cpdf_rmoveto -- Fixe le point courant relativement
cpdf_rotate_text -- Configure l'inclinaison d'un texte
cpdf_rotate -- Effectue une rotation
cpdf_save_to_file -- Ecrit un document PDF dans un fichier
cpdf_save -- Sauve l'environnement courant
cpdf_scale -- Modifie l'échelle
cpdf_set_action_url -- Paramètre un hyper lien
cpdf_set_char_spacing -- Fixe l'espacement des caractères
cpdf_set_creator -- Fixe le créateur d'un document PDF
cpdf_set_current_page -- Fixe la page courante
cpdf_set_font_directories -- Précise les dossiers à fouiller pour rechercher des polices externes
cpdf_set_font_map_file -- Configure le fichier de remplacement de polices externes
cpdf_set_font -- Sélectionne la police courante et sa taille
cpdf_set_horiz_scaling -- Fixe l'échelle horizontale du texte
cpdf_set_keywords -- Fixe les mots-clés d'un document PDF
cpdf_set_leading -- Fixe la distance entre deux lignes
cpdf_set_page_animation -- Fixe l'animation de la transition entre les pages
cpdf_set_subject -- Fixe le sujet d'un document PDF
cpdf_set_text_matrix -- Fixe la matrice du texte
cpdf_set_text_pos -- Fixe la position du texte
cpdf_set_text_rendering -- Détermine le rendu du texte
cpdf_set_text_rise -- Fixe l'élévation du texte
cpdf_set_title -- Fixe le titre d'un document PDF
cpdf_set_viewer_preferences -- Indique comment afficher le document à l'utilisateur
cpdf_set_word_spacing -- Fixe l'espacement des mots
cpdf_setdash -- Fixe le motif de pointillés
cpdf_setflat -- Fixe la platitude (flatness)
cpdf_setgray_fill -- Modifie le niveau de gris comme couleur de remplissage.
cpdf_setgray_stroke -- Choisit un niveau de gris comme couleur de dessin
cpdf_setgray -- Modifie un niveau de gris comme couleur de dessin et de remplissage.
cpdf_setlinecap -- Fixe le paramètre linecap
cpdf_setlinejoin -- Fixe le paramètre linejoin
cpdf_setlinewidth -- Fixe la largeur de ligne
cpdf_setmiterlimit -- Fixe le paramètre miter limit
cpdf_setrgbcolor_fill -- Choisit une couleur rgb comme couleur de remplissage
cpdf_setrgbcolor_stroke -- Choisit une couleur rgb comme couleur de dessin
cpdf_setrgbcolor -- Choisit une couleur rgb comme couleur de dessin et de remplissage.
cpdf_show_xy -- Affiche un texte à une position
cpdf_show -- Imprime un texte à la position courante
cpdf_stringwidth -- Retourne la taille de la chaîne
cpdf_stroke -- Dessine une ligne le long du chemin
cpdf_text -- Imprime un texte avec des options
cpdf_translate -- Modifie l'origine du système de coordonnées.

Précédent | Sommaire | Suivant
method_exists | Niveau supérieur | cpdf_add_annotation


cpdf_add_annotation

(PHP 3>= 3.0.12, PHP 4 )

cpdf_add_annotation -- Ajoute une annotation

Description

void cpdf_add_annotation ( int pdf_document, float llx, float lly, float urx, float ury, string title, string content [, int mode])

cpdf_add_annotation() ajoute une note, dont le coin inférieur droit est (llx, lly) et le coin supérieur droit est (urx, ury).

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou si il est omis), c'est la valeur par défaut (72) qui est utilisée.

Précédent | Sommaire | Suivant
ClibPDF | Niveau supérieur | cpdf_add_outline


cpdf_add_outline

(PHP 3>= 3.0.9, PHP 4 )

cpdf_add_outline -- Ajoute un signet à la page courante

Description

void cpdf_add_outline ( int pdf_document, string text)

cpdf_add_outline() ajoute un signet à la page courante, avec le texte text qui pointe sur la page courante.

Exemple 1. Ajouter une mise en relief

<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
// ...
// quelques dessins
// ...
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

Précédent | Sommaire | Suivant
cpdf_add_annotation | Niveau supérieur | cpdf_arc


cpdf_arc

(PHP 3>= 3.0.8, PHP 4 )

cpdf_arc -- Dessine un arc de cercle

Description

void cpdf_arc ( int pdf_document, float x-coor, float y-coor, float radius, float start, float end [, int mode])

cpdf_arc() dessine un arc de cercle, dont le centre est au point (x-coor, y-coor) et l'angle est radius, commençant à l'angle start et finissant à l'angle end.

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi cpdf_circle().

Précédent | Sommaire | Suivant
cpdf_add_outline | Niveau supérieur | cpdf_begin_text


cpdf_begin_text

(PHP 3>= 3.0.8, PHP 4 )

cpdf_begin_text -- Démarre une section de texte

Description

void cpdf_begin_text ( int pdf_document)

cpdf_begin_text() démarre une section de texte. Elle doit être terminée avec cpdf_end_text().

Exemple 1. Affichage de texte avec cpdf_begin_text()

<?php
cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", "WinAnsiEncoding");
cpdf_text($pdf, 100, 100, "Some text");
cpdf_end_text($pdf)
?>

Voir aussi cpdf_end_text().

Précédent | Sommaire | Suivant
cpdf_arc | Niveau supérieur | cpdf_circle


cpdf_circle

(PHP 3>= 3.0.8, PHP 4 )

cpdf_circle -- Dessine un cercle

Description

void cpdf_circle ( int pdf_document, float x-coor, float y-coor, float radius [, int mode])

cpdf_circle() dessine un cercle de centre (x-coor, y-coor) et de rayon radius.

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi cpdf_arc().

Précédent | Sommaire | Suivant
cpdf_begin_text | Niveau supérieur | cpdf_clip


cpdf_clip

(PHP 3>= 3.0.8, PHP 4 )

cpdf_clip -- Aligne les dessins sur le chemin courant

Description

void cpdf_clip ( int pdf_document)

cpdf_clip() aligne les dessins sur le chemin courant.

Précédent | Sommaire | Suivant
cpdf_circle | Niveau supérieur | cpdf_close


cpdf_close

(PHP 3>= 3.0.8, PHP 4 )

cpdf_close -- Ferme un fichier PDF

Description

void cpdf_close ( int pdf_document)

cpdf_close() ferme un fichier PDF. Ce doit
être la dernière fonction appelée, et elle
apparaît même après cpdf_finalize(),
cpdf_output_buffer() et
cpdf_save_to_file().

Voir aussi cpdf_open().

Précédent | Sommaire | Suivant
cpdf_clip | Niveau supérieur | cpdf_closepath_fill_stroke


cpdf_closepath_fill_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_closepath_fill_stroke -- Remplit le chemin, dessine le bord et ferme le chemin

Description

void cpdf_closepath_fill_stroke ( int pdf_document)

cpdf_closepath_fill_stroke() remplit le chemin, dessine le bord et ferme le chemin.

Voir aussi
cpdf_closepath(),
cpdf_stroke(),
cpdf_fill(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill() et
cpdf_setrgbcolor().

Précédent | Sommaire | Suivant
cpdf_close | Niveau supérieur | cpdf_closepath_stroke


cpdf_closepath_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_closepath_stroke -- Ferme le fichier et dessine une ligne le long du chemin.

Description

void cpdf_closepath_stroke ( int pdf_document)

cpdf_closepath_stroke() est une combinaison de cpdf_closepath() et cpdf_stroke().

Voir aussi cpdf_closepath() et cpdf_stroke().

Précédent | Sommaire | Suivant
cpdf_closepath_fill_stroke | Niveau supérieur | cpdf_closepath


cpdf_closepath

(PHP 3>= 3.0.8, PHP 4 )

cpdf_closepath -- Ferme le chemin

Description

void cpdf_closepath ( int pdf_document)

cpdf_closepath() ferme le chemin courant.

Précédent | Sommaire | Suivant
cpdf_closepath_stroke | Niveau supérieur | cpdf_continue_text


cpdf_continue_text

(PHP 3>= 3.0.8, PHP 4 )

cpdf_continue_text -- Imprime le texte à la ligne suivante

Description

void cpdf_continue_text ( int pdf_document, string text)

cpdf_continue_text() imprime le texte text à la ligne suivante.

Voir aussi
cpdf_show_xy(),
cpdf_text(),
cpdf_set_leading() et
cpdf_set_text_pos().

Précédent | Sommaire | Suivant
cpdf_closepath | Niveau supérieur | cpdf_curveto


cpdf_curveto

(PHP 3>= 3.0.8, PHP 4 )

cpdf_curveto -- Dessine une courbe

Description

void cpdf_curveto ( int pdf_document, float x1, float y1, float x2, float y2, float x3, float y3 [, int mode])

cpdf_curveto() dessine une courbe de Bezier, entre le point courant et le point (x3, y3), en utilisant les points de contrôle (x1, y1) et (x2, y2).

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi
cpdf_moveto(),
cpdf_rmoveto(),
cpdf_rlineto() et
cpdf_lineto().

Précédent | Sommaire | Suivant
cpdf_continue_text | Niveau supérieur | cpdf_end_text


cpdf_end_text

(PHP 3>= 3.0.8, PHP 4 )

cpdf_end_text -- Termine une section de texte

Description

void cpdf_end_text ( int pdf_document)

cpdf_end_text() termine une section de texte, commencée avec cpdf_begin_text().

Exemple 1. Affichage de texte avec cpdf_end_text()

<?php
cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", "WinAnsiEncoding");
cpdf_text($pdf, 100, 100, "Du texte");
cpdf_end_text($pdf)
?>

Voir aussi cpdf_begin_text().

Précédent | Sommaire | Suivant
cpdf_curveto | Niveau supérieur | cpdf_fill_stroke


cpdf_fill_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_fill_stroke -- Remplit le chemin, et dessine le bord

Description

void cpdf_fill_stroke ( int pdf_document)

cpdf_fill_stroke() remplit l'intérieur du chemin avec la couleur courante, et dessine le chemin.

Voir aussi
cpdf_closepath(),
cpdf_stroke(),
cpdf_fill(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill() et
cpdf_setrgbcolor().

Précédent | Sommaire | Suivant
cpdf_end_text | Niveau supérieur | cpdf_fill


cpdf_fill

(PHP 3>= 3.0.8, PHP 4 )

cpdf_fill -- Remplit le chemin courant

Description

void cpdf_fill ( int pdf_document)

cpdf_fill() remplit l'intérieur du chemin courant avec la couleur courante.

Voir aussi
cpdf_closepath(),
cpdf_stroke(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill() et
cpdf_setrgbcolor().

Précédent | Sommaire | Suivant
cpdf_fill_stroke | Niveau supérieur | cpdf_finalize_page


cpdf_finalize_page

(PHP 3>= 3.0.10, PHP 4 )

cpdf_finalize_page -- Termine une page

Description

void cpdf_finalize_page ( int pdf_document, int page_number)

cpdf_finalize_page() termine la page de numéro page_number. cpdf_finalize_page() ne fait qu'une sauvegarde mémoire. Les pages terminées prennent moins de place, mais ne peuvent plus être modifiées.

Voir aussi cpdf_page_init().

Précédent | Sommaire | Suivant
cpdf_fill | Niveau supérieur | cpdf_finalize


cpdf_finalize

(PHP 3>= 3.0.8, PHP 4 )

cpdf_finalize -- Termine un document

Description

void cpdf_finalize ( int pdf_document)

cpdf_finalize() termine un document. Vous devez toujours appeler cpdf_close() après.

Voir aussi cpdf_close().

Précédent | Sommaire | Suivant
cpdf_finalize_page | Niveau supérieur | cpdf_global_set_document_limits


cpdf_global_set_document_limits

(PHP 4 )

cpdf_global_set_document_limits -- Fixe les limites d'un document PDF

Description

void cpdf_global_set_document_limits ( int maxpages, int maxfonts, int maximages, int maxannotations, int maxobjects)

cpdf_global_set_document_limits() permet de fixer plusieurs limites au document PDF. cpdf_global_set_document_limits() doit être appelée avant cpdf_open() pour être effective. Elle fixe les limites de tous les documents ouverts après.

Voir aussi cpdf_open().

Précédent | Sommaire | Suivant
cpdf_finalize | Niveau supérieur | cpdf_import_jpeg


cpdf_import_jpeg

(PHP 3>= 3.0.9, PHP 4 )

cpdf_import_jpeg -- Ouvre une image JPEG

Description

int cpdf_import_jpeg ( int pdf_document, string file_name, float x-coor, float y-coor, float angle, float width, float height, float x-scale, float y-scale [, int mode])

cpdf_import_jpeg() ouvre une image JPG, enregistrée dans le fichier file_name. Le format de l'image doit être JPEG. L'image est placée dans la page courante, aux coordonnées (x-coor, y-coor). L'image subira une rotation d'un angle de angle degrés.

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi cpdf_place_inline_image().

Précédent | Sommaire | Suivant
cpdf_global_set_document_limits | Niveau supérieur | cpdf_lineto


cpdf_lineto

(PHP 3>= 3.0.8, PHP 4 )

cpdf_lineto -- Dessine une ligne

Description

void cpdf_lineto ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_lineto() dessine une ligne entre le point courant et le point de coordonnées (x-coor, y-coor).

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi
cpdf_moveto(),
cpdf_rmoveto() et
cpdf_curveto().

Précédent | Sommaire | Suivant
cpdf_import_jpeg | Niveau supérieur | cpdf_moveto


cpdf_moveto

(PHP 3>= 3.0.8, PHP 4 )

cpdf_moveto -- Fixe le point courant

Description

void cpdf_moveto ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_moveto() fixe le point courant aux coordonnées (x-coor, y-coor).

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Précédent | Sommaire | Suivant
cpdf_lineto | Niveau supérieur | cpdf_newpath


cpdf_newpath

(PHP 3>= 3.0.9, PHP 4 )

cpdf_newpath -- Commence un nouveau chemin

Description

void cpdf_newpath ( int pdf_document)

cpdf_newpath() commence un nouveau chemin dans le document pdf_document.

Précédent | Sommaire | Suivant
cpdf_moveto | Niveau supérieur | cpdf_open


cpdf_open

(PHP 3>= 3.0.8, PHP 4 )

cpdf_open -- Ouvre un nouveau document PDF

Description

int cpdf_open ( int compression [, string filename])

cpdf_open() ouvre un nouveau document PDF. Le premier paramètre compression active ou pas la compression, suivant qu'il vaut 0 ou 1. Le deuxième paramètre, optionnel choisit le fichier de destination du document. S'il est omis, le document sera écrit en mémoire et pourra être écrit dans un fichier avec cpdf_save_to_file() ou envoyé à l'affichage avec cpdf_output_buffer().

Note : La valeur retournée sera nécessaire pour les autres fonctions de ClibPDF comme premier paramètre.

La librairie ClibPDF prend le nom de fichier "-" comme synonyme de stdout. Si PHP est compilé comme un module apache, cela ne fonctionnera pas, car la méthode d'envoi des données de ClibPDF ne fonctionne pas avec Apache. Vous pouvez résoudre ce problème en ne fournissant pas de nom de fichier, et en utilisant la fonction cpdf_output_buffer() pour afficher le document PDF.

Voir aussi cpdf_output_buffer() et cpdf_close().

Précédent | Sommaire | Suivant
cpdf_newpath | Niveau supérieur | cpdf_output_buffer


cpdf_output_buffer

(PHP 3>= 3.0.9, PHP 4 )

cpdf_output_buffer -- Affiche le document PDF qui est en mémoire

Description

void cpdf_output_buffer ( int pdf_document)

cpdf_output_buffer() envoie le document PDF pdf_document vers la sortie standard (le navigateur sur un serveur web). Le document doit avoir été créé en mémoire, ce qui est le cas si la fonction cpdf_open() a été appelée sans spécifier de nom de fichier.

Voir aussi cpdf_open().

Précédent | Sommaire | Suivant
cpdf_open | Niveau supérieur | cpdf_page_init


cpdf_page_init

(PHP 3>= 3.0.8, PHP 4 )

cpdf_page_init -- Commence une nouvelle page

Description

void cpdf_page_init ( int pdf_document, int page_number, int orientation, float height, float width [, float unit])

cpdf_page_init() commence une nouvelle page de hauteur height et de largeur width, de numéro de page page_number et d'orientation orientation. orientation vaut 0 pour le mode portrait et 1 pour le mode paysage. Le dernier paramètre optionnel unit comfigure l'unité du système de coordonnées. Sa valeur doit être exprimée en points postscript par unité. Comme un pouce (2.54 cm) vaut 72 points, une valeur de 72 configure l'unité de mesure d'un pouce. Par défaut, ce paramètre vaut 72.

Voir aussi cpdf_set_current_page().

Précédent | Sommaire | Suivant
cpdf_output_buffer | Niveau supérieur | cpdf_place_inline_image


cpdf_place_inline_image

(PHP 3>= 3.0.9, PHP 4 )

cpdf_place_inline_image -- Place une image dans une page

Description

void cpdf_place_inline_image ( int pdf_document, int image, float x-coor, float y-coor, float angle, float width, float height [, int mode])

cpdf_place_inline_image() place l'image image, créée avec les fonctions images de PHP, à la position (x-coor, y-coor). L'échelle de l'image sera aussi modifiée avec les paramètres width et height.

Le paramètre optionnel mode détermine l'unité de longueur. Si c'est 0 ou que le paramètre est omis, la valeur par défaut de l'unité de mesure de la page sera utilisée. SInon, les coordonnées sont mesurées en points postscripts, sans tenir compte de l'unité courante.

Voir aussi cpdf_import_jpeg().

Précédent | Sommaire | Suivant
cpdf_page_init | Niveau supérieur | cpdf_rect


cpdf_rect

(PHP 3>= 3.0.8, PHP 4 )

cpdf_rect -- Dessine un rectangle

Description

void cpdf_rect ( int pdf_document, float x-coor, float y-coor, float width, float height [, int mode])

cpdf_rect() dessine un rectangle dont le coin inférieur gauche de coordonnées est (x-coor, y-coor). La largeur vaut width. La hauteur vaut height.

Le paramètre optionnel mode détermine l'unité de longueur. Si c'est 0 ou que le paramètre est omis, la valeur par défaut de l'unité de mesure de la page sera utilisée. Sinon, les coordonnées sont mesurées en points postscripts, sans tenir compte de l'unité courante.

Précédent | Sommaire | Suivant
cpdf_place_inline_image | Niveau supérieur | cpdf_restore


cpdf_restore

(PHP 3>= 3.0.8, PHP 4 )

cpdf_restore -- Restaure un environnement

Description

void cpdf_restore ( int pdf_document)

cpdf_restore() restaure l'environnement sauvé par cpdf_save(). Cette fonction est similaire à la commande postscript grestore. Très pratique quand vous devez faire des translations et rotations sur un objet, mais sans affecter les autres.

Exemple 1. Sauver/Restaurer l'environnement CPDF

<?php
cpdf_save($pdf);
// plein de transformations, translations, ...
cpdf_restore($pdf)
?>

Voir aussi cpdf_save().

Précédent | Sommaire | Suivant
cpdf_rect | Niveau supérieur | cpdf_rlineto


cpdf_rlineto

(PHP 3>= 3.0.9, PHP 4 )

cpdf_rlineto -- Dessine une ligne, relativement

Description

void cpdf_rlineto ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_rlineto() dessine une ligne entre le point courant et le point de coordonnées relatives (x-coor, y-coor).

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi
cpdf_moveto(),
cpdf_rmoveto() et
cpdf_curveto().

Précédent | Sommaire | Suivant
cpdf_restore | Niveau supérieur | cpdf_rmoveto


cpdf_rmoveto

(PHP 3>= 3.0.9, PHP 4 )

cpdf_rmoveto -- Fixe le point courant relativement

Description

void cpdf_rmoveto ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_rmoveto() fixe le point courant aux coordonnées (x-coor, y-coor), relativement.

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi cpdf_moveto().

Précédent | Sommaire | Suivant
cpdf_rlineto | Niveau supérieur | cpdf_rotate_text


cpdf_rotate_text

(PHP 3>= 3.0.9, PHP 4 )

cpdf_rotate_text -- Configure l'inclinaison d'un texte

Description

void cpdf_rotate_text ( int pdfdoc, float angle)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cpdf_rmoveto | Niveau supérieur | cpdf_rotate


cpdf_rotate

(PHP 3>= 3.0.8, PHP 4 )

cpdf_rotate -- Effectue une rotation

Description

void cpdf_rotate ( int pdf_document, float angle)

cpdf_rotate() effectue une rotation, d'un angle de angle degrés.

Précédent | Sommaire | Suivant
cpdf_rotate_text | Niveau supérieur | cpdf_save_to_file


cpdf_save_to_file

(PHP 3>= 3.0.8, PHP 4 )

cpdf_save_to_file -- Ecrit un document PDF dans un fichier

Description

void cpdf_save_to_file ( int pdf_document, string filename)

cpdf_save_to_file() écrit un document PDF dans un fichier, s'il a été créé en mémoire. cpdf_save_to_file() n'est pas nécessaire si un nom de fichier a été fourni lors de l'appel à cpdf_open().

Voir aussi cpdf_output_buffer() et cpdf_open().

Précédent | Sommaire | Suivant
cpdf_rotate | Niveau supérieur | cpdf_save


cpdf_save

(PHP 3>= 3.0.8, PHP 4 )

cpdf_save -- Sauve l'environnement courant

Description

void cpdf_save ( int pdf_document)

cpdf_save() sauve l'environnement courant. cpdf_save() est similaire à la commande postscript gsave. Très pratique quand vous devez faire des translations et rotations sur un objet, mais sans affecter les autres.

Voir aussi cpdf_restore().

Précédent | Sommaire | Suivant
cpdf_save_to_file | Niveau supérieur | cpdf_scale


cpdf_scale

(PHP 3>= 3.0.8, PHP 4 )

cpdf_scale -- Modifie l'échelle

Description

void cpdf_scale ( int pdf_document, float x-scale, float y-scale)

cpdf_scale() modifie l'échelle dans les deux directions.

Précédent | Sommaire | Suivant
cpdf_save | Niveau supérieur | cpdf_set_action_url


cpdf_set_action_url

(PHP 3>= 3.0.9, PHP 4 )

cpdf_set_action_url -- Paramètre un hyper lien

Description

void cpdf_set_action_url ( int pdfdoc, float xll, float yll, float xur, float xur, string url [, int mode])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cpdf_scale | Niveau supérieur | cpdf_set_char_spacing


cpdf_set_char_spacing

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_char_spacing -- Fixe l'espacement des caractères

Description

void cpdf_set_char_spacing ( int pdf_document, float space)

cpdf_set_char_spacing() fixe l'espacement des caractères à space.

Voir aussi cpdf_set_word_spacing() et cpdf_set_leading().

Précédent | Sommaire | Suivant
cpdf_set_action_url | Niveau supérieur | cpdf_set_creator


cpdf_set_creator

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_creator -- Fixe le créateur d'un document PDF

Description

void cpdf_set_creator ( string creator)

cpdf_set_creator() fixe le créateur d'un document PDF.

Voir aussi
cpdf_set_subject(),
cpdf_set_title() et
cpdf_set_keywords().

Précédent | Sommaire | Suivant
cpdf_set_char_spacing | Niveau supérieur | cpdf_set_current_page


cpdf_set_current_page

(PHP 3>= 3.0.9, PHP 4 )

cpdf_set_current_page -- Fixe la page courante

Description

void cpdf_set_current_page ( int pdf_document, int page_number)

cpdf_set_current_page() fixe la page courante, où toutes les prochaines opérations vont avoir lieu. On peut changer de page jusqu'à ce qu'une page soit terminée avec cpdf_finalize_page().

Voir aussi cpdf_finalize_page().

Précédent | Sommaire | Suivant
cpdf_set_creator | Niveau supérieur | cpdf_set_font_directories


cpdf_set_font_directories

(PHP 4 >= 4.0.6)

cpdf_set_font_directories -- Précise les dossiers à fouiller pour rechercher des polices externes

Description

void cpdf_set_font_directories ( int pdfdoc, string pfmdir, string pfbdir)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cpdf_set_current_page | Niveau supérieur | cpdf_set_font_map_file


cpdf_set_font_map_file

(PHP 4 >= 4.0.6)

cpdf_set_font_map_file -- Configure le fichier de remplacement de polices externes

Description

void cpdf_set_font_map_file ( int pdfdoc, string filename)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cpdf_set_font_directories | Niveau supérieur | cpdf_set_font


cpdf_set_font

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_font -- Sélectionne la police courante et sa taille

Description

void cpdf_set_font ( int pdf_document, string font_name, float size, string encoding)

cpdf_set_font() selectionne la police courante, sa taille et l'encodage. Actuellement, seules les polices postscript sont supportées.

Le dernier paramètre encoding peut prendre les valeurs suivantes : "MacRomanEncoding", "MacExpertEncoding", "WinAnsiEncoding", et "NULL". "NULL" signifie qu'il faut utiliser l'encodage par défaut.

Reportez vous à la doc de ClibPDF, pour plus d'informations, notamment sur les polices asiatiques.

Précédent | Sommaire | Suivant
cpdf_set_font_map_file | Niveau supérieur | cpdf_set_horiz_scaling


cpdf_set_horiz_scaling

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_horiz_scaling -- Fixe l'échelle horizontale du texte

Description

void cpdf_set_horiz_scaling ( int pdf_document, float scale)

cpdf_set_horiz_scaling() fixe l'échelle horizontale du texte à scale %.

Précédent | Sommaire | Suivant
cpdf_set_font | Niveau supérieur | cpdf_set_keywords


cpdf_set_keywords

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_keywords -- Fixe les mots-clés d'un document PDF

Description

void cpdf_set_keywords ( string keywords)

cpdf_set_keywords() fixe les mots-clés d'un document PDF.

Voir aussi
cpdf_set_title(),
cpdf_set_creator() et
cpdf_set_subject().

Précédent | Sommaire | Suivant
cpdf_set_horiz_scaling | Niveau supérieur | cpdf_set_leading


cpdf_set_leading

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_leading -- Fixe la distance entre deux lignes

Description

void cpdf_set_leading ( int pdf_document, float distance)

cpdf_set_leading() fixe la distance entre deux lignes. Cela servira si le texte est affiché par cpdf_continue_text().

Voir aussi cpdf_continue_text().

Précédent | Sommaire | Suivant
cpdf_set_keywords | Niveau supérieur | cpdf_set_page_animation


cpdf_set_page_animation

(PHP 3>= 3.0.9, PHP 4 )

cpdf_set_page_animation -- Fixe l'animation de la transition entre les pages

Description

void cpdf_set_page_animation ( int pdf_document, int transition, float duration)

cpdf_set_page_animation() fixe l'animation de la transition entre les pages.

La valeur du paramètre de transition transition peut être :

0 pour aucune,
1 pour deux lignes en travers de l'écran, qui révèlent la prochaine page,
2 pour plusieurs lignes en travers de l'écran, qui révèlent la prochaine page,
3 pour une boîte qui révèle la prochaine page,
4 pour une seule ligne en travers de l'écran, qui révèle la prochaine page,
5 pour l'ancienne page qui se dissout
6 pour un effet de dissolution d'un angle à l'autre
7 pour le remplacement simple (par défaut)

La valeur de duration est le nombre de secondes avant le passage à la page suivante.

Précédent | Sommaire | Suivant
cpdf_set_leading | Niveau supérieur | cpdf_set_subject


cpdf_set_subject

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_subject -- Fixe le sujet d'un document PDF

Description

void cpdf_set_subject ( string subject)

cpdf_set_subject() fixe le sujet d'un document PDF.

Voir aussi
cpdf_set_title(),
cpdf_set_creator() et
cpdf_set_keywords().

Précédent | Sommaire | Suivant
cpdf_set_page_animation | Niveau supérieur | cpdf_set_text_matrix


cpdf_set_text_matrix

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_text_matrix -- Fixe la matrice du texte

Description

void cpdf_set_text_matrix ( int pdf_document, array matrix)

cpdf_set_text_matrix() fixe la matrice du texte qui décrit la transformation appliquée à la police.

Précédent | Sommaire | Suivant
cpdf_set_subject | Niveau supérieur | cpdf_set_text_pos


cpdf_set_text_pos

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_text_pos -- Fixe la position du texte

Description

void cpdf_set_text_pos ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_set_text_pos() Fixe la position du texte pour le prochain appel à cpdf_show().

Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Voir aussi cpdf_show() et cpdf_text().

Précédent | Sommaire | Suivant
cpdf_set_text_matrix | Niveau supérieur | cpdf_set_text_rendering


cpdf_set_text_rendering

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_text_rendering -- Détermine le rendu du texte

Description

void cpdf_set_text_rendering ( int pdf_document [, int mode])

cpdf_set_text_rendering() détermine le rendu du texte.

Les valeurs possibles pour mode sont :
0=texte plein, 1=texte stroke, 2=texte plein et stroke,
3=invisible, 4=texte plein et ajouté au chemin,
5=texte stroke et ajouté au chemin, 6=texte plein et stroke et
ajouté au chemin, 7=et ajouté au chemin.

Précédent | Sommaire | Suivant
cpdf_set_text_pos | Niveau supérieur | cpdf_set_text_rise


cpdf_set_text_rise

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_text_rise -- Fixe l'élévation du texte

Description

void cpdf_set_text_rise ( int pdf_document, float value)

cpdf_set_text_rise() fixe l'élévation du texte à value unités.

Précédent | Sommaire | Suivant
cpdf_set_text_rendering | Niveau supérieur | cpdf_set_title


cpdf_set_title

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_title -- Fixe le titre d'un document PDF

Description

void cpdf_set_title ( string title)

cpdf_set_title() fixe le titre d'un document PDF.

Voir aussi
cpdf_set_subject(),
cpdf_set_creator() et
cpdf_set_keywords().

Précédent | Sommaire | Suivant
cpdf_set_text_rise | Niveau supérieur | cpdf_set_viewer_preferences


cpdf_set_viewer_preferences

(PHP 3>= 3.0.9, PHP 4 )

cpdf_set_viewer_preferences -- Indique comment afficher le document à l'utilisateur

Description

void cpdf_set_viewer_preferences ( int pdfdoc, array preferences)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cpdf_set_title | Niveau supérieur | cpdf_set_word_spacing


cpdf_set_word_spacing

(PHP 3>= 3.0.8, PHP 4 )

cpdf_set_word_spacing -- Fixe l'espacement des mots

Description

void cpdf_set_word_spacing ( int pdf_document, float space)

cpdf_set_word_spacing() fixe l'espacement des caractères.

Voir aussi cpdf_set_char_spacing() et cpdf_set_leading().

Précédent | Sommaire | Suivant
cpdf_set_viewer_preferences | Niveau supérieur | cpdf_setdash


cpdf_setdash

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setdash -- Fixe le motif de pointillés

Description

void cpdf_setdash ( int pdf_document, float white, float black)

cpdf_setdash() fixe le motif de pointillés à white unité de blanc et black unité de noir. Si les deux sont à 0, une ligne pleine est affichée.

Précédent | Sommaire | Suivant
cpdf_set_word_spacing | Niveau supérieur | cpdf_setflat


cpdf_setflat

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setflat -- Fixe la platitude (flatness)

Description

void cpdf_setflat ( int pdf_document, float value)

cpdf_setflat() fixe la platitude (flatness), entre 0 et 100.

Précédent | Sommaire | Suivant
cpdf_setdash | Niveau supérieur | cpdf_setgray_fill


cpdf_setgray_fill

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setgray_fill -- Modifie le niveau de gris comme couleur de remplissage.

Description

void cpdf_setgray_fill ( int pdf_document, float value)

cpdf_setgray_fill() remplace le niveau de gris, couleur de remplissage courante, par value.

Voir aussi cpdf_setrgbcolor_fill().

Précédent | Sommaire | Suivant
cpdf_setflat | Niveau supérieur | cpdf_setgray_stroke


cpdf_setgray_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setgray_stroke -- Choisit un niveau de gris comme couleur de dessin

Description

void cpdf_setgray_stroke ( int pdf_document, float gray_value)

cpdf_setgray_stroke() remplace le niveau de gris, couleur de dessin courante, par value.

Voir aussi cpdf_setrgbcolor_stroke().

Précédent | Sommaire | Suivant
cpdf_setgray_fill | Niveau supérieur | cpdf_setgray


cpdf_setgray

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setgray -- Modifie un niveau de gris comme couleur de dessin et de remplissage.

Description

void cpdf_setgray ( int pdf_document, float gray_value)

cpdf_setgray_stroke() remplace le niveau de gris, couleur de dessin et de remplissage, par value.

Voir aussi cpdf_setrgbcolor_stroke() et cpdf_setrgbcolor_fill().

Précédent | Sommaire | Suivant
cpdf_setgray_stroke | Niveau supérieur | cpdf_setlinecap


cpdf_setlinecap

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setlinecap -- Fixe le paramètre linecap

Description

void cpdf_setlinecap ( int pdf_document, int value)

cpdf_setlinecap() fixe le paramètre linecap à une valeur value entre 0 et 2. 0 = butt end, 1 = round, 2 = projecting square.

Précédent | Sommaire | Suivant
cpdf_setgray | Niveau supérieur | cpdf_setlinejoin


cpdf_setlinejoin

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setlinejoin -- Fixe le paramètre linejoin

Description

void cpdf_setlinejoin ( int pdf_document, int value)

cpdf_setlinejoin() fixe le paramètre linejoin à une valeur value, entre 0 et 2. 0 = miter, 1 = round, 2 = bevel.

Précédent | Sommaire | Suivant
cpdf_setlinecap | Niveau supérieur | cpdf_setlinewidth


cpdf_setlinewidth

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setlinewidth -- Fixe la largeur de ligne

Description

void cpdf_setlinewidth ( int pdf_document, float width)

cpdf_setlinewidth() fixe la largeur de ligne à la valeur de width.

Précédent | Sommaire | Suivant
cpdf_setlinejoin | Niveau supérieur | cpdf_setmiterlimit


cpdf_setmiterlimit

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setmiterlimit -- Fixe le paramètre miter limit

Description

void cpdf_setmiterlimit ( int pdf_document, float value)

cpdf_setmiterlimit() fixe le paramètre "miter limit" à une valeur supérieure ou égale à 1.

Précédent | Sommaire | Suivant
cpdf_setlinewidth | Niveau supérieur | cpdf_setrgbcolor_fill


cpdf_setrgbcolor_fill

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setrgbcolor_fill -- Choisit une couleur rgb comme couleur de remplissage

Description

void cpdf_setrgbcolor_fill ( int pdf_document, float red_value, float green_value, float blue_value)

cpdf_setrgbcolor_fill() remplace la couleur de remplissage, par la couleur rgb (red_value, green_value, blue_value).

Voir aussi cpdf_setrgbcolor_stroke() et cpdf_setrgbcolor().

Précédent | Sommaire | Suivant
cpdf_setmiterlimit | Niveau supérieur | cpdf_setrgbcolor_stroke


cpdf_setrgbcolor_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setrgbcolor_stroke -- Choisit une couleur rgb comme couleur de dessin

Description

void cpdf_setrgbcolor_stroke ( int pdf_document, float red_value, float green_value, float blue_value)

cpdf_setrgbcolor_stroke() remplace la couleur de dessin, par la couleur rgb (red_value, green_value, blue_value).

Voir aussi cpdf_setrgbcolor_fill() et cpdf_setrgbcolor().

Précédent | Sommaire | Suivant
cpdf_setrgbcolor_fill | Niveau supérieur | cpdf_setrgbcolor


cpdf_setrgbcolor

(PHP 3>= 3.0.8, PHP 4 )

cpdf_setrgbcolor -- Choisit une couleur rgb comme couleur de dessin et de remplissage.

Description

void cpdf_setrgbcolor ( int pdf_document, float red_value, float green_value, float blue_value)

cpdf_setrgbcolor_stroke() remplace la couleur de remplissage et de dessin, par la couleur rgb (red_value, green_value, blue_value).

Voir aussi cpdf_setrgbcolor_stroke() et cpdf_setrgbcolor_fill().

Précédent | Sommaire | Suivant
cpdf_setrgbcolor_stroke | Niveau supérieur | cpdf_show_xy


cpdf_show_xy

(PHP 3>= 3.0.8, PHP 4 )

cpdf_show_xy -- Affiche un texte à une position

Description

void cpdf_show_xy ( int pdf_document, string text, float x-coor, float y-coor [, int mode])

cpdf_show_xy() imprime la chaîne text, à la position de coordonnées (x-coor, y-coor). Le dernier paramètre optionnel est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Note : La fonction cpdf_show_xy() est identique à cpdf_text(), sans les options.

Voir aussi cpdf_text().

Précédent | Sommaire | Suivant
cpdf_setrgbcolor | Niveau supérieur | cpdf_show


cpdf_show

(PHP 3>= 3.0.8, PHP 4 )

cpdf_show -- Imprime un texte à la position courante

Description

void cpdf_show ( int pdf_document, string text)

cpdf_show() imprime la chaîne text, à la position courante.

Voir aussi
cpdf_text(),
cpdf_begin_text() et
cpdf_end_text().

Précédent | Sommaire | Suivant
cpdf_show_xy | Niveau supérieur | cpdf_stringwidth


cpdf_stringwidth

(PHP 3>= 3.0.8, PHP 4 )

cpdf_stringwidth -- Retourne la taille de la chaîne

Description

float cpdf_stringwidth ( int pdf_document, string text)

cpdf_stringwidth() retourne la taille de la chaîne text. Une police doit avoir déjà été choisie.

Voir aussi cpdf_set_font().

Précédent | Sommaire | Suivant
cpdf_show | Niveau supérieur | cpdf_stroke


cpdf_stroke

(PHP 3>= 3.0.8, PHP 4 )

cpdf_stroke -- Dessine une ligne le long du chemin

Description

void cpdf_stroke ( int pdf_document)

cpdf_stroke() dessine une ligne le long du chemin.

Voir aussi cpdf_closepath() et cpdf_closepath_stroke().

Précédent | Sommaire | Suivant
cpdf_stringwidth | Niveau supérieur | cpdf_text


cpdf_text

(PHP 3>= 3.0.8, PHP 4 )

cpdf_text -- Imprime un texte avec des options

Description

void cpdf_text ( int pdf_document, string text, float x-coor, float y-coor [, int mode [, float orientation [, int alignmode]]])

cpdf_text() imprime le text text à la position de coordonnées (x-coor, y-coor). Le paramètre mode est une unité de longueur. S'il prend la valeur 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Le paramètre optionnel orientation est un angle de rotation du texte, en degrés. Le paramètre optionnel alignmode détermine l'alignement du texte. Reportez-vous à la doc de ClibPDF pour les valeurs possibles.

Voir aussi cpdf_show_xy().

Précédent | Sommaire | Suivant
cpdf_stroke | Niveau supérieur | cpdf_translate


cpdf_translate

(PHP 3>= 3.0.8, PHP 4 )

cpdf_translate -- Modifie l'origine du système de coordonnées.

Description

void cpdf_translate ( int pdf_document, float x-coor, float y-coor [, int mode])

cpdf_translate() modifie l'origine du système de coordonnées en plaçant l'origine aux coordonnées (x-coor, y-coor).

Le paramètre mode est une unité de longueur. S'il prend la valeur de 0 (ou s'il est omis), c'est la valeur par défaut (72) qui est utilisée.

Précédent | Sommaire | Suivant
cpdf_text | Niveau supérieur | Crack


Crack

Manuel PHP
Précédent Suivant

XI. Crack

Introduction

Ces fonctions vous permettent d'utiliser la librairie CrackLib, pour tester la robustesse de vos mots de passe. Cette librairie teste la taille, les majuscules et minuscules, et effectue des recherches dans le dictionnaire CrackLib. CrackLib donne aussi des conseils pour renforcer vos mots de passe.

Pré-requis

Plus d'informations concernant la librairie CrackLib sont disponibles à http://www.crypticide.org/users/alecm/.

Installation

Pour utiliser cette fonction, vous devez compiler PHP avec l'extension Crack, en utilisant l'option de compilation --with-crack[=DIR].

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
crack.default_dictionary | NULL | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Cet exemple montre comment ouvrir un dictionnaire CrackLib, tester un mot de passe, lire le diagnostic et refermer le dictionnaire.

Exemple 1. Exemple CrackLib

<?php
// Ouverture du dictionnaire CrackLib
$dictionary = crack_opendict('/usr/local/lib/pw_dict')
     or die('Unable to open CrackLib dictionary');

// V&eacute;rification du mot de passe
$check = crack_check($dictionary, 'gx9A2s0x');

// Lecture du diagnostic
$diag = crack_getlastmessage();
echo $diag; // 'strong password'

// Fermeture du dictionnaire
crack_closedict($dictionary);
?>

Note : Si crack_check() retourne TRUE, crack_getlastmessage() retournera le message 'strong password' (mot de passe robuste).

Table des matières
crack_check -- Effectue une vérification de mot de passe
crack_closedict -- Referme le dictionnaire CrackLib
crack_getlastmessage -- Retourne le message de diagnostic
crack_opendict -- Ouvre un nouveau dictionnaire CrackLib dictionary

Précédent | Sommaire | Suivant
cpdf_translate | Niveau supérieur | crack_check


crack_check

(PHP 4 >= 4.0.5)

crack_check -- Effectue une vérification de mot de passe

Description

bool crack_check ( [resource dictionary, string password])

crack_check() retourne TRUE si password est robuste, et FALSE sinon.

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

crack_check() effectue d'obscures vérfications sur le mot de passe password fourni, avec le dictionnaire dictionary. Si dictionary est omis, le dernier dictionnaire ouvert sera utilisé.

Précédent | Sommaire | Suivant
Crack | Niveau supérieur | crack_closedict


crack_closedict

(PHP 4 >= 4.0.5)

crack_closedict -- Referme le dictionnaire CrackLib

Description

bool crack_closedict ( [resource dictionary])

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

crack_closedict() ferme le dictionnaire dictionary. Si dictionary n'est pas spécifié, le dictionnaire courant est fermé.

Précédent | Sommaire | Suivant
crack_check | Niveau supérieur | crack_getlastmessage


crack_getlastmessage

(PHP 4 >= 4.0.5)

crack_getlastmessage -- Retourne le message de diagnostic

Description

string crack_getlastmessage ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

crack_getlastmessage() retourne le diagnotic obtenu lors de la dernière vérification.

Précédent | Sommaire | Suivant
crack_closedict | Niveau supérieur | crack_opendict


crack_opendict

(PHP 4 >= 4.0.5)

crack_opendict -- Ouvre un nouveau dictionnaire CrackLib dictionary

Description

resource crack_opendict ( string dictionary)

crack_opendict() retourne une ressource représentant un dictionnaire, en cas de succès, et FALSE sinon.

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

crack_opendict() ouvre le dictionnarie CrackLib dictionary, afin de pouvoir l'utiliser avec crack_check().

Note : Un seul dictionnaire peut être utilisé en même temps.

Voir aussi crack_check() et crack_closedict().

Précédent | Sommaire | Suivant
crack_getlastmessage | Niveau supérieur | CURL


CURL

Manuel PHP
Précédent Suivant

XII. CURL

Introduction

PHP supporte libcurl, une librairie créée par Daniel Stenberg, qui vous permet de vous connecter, de communiquer avec de nombreux serveurs, grâce à de nombreux protocoles. libcurl supporte actuellement les protocoles suivants : HTTP, HTTPS, FTP, gopher, telnet, dict, file, et LDAP. libcurl supporte aussi les certificats HTTPS, les POST HTTP, PUT HTTP, le chargement par FTP (ce qui peut être fait par l'extension FTP), les chargements par formulaire HTTP, les proxies, les cookies et l'authentification par mot de passe et nom de compte.

Ces fonctions ont été ajoutées en PHP 4.0.2.

Pré-requis

Pour pouvoir utiliser les fonctions CURL, vous devez installer le package CURL. PHP requiert la version CURL 7.0.2-beta ou plus récente. PHP ne fonctionnera pas avec une version inférieure à la version 7.0.2-beta. A partir de PHP 4.2.3, vous aurez besoin de la version 7.9.0 ou plus récente.

Installation

Pour utiliser CURL depuis les scripts PHP, vous devez aussi compiler PHP avec l'option --with-curl[=DIR] où DIR est le chemin jusqu'au dossier contenant les dossiers lib et include. Dans le dossier include il doit se trouver un dossier appelé curl, qui contient notamment les fichiers easy.h et curl.h. Il doit aussi se trouver un fichier nommé libcurl.a dans le dossier lib. A partir de PHP 4.3.0, vous pouvez aussi configurer PHP pour qu'il utilise curl comme gestionnaire d'URL avec l'option --with-curlwrappers.

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies libeay32.dll et ssleay32.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 ou C:\WINDOWS\SYSTEM).

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

CURLOPT_PORT (entier)

CURLOPT_FILE (entier)

CURLOPT_INFILE (entier)

CURLOPT_INFILESIZE (entier)

CURLOPT_URL (entier)

CURLOPT_PROXY (entier)

CURLOPT_VERBOSE (entier)

CURLOPT_HEADER (entier)

CURLOPT_HTTPHEADER (entier)

CURLOPT_NOPROGRESS (entier)

CURLOPT_NOBODY (entier)

CURLOPT_FAILONERROR (entier)

CURLOPT_UPLOAD (entier)

CURLOPT_POST (entier)

CURLOPT_FTPLISTONLY (entier)

CURLOPT_FTPAPPEND (entier)

CURLOPT_NETRC (entier)

CURLOPT_FOLLOWLOCATION (entier)

CURLOPT_FTPASCII (entier)

CURLOPT_PUT (entier)

CURLOPT_MUTE (entier)

CURLOPT_USERPWD (entier)

CURLOPT_PROXYUSERPWD (entier)

CURLOPT_RANGE (entier)

CURLOPT_TIMEOUT (entier)

CURLOPT_POSTFIELDS (entier)

CURLOPT_REFERER (entier)

CURLOPT_USERAGENT (entier)

CURLOPT_FTPPORT (entier)

CURLOPT_LOW_SPEED_LIMIT (entier)

CURLOPT_LOW_SPEED_TIME (entier)

CURLOPT_RESUME_FROM (entier)

CURLOPT_COOKIE (entier)

CURLOPT_SSLCERT (entier)

CURLOPT_SSLCERTPASSWD (entier)

CURLOPT_WRITEHEADER (entier)

CURLOPT_SSL_VERIFYHOST (entier)

CURLOPT_COOKIEFILE (entier)

CURLOPT_SSLVERSION (entier)

CURLOPT_TIMECONDITION (entier)

CURLOPT_TIMEVALUE (entier)

CURLOPT_CUSTOMREQUEST (entier)

CURLOPT_STDERR (entier)

CURLOPT_TRANSFERTEXT (entier)

CURLOPT_RETURNTRANSFER (entier)

CURLOPT_QUOTE (entier)

CURLOPT_POSTQUOTE (entier)

CURLOPT_INTERFACE (entier)

CURLOPT_KRB4LEVEL (entier)

CURLOPT_HTTPPROXYTUNNEL (entier)

CURLOPT_FILETIME (entier)

CURLOPT_WRITEFUNCTION (entier)

CURLOPT_READFUNCTION (entier)

CURLOPT_PASSWDFUNCTION (entier)

CURLOPT_HEADERFUNCTION (entier)

CURLOPT_MAXREDIRS (entier)

CURLOPT_MAXCONNECTS (entier)

CURLOPT_CLOSEPOLICY (entier)

CURLOPT_FRESH_CONNECT (entier)

CURLOPT_FORBID_REUSE (entier)

CURLOPT_RANDOM_FILE (entier)

CURLOPT_EGDSOCKET (entier)

CURLOPT_CONNECTTIMEOUT (entier)

CURLOPT_SSL_VERIFYPEER (entier)

CURLOPT_CAINFO (entier)

CURLOPT_COOKIEJAR (entier)

CURLOPT_SSL_CIPHER_LIST (entier)

CURLOPT_BINARYTRANSFER (entier)

CURLCLOSEPOLICY_LEAST_RECENTLY_USED (entier)

CURLCLOSEPOLICY_LEAST_TRAFFIC (entier)

CURLCLOSEPOLICY_SLOWEST (entier)

CURLCLOSEPOLICY_CALLBACK (entier)

CURLCLOSEPOLICY_OLDEST (entier)

CURLINFO_EFFECTIVE_URL (entier)

CURLINFO_HTTP_CODE (entier)

CURLINFO_HEADER_SIZE (entier)

CURLINFO_REQUEST_SIZE (entier)

CURLINFO_TOTAL_TIME (entier)

CURLINFO_NAMELOOKUP_TIME (entier)

CURLINFO_CONNECT_TIME (entier)

CURLINFO_PRETRANSFER_TIME (entier)

CURLINFO_SIZE_UPLOAD (entier)

CURLINFO_SIZE_DOWNLOAD (entier)

CURLINFO_SPEED_DOWNLOAD (entier)

CURLINFO_SPEED_UPLOAD (entier)

CURLINFO_FILETIME (entier)

CURLINFO_SSL_VERIFYRESULT (entier)

CURLINFO_CONTENT_LENGTH_DOWNLOAD (entier)

CURLINFO_CONTENT_LENGTH_UPLOAD (entier)

CURLE_OK (entier)

CURLE_UNSUPPORTED_PROTOCOL (entier)

CURLE_FAILED_INIT (entier)

CURLE_URL_MALFORMAT (entier)

CURLE_URL_MALFORMAT_USER (entier)

CURLE_COULDNT_RESOLVE_PROXY (entier)

CURLE_COULDNT_RESOLVE_HOST (entier)

CURLE_COULDNT_CONNECT (entier)

CURLE_FTP_WEIRD_SERVER_REPLY (entier)

CURLE_FTP_ACCESS_DENIED (entier)

CURLE_FTP_USER_PASSWORD_INCORRECT (entier)

CURLE_FTP_WEIRD_PASS_REPLY (entier)

CURLE_FTP_WEIRD_USER_REPLY (entier)

CURLE_FTP_WEIRD_PASV_REPLY (entier)

CURLE_FTP_WEIRD_227_FORMAT (entier)

CURLE_FTP_CANT_GET_HOST (entier)

CURLE_FTP_CANT_RECONNECT (entier)

CURLE_FTP_COULDNT_SET_BINARY (entier)

CURLE_PARTIAL_FILE (entier)

CURLE_FTP_COULDNT_RETR_FILE (entier)

CURLE_FTP_WRITE_ERROR (entier)

CURLE_FTP_QUOTE_ERROR (entier)

CURLE_HTTP_NOT_FOUND (entier)

CURLE_WRITE_ERROR (entier)

CURLE_MALFORMAT_USER (entier)

CURLE_FTP_COULDNT_STOR_FILE (entier)

CURLE_READ_ERROR (entier)

CURLE_OUT_OF_MEMORY (entier)

CURLE_OPERATION_TIMEOUTED (entier)

CURLE_FTP_COULDNT_SET_ASCII (entier)

CURLE_FTP_PORT_FAILED (entier)

CURLE_FTP_COULDNT_USE_REST (entier)

CURLE_FTP_COULDNT_GET_SIZE (entier)

CURLE_HTTP_RANGE_ERROR (entier)

CURLE_HTTP_POST_ERROR (entier)

CURLE_SSL_CONNECT_ERROR (entier)

CURLE_FTP_BAD_DOWNLOAD_RESUME (entier)

CURLE_FILE_COULDNT_READ_FILE (entier)

CURLE_LDAP_CANNOT_BIND (entier)

CURLE_LDAP_SEARCH_FAILED (entier)

CURLE_LIBRARY_NOT_FOUND (entier)

CURLE_FUNCTION_NOT_FOUND (entier)

CURLE_ABORTED_BY_CALLBACK (entier)

CURLE_BAD_FUNCTION_ARGUMENT (entier)

CURLE_BAD_CALLING_ORDER (entier)

CURLE_HTTP_PORT_FAILED (entier)

CURLE_BAD_PASSWORD_ENTERED (entier)

CURLE_TOO_MANY_REDIRECTS (entier)

CURLE_UNKNOWN_TELNET_OPTION (entier)

CURLE_TELNET_OPTION_SYNTAX (entier)

CURLE_OBSOLETE (entier)

CURLE_SSL_PEER_CERTIFICATE (entier)

Exemples

Une fois que vous avez compilé PHP avec le support CURL, vous pouvez commencer à l'exploiter avec vos scripts PHP. Le principe de fonctionnement est d'initialiser une session CURL avec curl_init(), puis de choisir toutes vos options de transfert avec curl_exec() et de finir votre session avec curl_close(). Voici un exemple d'utilisation des fonctions CURL, qui récupère la page principale de PHP :

Exemple 1. Utilisation de CURL et PHP pour récupérer une page

<?php

$ch = curl_init ("http://www.nexen.net/");
$fp = fopen ("example_homepage.txt", "w");

curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);

curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
?>

Table des matières
curl_close -- Ferme une session CURL
curl_errno -- Retourne un entier représentant le dernier message d'erreur CURL
curl_error -- Retourne une chaîne contenant le dernier message d'erreur CURL
curl_exec -- Exécute une session CURL
curl_getinfo -- Lit les informations détaillant un transfert CURL
curl_init -- Initialise une session CURL
curl_multi_add_handle -- Ajoute une ressource cURL à un cURL multiple
curl_multi_close -- Termine un jeu de transferts cURL
curl_multi_exec -- Exécute les sous-requêtes d'un cURL
curl_multi_getcontent -- Retourne le contenu obtenu avec l'option CURLOPT_RETURNTRANSFER
curl_multi_info_read -- Lit les informations sur les transferts actuels
curl_multi_init -- Retourne un nouveau cURL multiple
curl_multi_remove_handle -- Retire un cURL multiple d'un jeu de cURL
curl_multi_select -- Retourne les sockets associées à cURL, pour utilisation
curl_setopt -- Modifie une option de transfert CURL
curl_version -- Retourne la version courante de CURL

Précédent | Sommaire | Suivant
crack_opendict | Niveau supérieur | curl_close


curl_close

(PHP 4 >= 4.0.2)

curl_close -- Ferme une session CURL

Description

void curl_close ( resource ch)

curl_close() ferme une session CURL et libère toutes les ressources réservées. L'identifiant CURL, ch, est aussi effacé.

Précédent | Sommaire | Suivant
CURL | Niveau supérieur | curl_errno


curl_errno

(PHP 4 >= 4.0.3)

curl_errno -- Retourne un entier représentant le dernier message d'erreur CURL

Description

int curl_errno ( resource ch)

curl_errno() retourne le numéro d'erreur de la dernière opération cURL, avec la ressource ch, ou 0 (zéro) si aucune erreur n'est survenue.

Voir aussi curl_error().

Précédent | Sommaire | Suivant
curl_close | Niveau supérieur | curl_error


curl_error

(PHP 4 >= 4.0.3)

curl_error -- Retourne une chaîne contenant le dernier message d'erreur CURL

Description

string curl_error ( resource ch)

curl_error() retourne un message clair représentant la dernière erreur qui est survenue avec la ressource ch ou '' (la chaîne vide) si aucune erreur n'est survenue.

Voir aussi curl_errno().

Précédent | Sommaire | Suivant
curl_errno | Niveau supérieur | curl_exec


curl_exec

(PHP 4 >= 4.0.2)

curl_exec -- Exécute une session CURL

Description

bool curl_exec ( resource ch)

curl_exec() doit être appelée après l'initialisation et le paramétrage d'une session CURL. Son but est simplement d'exécuter la session ch.

Tuyau : Comme pour toutes les fonctions qui affichent directement des résultats au navigateur, vous pouvez utiliser les fonctions de gestion des sorties pour capturer le contenu de cette fonction et le sauver, par exemple, dans une chaîne.

Précédent | Sommaire | Suivant
curl_error | Niveau supérieur | curl_getinfo


curl_getinfo

(PHP 4 >= 4.0.4)

curl_getinfo -- Lit les informations détaillant un transfert CURL

Description

string curl_getinfo ( resource ch [, int opt])

curl_getinfo() lit les informations détaillant le transfert identifié par la ressource ch. Le paramètre opt peut prendre l'une des valeurs suivantes :

  • CURLINFO_EFFECTIVE_URL - Dernière URL réelle

  • CURLINFO_HTTP_CODE - Dernier code HTTP reçu

  • CURLINFO_FILETIME - Date distante du document, et -1 si la date du document distant est inconnue.

  • CURLINFO_TOTAL_TIME - Durée de la transaction en secondes pour le dernier transfert

  • CURLINFO_NAMELOOKUP_TIME - Durée de résolution du nom de domaine en secondes

  • CURLINFO_CONNECT_TIME - Durée d'établissement de la connexion en secondes

  • CURLINFO_PRETRANSFER_TIME - Durée en secondes, entre le début de la transaction et de début du transfert de fichiers

  • CURLINFO_STARTTRANSFER_TIME - Durée en secondes jusqu'à ce que le premier octet soit sur le point d'être transféré

  • CURLINFO_REDIRECT_TIME - Durée en secondes de toutes les étapes de redirection avant que la transaction finale ne soit débutée

  • CURLINFO_SIZE_UPLOAD - Nombre total d'octets envoyés

  • CURLINFO_SIZE_DOWNLOAD - Nombre total d'octets téléchargés

  • CURLINFO_SPEED_DOWNLOAD - Vitesse moyenne de téléchargement

  • CURLINFO_SPEED_UPLOAD - Vitesse moyenne d'envoi

  • CURLINFO_HEADER_SIZE - Taille des en-têtes reçus

  • CURLINFO_REQUEST_SIZE - Taille totale des requêtes envoyées. Actuellement, uniquement pour les requêtes HTTP

  • CURLINFO_SSL_VERIFYRESULT - Résultat de la vérification de la certification SSL demandée par CURLOPT_SSL_VERIFYPEER

  • CURLINFO_CONTENT_LENGTH_DOWNLOAD - Taille du corps du téléchargement, lu dans l'en-tête Content-Length:

  • CURLINFO_CONTENT_LENGTH_UPLOAD - Taille spécifiée de l'envoi.

  • CURLINFO_CONTENT_TYPE - Content-Type: du fichier téléchargé. NULL indique que le serveur n'a pas envoyé d'en-tête Content-Type:

Lorsqu'elle est appelée sans le paramètre opt, un tableau associatif est retourné avec les éléments suivants :

  • url

  • content_type

  • http_encode

  • header_size

  • request_size

  • filetime

  • ssl_verify_result

  • redirect_count

  • total_time

  • namelookup_time

  • connect_time

  • pretransfer_time

  • size_upload

  • size_download

  • speed_download

  • speed_upload

  • download_content_length

  • upload_content_length

  • starttransfer_time

  • redirect_time

Précédent | Sommaire | Suivant
curl_exec | Niveau supérieur | curl_init


curl_init

(PHP 4 >= 4.0.2)

curl_init -- Initialise une session CURL

Description

resource curl_init ( [string url])

curl_init() initialise une nouvelle session et retourne un identifiant de session CURL à utiliser avec les fonctions curl_setopt(), curl_exec() et curl_close(). Si le paramètre optionnel url est fourni, alors CURLOPT_URL prendra cette valeur. Vous pouvez manuellement fixer cette valeur avec la fonction curl_setopt().

Exemple 1. Initialiser une session CURL et récupérer une page web

<?php
$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL, "http://www.exemple.com/");
curl_setopt ($ch, CURLOPT_HEADER, 0);

curl_exec ($ch);

curl_close ($ch);
?>

Voir aussi curl_close() et curl_setopt().

Précédent | Sommaire | Suivant
curl_getinfo | Niveau supérieur | curl_multi_add_handle


curl_multi_add_handle

(PHP 5 CVS only)

curl_multi_add_handle -- Ajoute une ressource cURL à un cURL multiple

Description

int curl_multi_add_handle ( resource mh, resource ch)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi
curl_multi_init(),
curl_init(), et
curl_multi_remove_handle().

Précédent | Sommaire | Suivant
curl_init | Niveau supérieur | curl_multi_close


curl_multi_close

(PHP 5 CVS only)

curl_multi_close -- Termine un jeu de transferts cURL

Description

void curl_multi_close ( resource mh)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_multi_init() et curl_close().

Précédent | Sommaire | Suivant
curl_multi_add_handle | Niveau supérieur | curl_multi_exec


curl_multi_exec

(PHP 5 CVS only)

curl_multi_exec -- Exécute les sous-requêtes d'un cURL

Description

int curl_multi_exec ( resource mh)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_multi_init() et curl_exec().

Précédent | Sommaire | Suivant
curl_multi_close | Niveau supérieur | curl_multi_getcontent


curl_multi_getcontent

(PHP 5 CVS only)

curl_multi_getcontent -- Retourne le contenu obtenu avec l'option CURLOPT_RETURNTRANSFER

Description

string curl_multi_getcontent ( resource ch)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_multi_init().

Précédent | Sommaire | Suivant
curl_multi_exec | Niveau supérieur | curl_multi_info_read


curl_multi_info_read

(PHP 5 CVS only)

curl_multi_info_read -- Lit les informations sur les transferts actuels

Description

array curl_multi_info_read ( resource mh)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_multi_init().

Précédent | Sommaire | Suivant
curl_multi_getcontent | Niveau supérieur | curl_multi_init


curl_multi_init

(PHP 5 CVS only)

curl_multi_init -- Retourne un nouveau cURL multiple

Description

resource curl_multi_init ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_init() et curl_multi_close().

Précédent | Sommaire | Suivant
curl_multi_info_read | Niveau supérieur | curl_multi_remove_handle


curl_multi_remove_handle

(PHP 5 CVS only)

curl_multi_remove_handle -- Retire un cURL multiple d'un jeu de cURL

Description

int curl_multi_remove_handle ( resource mh, resource ch)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi
curl_multi_init(),
curl_init() et
curl_multi_add_handle().

Précédent | Sommaire | Suivant
curl_multi_init | Niveau supérieur | curl_multi_select


curl_multi_select

(PHP 5 CVS only)

curl_multi_select -- Retourne les sockets associées à cURL, pour utilisation

Description

int curl_multi_select ( resource mh [, float timeout])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi curl_multi_init().

Précédent | Sommaire | Suivant
curl_multi_remove_handle | Niveau supérieur | curl_setopt


curl_setopt

(PHP 4 >= 4.0.2)

curl_setopt -- Modifie une option de transfert CURL

Description

bool curl_setopt ( resource ch, string option, mixed value)

curl_setopt() fixe les options de transfert de la session CURL identifiée par ch. option est le nom de l'option à fixer, et value est sa valeur.

value doit être de type "long" pour les options suivantes (spécifiée par option) :

  • curlopt_infilesize : Lorsque vous téléchargez un fichier sur un site distant, cette option sert à indiquer à PHP la taille maximale du fichier attendu.

  • curlopt_verbose : Choisissez une valeur non nulle pour que CURL vous affiche tous les événements.

  • curlopt_header : Choisissez une valeur non nulle pour que CURL inclut l'en-tête dans la valeur de retour.

  • curlopt_noprogress : Choisissez une valeur non nulle pour que PHP n'affiche pas l'état des transferts CURL.

    Note : PHP choisit automatiquement une valeur non nulle. Ne changez cette valeur que le temps du débogage.

  • curlopt_nobody : Choisissez une valeur non nulle pour que le corps du transfert ne soit pas inclus dans la valeur de retour.

  • curlopt_failonerror : Choisissez une valeur non nulle pour que PHP traite silencieusement les codes HTTP supérieurs à 300. Le comportement par défaut est de retourner la page normalement, en ignorant ce code.

  • curlopt_upload : Choisissez une valeur non nulle pour que PHP prépare un chargement.

  • curlopt_post : Choisissez une valeur non nulle pour que PHP fasse un HTTP POST. Un POST est un encodage normal "application/x-www-from-url", utilisé couramment par les formulaires HTML.

  • curlopt_ftplistonly : Choisissez une valeur non nulle pour que PHP ne fasse que lister les noms d'un dossier FTP.

  • curlopt_ftpappend : Choisissez une valeur non nulle pour que PHP concatène le fichier distant, plutôt que de l'écraser.

  • curlopt_netrc : Choisissez une valeur non nulle pour que PHP analyse votre fichier ~./netrc et utilise votre nom de compte et mot de passe sur le site distant que vous souhaitez contacter.

  • curlopt_followlocation : Choisissez une valeur non nulle pour suivre toutes les en-têtes "Location: " que le serveur envoie dans les en-têtes HTTP (notez que cette fonction est récursive et que PHP suivra toutes les en-têtes "Location: " qu'il trouvera).

  • curlopt_put : Choisissez une valeur non nulle pour que pour chargement se fasse par HTTP PUT. Le fichier à charger doit être fixé avec les options CURLOPT_INFILE et CURLOPT_INFILESIZE.

  • curlopt_mute : Choisissez une valeur non nulle pour que PHP soit totalement silencieux concernant toutes les fonctions CURL.

  • curlopt_timeout : Passez un entier "long" comme paramètre qui représente le temps maximum d'exécution de la fonction CURL.

  • curlopt_low_speed_limit : Passez un entier long qui représente la vitesse minimale en octets par secondes en dessous de laquelle, et pendant CURLOPT_LOW_SPEED secondes, PHP considérera qu'elle est trop lente, et annulera le transfert.

  • curlopt_low_speed_time : Passez un entier "long" qui représente le temps en secondes, qui, si la vitesse de transfert reste en dessous de CURLOPT_LOW_SPEED_LIMIT, PHP considèrera que la connexion est trop lente, et l'annulera.

  • curlopt_resume_from : Passez un entier "long", qui représente l'offset, en octets, à partir duquel vous voulez commencer le transfert.

  • curlopt_sslversion : Passez un entier "long" qui contient la version de SSL (2 ou 3) à utiliser. Par défaut, PHP essaiera de le déterminer lui-même, bien que dans certains cas, il vous faudra le faire manuellement.

  • curlopt_timecondition : Passez un entier "long" qui définit comment CURLOPT_TIMEVALUE est utilisé. Vous pouvez choisir entre les valeurs TIMECOND_IFMODSINCE ou TIMECOND_ISUNMODSINCE. C'est une fonctionnalité HTTP.

  • curlopt_timevalue : Passez un entier "long" qui représente le temps en secondes depuis le 1er janvier 1970. Cette valeur sera utilisée comme spécifié dans l'option CURLOPT_TIMEVALUE. Par défaut, TIMECOND_IFMODSINCE sera utilisée.

value doit être une chaîne de caractères pour les valeurs suivantes de option

  • curlopt_url : L'URL que PHP va récupérer. Vous pouvez aussi choisir cette valeur lors de l'appel à curl_init().

  • curlopt_userpwd : Passez une chaîne de caractères au format [nom]:[mot de passe], pour que PHP l'utilise lors de la connexion.

  • curlopt_proxyuserpwd : Passez une chaîne de caractères au format [nom]:[mot de passe ], pour que PHP l'utilise lors de la connexion à un proxy HTTP.

  • curlopt_range : Passez une chaîne de caractères qui représente la plage de valeurs que vous désirez. Elle est au format "X-Y", où les valeurs de X ou Y peuvent être omises. Le transfert HTTP supporte aussi plusieurs intervalles, séparés par des virgules : X-Y,N-M.

  • curlopt_postfields : Passez une chaîne de caractères qui contient toutes les données à passer lors d'une opération de HTTP POST.

  • curlopt_referer : Passez une chaîne de caractères qui contient l'en-tête de "REFERER", utilisé lors d'une requête HTTP.

  • curlopt_useragent : Passez une chaîne de caractères qui contient l'en-tête "user-agent" utilisé dans une requête HTTP.

  • curlopt_ftpport : Passez une chaîne de caractères qui désignera l'adresse IP utilisée pour l'instruction FTP "PORT". L'instruction POST indique au serveur distant de se connecter à cette adresse IP. La chaîne peut être une adresse IP, un nom d'hôte, un nom d'interface réseau (sous UNIX), ou juste '-', pour utiliser les IP par défaut du système.

  • curlopt_cookie : Passez une chaîne de caractères qui contiendra le contenu du cookie, à transmettre dans l'en-tête HTTP.

  • curlopt_sslcert : Passez une chaîne de caractères qui contiendra le nom de fichier du certificat, au format PEM.

  • curlopt_sslcertpasswd : Passez une chaîne de caractères qui contient le mot de passe nécessaire pour utiliser le certificat CURLOPT_SSLCERT.

  • curlopt_cookiefile : Passez une chaîne de caractères qui contiendra le nom du fichier contenant les données de cookie. Le fichier de cookie peut être au format Netscape, ou simplement des en-têtes HTTP écrits dans un fichier.

  • curlopt_customrequest : Passez une chaîne de caractères qui sera utilisée à la place de GET ou HEAD lors des requêtes HTTP. Cette commande est pratique pour effectuer un DELETE ou une autre commande HTTP exotique.

    Note : N'utilisez pas cette commande sans vous assurer que le serveur l'accepte.

Les options suivantes requièrent un pointeur de fichier, qui est obtenu avec la fonction fopen() :

  • curlopt_file : Le fichier de sortie de votre transfert. Par défaut, STDOUT.

  • curlopt_infile : Le fichier d'entrée de votre transfert.

  • curlopt_writeheader : Le fichier de destination de l'en-tête de la sortie du transfert.

  • curlopt_stderr : Le fichier d'erreurs.

Précédent | Sommaire | Suivant
curl_multi_select | Niveau supérieur | curl_version


curl_version

(PHP 4 >= 4.0.2)

curl_version -- Retourne la version courante de CURL

Description

string curl_version ( void )

curl_version() retourne une chaîne avec la version courante de la librairie CURL.

Précédent | Sommaire | Suivant
curl_setopt | Niveau supérieur | Paiement Cybercash


Paiement Cybercash

Manuel PHP
Précédent Suivant

XIII. Paiement Cybercash

Installation

Ces fonctions ne sont disponibles que si PHP a été compilé avec l'option --with-cybercash=[DIR]. Ces fonctions ont été ajoutées dans PHP 4.

Cette extension a été déplacée depuis la distribution PHP 4.3.0 dans PECL.

Si vous avez des questions concernant le statut de CyberCash, voyez la FAQ CyberCash. En bref, Cybercash a été acheté par VeriSign et bien que le service CyberCash existe toujours, VeriSign encourage les clients à changer. Voyez la FAQ ci-dessus et le lien sur PECL pour plus de détails.

Table des matières
cybercash_base64_decode --
cybercash_base64_encode --
cybercash_decr --
cybercash_encr --

Précédent | Sommaire | Suivant
curl_version | Niveau supérieur | cybercash_base64_decode


cybercash_base64_decode

(PHP 4 <= 4.2.3)

cybercash_base64_decode --

Description

string cybercash_base64_decode ( string inbuff)

Précédent | Sommaire | Suivant
Paiement Cybercash | Niveau supérieur | cybercash_base64_encode


cybercash_base64_encode

(PHP 4 <= 4.2.3)

cybercash_base64_encode --

Description

string cybercash_base64_encode ( string inbuff)

Précédent | Sommaire | Suivant
cybercash_base64_decode | Niveau supérieur | cybercash_decr


cybercash_decr

(PHP 4 <= 4.2.3)

cybercash_decr --

Description

array cybercash_decr ( string wmk, string sk, string inbuff)

cybercash_decr() retourne un tableau associatif, contenant les éléments "errcode" et, si "errcode" vaut FALSE, "outbuff" (string), "outLth" (long) et "macbuff" (string).

Précédent | Sommaire | Suivant
cybercash_base64_encode | Niveau supérieur | cybercash_encr


cybercash_encr

(PHP 4 <= 4.2.3)

cybercash_encr --

Description

array cybercash_encr ( string wmk, string sk, string inbuff)

cybercash_encr() retourne un tableau associatif, contenant les éléments "errcode" et, si "errcode" vaut FALSE, "outbuff" (string), "outLth" (long) et "macbuff" (string).

Précédent | Sommaire | Suivant
cybercash_decr | Niveau supérieur | Administration Cyrus IMAP


Administration Cyrus IMAP

Manuel PHP
Précédent Suivant

XIV. Administration Cyrus IMAP

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Table des matières
cyrus_authenticate -- S'identifie sur un serveur Cyrus IMAP
cyrus_bind -- Ajoute une fonction de callback sur une connexion Cyrus IMAP
cyrus_close -- Ferme la connexion à un serveur Cyrus IMAP
cyrus_connect -- Se connecte à un serveur Cyrus IMAP
cyrus_query -- Envoie une requête à un serveur Cyrus IMAP
cyrus_unbind -- Supprime une fonction de callback sur une connexion Cyrus IMAP

Précédent | Sommaire | Suivant
cybercash_encr | Niveau supérieur | cyrus_authenticate


cyrus_authenticate

(4.1.0 - 4.3.2 only)

cyrus_authenticate -- S'identifie sur un serveur Cyrus IMAP

Description

bool cyrus_authenticate ( resource connection [, string mechlist [, string service [, string user [, int minssf [, int maxssf]]]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Administration Cyrus IMAP | Niveau supérieur | cyrus_bind


cyrus_bind

(4.1.0 - 4.3.2 only)

cyrus_bind -- Ajoute une fonction de callback sur une connexion Cyrus IMAP

Description

bool cyrus_bind ( resource connection, array callbacks)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cyrus_authenticate | Niveau supérieur | cyrus_close


cyrus_close

(4.1.0 - 4.3.2 only)

cyrus_close -- Ferme la connexion à un serveur Cyrus IMAP

Description

bool cyrus_close ( resource connection)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cyrus_bind | Niveau supérieur | cyrus_connect


cyrus_connect

(4.1.0 - 4.3.2 only)

cyrus_connect -- Se connecte à un serveur Cyrus IMAP

Description

resource cyrus_connect ( [string host [, string port [, int flags]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cyrus_close | Niveau supérieur | cyrus_query


cyrus_query

(4.1.0 - 4.3.2 only)

cyrus_query -- Envoie une requête à un serveur Cyrus IMAP

Description

bool cyrus_query ( resource connection, string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cyrus_connect | Niveau supérieur | cyrus_unbind


cyrus_unbind

(4.1.0 - 4.3.2 only)

cyrus_unbind -- Supprime une fonction de callback sur une connexion Cyrus IMAP

Description

bool cyrus_unbind ( resource connection, string trigger_name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
cyrus_query | Niveau supérieur | Caractères


Caractères

Manuel PHP
Précédent Suivant

XV. Caractères

Introduction

Ces fonctions vérifient si un caractère ou une chaîne de caractères font partie d'une certaine classe de caractères, en fonction de la configuration locale.

Appelées avec un argument de type entier, ces fonctions se comportent exactement comme leur équivalent en langage C.

Appelées avec un argument de type chaîne, elles vérifieront chaque caractère de la chaîne, et ne retourneront TRUE que si chacun satisfait les critères requis.

Tout autre type d'argument (autre que chaîne ou entier) génère une erreur, et retourne FALSE immédiatement.

Pré-requis

Aucun pré-requis pour utiliser cette extension, hormis la librairie C standard, qui est toujours disponible.

Installation

Depuis PHP 4.2.0, ces fonctions sont activées par défaut. Pour les versions plus anciennes, vous devrez configurer et compiler PHP avec l'option --enable-ctype. Vous pouvez toujours désactiver le support de l'extension ctype avec l'option de compilation --disable-ctype.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
ctype_alnum -- Vérifie qu'une chaîne est alpha-numérique
ctype_alpha -- Vérifie qu'une chaîne est alphabétique
ctype_cntrl -- Vérifie qu'un caractère est un caractère de contrôle
ctype_digit -- Vérifie qu'une chaîne est un entier
ctype_graph -- Vérifie qu'une chaîne est imprimable
ctype_lower -- Vérifie qu'une chaîne est en minuscules
ctype_print -- Vérifie qu'une chaîne est imprimable
ctype_punct -- Vérifie qu'une chaîne contient de la ponctuation
ctype_space -- Vérifie qu'une chaîne est faîte de caractères blancs
ctype_upper -- Vérifie qu'une chaîne est en majuscules
ctype_xdigit -- Vérifie qu'un caractère représente un nombre hexadécimal

Précédent | Sommaire | Suivant
cyrus_unbind | Niveau supérieur | ctype_alnum


ctype_alnum

(PHP 4 >= 4.0.4)

ctype_alnum -- Vérifie qu'une chaîne est alpha-numérique

Description

bool ctype_alnum ( string text)

ctype_alnum() retourne TRUE si tous les caractères de la chaîne text sont des lettres et des chiffres. Elle retourne FALSE dans le cas contraire. En terme de langage C, les lettres sont [A-Za-z] et cette fonction est équivalente à preg_match('/^[a-z0-9]*$/i', $text).

Voir aussi
ctype_alpha(),
ctype_digit() et
setlocale().

Précédent | Sommaire | Suivant
Caractères | Niveau supérieur | ctype_alpha


ctype_alpha

(PHP 4 >= 4.0.4)

ctype_alpha -- Vérifie qu'une chaîne est alphabétique

Description

bool ctype_alpha ( string text)

ctype_alpha() retourne TRUE si tous les caractères de la chaîne text sont des lettres, et FALSE sinon. En langage C, les lettres sont [A-Za-z] et ctype_alpha() est équivalent à (ctype_upper($text) || ctype_lower($text)), si $text est un caractère unique, mais certaines langues ont des caractères qui ne sont ni des majuscules, ni des minuscules.

Voir aussi
ctype_upper(),
ctype_lower() et
setlocale().

Précédent | Sommaire | Suivant
ctype_alnum | Niveau supérieur | ctype_cntrl


ctype_cntrl

(PHP 4 >= 4.0.4)

ctype_cntrl -- Vérifie qu'un caractère est un caractère de contrôle

Description

bool ctype_cntrl ( string text)

ctype_cntrl() retourne TRUE si tous les caractères de la chaîne text sont des caractères de contrôle spéciaux. Ces caractères sont les nouvelles lignes, les tabulations, etc.

Précédent | Sommaire | Suivant
ctype_alpha | Niveau supérieur | ctype_digit


ctype_digit

(PHP 4 >= 4.0.4)

ctype_digit -- Vérifie qu'une chaîne est un entier

Description

bool ctype_digit ( string text)

ctype_digit() retourne TRUE si tous les caractères de la chaîne text sont des chiffres, et FALSE sinon.

Voir aussi ctype_alnum() et ctype_xdigit().

Précédent | Sommaire | Suivant
ctype_cntrl | Niveau supérieur | ctype_graph


ctype_graph

(PHP 4 >= 4.0.4)

ctype_graph -- Vérifie qu'une chaîne est imprimable

Description

bool ctype_graph ( string text)

ctype_graph() retourne TRUE si tous les caractères de la chaîne text ont une représentation graphique, et créeront une impression sur l'écran (les espaces n'en font pas partie).

Voir aussi
ctype_alnum(),
ctype_print() et
ctype_punct().

Précédent | Sommaire | Suivant
ctype_digit | Niveau supérieur | ctype_lower


ctype_lower

(PHP 4 >= 4.0.4)

ctype_lower -- Vérifie qu'une chaîne est en minuscules

Description

bool ctype_lower ( string text)

ctype_lower() retourne TRUE si tous les caractères de la chaîne text sont des minuscules.

Voir aussi ctype_alpha() et ctype_upper().

Précédent | Sommaire | Suivant
ctype_graph | Niveau supérieur | ctype_print


ctype_print

(PHP 4 >= 4.0.4)

ctype_print -- Vérifie qu'une chaîne est imprimable

Description

bool ctype_print ( string text)

ctype_print() retourne TRUE si tous les caractères de la chaîne text vont être imprimables à l'écran (y compris les espaces blancs).

Voir aussi
ctype_cntrl(),
ctype_graph() et
ctype_punct().

Précédent | Sommaire | Suivant
ctype_lower | Niveau supérieur | ctype_punct


ctype_punct

(PHP 4 >= 4.0.4)

ctype_punct -- Vérifie qu'une chaîne contient de la ponctuation

Description

bool ctype_punct ( string text)

ctype_punct() retourne TRUE si tous les caractères de la chaîne text sont imprimables, mais ne sont ni des lettres, ni des chiffres, ni des espaces.

Voir aussi
ctype_cntrl(),
ctype_graph() et
ctype_punct().

Précédent | Sommaire | Suivant
ctype_print | Niveau supérieur | ctype_space


ctype_space

(PHP 4 >= 4.0.4)

ctype_space -- Vérifie qu'une chaîne est faîte de caractères blancs

Description

bool ctype_space ( string text)

ctype_space() retourne TRUE si tous les caractères de la chaîne text vont créer un espace blanc, et sinon retourne FALSE. En plus de l'espace, cette définition couvre les tabulations (verticales et horizontales), les nouvelles lignes, les retours chariots et les retours à la ligne.

Précédent | Sommaire | Suivant
ctype_punct | Niveau supérieur | ctype_upper


ctype_upper

(PHP 4 >= 4.0.4)

ctype_upper -- Vérifie qu'une chaîne est en majuscules

Description

bool ctype_upper ( string text)

ctype_upper() retourne TRUE si tous les caractères de la chaîne text sont des majuscules.

Voir aussi ctype_alpha() et ctype_lower().

Précédent | Sommaire | Suivant
ctype_space | Niveau supérieur | ctype_xdigit


ctype_xdigit

(PHP 4 >= 4.0.4)

ctype_xdigit -- Vérifie qu'un caractère représente un nombre hexadécimal

Description

bool ctype_xdigit ( string text)

ctype_xdigit() retourne TRUE si tous les caractères de la chaîne text sont des chiffres hexadécimaux, c'est-à-dire un chiffre ou une des lettres [A-Fa-f], sinon, elle renvoie FALSE.

Voir aussi ctype_digit().

Précédent | Sommaire | Suivant
ctype_upper | Niveau supérieur | DBA


DBA

Manuel PHP
Précédent Suivant

XVI. DBA

Ces fonctions constituent l'interface avec les bases de type Berkeley.

C'est une couche générale pour plusieurs bases de données sur fichiers. En tant que telles, les fonctionnalités sont limitées à une partie des fonctionnalités des bases de données modernes, comme Sleepycat Software's DB2 (à ne pas confondre avec IBM's DB2 software, qui fonctionne avec ODBC).

Le comportement de certaines fonctions dépend de la base de données utilisée. Par exemple dba_optimize() et dba_sync() n'auront pas le même effet d'une base à l'autre.

Lors de l'utilisation de la fonction dba_open() ou de dba_popen(), une des librairies suivantes doit être fournie comme argument. La liste complète des librairies supportées par votre configuration est disponible avec la fonction phpinfo(). (Pour inclure le support de l'une de ces librairies, ajoutez l'option de configuration --with-XXXX.)

Tableau 1. Liste des librairies DBA

Librairie | Notes
dbm | Dbm est la plus ancienne des base de données de type Berkeley. Il vaut mieux l'éviter, si possible. Les fonctions de compatibilités codées dans DB2 et gdbm ne sont pas supportées, car elles ne sont compatibles qu'au niveau du code source et ne peuvent pas gérer le format dbm originel. ( --with-dbm).
inifile | Ceci est disponible depuis PHP 4.3.3 pour pouvoir modifier les fichiers php.ini depuis les scripts PHP. Lorsque vous travaillez avec des fichiers ini, vous pouvez passer des tableaux de la forme array(0 => groupe, 1=>nom_valeur) ou des chaînes de la forme "[groupe]nom_valeur" où groupe est optionnel. Comme les fonctions dba_firstkey() et dba_nextkey() retournent des représentations de la clef au format chaîne, il existe une nouvelle fonction, dba_key_split(), disponible depuis PHP 5 qui permet de convertir la chaîne de caractères de clefs en tableau de clefs sans perdre FALSE.
ndbm | ndbm est un nouveau type de dbm plus flexible. Il a cependant la majorité des limitations du genre. ( --with-ndbm).
gdbm | gdbm est la base dbm GNU. ( --with-gdbm).
db2 | db2 est DB2 de Sleepycat Software. Elle se décrit comme un "ensemble d'outils qui fournissent une base de données performante, tant pour les applications indépendantes que pour le client/serveur". ( --with-db2).
db3 | DB3 est le DB3 de Sleepycat Software. ( --with-db3).
cdb | cdb est "un package rapide, robuste, léger pour créer et lire des bases de données constantes". C'est l'auteur de qmail qui l'a écrit, et elle est disponible ici. Puisque c'est une base constante, elle ne supporte que la lecture. (--with-cdb).

Exemple 1. Exemple DBA

<?php
$id = dba_open("/tmp/test.db", "n", "db2");
if(!$id) {
    echo "dba_open a échoué\n";
    exit;
}
dba_replace("key", "Ceci est un exemple!", $id);
if(dba_exists("key", $id)) {
    echo dba_fetch("key", $id);
    dba_delete("key", $id);
}
dba_close($id);
?>

DBA gère les données binaires et n'a pas de limites arbitraires. Elle hérite de toutes les limites de la base sous-jacente.

Toutes les bases de données sur fichiers doivent fournir un moyen de changer le mode d'accès au fichier d'une base et, si possible, de toutes les bases. Le mode d'accès est généralement passé en quatrième argument à dba_open() ou dba_popen().

Vous pouvez accéder à toutes les entrées d'une base d'une manière linéaire, avec les fonctions dba_firstkey() et dba_nextkey(). Vous ne devez pas modifier une base lorsque vous la traversez ainsi.

Exemple 2. Passer en revue une base

<?php
// ...ouverture de la base...
$key = dba_firstkey($id);
while($key != FALSE) {
    if(...) {
// conserver la clé pour faire d'autres opérations plus tard
        $handle_later[] = $key;
    }
    $key = dba_nextkey($id);
}
for($i = 0; $i < count($handle_later); $i++)
    dba_delete($handle_later[$i], $id);
?>

Table des matières
dba_close -- Ferme une base.
dba_delete -- Efface une entrée.
dba_exists -- Vérifie qu'une clé existe.
dba_fetch -- Lit les données liées à une clé.
dba_firstkey -- Lit la première clé.
dba_handlers -- Liste les gestionnaires disponibles
dba_insert -- Insère une entrée.
dba_key_split -- Transforme une représentation de clef par chaîne en une représentation par tableau
dba_list -- Liste tous les fichiers de base de données ouverts
dba_nextkey -- Lit la clé suivante.
dba_open -- Ouvre une base de données.
dba_optimize -- Optimise une base.
dba_popen -- Ouvre une connexion persistante à une base de données.
dba_replace -- Remplace ou insère une entrée.
dba_sync -- Synchronise une base de données.

Précédent | Sommaire | Suivant
ctype_xdigit | Niveau supérieur | dba_close


dba_close

(PHP 3>= 3.0.8, PHP 4 )

dba_close -- Ferme une base.

Description

void dba_close ( resource handle)

dba_close() ferme le lien établi avec la base et libère toutes les ressources de handle.

handle est un identifiant de base, retourné par dba_open().

dba_close() ne retourne aucune valeur.

Voir aussi dba_open() et dba_popen().

Précédent | Sommaire | Suivant
DBA | Niveau supérieur | dba_delete


dba_delete

(PHP 3>= 3.0.8, PHP 4 )

dba_delete -- Efface une entrée.

Description

bool dba_delete ( string key, resource handle)

dba_delete() efface l'entrée spécifiée par la clé key, dans la base identifiée par handle.

key est la clé de l'entrée à effacer.

handle est un identifiant de lien, retourné par dba_open().

dba_delete() retourne TRUE ou FALSE, si l'entrée est effacée, ou pas effacée, respectivement.

Voir aussi
dba_exists(),
dba_fetch(),
dba_insert() et
dba_replace()

Précédent | Sommaire | Suivant
dba_close | Niveau supérieur | dba_exists


dba_exists

(PHP 3>= 3.0.8, PHP 4 )

dba_exists -- Vérifie qu'une clé existe.

Description

boolean dba_exists ( string key, resource handle)

dba_exists() vérifie si la clé key existe dans la base identifiée par handle.

key est la clé qui doit être vérifiée.

handle est un identifiant de base, retourné par dba_open().

dba_exists() retourne TRUE ou FALSE, si la clé est trouvée, ou pas, respectivement.

Voir aussi
dba_fetch(),
dba_delete(),
dba_insert() et
dba_replace().

Précédent | Sommaire | Suivant
dba_delete | Niveau supérieur | dba_fetch


dba_fetch

(PHP 3>= 3.0.8, PHP 4 )

dba_fetch -- Lit les données liées à une clé.

Description

string dba_fetch ( string key, resource handle)

string dba_fetch ( string key, int skip, resource handle)

dba_fetch() lit les données spécifiées par la clé key dans la base identifiée par handle.

key est la clé dont on veut lire les données.

handle est un identifiant de base, retourné par dba_open().

dba_fetch() retourne la chaîne associée ou FALSE, si la paire clé/valeur n'a pas été trouvée.

Note : Le paramètre skip est disponible depuis PHP 4.3 pour supporter la capacité de cdb d'avoir des clefs multiples ayant le même nom.

Note : Losque vous travaillez avec des fichiers ini cette fonction accepte des tableaux comme clefs où l'index 0 est le groupe et l'index 1 est le nom de la valeur. Voir dba_key_split().

Voir aussi
dba_exists(),
dba_delete(),
dba_insert(),
dba_replace() et
dba_key_split().

Précédent | Sommaire | Suivant
dba_exists | Niveau supérieur | dba_firstkey


dba_firstkey

(PHP 3>= 3.0.8, PHP 4 )

dba_firstkey -- Lit la première clé.

Description

string dba_firstkey ( resource handle)

dba_firstkey() retourne la première clé de la base de données spécifiée par handle et y place le pointeur interne de clé. Cela permettra de traverser la base.

handle est un identifiant de base, retourné par dba_open().

dba_firstkey() retourne la clé, ou FALSE, suivant que la première clé existe ou pas.

Voir aussi dba_nextkey(), dba_key_split() et l'exemple 2 de l'introduction DBA.

Précédent | Sommaire | Suivant
dba_fetch | Niveau supérieur | dba_handlers


dba_handlers

(PHP 4 >= 4.3.0)

dba_handlers -- Liste les gestionnaires disponibles

Description

array dba_handlers ( void )

dba_handlers() retourne un tableau avec tous les gestionnaires supportés par cette extension.

Lorsque la librairie cdb interne est utilisée, vous verrez 'cdb' et 'cdb_make'.

Précédent | Sommaire | Suivant
dba_firstkey | Niveau supérieur | dba_insert


dba_insert

(PHP 3>= 3.0.8, PHP 4 )

dba_insert -- Insère une entrée.

Description

boolean dba_insert ( string key, string value, resource handle)

dba_insert() insère l'entrée décrite par la clé key et la valeur value dans la base spécifiée par handle. Si une entrée avec la même clé key existe déjà, l'insertion échouera.

key est la clé de la valeur à insérer.

value est la valeur à insérer.

handle est un identifiant de base, retourné par dba_open().

dba_insert() retourne TRUE ou FALSE, suivant que l'insertion a réussi ou échoué.

Voir aussi
dba_exists(),
dba_delete(),
dba_fetch() et
dba_replace().

Précédent | Sommaire | Suivant
dba_handlers | Niveau supérieur | dba_key_split


dba_key_split

(no version information, might be only in CVS)

dba_key_split -- Transforme une représentation de clef par chaîne en une représentation par tableau

Description

mixed dba_key_split ( mixed key)

dba_key_split() retourne FALSE si key est NULL ou FALSE. En cas de succès, cette fonction retourne un tableau de la forme array(0=>groupe, 1=>nom_valeur).

key est la clef représentée par une chaîne de caractères.

Voir aussi
dba_firstkey(),
dba_nextkey() et
dba_fetch().

Précédent | Sommaire | Suivant
dba_insert | Niveau supérieur | dba_list


dba_list

(PHP 4 >= 4.3.0)

dba_list -- Liste tous les fichiers de base de données ouverts

Description

array dba_list ( void )

dba_list() retourne un tableau associatif avec tous les fichiers de base de données ouverts. Ce tableau est de la forme : idresource=>nomfichier.

Précédent | Sommaire | Suivant
dba_key_split | Niveau supérieur | dba_nextkey


dba_nextkey

(PHP 3>= 3.0.8, PHP 4 )

dba_nextkey -- Lit la clé suivante.

Description

string dba_nextkey ( resource handle)

dba_nextkey() retourne la clé suivante, dans la base identifiée par handle et incrémente le pointeur de clé.

handle est un identifiant de base, retourné par dba_open().

dba_nextkey() retourne la clé, ou FALSE en cas d'échec.

Voir aussi dba_firstkey(), dba_key_split() et l'exemple 2 dans les exemples DBA.

Précédent | Sommaire | Suivant
dba_list | Niveau supérieur | dba_open


dba_open

(PHP 3>= 3.0.8, PHP 4 )

dba_open -- Ouvre une base de données.

Description

int dba_open ( string path, string mode, string handler [, mixed ...])

dba_open() établit une connexion à la base repérée par path avec le mode mode et l'identifiant handler.

pathest le chemin sur votre machine.

mode vaut "r" pour lecture seule, "w" pour lecture/écriture, "c" pour lecture/écriture, et création si la base n'existe pas, et "n" pour création, écrasement et accès en lecture/écriture.

handler est le nom de l'identifiant qui sera utilisé pour accéder à path. Il est passé à dba_popen().

Voir aussi dba_popen() et dba_close().

Précédent | Sommaire | Suivant
dba_nextkey | Niveau supérieur | dba_optimize


dba_optimize

(PHP 3>= 3.0.8, PHP 4 )

dba_optimize -- Optimise une base.

Description

boolean dba_optimize ( resource handle)

dba_optimize() optimise la base de données identifiée par handle.

handle est un identifiant de base retourné par dba_open().

dba_optimize() retourne TRUE ou FALSE, suivant que l'optimisation a réussi ou échoué.

Voir aussi dba_sync().

Précédent | Sommaire | Suivant
dba_open | Niveau supérieur | dba_popen


dba_popen

(PHP 3>= 3.0.8, PHP 4 )

dba_popen -- Ouvre une connexion persistante à une base de données.

Description

int dba_popen ( string path, string mode, string handler [, mixed ...])

dba_popen() établit une connexion persistante à la base repérée par path avec le mode mode, en utilisant l'identifiant handler.

path est le chemin sur votre machine.

mode vaut "r" pour lecture seule, "w" pour lecture/écriture, "c" pour lecture/écriture, et création si la base n'existe pas, et "n" pour création, écrasement, et accès en lecture/écriture.

handler est le nom de l'identifiant qui sera utilisé pour accéder à path. Il est passé à dba_popen().

dba_popen() retourne un identifiant positif, ou FALSE, suivant que la base a été ouverte, ou que l'accès a échoué.

Voir aussi dba_open() et dba_close().

Précédent | Sommaire | Suivant
dba_optimize | Niveau supérieur | dba_replace


dba_replace

(PHP 3>= 3.0.8, PHP 4 )

dba_replace -- Remplace ou insère une entrée.

Description

boolean dba_replace ( string key, string value, resource handle)

dba_replace() remplace ou insère une entrée, pour la clé key et avec la valeur value dans la base identifiée par handle.

key est la clé qui va être insérée.

value est la valeur qui va être insérée.

handle est un identifiant de base retourné par dba_open().

dba_replace() retourne TRUE ou FALSE, suivant que l'opération réussit ou échoue.

Voir aussi
dba_exists(),
dba_delete(),
dba_fetch() et
dba_insert().

Précédent | Sommaire | Suivant
dba_popen | Niveau supérieur | dba_sync


dba_sync

(PHP 3>= 3.0.8, PHP 4 )

dba_sync -- Synchronise une base de données.

Description

boolean dba_sync ( resource handle)

dba_sync() synchronise la base de données spécifiée par handle. Si accepté, cela va probablement lancer une opération de réécriture physique du fichier.

handle est un identifiant de base retourné par dba_open().

dba_sync() retourne TRUE ou FALSE, si la synchronisation réussi, ou échoue, respectivement.

Voir aussi dba_optimize().

Précédent | Sommaire | Suivant
dba_replace | Niveau supérieur | Dates et heures


Dates et heures

Manuel PHP
Précédent Suivant

XVII. Dates et heures

Introduction

Ces fonctions vous permettent de manipuler la date et l'heure sur le serveur qui exécute PHP. Vous pouvez utiliser ces fonctions pour formater la date et l'heure de nombreuses façons.

Note : N'oubliez pas que ces fonctions dépendent de la configuration locale de votre serveur. Faites notamment attention aux changements d'heure d'hiver et d'été, ainsi qu'aux années bissextiles.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
checkdate -- Valide une date/heure
date -- Formate une date/heure locale
getdate -- Retourne la date/heure
gettimeofday -- Retourne l'heure actuelle
gmdate -- Formate une date/heure GMT/CUT
gmmktime -- Retourne le timestamp UNIX d'une date GMT
gmstrftime -- Formate une date/heure GMT/CUT en fonction des paramétrages locaux.
localtime -- Lit l'heure locale
microtime -- Retourne le timestamp UNIX actuel avec microsecondes.
mktime -- Retourne le timestamp UNIX d'une date.
strftime -- Formate une date/heure locale avec les options locales.
strtotime -- Transforme un texte anglais en timestamp
time -- Retourne le timestamp UNIX actuel.

Précédent | Sommaire | Suivant
dba_sync | Niveau supérieur | checkdate


checkdate

(PHP 3, PHP 4 )

checkdate -- Valide une date/heure

Description

int checkdate ( int month, int day, int year)

checkdate() retourne TRUE si la date représentée par le jour day, le mois month et l'année year est valide, et sinon FALSE. Notez bien que l'ordre des arguments n'est pas l'ordre français. La date est considérée comme valide si :

  • L'année est comprise entre entre 1 et 32767 inclus. (pour les versions antérieures à PHP 4.0.3, les années inférieures à 1 étaient aussi valides).

  • Le mois est compris entre 1 et 12 inclus

  • Le jour est compris dans l'intervalle de dates du mois. Les années bissextiles sont prises en compte.

Précédent | Sommaire | Suivant
Dates et heures | Niveau supérieur | date


date

(PHP 3, PHP 4 )

date -- Formate une date/heure locale

Description

string date ( string format [, int timestamp])

date() retourne une date sous forme d'une chaîne, au format donné par la chaîne format. La date est fournie par le paramètre timestamp, sous la forme d'un timestamp. Par défaut, la date courante est utilisée.

Note : L'intervalle de validité d'un timestamp va généralement du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT. (Ces dates correspondent aux valeurs minimales et maximales des entiers 32 bits non-signés).

Pour générer un timestamp à partir d'une représentation de date, pour pouvez utiliser la fonction strtotime(). De plus, certaines bases de données disposent de fonctions pour convertir leurs propres formats de date en timestamps (comme par exemple, MySQL et sa fonction UNIX_TIMESTAMP()).

Les caractères suivants sont utilisés pour spécifier le format :

  • a - "am" (matin) ou "pm" (après-midi)

  • A - "AM" (matin) ou "PM" (après-midi)

  • B - Heure Internet Swatch

  • d - Jour du mois, sur deux chiffres (éventuellement avec un zéro) : "01" à "31"

  • D - Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi)

  • F - Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier)

  • g - Heure, au format 12h, sans les zéros initiaux i.e. "1" à "12"

  • G - Heure, au format 24h, sans les zéros initiaux i.e. "0" à "23"

  • h - Heure, au format 12h, "01" à "12"

  • H - heure, au format 24h, "00" à "23"

  • i - Minutes; "00" à "59"

  • I (i majuscule) - "1" si l'heure d'été est activée, "0" si l'heure d'hiver .

  • j - Jour du mois sans les zéros initiaux: "1" à "31"

  • l - ('L' minuscule) - Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi)

  • L - Booléen pour savoir si l'année est bissextile ("1") ou pas ("0")

  • m - Mois; i.e. "01" à "12"

  • M - Mois, en trois lettres (et en anglais) : par exemple "Apr" (pour Avril)

  • n - Mois sans les zéros initiaux; i.e. "1" à "12"

  • O - Différence d'heures avec l'heure de Greenwich, exprimée en heures; i.e. "+0200"

  • r - Format de date RFC 822; i.e. "Thu, 21 Dec 2000 16:01:07 +0200" (ajouté en PHP 4.0.4)

  • s - Secondes; i.e. "00" à "59"

  • S - Suffixe ordinal d'un nombre, en anglais, sur deux lettres : i.e. "th", "nd"

  • t - Nombre de jours dans le mois donné, i.e. "28" à "31"

  • T - Fuseau horaire de la machine ; i.e. "MET"

  • U - Secondes depuis une époque

  • w - Jour de la semaine, numérique, i.e. "0" (Dimanche) to "6" (Samedi)

  • W - Numéro de semaine dans l'année ISO-8601 : les semaines commencent le lundi (ajouté en PHP 4.1.0)

  • Y - Année, 4 chiffres; i.e. "1999"

  • y - Année, 2 chiffres; i.e. "99"

  • z - Jour de l'année; i.e. "0" à "365"

  • Z - Décalage horaire en secondes (i.e. "-43200" à "43200")

Les caractères non reconnus seront imprimés tels quel. "Z" retournera toujours "0" lorsqu'il est utilisé avec gmdate().

Exemple 1. Exemple avec date()

<?php
  echo (date("l dS of F Y h:i:s A"));
  echo ("Le 14 Juillet 2002 tombe un " . date("l", mktime(0,0,0,7,14,2002)));
?>

Vous pouvez faire afficher un caractère spécial dans la chaîne de format en le protégeant par un anti-slash. Si le caractère est lui-même une séquence incluant un anti-slash, vous devrez protéger aussi l'anti-slash.

Exemple 2. Protection des caractères avec date()

<?php
echo date("l \\t\h\e jS");
// affiche 'Saturday the 8th'
// \t repr&eacute;sente une tabulation
?>

Il est possible d'utiliser date() et mktime() ensemble pour générer des dates dans le futur ou dans le passé.

Exemple 3. Exemples avec date() et mktime()

<?php
  $demain          = mktime(0,0,0,date("m")  ,date("d") + 1,date("Y")    );
  $le_mois_dernier = mktime(0,0,0,date("m")-1,date("d")    ,date("Y")    );
  $l_an_prochain   = mktime(0,0,0,date("m"),  date("d")    ,date("Y") + 1);
?>

Note : Cette méthode est plus sûre que simplement ajouter ou retrancher le nombre de secondes dans une journée ou un mois à un timestamp, à cause des heures d'hiver et d'été.

Voici maintenant quelques exemples de formatage avec date(). Notez que vous devriez échapper tous les autres caractères, car s'ils ont une signification spéciale, ils risquent de produire des effets secondaires indésirables. Notez aussi que les versions futures de PHP peuvent attribuer une signification à des lettres qui sont actuellement inertes. Lorsque vous échappez les caractères, pensez à utiiser des guillemets simples, pour que les séquences \n ne deviennent pas des nouvelles lignes.

Exemple 4. Formatage avec date()

<?php
/* Aujourd'hui, le 12 Mars 2001, 10:16:18 pm */
  $aujourdhui = date("F j, Y, g:i a");                 // March 12, 2001, 10:16 pm
  $aujourdhui = date("m.d.y");                         // 03.12.01
  $aujourdhui = date("j, m, Y");                       // 12, 3, 2001
  $aujourdhui = date("Ymd");                           // 20010312
  $aujourdhui = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 12-03-01, 1631 1618 6 Monpm01
  $aujourdhui = date('\C\'\e\s\t\ \l\e\ jS \j\o\u\r\.');   // C'est le 12th jour.
  $aujourdhui = date("D M j G:i:s T Y");               // Mon Mar 12 15:16:08 MST 2001
  $aujourdhui = date('H:m:s \m \e\s\t\ \l\e\ \m\o\i\s');     // 17:03:18 m est le mois
  $aujourdhui = date("H:i:s");                         // 10:16:18
// notation fran&ccedil;aise
$aujourdhui = date("d/m/y");                         // 12/03/01
$aujourdhui = date("d/m/Y");                         // 12/03/2001
?>

Pour formater des dates dans d'autres langues, utilisez les fonctions setlocale() et strftime().

Voir aussi
getlastmod(),
time(),
strftime(),
gmdate() et
mktime().

Précédent | Sommaire | Suivant
checkdate | Niveau supérieur | getdate


getdate

(PHP 3, PHP 4 )

getdate -- Retourne la date/heure

Description

array getdate ( [int timestamp])

getdate() retourne un tableau associatif contenant les informations de date et d'heure du timestamp timestamp (lorsqu'il est fourni), avec les champs suivants :

  • "seconds" - secondes

  • "minutes" - minutes

  • "hours" - heures

  • "mday" - jour du mois

  • "wday" - jour de la semaine, numérique. 0: dimanche jusqu'à 6: samedi

  • "mon" - mois, numérique

  • "year" - année, numérique

  • "yday" - jour de l'année, numérique; i.e. "299"

  • "weekday" - jour de la semaine, texte complet (en anglais); i.e. "Friday"

  • "month" - mois, texte complet (en anglais); i.e. "January"

Exemple 1. Exemple avec getdate()

<?php
  $aujourdhui = getdate();
  $mois = $aujourdhui['month'];
  $mjour = $aujourdhui['mday'];
  $annee = $aujourdhui['year'];
  echo "$mjour/$mois/$annee";
?>

Précédent | Sommaire | Suivant
date | Niveau supérieur | gettimeofday


gettimeofday

(PHP 3>= 3.0.7, PHP 4 )

gettimeofday -- Retourne l'heure actuelle

Description

array gettimeofday ( void )

gettimeofday() est une interface vers gettimeofday(2). Elle retourne un tableau associatif qui contient les informations retournées par le système :

  • "sec" - secondes

  • "usec" - microsecondes

  • "minuteswest" - minutes de décalage par rapport à Greenwich, vers l'Ouest.

  • "dsttime" - type de correction dst

Précédent | Sommaire | Suivant
getdate | Niveau supérieur | gmdate


gmdate

(PHP 3, PHP 4 )

gmdate -- Formate une date/heure GMT/CUT

Description

string gmdate ( string format [, int timestamp])

gmdate() est identique à la fonction date(), hormis le fait que le temps retourné est GMT (Greenwich Mean Time). Par exemple, en Finlande (GMT +0200), la première ligne ci-dessous affiche "Jan 01 1998 00:00:00", tandis que la seconde "Dec 31 1997 22:00:00".

Exemple 1. Exemple avec gmdate()

<?php
  echo date("M d Y H:i:s", mktime(0,0,0,1,1,1998));
  echo gmdate("M d Y H:i:s", mktime(0,0,0,1,1,1998));
?>

Voir aussi
date(),
strftime(),
mktime() et
gmmktime().

Précédent | Sommaire | Suivant
gettimeofday | Niveau supérieur | gmmktime


gmmktime

(PHP 3, PHP 4 )

gmmktime -- Retourne le timestamp UNIX d'une date GMT

Description

int gmmktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])

gmmktime est identique à mktime() hormis le fait que les paramètres passés sont GMT.

Précédent | Sommaire | Suivant
gmdate | Niveau supérieur | gmstrftime


gmstrftime

(PHP 3>= 3.0.12, PHP 4 )

gmstrftime -- Formate une date/heure GMT/CUT en fonction des paramétrages locaux.

Description

string gmstrftime ( string format [, int timestamp])

gmstrftime() se comporte exactement comme strftime() hormis le fait que l'heure utilisée est celle de Greenwich (Greenwich Mean Time (GMT)). Par exemple, dans la zone Eastern Standard Time (est des USA) (GMT -0500), la première ligne de l'exemple ci-dessous affiche "Dec 31 1998 20:00:00", tandis que la seconde affiche "Jan 01 1999 01:00:00".

Exemple 1. Exemple avec gmstrftime()

<?php
  setlocale(LC_TIME, 'en_US');
  echo strftime("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";
  echo gmstrftime("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";
?>

Voir aussi strftime().

Précédent | Sommaire | Suivant
gmmktime | Niveau supérieur | localtime


localtime

(PHP 4 )

localtime -- Lit l'heure locale

Description

array localtime ( [int timestamp [, boolean is_associative]])

localtime() retourne un tableau identique à la structure retournée par la fonction C localtime. Le premier argument timestamp est un timestamp UNIX. S'il n'est pas fourni, l'heure courante est utilisée. Le second argument is_associative, s'il est mis à 0 ou ignoré, force localtime() à retourner un tableau à index numérique. S'il est mis à 1, localtime() retourne un tableau associatif, avec tous les éléments de la structure C, accessible avec les clés suivantes :

  • "tm_sec" - secondes

  • "tm_min" - minutes

  • "tm_hour" - heure

  • "tm_mday" - jour du mois

  • "tm_mon" - mois de l'année

  • "tm_year" - Année, incompatible an 2000

  • "tm_wday" - Jour de la semaine

  • "tm_yday" - Jour de l'année

  • "tm_isdst" - Est-ce que l'heure d'hiver a pris effet?

Précédent | Sommaire | Suivant
gmstrftime | Niveau supérieur | microtime


microtime

(PHP 3, PHP 4 )

microtime -- Retourne le timestamp UNIX actuel avec microsecondes.

Description

string microtime ( void )

microtime() retourne la chaîne "msec sec" avec sec qui est mesurée en secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT), et msec qui est le nombre de microsecondes de cette heure. Cette fonction est seulement disponible sur les systèmes d'exploitation qui supportent la fonction système gettimeofday().

Les deux parties de la chaîne sont exprimées en secondes.

Exemple 1. Exemple avec microtime()

<?php
  function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
  }
  $time_start = getmicrotime();
  for ($i=0; $i > 1000; $i++){
    //ne rien faire, pendant un millier de fois...
  }
  $time_end = getmicrotime();
  $time = $time_end - $time_start;
  echo "Rien fait durant $time secondes";
?>

Voir aussi time().

Précédent | Sommaire | Suivant
localtime | Niveau supérieur | mktime


mktime

(PHP 3, PHP 4 )

mktime -- Retourne le timestamp UNIX d'une date.

Description

int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])

ATTENTION : l'ordre des arguments est différent de celui de la commande UNIX habituelle mktime(), et fournit des résultats aléatoires si on oublie cet ordre. C'est une erreur très commune que de se tromper de sens.

mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970) et le temps spécifié.

Les arguments peuvent être omis, de droite à gauche, et tous les arguments manquants sont utilisés avec la valeur courante de l'heure et du jour.

is_dst peut être mis à 1 si l'heure d'hiver est appliquée, 0 si elle ne l'est pas, et -1 (par défaut) si on ne sait pas.

Note : is_dst a été ajouté à partir de la version 3.0.10.

mktime() est pratique pour faire des calculs de dates et des validations, car elle va automatiquement corriger les valeurs invalides. Par exemple, toutes les lignes suivantes vont retourner la même date : "Jan-01-1998".

Exemple 1. Exemple mktime()

<?php
  echo date("M-d-Y", mktime (0,0,0,12,32,1997));
  echo date("M-d-Y", mktime (0,0,0,13,1,1997));
  echo date("M-d-Y", mktime (0,0,0,1,1,1998));
  echo date("M-d-Y", mktime (0,0,0,1,1,98));
?>
year peut prendre deux ou quatre chiffres, avec les valeurs entre 0-69 qui correspondent à 2000-2069 et 70-99 à 1970-1999 (sur les systèmes où time_t sont sur des entiers 32bit signés, comme cela se fait le plus souvent de nos jours, year est valide dans l'intervalle 1902 et 2037.

Le dernier jour d'un mois peut être décrit comme le jour "0" du mois suivant, et non pas le jour -1. Les deux exemples suivants vont donner : "Le dernier jour de Fevrier 2000 est: 29".

Exemple 2. Dernier jour du mois

<?php
  $lastday = mktime (0,0,0,3,0,2000);
  echo strftime ("Le dernier jour de Fevrier 2000 est: %d", $lastday);
  $lastday = mktime (0,0,0,4,-31,2000);
  echo strftime ("Le dernier jour de Fevrier 2000 est: %d", $lastday);
?>

Voir aussi date() et time().

Précédent | Sommaire | Suivant
microtime | Niveau supérieur | strftime


strftime

(PHP 3, PHP 4 )

strftime -- Formate une date/heure locale avec les options locales.

Description

string strftime ( string format [, int timestamp])

strftime() retourne la date sous la forme d'une chaîne formatée conformément au format format, en utilisant le timestamp timestamp donné. Si le timestamp est omis, la date actuelle est utilisée. Les mois et jours de la semaine, et toutes les chaînes dépendantes de la langue sont fixées avec la commande setlocale().

Les caractères suivants sont utilisés pour spécifier le format de la date :

  • %a - nom abrégé du jour de la semaine (local).

  • %A - nom complet du jour de la semaine (local).

  • %b - nom abrégé du mois (local).

  • %B - nom complet du mois (local).

  • %c - représentation préférée pour les dates et heures, en local.

  • %C - numéro de siècle (l'année, divisée par 100 et arrondie entre 00 et 99)

  • %d - jour du mois en numérique (intervalle 01 à 31)

  • %D - identique à %m/%d/%y

  • %e - numéro du jour du mois. Les chiffres sont précédés d'un espace (de ' 1' à '31')

  • %h - identique à %b

  • %H - heure de la journée en numérique, et sur 24-heures (intervalle de 00 à 23)

  • %I - heure de la journée en numérique, et sur 12- heures (intervalle 01 à 12)

  • %j - jour de l'année, en numérique (intervalle 001 à 366)

  • %m - mois en numérique (intervalle 1 à 12)

  • %M - minute en numérique

  • %n - newline character

  • %p - soit `am' ou `pm' en fonction de l'heure absolue, ou en fonction des valeurs enregistrées en local.

  • %r - l'heure au format a.m. et p.m.

  • %R - l'heure au format 24h

  • %S - secondes en numérique

  • %t - tabulation

  • %T - l'heure actuelle (égal à %H:%M:%S)

  • %u - le numéro de jour dans la semaine, de 1 à 7. (1 représente Lundi)

  • %U - numéro de semaine dans l'année, en considérant le premier dimanche de l'année comme le premier jour de la première semaine.

  • %V - le numéro de semaine comme défini dans l'ISO 8601:1988, sous forme décimale, de 01 à 53. La semaine 1 est la première semaine qui a plus de 4 jours dans l'année courante, et dont Lundi est le premier jour.

  • %W - numéro de semaine dans l'année, en considérant le premier lundi de l'année comme le premier jour de la première semaine

  • %w - jour de la semaine, numérique, avec Dimanche = 0

  • %x - format préféré de représentation de la date sans l'heure

  • %X - format préféré de représentation de l'heure sans la date

  • %y - l'année, numérique, sur deux chiffres (de 00 à 99)

  • %Y - l'année, numérique, sur quatre chiffres

  • %Z - fuseau horaire, ou nom ou abréviation

  • %% - un caractère `%' littéral

Note : Tous les caractères suivants ne sont pas toujours supportés par toutes les librairies C. Dans ce cas, ils ne seront pas supportés par PHP non plus.

Exemple 1. Exemple avec strftime()

<?php
  setlocale(LC_TIME, "C");
  echo strftime("%A en Finlandais est ");
  setlocale(LC_TIME, "fi");
  echo strftime("%A, en Fran&ccedil;ais ");
  setlocale(LC_TIME, "fr");
  echo strftime("%A et en Allemand ");
  setlocale(LC_TIME, "de");
  echo strftime("%A.\n");
?>
Cet exemple ne fonctionnera que si vous avez les locales respectives installées sur votre système.

Voir aussi
setlocale(),
mktime() et
le groupe de spécifications de strftime().

Précédent | Sommaire | Suivant
mktime | Niveau supérieur | strtotime


strtotime

(PHP 3>= 3.0.12, PHP 4 )

strtotime -- Transforme un texte anglais en timestamp

Description

int strtotime ( string time [, int now])

strtotime() essaye de lire une date au format anglais dans la chaîne time, et de la transformer en timestamp UNIX.

Exemple 1. Exemple avec strtotime()

<?php
// l'exemple n'est pas traduit, car cela ne fonctionne qu'en anglais
  echo strtotime("now") . "\n";
  echo strtotime("10 September 2000") . "\n";
  echo strtotime("+1 day") . "\n";
  echo strtotime("+1 week") . "\n";
  echo strtotime("+1 week 2 days 4 hours 2 seconds")."\n";
?>

Précédent | Sommaire | Suivant
strftime | Niveau supérieur | time


time

(PHP 3, PHP 4 )

time -- Retourne le timestamp UNIX actuel.

Description

int time ( void )

time() retourne l'heure courante, mesurée en secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT).

Voir aussi date().

Précédent | Sommaire | Suivant
strtotime | Niveau supérieur | dBase


dBase

Manuel PHP
Précédent Suivant

XVIII. dBase

Introduction

Ces fonctions vous permettront d'accéder aux enregistrements d'une base au format dBase (.dbf).

dBase ne permet pas l'utilisation d'index, de "memo fields", ni le blocage de la base. Deux processus de serveurs web différents modifiant le même fichier dBase risquent de rendre votre base de données incohérente.

Les fichiers dBase sont de simples fichiers séquentiels d'enregistrements de longueur fixe. Les enregistrements sont ajoutés à la fin du fichier et les enregistrements supprimés sont conservés jusqu'à l'appel de dbase_pack().

Nous vous recommandons de ne pas utiliser les fichiers dBase comme base de données de production. Choisissez n'importe quel serveur SQL à la place. MySQL et PostgreSQL sont des choix classiques avec PHP. Le support de dBase ne se justifie ici que pour vous permettre d'importer et d'exporter des données depuis et vers votre base de données issues du web, car ce format de fichier est communément accepté par les feuilles et assistants personnes type Windows. L'import et l'export de données sont les deux uniques fonctionnalités qui parlent en faveur de l'utilisation de dBase.

Installation

In order to enable the bundled dbase library and to use these functions, you must compile PHP with the --enable-dbase option.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
dbase_add_record -- Ajoute un enregistrement dans une base dBase
dbase_close -- Ferme une base dBase
dbase_create -- Crée une base de données dBase
dbase_delete_record -- Efface un enregistrement dans une base dBase
dbase_get_header_info -- Affichage des informations d'en-tête d'une base de données dBase.
dbase_get_record_with_names -- Lit un enregistrement dans une base dBase, sous la forme d'un tableau associatif
dbase_get_record -- Lit un enregistrement dans une base dBase
dbase_numfields -- Compte le nombre de champs d'une base dBase
dbase_numrecords -- Compte le nombre d'enregistrements dans une base dBase
dbase_open -- Ouvre une base dBase
dbase_pack -- Compacte une base dBase
dbase_replace_record -- Remplace un enregistrement dans une base dBase

Précédent | Sommaire | Suivant
time | Niveau supérieur | dbase_add_record


dbase_add_record

(PHP 3, PHP 4 )

dbase_add_record -- Ajoute un enregistrement dans une base dBase

Description

bool dbase_add_record ( int dbase_identifier, array record)

dbase_add_record() ajoute les données de record dans la base spécifiée par dbase_identifier. Si le nombre de colonnes fourni n'est pas celui du nombre de champ dans la base, l'opération échouera, et FALSE sera retourné.

Précédent | Sommaire | Suivant
dBase | Niveau supérieur | dbase_close


dbase_close

(PHP 3, PHP 4 )

dbase_close -- Ferme une base dBase

Description

bool dbase_close ( int dbase_identifier)

dbase_close() ferme la base associée à dbase_identifier.

Précédent | Sommaire | Suivant
dbase_add_record | Niveau supérieur | dbase_create


dbase_create

(PHP 3, PHP 4 )

dbase_create -- Crée une base de données dBase

Description

int dbase_create ( string filename, array fields)

dbase_create() crée une base de données dBase dans le fichier filename, et avec les champs fields.

fields est un tableau de tableaux. Chaque tableau décrit le format d'un fichier de la base. Chaque champ est constitué d'un nom, d'un caractère de type de champ, d'une longueur et d'une précision.

Les types de champ disponibles sont :

L

Boolean (booléen). Pas de longueur ou de précision pour ces valeurs.

M

Memo. (Note importante : les mémos ne sont pas supportés par PHP.) Elles n'ont pas de longueur ou de précision.

D

Date (enregistrée au format 'YYYYMMDD'). Elles n'ont pas de longueur ou de précision.

N

Number (nombre). Possède une longueur et une précision (le nombre de chiffres après la virgule).

C

String (chaîne de caractère).

Si la base de données a été créée, un identifiant de base dbase_identifier est retourné, sinon, FALSEest retourné.

Exemple 1. Création d'une base dBase

<?php
// "database" name
  $dbname = "/tmp/test.dbf";
// database "definition"
  $def =
    array(
        array("date",     "D"),
        array("name",     "C",  50),
        array("age",      "N",   3, 0),
        array("email",    "C", 128),
        array("ismember", "L")
    );
// cr&eacute;ation
  if (!dbase_create($dbname, $def))
    print "<strong>Erreur!</strong>";
?>

Précédent | Sommaire | Suivant
dbase_close | Niveau supérieur | dbase_delete_record


dbase_delete_record

(PHP 3, PHP 4 )

dbase_delete_record -- Efface un enregistrement dans une base dBase

Description

bool dbase_delete_record ( int dbase_identifier, int record)

dbase_delete_record() marque l'enregistrement record pour l'effacement, dans la base dbase_identifier. Pour effacer réellement l'enregistrement, il faut utiliser aussi dbase_pack().

Précédent | Sommaire | Suivant
dbase_create | Niveau supérieur | dbase_get_header_info


dbase_get_header_info

(no version information, might be only in CVS)

dbase_get_header_info -- Affichage des informations d'en-tête d'une base de données dBase.

Description

array dbase_get_header_info ( int dbase_identifier)

dbase_get_header_info() retourne des informations sur la structure des colonnes de la base de données référencée par dbase_identifier. Pour chaque colonne de la base de données, il y'a une entrée dans un tableau indexé numériquement. L'index du tableau commence à 0. Chaque entrée du tableau contient un tableau associatif contenant les informations des colonnes. Si les en-têtes d'informations de la base de données ne peuvent pas être lus, cette fonction retourne FALSE.

Les éléments du tableau sont :

name

Le nom de la colonne

type

Le type compréhensible de la colonne dBase (i.e. date, boolean, etc..)

length

Le nombre d'octets que cette colonne peut contenir

precision

Le nombre de décimales de précision pour la colonne

format

Une suggestion de format pour printf()

offset

L'octet d'offset de la colonne à partir du début de la ligne

Exemple 1. Affichage des informations d'en-tête d'un fichier de base de données dBase

<?php
// Chemin vers un fichier dBase
$db_path = "/tmp/test.dbf";

// Ouvre le fichier
$dbh = dbase_open($db_path)
    or die("Erreur! Impossible d'ouvrir le fichier '$db_path'.");

// Obtient les informations des colonnes
$column_info = dbase_get_header_info($dbh);

// Affiche les informations
print_r($column_info);
?>

Précédent | Sommaire | Suivant
dbase_delete_record | Niveau supérieur | dbase_get_record_with_names


dbase_get_record_with_names

(PHP 3>= 3.0.4, PHP 4 )

dbase_get_record_with_names -- Lit un enregistrement dans une base dBase, sous la forme d'un tableau associatif

Description

array dbase_get_record_with_names ( int dbase_identifier, int record)

dbase_identifier retourne les données de l'enregistrement record dans un tableau associatif. Le tableau inclut un membre nommé "deleted" (effacé), qui sera mis à 1 si l'enregistrement a été marqué pour l'effacement (voir dbase_delete_record()).

Chaque champ est converti au format approprié PHP, hormis :

  • Les dates, qui sont laissées au format chaîne

  • Les entiers qui causeraient des dépassement de capacité (> 32 bits) sont retournés comme des chaînes.

Précédent | Sommaire | Suivant
dbase_get_header_info | Niveau supérieur | dbase_get_record


dbase_get_record

(PHP 3, PHP 4 )

dbase_get_record -- Lit un enregistrement dans une base dBase

Description

array dbase_get_record ( int dbase_identifier, int record)

dbase_get_record() retourne les données de l'enregistrement record dans un tableau. Les données sont lues dans la base dbase_identifier. Le tableau est indexé à partir de 0, et inclus un membre nommé "deleted" (effacé), qui sera mis à 1 si l'enregistrement a été marqué pour l'effacement (voir dbase_delete_record()).

Chaque champ est converti au format approprié PHP, hormis :

  • Les dates, qui sont laissées au format chaîne

  • Les entiers qui causeraient des dépassement de capacité (> 32 bits) sont retournés comme des chaînes.

Précédent | Sommaire | Suivant
dbase_get_record_with_names | Niveau supérieur | dbase_numfields


dbase_numfields

(PHP 3, PHP 4 )

dbase_numfields -- Compte le nombre de champs d'une base dBase

Description

int dbase_numfields ( int dbase_identifier)

dbase_numfields() retourne le nombre de champs (colonnes) de la base de données dbase_identifier. Les numéros de champs sont numérotés de 0 à dbase_numfields($db)-1, tandis que les numéros d'enregistrements sont numérotés de 1 à dbase_numrecords($db).

Exemple 1. Utiliser dbase_numfields()

<?php
  $rec = dbase_get_record($db, $recno);
  $nf  = dbase_numfields($db);
  for ($i=0; $i < $nf; $i++) {
    print $rec[$i]."<BR>\n";
  }
?>

Précédent | Sommaire | Suivant
dbase_get_record | Niveau supérieur | dbase_numrecords


dbase_numrecords

(PHP 3, PHP 4 )

dbase_numrecords -- Compte le nombre d'enregistrements dans une base dBase

Description

int dbase_numrecords ( int dbase_identifier)

dbase_numrecords() retourne le nombre d'enregistrements (lignes) dans la base dbase_identifier. Les numéros de champ sont numérotés de 0 à dbase_numfields($db)-1, tandis que les numéros d'enregistrements sont numérotés de 1 à dbase_numrecords($db).

Précédent | Sommaire | Suivant
dbase_numfields | Niveau supérieur | dbase_open


dbase_open

(PHP 3, PHP 4 )

dbase_open -- Ouvre une base dBase

Description

int dbase_open ( string filename, int flags)

dbase_open() retourne un identifiant de base de données, représentant la base dBase contenue dans le fichier filename ou FALSEsi la base n'a pas pu être sélectionnée.

flags est une option, comme pour la fonction open(). (Typiquement, 0 signifie lecture seule, 1 signifie écriture seule, et 2 écriture/lecture).

dbase_open() retourne un identifiant de base de données ou FALSE si la base n'a pas pu être sélectionnée.

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Précédent | Sommaire | Suivant
dbase_numrecords | Niveau supérieur | dbase_pack


dbase_pack

(PHP 3, PHP 4 )

dbase_pack -- Compacte une base dBase

Description

bool dbase_pack ( int dbase_identifier)

dbase_pack() compacte la base de données dbase_identifier (effacement définitif de tous les enregistrements marqués pour l'effacement, avec la fonction dbase_delete_record()).

Précédent | Sommaire | Suivant
dbase_open | Niveau supérieur | dbase_replace_record


dbase_replace_record

(PHP 3>= 3.0.11, PHP 4 )

dbase_replace_record -- Remplace un enregistrement dans une base dBase

Description

bool dbase_replace_record ( int dbase_identifier, array record, int dbase_record_number)

dbase_replace_record() remplace les données associées à l'enregistrement dbase_record_number par les données enregistrées dans record, dans la base dbase_identifier. Si le nombre de colonnes fourni n'est pas celui du nombre de champ dans la base, l'opération échouera, et FALSE sera retourné.

dbase_record_number est un entier qui peut aller de 1 jusqu'au nombre maximal d'enregistrements de la base (retourné par dbase_numrecords()).

Précédent | Sommaire | Suivant
dbase_pack | Niveau supérieur | DBM


DBM

Manuel PHP
Précédent Suivant

XIX. DBM

Ces fonctions vous permettent d'écrire des lignes dans une base de données de type dbm. Ce type de base (supporté par Berkeley db, gdbm, quelques librairies systèmes, ou certaines librairies du système d'exploitation) enregistre les paires clés/valeurs, (contrairement aux enregistrements par ligne, utilisés par les autres bases de données relationnelles).

Exemple 1. Présentation de dbm

<?php
  $dbm = dbmopen("dernier", "w");
  if (dbmexists($dbm, $userid)) {
    $last_seen = dbmfetch($dbm, $userid);
  } else {
    dbminsert($dbm, $userid, time());
  }
  faire_quelquechose();
  dbmreplace($dbm, $userid, time());
  dbmclose($dbm);
?>

Table des matières
dblist -- Décrit la librairie dbm utilisée.
dbmclose -- Ferme une base de données dbm.
dbmdelete -- Efface une valeur.
dbmexists -- Indique si une valeur existe.
dbmfetch -- Lit une valeur.
dbmfirstkey -- Lit la première clé.
dbminsert -- Insère une valeur.
dbmnextkey -- Lit la clé suivante.
dbmopen -- Ouvre une base de données dbm
dbmreplace -- Remplace une valeur.

Précédent | Sommaire | Suivant
dbase_replace_record | Niveau supérieur | dblist


dblist

(PHP 3, PHP 4 )

dblist -- Décrit la librairie dbm utilisée.

Description

string dblist ( void )

Précédent | Sommaire | Suivant
DBM | Niveau supérieur | dbmclose


dbmclose

(PHP 3, PHP 4 )

dbmclose -- Ferme une base de données dbm.

Description

boolean dbmclose ( resource dbm_identifier)

dbmclose() déverrouille et ferme la base de données dbm_identifier.

Précédent | Sommaire | Suivant
dblist | Niveau supérieur | dbmdelete


dbmdelete

(PHP 3, PHP 4 )

dbmdelete -- Efface une valeur.

Description

boolean dbmdelete ( resource dbm_identifier, string key)

dbmdelete() efface la valeur de la clé key, dans la base dbm_identifier.

dbmdelete() retourne FALSE si la clé n'existe pas dans cette base.

Précédent | Sommaire | Suivant
dbmclose | Niveau supérieur | dbmexists


dbmexists

(PHP 3, PHP 4 )

dbmexists -- Indique si une valeur existe.

Description

boolean dbmexists ( resource dbm_identifier, string key)

dbmexists() retourne TRUE s'il y a une valeur associée à la clé key.

Précédent | Sommaire | Suivant
dbmdelete | Niveau supérieur | dbmfetch


dbmfetch

(PHP 3, PHP 4 )

dbmfetch -- Lit une valeur.

Description

string dbmfetch ( resource dbm_identifier, string key)

dbmfetch() retourne la valeur associée à la clé key.

Précédent | Sommaire | Suivant
dbmexists | Niveau supérieur | dbmfirstkey


dbmfirstkey

(PHP 3, PHP 4 )

dbmfirstkey -- Lit la première clé.

Description

string dbmfirstkey ( resource dbm_identifier)

dbmfirstkey() retourne la première clé de la base de données. Notez bien que les clés ne sont pas dans un ordre défini, étant donné que la table est construite comme un tableau associatif.

Précédent | Sommaire | Suivant
dbmfetch | Niveau supérieur | dbminsert


dbminsert

(PHP 3, PHP 4 )

dbminsert -- Insère une valeur.

Description

int dbminsert ( resource dbm_identifier, string key, string value)

dbminsert() ajoute la valeur value dans la base de données, avec la clé key.

dbminsert() retourne -1 si la base a été ouverte en mode lecture seule, 0 si l'insertion a été réussie, et 1 si la clé key existe déjà. (Pour remplacer la valeur, utilisez dbmreplace().)

Précédent | Sommaire | Suivant
dbmfirstkey | Niveau supérieur | dbmnextkey


dbmnextkey

(PHP 3, PHP 4 )

dbmnextkey -- Lit la clé suivante.

Description

string dbmnextkey ( resource dbm_identifier, string key)

dbmnextkey() retourne la clé après la clé key. En appelant dbmfirstkey(), puis successivement dbmnextkey(), il est possible de passer en revue toute les paires clé/valeur de la base de données dbm. Par exemple :

Exemple 1. Passer en revue une base de données.

<?php
  $cle = dbmfirstkey($dbm_id);
  while ($cle){
    echo "$cle = " . dbmfetch($dbm_id, $cle) . "\n";
    $cle = dbmnextkey($dbm_id, $cle);
  }
?>

Précédent | Sommaire | Suivant
dbminsert | Niveau supérieur | dbmopen


dbmopen

(PHP 3, PHP 4 )

dbmopen -- Ouvre une base de données dbm

Description

resource dbmopen ( string filename, string flags)

Le premier argument est le chemin absolu jusqu'au fichier dbm à ouvrir. Le deuxième argument est le mode d'ouverture du fichier, qui peut prendre les valeurs suivantes : "r", "n", "c" ou "w" qui représentent respectivement lecture seule, nouveau (ce qui implique lecture/écriture, et qui, probablement, va écraser une base existante), création(ce qui implique lecture/écriture, et qui, probablement, va écraser une base existante), et lecture/écriture.

dbmopen() retourne un identifiant, qui sera passé à toutes les autres fonctions dbm, en cas de succès, ou FALSEen cas d'échec.

Si ndbm est utilisé, ndbm va créer les fichiers filename.dir et filename.pag. gdbm n'utilise qu'un fichier, tout comme les librairies internes, et Berkeley db crée le fichier filename.db. Notez que PHP dispose de son propre système de verrouillage des fichiers, qui s'additionne à celui éventuellement utilisé par les librairies. PHP n'efface jamais les fichiers .lck qu'il crée. Il les utilise comme inode fixe, sur lequel faire le verrouillage. Pour plus d'informations sur les fichiers dbm, reportez-vous à vos pages de manuel Unix (man) , ou bien chargez gdbm : ftp://prep.ai.mit.edu/pub/gnu.

Précédent | Sommaire | Suivant
dbmnextkey | Niveau supérieur | dbmreplace


dbmreplace

(PHP 3, PHP 4 )

dbmreplace -- Remplace une valeur.

Description

int dbmreplace ( resource dbm_identifier, string key, string value)

dbmreplace() remplace la valeur courante par la valeur value pour la clé key, dans une base dbm_identifier.

dbmreplace() crée la clé, si elle n'existe pas dans la base.

Précédent | Sommaire | Suivant
dbmopen | Niveau supérieur | dbx


dbx

Manuel PHP
Précédent Suivant

XX. dbx

Introduction

Le module dbx est un module d'abstraction de base de données (db pour database (base de données) et 'X' pour toutes les bases supportées). Les fonctions dbx vous permettent d'accéder à toutes les bases supportées, avec la même convention. Les fonctions dbx elles-mêmes ne s'interfacent pas directement avec les bases de données, mais s'interfacent avec les modules utilisées pour supporter ces bases.

Pré-requis

Pour pouvoir utiliser une base de données avec le module dbx, le module doit être soit linké, soit chargé dans PHP et le module de base de données doit être supporté par le module dbx. Actuellement les bases suivantes sont supportées, et d'autres suivront :

  • FrontBase (disponible depuis PHP 4.1.0).

  • Microsoft SQL Server

  • MySQL

  • ODBC

  • PostgreSQL

  • Sybase-CT (disponible depuis PHP 4.2.0).

  • Oracle (oci8) (CVS uniquement).

La documentation nécessaire pour ajouter le support d'autres bases de données est disponible à l'adresse http://www.guidance.nl/php/dbx/doc/.

Installation

In order to have these functions available, you must compile PHP with dbx support by using the --enable-dbx option and all options for the databases that will be used, e.g. for MySQL you must also specify --with-mysql=[DIR]. To get other supported databases to work with the dbx-module refer to their specific documentation.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. DBX Configuration Options

Name | Default | Changeable
dbx.colnames_case | "unchanged" | PHP_INI_SYSTEM
For further details and definition of the PHP_INI_* constants see ini_set().

Note : This ini-option is available available from PHP 4.3.0.

Voici un éclaircissement sur l'utilisation des directives de configuration.

dbx.colnames_case string

Columns names can be returned "unchanged" or converted to "uppercase" or "lowercase". This directive can be overridden with a flag to dbx_query().

Types de ressources

Il y a deux ressources utilisées par le module dbx. Le premier est le type link-object, pour les connexions aux bases de données, et l'autre est le type result-object qui contient les lignes lues.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

DBX_MYSQL (integer)

DBX_ODBC (integer)

DBX_PGSQL (integer)

DBX_MSSQL (integer)

DBX_FBSQL (integer)

DBX_OCI8 (integer) (available from PHP 4.3.0)

DBX_SYBASECT (integer)

DBX_SQLITE (integer) (CVS only)

DBX_PERSISTENT (integer)

DBX_RESULT_INFO (integer)

DBX_RESULT_INDEX (integer)

DBX_RESULT_ASSOC (integer)

DBX_RESULT_UNBUFFERED (integer) (CVS only)

DBX_COLNAMES_UNCHANGED (integer) (available from PHP 4.3.0)

DBX_COLNAMES_UPPERCASE (integer) (available from PHP 4.3.0)

DBX_COLNAMES_LOWERCASE (integer) (available from PHP 4.3.0)

DBX_CMP_NATIVE (integer)

DBX_CMP_TEXT (integer)

DBX_CMP_NUMBER (integer)

DBX_CMP_ASC (integer)

DBX_CMP_DESC (integer)

Table des matières
dbx_close -- Ferme une connexion à une base
dbx_compare -- Compare deux lignes afin de les trier
dbx_connect -- Ouvre une connexion à une base de données
dbx_error -- Rapporte le message d'erreur du dernier appel de fonction
dbx_escape_string -- Protège une chaîne de caractères pour l'utiliser dans une requête
dbx_fetch_row -- Lit une ligne dans un résultat DBX ayant l'option DBX_RESULT_UNBUFFERED activée
dbx_query -- Envoie une requête et lit tous les résultats
dbx_sort -- Tri un résultat avec une fonction utilisateur

Précédent | Sommaire | Suivant
dbmreplace | Niveau supérieur | dbx_close


dbx_close

(PHP 4 >= 4.0.6)

dbx_close -- Ferme une connexion à une base

Description

bool dbx_close ( object link_identifier)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec dbx_close()

<?php
$link = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die("Impossible de se connecter");

echo "Connect&eacute;";
dbx_close($link);
?>

Note : Reportez-vous aussi à la documentation de la base de données que vous utilisez.

Voir aussi dbx_connect().

Précédent | Sommaire | Suivant
dbx | Niveau supérieur | dbx_compare


dbx_compare

(PHP 4 >= 4.1.0)

dbx_compare -- Compare deux lignes afin de les trier

Description

int dbx_compare ( array row_a, array row_b, string column_key [, int flags])

dbx_compare() retourne 0 si row_a[$column_key] est égale à row_b[$column_key], et 1 ou -1 si le premier est plus grand ou plus petit que le dernier, respectivement, ou bien le contraire si l'option flag est configurée à DBX_CMP_DESC. dbx_compare() est une fonction d'aide pour dbx_sort(), afin d'aider aux tris. sorting function.

Le paramètre flags peut prendre plusieurs valeurs :

  • DBX_CMP_ASC - ordre ascendant

  • DBX_CMP_DESC - ordre descendant

et le type utilisé pour la comparaison :

  • DBX_CMP_NATIVE - par de conversion de type

  • DBX_CMP_TEXT - compare les lignes comme des chaînes

  • DBX_CMP_NUMBER - compare les lignes comme des nombres

Une direction de tri et un type de comparaison peuvent être combinés avec l'opérateur OR (|). La valeur par défaut pour l'option flags est DBX_CMP_ASC | DBX_CMP_NATIVE.

Exemple 1. Exemple avec dbx_compare()

<?php
function user_re_order ($a, $b) {
    $rv = dbx_compare ($a, $b, "parentid", DBX_CMP_DESC);
    if ( !$rv ) {
        $rv = dbx_compare ($a, $b, "id", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect (DBX_ODBC, "", "db", "username", "password")
    or die ("Impossible de se connecter");

$result = dbx_query ($link, "SELECT id, parentid, description FROM table ORDER BY id");
    // les donn&eacute;es de $result sont d&eacute;sormais class&eacute;es par id

dbx_sort ($result, "user_re_order");
    // la date dans $result est maintenant ordonn&eacute;e par parentid (descending), puis par id

dbx_close ($link);
?>

Voir aussi dbx_sort().

Précédent | Sommaire | Suivant
dbx_close | Niveau supérieur | dbx_connect


dbx_connect

(PHP 4 >= 4.0.6)

dbx_connect -- Ouvre une connexion à une base de données

Description

object dbx_connect ( mixed module, string host, string database, string username, string password [, int persistent])

retourne une resource dbx_link_object en cas de succès, FALSE sinon. Si la connexion a put être établie, mais que la base de données n'a pas pu être sélectionnée, la fonction retournera quand même une ressource. Le paramètre persistent peut prendre la valeur DBX_PERSISTENT, pour créer une connexion persitante.

Le paramètre module peut être soit une chaîne, soit une constante. Les valeurs possibles de module sont listées ci-dessous (n'oubliez pas que cela fonctionnera que si le module associé est chargé):

  • module DBX_MYSQL : "mysql"

  • module DBX_ODBC : "odbc"

  • module DBX_PGSQL : "pgsql"

  • module DBX_MSSQL : "mssql"

  • module DBX_FBSQL : "fbsql" (CVS uniquement)

Le support de pgsql était au stade expérimental jusqu'en avril 2001, et vous devez compiler vous-même le module pgsql après avoir modifié un des fichiers sources. Sinon, vous aurez une alerte affichée à chaque requête.

La ressource dbx_link_object a trois membres : 'handle', 'module' et 'database'. Le membre 'database' contient le nom de la base de données actuellement sélectionnée. Le membre 'module' est à usage interne à dbx, et contient le numéro de module sus-cité. Le membre 'handle' est une ressource valide de connexion à la base de données, et peut être utilisé en tant que tel dans les autres fonctions spécifiques à cette base de données.

Le message d'erreur pour Microsoft SQL server est actuellement le résultat direct de la fonction mssql_get_last_message().

Exemple 1. Exemple avec dbx_connect()

<?php
  $link = dbx_connect (DBX_MYSQL, "localhost", "db", "username", "password");
  mysql_close ($link->handle);
  // dbx_close($link) est beaucoup plus adapt&eacute; ici
?>

Les paramètres host, database, username et password sont attendus, mais ne sont pas toujours utiles, suivant la fonction de connexion de la base de données utilisée.

Exemple 2. Exemple avec dbx_connect()

<?php
$link = dbx_connect (DBX_ODBC, "", "db", "username", "password", DBX_PERSISTENT)
    or die ("Impossible de se connecter");

print ("Connexion r&eacute;ussie");
dbx_close ($link);
?>

Note : Reportez-vous aussi à la documentation de la base de données que vous utilisez.

Voir aussi dbx_close().

Précédent | Sommaire | Suivant
dbx_compare | Niveau supérieur | dbx_error


dbx_error

(PHP 4 >= 4.0.6)

dbx_error -- Rapporte le message d'erreur du dernier appel de fonction

Description

string dbx_error ( object link_identifier)

dbx_error() retourne une chaîne contenant le message d'erreur du module sélectionné. S'il y a des connexions multiples sur le même module, seule la dernière erreur est fournie. S'il a des des connexions sur différents modules, la dernière erreur du module est retourné (le module est alors représenté par link_identifier). Notez que le module ODBC ne supporte pas encore cette fonction.

Exemple 1. Exemple avec dbx_error()

<?php
$link = dbx_connect("mysql", "localhost", "base de donn&eacute;es", "utilisateur", "mot de passe")
    or die ("Impossible de se connecter");
$result = dbx_query($link, "select id from nonexistingtbl");
if ($result==0) {
    echo dbx_error($link);
}
dbx_close($link);
?>

Note : Reportez-vous aussi à la documentation de la base de données que vous utilisez.

Le message de Microsoft SQL Server est en fait le résultat de la fonction mssql_get_last_message().

Le support des messages d'erreurs Oracle (oci8) ne sont pas implémentés (pour le moment).

Précédent | Sommaire | Suivant
dbx_connect | Niveau supérieur | dbx_escape_string


dbx_escape_string

(PHP 4 >= 4.3.0)

dbx_escape_string -- Protège une chaîne de caractères pour l'utiliser dans une requête

Description

string dbx_escape_string ( object link_identifier, string text)

dbx_escape_string() retourne le texte text dont les caractères spéciaux ont été protégés (les guillemets, les anti-slash...). En cas d'erreur,dbx_escape_string() retourne NULL

Exemple 1. Exemple avec dbx_escape_string()

<?php
$link   = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die ("Impossible de se connecter");

$text = dbx_escape_string($link, "C\'est une cha&icirc;ne avec des anti slash (\\).");
$result = dbx_query($link, "insert into tbl (txt) values ('".$text."')");
if ( $result == 0 ) {
    echo dbx_error ($link);
}
dbx_close ($link);
?>

Voir aussi dbx_query().

Précédent | Sommaire | Suivant
dbx_error | Niveau supérieur | dbx_fetch_row


dbx_fetch_row

(no version information, might be only in CVS)

dbx_fetch_row -- Lit une ligne dans un résultat DBX ayant l'option DBX_RESULT_UNBUFFERED activée

Description

object dbx_fetch_row ( object result_identifier)

dbx_fetch_row() retourne une ligne en cas de succès, et un 0 en cas d'échec (e.g. lorsqu'aucune ligne n'est disponible). Lorsque l'option DBX_RESULT_UNBUFFERED n'est pas activée dans la requête, dbx_fetch_row() va échouer car toutes les lignes auront été déjà lues dans le membre data.

De plus, le membre rows de l'objet de résultat est incrémenté à chaque lecture réussie de dbx_fetch_row().

Exemple 1. Comment gérer les valeurs retournées par dbx_fetch_row()

$result = dbx_query ($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);

echo "<table>\n";
while ( $row = dbx_fetch_row($result) ) {
    echo "<tr>\n";
    foreach ( $row as $field ) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Le paramètre result_identifier est le résultat de la fonction dbx_query().

Le tableau retournée contient les mêmes informations que n'importe quelle ligne d'un résultat dbx, placé dans le membre data, incluant l'accès aux colonnes par index ou par nom, suivant l'utilisation des options avec dbx_guery(). were set that way.

Voir aussi dbx_query().

Précédent | Sommaire | Suivant
dbx_escape_string | Niveau supérieur | dbx_query


dbx_query

(PHP 4 >= 4.0.6)

dbx_query -- Envoie une requête et lit tous les résultats

Description

object dbx_query ( object link_identifier, string sql_statement [, int flags])

retourne un objet dbx_result_object ou 1 en cas de succès (un objet de résultat ne sera retourné que pour les requêtes SQL qui retournent un résultat), ou 0 en cas d'erreur.

Exemple 1. Comment gérer la valeur retournée par dbx_query()

<?php
$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Impossible de se connecter");

$result = dbx_query($link, 'SELECT id, parentid, description FROM table');

if ( is_object($result) ) {
    // ... Faire quelquechose d'utile ici
    // first, print out field names and types
    // then, draw a table filled with the returned field values
}
else if ( $result == 1 ) {
    echo("Requ&ecirc;te ex&eacute;cut&eacute;e correctement, mais pas de r&eacute;sultat.");
}
else {
    exit("La requ&ecirc;te a &eacute;chou&eacute;");
}

dbx_close($link);
?>

Le paramètre flags sert à contrôler la quantité d'informations retournée. Il peut être n'importe quelle combinaisons par l'opérateur OR des constantes ci-après. Les constantes remplacent la configuration du php.ini.

DBX_RESULT_INDEX

Ce paramètre est toujours activé, c'est à dire que l'objet retourné dispose du membre data qui est un tableau à deux dimensions, indexé numériquement. Par exemple, dans l'expression data[2][3] 2 représente le numéro de ligne et 3 représente le numéro de colonne. Les premières lignes et colonnes sont indexées à 0.

Si DBX_RESULT_ASSOC est aussi spécifié, l'objet retourné contient en plus les informations liées à DBX_RESULT_INFO, même si il n'a pas été spécifié.

DBX_RESULT_INFO

Cette option fournit des informations sur les colonnes, comme les noms des champs et leur type.

DBX_RESULT_ASSOC

Cette option fait que la valeur des champs peut être accessible avec le nom de la colonne, utilisé comme clé dans le tableau du membre data.

Les résultats ainsi associés sont des références sur les valeurs identifiées par les index numériques, ce quie fait que modifier data[0][0] fait que data[0]['nom_de_la_premiere_colonne'] sera aussi modifié.

DBX_COLNAMES_UNCHANGED (disponible depuis PHP 4.3.0)

La casse du nom des colonnes retournée ne sera pas modifiée.

DBX_COLNAMES_UPPERCASE (disponible depuis PHP 4.3.0)

Les noms de colonnes seront mis en majuscules.

DBX_COLNAMES_LOWERCASE (disponible depuis PHP 4.3.0)

Les noms de colonnes seront mis en minuscules.

Notez que DBX_RESULT_INDEX est toujours active, indépendemment de la valeur de flags. Cela signifie que seules les combinaisons suivantes sont utiles :

  • DBX_RESULT_INDEX

  • DBX_RESULT_INDEX | DBX_RESULT_INFO

  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - c'est la valeur par défaut, si flags est omis.

Un objet dbx_result_object a 5 membres (éventuellement 4, suivants les valeurs de flags) :

handle

Ceci est une ressource représentant la connexion à la base de données, et il peut être utilisé (si nécessaire) avec les fonctions spécialisées de la base.

Exemple 2. Exemple avec dbx_query()

<?php
  $result = dbx_query($link, "SELECT id FROM table");
  mysql_field_len($result->handle, 0);
?>

cols et rows

Ces deux membres contiennent respectivement le nombre de colonne et de ligne.

$result = dbx_query ($link, 'SELECT id FROM table');
echo $result->rows; // nombre de lignes
echo $result->cols; // nombre de champs

info (optionnel)

Ce membre est retourné uniquement si DBX_RESULT_INFO ou DBX_RESULT_ASSOC sont spécifiés dans le paramètre flags. C'est un tableau à deux dimensions, avec deux lignes (name et type) pour lire les informations de colonnes.

Exemple 3. Listes les types et noms de colonnes avec dbplus

$result = dbx_query ($link, 'SELECT id FROM table',
                     DBX_RESULT_INDEX | DBX_RESULT_INFO);

for ($i = 0; $i < $result->cols; $i++ ) {
    echo $result->info['name'][$i] . "\n";
    echo $result->info['type'][$i] . "\n";
}
data

Ce membre contient les résultat obtenus, possiblement associés avec le nom de colonne, en fonction de la valeur du paramètre flags. Si DBX_RESULT_ASSOC est activé, il est possible d'utiliser aussi $result->data[2]["nom_de_la_colonne"].

Exemple 4. Afficher le contenu d'une base avec dbplus

$result = dbx_query ($link, 'SELECT id, parentid, description FROM table');

echo "<table>\n";
foreach ( $result->data as $row ) {
    echo "<tr>\n";
    foreach ( $row as $field ) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Note : Reportez-vous aussi à la documentation de la base de données que vous utilisez.

Voir aussi dbx_escape_string() et dbx_connect().

Précédent | Sommaire | Suivant
dbx_fetch_row | Niveau supérieur | dbx_sort


dbx_sort

(PHP 4 >= 4.0.6)

dbx_sort -- Tri un résultat avec une fonction utilisateur

Description

bool dbx_sort ( object result, string user_compare_function)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec dbx_sort()

<?php
function user_re_order ($a, $b) {
    $rv = dbx_cmp_desc($a, $b, "parentid");
    if (!$rv) $rv = dbx_cmp_asc($a, $b, "id");
    return $rv;
}
$link = dbx_connect("odbc", "", "base de donn&eacute;es", "utilisateur", "mot de passe")
    or die ("Impossible de se connecter");
$result = dbx_query($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
echo "Les donn&eacute;es sont maintenant tri&eacute;es par id<BR>";
dbx_sort($result, "user_re_order");
echo "Les donn&eacute;es sont maintenant tri&eacute;es par parentid d&eacute;croissant, puis par id<BR>";
dbx_close($link);
?>

Voir aussi dbx_compare().

Précédent | Sommaire | Suivant
dbx_query | Niveau supérieur | DB++


DB++

Manuel PHP
Précédent Suivant

XXI. DB++

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Introduction

DB++, qui est programmé par une société allemande Concept asa, est un système de base de données relationnelles à haute performance, faible consommation de mémoire et de disque. Bien qu'il comprenne le langage SQL en tant qu'interface supplémentaire, ce n'est pas vraiment une base de données SQL, car elle fournit son propre langage SQL, qui est plus influencé par l'algèbre relationnelle que ne l'est SQL.

Concept asa a toujours supporté les langages Open Source, et DB++ dispose d'interfaces Perl et Tcl depuis longtemps. Il utilise aussi Tcl pour ses procédures stockées internes.

Pré-requis

Cette extension dépend de librairie cliente externe : vous devez donc avoir le client DB++ installé sur le système pour pouvoir compiler cette extension dans PHP.

Concept asa fournit des versions de démo de DB++ et la documentation pour Linux, ainsi que certaines autres versions UNIX. Il y a aussi une version pour Windows de DB++, mais cette extension ne la supporte pas (pour le moment).

Installation

Pour compiler cette extension par vous même, vous devez avoir les librairies clients et les fichiers d'en-têtes installés sur le système (ils sont inclus dans la distribution de DB++ par défaut). Exécutez la commande configure avec l'option --with-dbplus pour inclure cette extension dans PHP.

configure recherche les librairies clients et les fichiers d'en-têtes dans les dossiers suivants : /usr/dbplus, /usr/local/dbplus et /opt/dbplus. Si vous avez installé DB++ dans un autre dossier, indiquez le chemin de ce dossier dans l'option de configure comme ceci : --with-dbplus=/votre/dossier/installation.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

dbplus_relation

La plupart des fonctions DB++ travaillent avec une ressource de type dbplus_relation : c'est un pointeur sur une relation, ou une relation, générée par une requête.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Codes d'erreurs de DB++

Tableau 1. Codes d'erreurs de DB++

Constante PHP | Constante DB++ | Description
DBPLUS_ERR_NOERR (entier) | ERR_NOERR | Condition d'erreur Null
DBPLUS_ERR_DUPLICATE (entier) | ERR_DUPLICATE | Tentative d'insertion d'un doublon
DBPLUS_ERR_EOSCAN (entier) | ERR_EOSCAN | Fin de scan rget()
DBPLUS_ERR_EMPTY (entier) | ERR_EMPTY | Relation vide (serveur)
DBPLUS_ERR_CLOSE (entier) | ERR_CLOSE | Le serveur ne peut fermer
DBPLUS_ERR_WLOCKED (entier) | ERR_WLOCKED | La ligne est verrouillée en écriture
DBPLUS_ERR_LOCKED (entier) | ERR_LOCKED | La relation est déjà verrouillée
DBPLUS_ERR_NOLOCK (entier) | ERR_NOLOCK | La relation ne peut être verrouillée
DBPLUS_ERR_READ (entier) | ERR_READ | Erreur de lecture sur la relation
DBPLUS_ERR_WRITE (entier) | ERR_WRITE | Erreur d'écriture sur la relation
DBPLUS_ERR_CREATE (entier) | ERR_CREATE | La fonction système Create() a échoué
DBPLUS_ERR_LSEEK (entier) | ERR_LSEEK | La fonction système lseek() a échoué
DBPLUS_ERR_LENGTH (entier) | ERR_LENGTH | La ligne excède la taille maximale
DBPLUS_ERR_OPEN (entier) | ERR_OPEN | La fonction système Open() a échoué
DBPLUS_ERR_WOPEN (entier) | ERR_WOPEN | La relation est déjà ouverte en lecture
DBPLUS_ERR_MAGIC (entier) | ERR_MAGIC | Le fichier n'est pas une relation
DBPLUS_ERR_VERSION (entier) | ERR_VERSION | Le fichier est une très vieille relation
DBPLUS_ERR_PGSIZE (entier) | ERR_PGSIZE | La relation utilise une page de taille différente
DBPLUS_ERR_CRC (entier) | ERR_CRC | CRC invalide de la superpage
DBPLUS_ERR_PIPE (entier) | ERR_PIPE | Une relation pipée requiert lseek()
DBPLUS_ERR_NIDX (entier) | ERR_NIDX | Trop d'index secondaires
DBPLUS_ERR_MALLOC (entier) | ERR_MALLOC | L'appel à malloc() a échoué
DBPLUS_ERR_NUSERS (entier) | ERR_NUSERS | Erreur lors de l'utilisation du nombre maximal d'utilisateur
DBPLUS_ERR_PREEXIT (entier) | ERR_PREEXIT | Causée par une utilisation invalide
DBPLUS_ERR_ONTRAP (entier) | ERR_ONTRAP | Causée par un signal
DBPLUS_ERR_PREPROC (entier) | ERR_PREPROC | Erreur dans le préprocesseur
DBPLUS_ERR_DBPARSE (entier) | ERR_DBPARSE | Erreur dans l'analyseur
DBPLUS_ERR_DBRUNERR (entier) | ERR_DBRUNERR | Erreur durant l'exécution
DBPLUS_ERR_DBPREEXIT (entier) | ERR_DBPREEXIT | La condition d'exit a été causée par la procédure prexit()
DBPLUS_ERR_WAIT (entier) | ERR_WAIT | Attend un peu (Simple seulement)
DBPLUS_ERR_CORRUPT_TUPLE (entier) | ERR_CORRUPT_TUPLE | Un client a envoyé une ligne corrompue
DBPLUS_ERR_WARNING0 (entier) | ERR_WARNING0 | Les routines Simple ont rencontrées une erreur non fatale, qui a été corrigée.
DBPLUS_ERR_PANIC (entier) | ERR_PANIC | Le serveur ne devrait pas s'arrêter, mais après un désastre, envoyer ERR_PANIC à tout ses clients
DBPLUS_ERR_FIFO (entier) | ERR_FIFO | Impossible de créer une pile FIFO
DBPLUS_ERR_PERM (entier) | ERR_PERM | Permission refusée
DBPLUS_ERR_TCL (entier) | ERR_TCL | TCL_error
DBPLUS_ERR_RESTRICTED (entier) | ERR_RESTRICTED | Seulement deux utilisateurs
DBPLUS_ERR_USER (entier) | ERR_USER | Une erreur est survenue dans l'utilisation de la librairie par l'application.
DBPLUS_ERR_UNKNOWN (entier) | ERR_UNKNOWN | Erreur inconnue

Table des matières
dbplus_add -- Ajoute une ligne à une relation
dbplus_aql -- Exécute une requête AQL
dbplus_chdir -- Lit/modifie le chemin courant de base
dbplus_close -- Ferme une relation
dbplus_curr -- Lit la ligne courante dans une relation
dbplus_errcode -- Obtenir un message d'erreur
dbplus_errno -- Lit le code d'erreur généré par la dernière opération
dbplus_find -- Ajoute une contrainte sur une relation
dbplus_first -- Lit la première ligne d'une relation
dbplus_flush -- Ecrit toutes les modifications apportées à une relation
dbplus_freealllocks -- Libère tous les verrous posés par le client
dbplus_freelock -- Lève un verrou en écriture sur une ligne
dbplus_freerlocks -- Lève tous les verrous sur les lignes d'une relation
dbplus_getlock -- Pose un verrou sur une ligne
dbplus_getunique -- Lit un identifiant unique pour une relation
dbplus_info -- Encore non implémentée
dbplus_last -- Lit la dernière ligne d'une relation
dbplus_lockrel -- Pose un verrou en écriture sur une relation
dbplus_next -- Lit la ligne suivante dans la relation
dbplus_open -- Ouvre un fichier de relation
dbplus_prev -- Lit la ligne précédente dans la relation
dbplus_rchperm -- Modifie les droits sur la relation
dbplus_rcreate -- Crée une nouvelle relation DB++
dbplus_rcrtexact -- Crée une copie exacte mais vide d'une relation
dbplus_rcrtlike -- Crée une copie exacte d'une relation, sans les indexes
dbplus_resolve -- Résoud les informations d'hôte pour une relation
dbplus_restorepos -- Pas encore implémenté
dbplus_rkeys -- Spécifie la nouvelle clé primaire d'une relation
dbplus_ropen -- Ouvre un fichier de relation local
dbplus_rquery -- Performe une requête AQL locale
dbplus_rrename -- Renomme une relation
dbplus_rsecindex -- Crée un nouvel index secondaire pour une relation
dbplus_runlink -- Détruit une relation
dbplus_rzap -- Supprime toutes les lignes d'une relation
dbplus_savepos -- Pas encore implémentée
dbplus_setindex -- Pas encore implémentée
dbplus_setindexbynumber -- Pas encore implémentée
dbplus_sql -- Exécute une requête SQL
dbplus_tcl -- Exécute du code TCL coté serveur
dbplus_tremove -- Supprime la ligne courante et retourne la nouvelle ligne courante
dbplus_undo -- Pas encore implémentée
dbplus_undoprepare -- Pas encore implémentée
dbplus_unlockrel -- Libère un verrou en écriture posé sur une relation
dbplus_unselect -- Retire une contrainte d'une relation
dbplus_update -- Modifie une ligne dans une relation
dbplus_xlockrel -- Pose un verrou exclusif sur une relation
dbplus_xunlockrel -- Lève un verrou exclusif posé sur une relation

Précédent | Sommaire | Suivant
dbx_sort | Niveau supérieur | dbplus_add


dbplus_add

(4.1.0 - 4.2.3 only)

dbplus_add -- Ajoute une ligne à une relation

Description

int dbplus_add ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_add() va ajouter la ligne tuple à la relation relation. tuple est un tableau associatif de paires attribut/valeur, qui seront insérées dans la relation relation. Après une exécution réussie, tuple contiendra toutes les données de la nouvelle ligne, y compris tous les champs implicitement créés, comme par exemple les séquences.

dbplus_add() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Précédent | Sommaire | Suivant
DB++ | Niveau supérieur | dbplus_aql


dbplus_aql

(4.1.0 - 4.2.3 only)

dbplus_aql -- Exécute une requête AQL

Description

resource dbplus_aql ( string query [, string server [, string dbpath]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_aql() exécute la requête AQL query sur le serveur server avec le chemin dbpath.

En cas de succès, la fonction retournera une ressource de relation. Les données de résultat sont accessibles avec les fonctions dbplus_next() et dbplus_current(). Les autres fonctions d'accès aux relations ne fonctionneront pas avec une relation de résultat.

Plus d'informations sur le langage de requête AQL A... Query Language sont disponibles dans le manuel DB++.

Précédent | Sommaire | Suivant
dbplus_add | Niveau supérieur | dbplus_chdir


dbplus_chdir

(4.1.0 - 4.2.3 only)

dbplus_chdir -- Lit/modifie le chemin courant de base

Description

string dbplus_chdir ( [string newdir])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_chdir() va changer le chemin de base courant utilisé par dbplus_open() pour rechercher les fichiers de relations. dbplus_chdir() retourne le chemin absolu courant. En appelant dbplus_chdir(), vous pouvez lire le nom du dossier courant sans le modifier.

Précédent | Sommaire | Suivant
dbplus_aql | Niveau supérieur | dbplus_close


dbplus_close

(4.1.0 - 4.2.3 only)

dbplus_close -- Ferme une relation

Description

int dbplus_close ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_close() ferme la relation relation, ouverte par dbplus_open().

Précédent | Sommaire | Suivant
dbplus_chdir | Niveau supérieur | dbplus_curr


dbplus_curr

(4.1.0 - 4.2.3 only)

dbplus_curr -- Lit la ligne courante dans une relation

Description

int dbplus_curr ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_curr() lit les données de la ligne courante pour la relation relation et les retourne sous forme de tableau associatif, dans le paramètre tuple.

dbplus_curr() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Voir aussi
dbplus_first(),
dbplus_prev(),
dbplus_next() et
dbplus_last().

Précédent | Sommaire | Suivant
dbplus_close | Niveau supérieur | dbplus_errcode


dbplus_errcode

(4.1.0 - 4.2.3 only)

dbplus_errcode -- Obtenir un message d'erreur

Description

string dbplus_errcode ( int errno)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_errcode() retourne un message d'erreur, correspondant au code d'erreur errno, ou bien au dernier message d'erreur généré, si aucun code d'erreur n'est fourni.

Précédent | Sommaire | Suivant
dbplus_curr | Niveau supérieur | dbplus_errno


dbplus_errno

(4.1.0 - 4.2.3 only)

dbplus_errno -- Lit le code d'erreur généré par la dernière opération

Description

int dbplus_errno ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_errno() retourne le code d'erreur généré par la dernière opération DB++.

Voir aussi dbplus_errcode().

Précédent | Sommaire | Suivant
dbplus_errcode | Niveau supérieur | dbplus_find


dbplus_find

(4.1.0 - 4.2.3 only)

dbplus_find -- Ajoute une contrainte sur une relation

Description

int dbplus_find ( resource relation, array constraints, mixed tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_find() ajoute la contrainte constraints sur la relation relation. Les appels ultérieurs à dbplus_curr() ou dbplus_next() ne retourneront que des lignes qui satisfont aux contraintes exprimées.

Les contraintes sont des triplets de chaînes, contenant un nom de domaine, un opérateur de comparaison, et une valeur de comparaison. Le paramètre constraints est un tableau qui est constitué d'une collection de tableaux de chaînes, chacun contenant un domaine, un opérateur et une valeur, ou bien un tableau contenant un multiple de trois éléments.

Les opérateurs de comparaisons sont les suivants : '==', '>', '>=', '<', '<=', '!=', '~' pour les recherches classiques, et 'BAND' ou 'BOR' pour les opérations bits à bits.

Voir aussi dbplus_unselect().

Précédent | Sommaire | Suivant
dbplus_errno | Niveau supérieur | dbplus_first


dbplus_first

(4.1.0 - 4.2.3 only)

dbplus_first -- Lit la première ligne d'une relation

Description

int dbplus_first ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_curr() lit les données de la première ligne dans la relation relation, et les place dans le tableau associatif tuple.

dbplus_curr() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Voir aussi
dbplus_curr(),
dbplus_prev(),
dbplus_next() et
dbplus_last().

Précédent | Sommaire | Suivant
dbplus_find | Niveau supérieur | dbplus_flush


dbplus_flush

(4.1.0 - 4.2.3 only)

dbplus_flush -- Ecrit toutes les modifications apportées à une relation

Description

int dbplus_flush ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_flush() va écrire sur le disque toutes les modifications apportées à relation depuis la dernière écriture.

dbplus_flush() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Précédent | Sommaire | Suivant
dbplus_first | Niveau supérieur | dbplus_freealllocks


dbplus_freealllocks

(4.1.0 - 4.2.3 only)

dbplus_freealllocks -- Libère tous les verrous posés par le client

Description

int dbplus_freealllocks ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_freealllocks() libère tous les verrous posés par le client.

Voir aussi
dbplus_getlock(),
dbplus_freelock() et
dbplus_freerlocks().

Précédent | Sommaire | Suivant
dbplus_flush | Niveau supérieur | dbplus_freelock


dbplus_freelock

(4.1.0 - 4.2.3 only)

dbplus_freelock -- Lève un verrou en écriture sur une ligne

Description

int dbplus_freelock ( resource relation, string tname)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_freelock() supprime le verrou en écriture sur la ligne tuple, posé au préalable par la fonction dbplus_getlock().

Voir aussi
dbplus_getlock(),
dbplus_freerlocks() et
dbplus_freealllocks().

Précédent | Sommaire | Suivant
dbplus_freealllocks | Niveau supérieur | dbplus_freerlocks


dbplus_freerlocks

(4.1.0 - 4.2.3 only)

dbplus_freerlocks -- Lève tous les verrous sur les lignes d'une relation

Description

int dbplus_freerlocks ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_freerlocks() lève tous les verrous sur les lignes de la relation relation.

Voir aussi
dbplus_getlock(),
dbplus_freelock() et
dbplus_freealllocks().

Précédent | Sommaire | Suivant
dbplus_freelock | Niveau supérieur | dbplus_getlock


dbplus_getlock

(4.1.0 - 4.2.3 only)

dbplus_getlock -- Pose un verrou sur une ligne

Description

int dbplus_getlock ( resource relation, string tname)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_getlock() tente de poser un verrou en écriture sur la ligne tuple. La fonction retournera zéro en cas de succès, ou bien un code d'erreur (spécifiquement DBPLUS_ERR_WLOCKED) en cas d'erreur.

Voir aussi
dbplus_freelock(),
dbplus_freerlocks() et
dbplus_freealllocks().

Précédent | Sommaire | Suivant
dbplus_freerlocks | Niveau supérieur | dbplus_getunique


dbplus_getunique

(4.1.0 - 4.2.3 only)

dbplus_getunique -- Lit un identifiant unique pour une relation

Description

int dbplus_getunique ( resource relation, int uniqueid)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_getunique() demande un nombre, qui sera garantit comme unique pour la relation relation, et le retourne dans le paramètre uniqueid.

dbplus_getunique() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Précédent | Sommaire | Suivant
dbplus_getlock | Niveau supérieur | dbplus_info


dbplus_info

(4.1.0 - 4.2.3 only)

dbplus_info -- Encore non implémentée

Description

int dbplus_info ( resource relation, string key, array )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Encore non implémentée.

Précédent | Sommaire | Suivant
dbplus_getunique | Niveau supérieur | dbplus_last


dbplus_last

(4.1.0 - 4.2.3 only)

dbplus_last -- Lit la dernière ligne d'une relation

Description

int dbplus_last ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_curr() lit les données de la dernière ligne de la relation relation, et en fait la ligne courante avant de placer les informations dans le tableau tuple.

dbplusdbplus_curr_add() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Voir aussi
dbplus_first(),
dbplus_curr(),
dbplus_prev() et
dbplus_next().

Précédent | Sommaire | Suivant
dbplus_info | Niveau supérieur | dbplus_lockrel


dbplus_lockrel

(no version information, might be only in CVS)

dbplus_lockrel -- Pose un verrou en écriture sur une relation

Description

int dbplus_lockrel ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_lockrel() va tenter de poser un verrou en écriture sur la relation relation. Les autres clients pourront toujours lire dans cette relation, mais devront attendre pour la modifier.

Précédent | Sommaire | Suivant
dbplus_last | Niveau supérieur | dbplus_next


dbplus_next

(4.1.0 - 4.2.3 only)

dbplus_next -- Lit la ligne suivante dans la relation

Description

int dbplus_next ( resource relation, array )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_curr() lit les données de la ligne suivante dans la table relation, et en fait la ligne courante avant de placer les données dans le paramètre tuple.

dbplus_curr() va retourner zéro (alias DBPLUS_ERR_NOERR) en cas de succès, ou bien un code d'erreur DB++ en cas d'échec. Voyez la fonction dbplus_errcode() ou l'introduction de ce chapitre pour plus d'informations sur les codes d'erreurs.

Voir aussi
dbplus_first(),
dbplus_curr(),
dbplus_prev() et
dbplus_last().

Précédent | Sommaire | Suivant
dbplus_lockrel | Niveau supérieur | dbplus_open


dbplus_open

(4.1.0 - 4.2.3 only)

dbplus_open -- Ouvre un fichier de relation

Description

resource dbplus_open ( string name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Le fichier de relation de nom name sera ouvert. name peut être un nom de fichier, ou un chemin relatif ou absolu. Dans tous les cas, il sera remplacé par un chemin absolu, sur une machine spécifique et sur un serveur spécifique.

En cas de succès, une ressource de fichier de relation, (dite aussi curseur) sera retournée. Elle sera alors utilisée avec les fonctions utilisant cette relation. En cas d'échec, la valeur zéro est retournée, et le code d'erreur peut être demandé via la fonction dbplus_errno().

Précédent | Sommaire | Suivant
dbplus_next | Niveau supérieur | dbplus_prev


dbplus_prev

(4.1.0 - 4.2.3 only)

dbplus_prev -- Lit la ligne précédente dans la relation

Description

int dbplus_prev ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_curr() lit les données dans la ligne précédente la ligne courante, dans la relation relation, en fait la ligne courante, et passe les données représentant la ligne sous la forme d'un tableau associatif, dans le paramètre tuple.

Cette fonction retourne zéro (e.g. DBPLUS_ERR_NOERR) en cas de succès, ou un code d'erreur db++ en cas d'échec. Voyez dbplus_errcode() ou l'introduction de ce chapitre pour plus de détails sur les codes d'erreurs db++.

Voir aussi
dbplus_first(),
dbplus_curr(),
dbplus_next() et
dbplus_last().

Précédent | Sommaire | Suivant
dbplus_open | Niveau supérieur | dbplus_rchperm


dbplus_rchperm

(4.1.0 - 4.2.3 only)

dbplus_rchperm -- Modifie les droits sur la relation

Description

int dbplus_rchperm ( resource relation, int mask, string user, string group)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rchperm() modifie les droits d'accès à la relation relation. Les nouveaux droits sont spécifiés avec les paramètres mask, user et group. Les valeurs à fournir sont spécifiques à chaque système d'exploitation.

Précédent | Sommaire | Suivant
dbplus_prev | Niveau supérieur | dbplus_rcreate


dbplus_rcreate

(4.1.0 - 4.2.3 only)

dbplus_rcreate -- Crée une nouvelle relation DB++

Description

resource dbplus_rcreate ( string name, mixed domlist [, bool overwrite])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rcreate() crée une nouvelle relation nommée name. Une autre relation du même nom sera écrasée si la relation n'est pas utilisée à ce moment, et si overwrite vaut TRUE.

domlist doit contenir les spécifications de domaine pour la nouvelle relation, sous la forme d'un tableau de chaînes descriptives. (dbplus_rcreate() accepte aussi une chaîne avec des domaines séparés par des espaces, mais l'utilisation de cette technique est découragée). Une description de domaine est constituée d'un nom de domaine unique pour cette relation, d'un slash "/" et d'un caractère de spécification de type. Reportez-vous à la documentation DB++, et en particulier à la page concernant dbcreate(1), pour connaître le détail des spécificateurs de type et leur significations.

Précédent | Sommaire | Suivant
dbplus_rchperm | Niveau supérieur | dbplus_rcrtexact


dbplus_rcrtexact

(4.1.0 - 4.2.3 only)

dbplus_rcrtexact -- Crée une copie exacte mais vide d'une relation

Description

resource dbplus_rcrtexact ( string name, resource relation, bool overwrite)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rcrtexact() crée une copie exacte de la relation relation, sous le nouveau nom de name. Une relation qui porterait déjà le nom de name ne sera écrasée que si overwrite vaut TRUE et qu'aucun autre processus ne l'utilise.

Précédent | Sommaire | Suivant
dbplus_rcreate | Niveau supérieur | dbplus_rcrtlike


dbplus_rcrtlike

(4.1.0 - 4.2.3 only)

dbplus_rcrtlike -- Crée une copie exacte d'une relation, sans les indexes

Description

resource dbplus_rcrtlike ( string name, resource relation, int flag)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rcrtexact() crée une copie exacte de la relation relation, sous le nouveau nom de name, et avec les index par défaut. Une relation qui porterait déjà le nom de name ne sera écrasée que si overwrite vaut TRUE et qu'aucun autre processus ne l'utilise.

Précédent | Sommaire | Suivant
dbplus_rcrtexact | Niveau supérieur | dbplus_resolve


dbplus_resolve

(4.1.0 - 4.2.3 only)

dbplus_resolve -- Résoud les informations d'hôte pour une relation

Description

int dbplus_resolve ( string relation_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_resolve() résoud le nom de relation relation_name et collecte le nom interne de serveur, le nom d'hôte et le chemin de base sur cet hôte. La fonction retourne un tableau contenant ces valeurs, sous les index 'sid', 'host' et 'host_path', ou FALSE en cas d'erreur.

Voir aussi dbplus_tcl().

Précédent | Sommaire | Suivant
dbplus_rcrtlike | Niveau supérieur | dbplus_restorepos


dbplus_restorepos

(4.1.0 - 4.2.3 only)

dbplus_restorepos -- Pas encore implémenté

Description

int dbplus_restorepos ( resource relation, array tuple)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

???

Précédent | Sommaire | Suivant
dbplus_resolve | Niveau supérieur | dbplus_rkeys


dbplus_rkeys

(4.1.0 - 4.2.3 only)

dbplus_rkeys -- Spécifie la nouvelle clé primaire d'une relation

Description

resource dbplus_rkeys ( resource relation, mixed domlist)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rkeys() remplace la clé primaire courante de la relation relation avec la combinaison de domaines spécifiée par domlist.

domlist peut être passé comme un nom de domaine seul, ou comme un tableau de noms de domaines.

Précédent | Sommaire | Suivant
dbplus_restorepos | Niveau supérieur | dbplus_ropen


dbplus_ropen

(4.1.0 - 4.2.3 only)

dbplus_ropen -- Ouvre un fichier de relation local

Description

resource dbplus_ropen ( string name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_ropen() ouvre le fichier de relation file localement, pour accès rapide, sans les coûts supplémentaires du système client/serveur. L'accès est alors en lecture seule, et seules dbplus_current() et dbplus_next() peuvent être utilisées avec la relation retournée.

Précédent | Sommaire | Suivant
dbplus_rkeys | Niveau supérieur | dbplus_rquery


dbplus_rquery

(4.1.0 - 4.2.3 only)

dbplus_rquery -- Performe une requête AQL locale

Description

int dbplus_rquery ( string query, string dbpath)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rquery() performe une requête AQL brute, en utilisant l'interpréteur du client DB++. dbplus_rquery() est plus rapide que dbplus_aql() mais ne fonctionne que sur des données locales.

Précédent | Sommaire | Suivant
dbplus_ropen | Niveau supérieur | dbplus_rrename


dbplus_rrename

(4.1.0 - 4.2.3 only)

dbplus_rrename -- Renomme une relation

Description

int dbplus_rrename ( resource relation, string name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rrename() va changer le nom de la relation relation en name.

Précédent | Sommaire | Suivant
dbplus_rquery | Niveau supérieur | dbplus_rsecindex


dbplus_rsecindex

(4.1.0 - 4.2.3 only)

dbplus_rsecindex -- Crée un nouvel index secondaire pour une relation

Description

resource dbplus_rsecindex ( resource relation, mixed domlist, int type)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rsecindex() crée un nouvel index secondaire pour la relation relation, qui sera constitué par domlist et sera de type type

domlist peut être passé comme un nom de domaine seul, ou comme un tableau de noms de domaines.

Précédent | Sommaire | Suivant
dbplus_rrename | Niveau supérieur | dbplus_runlink


dbplus_runlink

(4.1.0 - 4.2.3 only)

dbplus_runlink -- Détruit une relation

Description

int dbplus_runlink ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_unlink() ferme et supprime la relation relation.

Précédent | Sommaire | Suivant
dbplus_rsecindex | Niveau supérieur | dbplus_rzap


dbplus_rzap

(4.1.0 - 4.2.3 only)

dbplus_rzap -- Supprime toutes les lignes d'une relation

Description

int dbplus_rzap ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_rzap() supprime toutes les lignes de la relation relation.

Précédent | Sommaire | Suivant
dbplus_runlink | Niveau supérieur | dbplus_savepos


dbplus_savepos

(4.1.0 - 4.2.3 only)

dbplus_savepos -- Pas encore implémentée

Description

int dbplus_savepos ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_rzap | Niveau supérieur | dbplus_setindex


dbplus_setindex

(4.1.0 - 4.2.3 only)

dbplus_setindex -- Pas encore implémentée

Description

int dbplus_setindex ( resource relation, string idx_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_savepos | Niveau supérieur | dbplus_setindexbynumber


dbplus_setindexbynumber

(4.1.0 - 4.2.3 only)

dbplus_setindexbynumber -- Pas encore implémentée

Description

int dbplus_setindexbynumber ( resource relation, int idx_number)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_setindex | Niveau supérieur | dbplus_sql


dbplus_sql

(4.1.0 - 4.2.3 only)

dbplus_sql -- Exécute une requête SQL

Description

resource dbplus_sql ( string query, string server, string dbpath)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_setindexbynumber | Niveau supérieur | dbplus_tcl


dbplus_tcl

(4.1.0 - 4.2.3 only)

dbplus_tcl -- Exécute du code TCL coté serveur

Description

int dbplus_tcl ( int sid, string script)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Un serveur db++ va préparer un interpréteur TCL pour chaque connexion de client. Cet interpréteur va permettre au serveur d'exécuter du code TCL fourni par le client, un peu comme une procédure stockée, pour améliorer les performances du serveur en évitant des transferts client/serveur et des changements de contexte.

dbplus_tcl() doit recevoir l'identifiant de connexion sid et le code TCL script qui sera exécuté. dbplus_resolve() fournira l'identifiant de connexion. dbplus_tcl() retourne ce que le code TCL retourne, ou bien un message d'erreur TCL si le code TCL échoue.

Voir aussi dbplus_resolve().

Précédent | Sommaire | Suivant
dbplus_sql | Niveau supérieur | dbplus_tremove


dbplus_tremove

(4.1.0 - 4.2.3 only)

dbplus_tremove -- Supprime la ligne courante et retourne la nouvelle ligne courante

Description

int dbplus_tremove ( resource relation, array tuple [, array current])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_tremove() supprime la ligne tuple de la relation relation si cela correspond parfaitement à une ligne dans la relation. current, si fourni, contient les données de la nouvelle ligne, une fois la suppression effectuée.

Précédent | Sommaire | Suivant
dbplus_tcl | Niveau supérieur | dbplus_undo


dbplus_undo

(4.1.0 - 4.2.3 only)

dbplus_undo -- Pas encore implémentée

Description

int dbplus_undo ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_tremove | Niveau supérieur | dbplus_undoprepare


dbplus_undoprepare

(4.1.0 - 4.2.3 only)

dbplus_undoprepare -- Pas encore implémentée

Description

int dbplus_undoprepare ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Note : Cette fonction n'est pas encore implémentée.

Précédent | Sommaire | Suivant
dbplus_undo | Niveau supérieur | dbplus_unlockrel


dbplus_unlockrel

(4.1.0 - 4.2.3 only)

dbplus_unlockrel -- Libère un verrou en écriture posé sur une relation

Description

int dbplus_unlockrel ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_unlockrel() lève le verrou en écriture, posé par la fonction dbplus_lockrel() sur la relation relation.

Précédent | Sommaire | Suivant
dbplus_undoprepare | Niveau supérieur | dbplus_unselect


dbplus_unselect

(4.1.0 - 4.2.3 only)

dbplus_unselect -- Retire une contrainte d'une relation

Description

int dbplus_unselect ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_unselect() supprime la contrainte posée par dbplus_find() sur la relation relation.

Précédent | Sommaire | Suivant
dbplus_unlockrel | Niveau supérieur | dbplus_update


dbplus_update

(4.1.0 - 4.2.3 only)

dbplus_update -- Modifie une ligne dans une relation

Description

int dbplus_update ( resource relation, array old, array new)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_update() remplace la ligne identifiée par old avec les données du paramètre new si et seulement si old identifie exactement une ligne dans une relation.

Précédent | Sommaire | Suivant
dbplus_unselect | Niveau supérieur | dbplus_xlockrel


dbplus_xlockrel

(4.1.0 - 4.2.3 only)

dbplus_xlockrel -- Pose un verrou exclusif sur une relation

Description

int dbplus_xlockrel ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_xlockrel() pose un verrou exclusif sur la relation relation, qui empêchera les autres clients d'accéder à la relation, et même de la lire.

Voir aussi dbplus_xunlockrel().

Précédent | Sommaire | Suivant
dbplus_update | Niveau supérieur | dbplus_xunlockrel


dbplus_xunlockrel

(4.1.0 - 4.2.3 only)

dbplus_xunlockrel -- Lève un verrou exclusif posé sur une relation

Description

int dbplus_xunlockrel ( resource relation)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

dbplus_xunlockrel() lève le verrou exclusif, posé sur la relation relation, grâce à la fonction dbplus_xlockrel().

Précédent | Sommaire | Suivant
dbplus_xlockrel | Niveau supérieur | Direct IO


Direct IO

Manuel PHP
Précédent Suivant

XXII. Direct IO

Introduction

PHP supporte les entrées/sorties directes, comme décrites dans le Standard Posixd (Section 6). Cela permet de réaliser des accès en lecture écriture à un niveau inférieur aux fonctions proposées par le langage C (fopen, fread...).

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Pour faire fonctionner ces fonctions, vous devez configurer PHP avec l'option --enable-dio.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension définit un type de ressource : un descripteur de fichier, retourné par dio_open().

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
dio_close -- Ferme l'accès au fichier
dio_fcntl -- Exécute une fonction fichier de langage C
dio_open -- Ovre un nouveau fichier
dio_read -- Lit des octets dans un fichier
dio_seek -- Déplace le pointeur interne de fichier
dio_stat -- Lit des informations sur le fichier
dio_tcsetattr -- Modifie les attributs du terminal et le taux de baud du port série
dio_truncate -- Tronque le fichier
dio_write -- Ecrit des données dans le fichier

Précédent | Sommaire | Suivant
dbplus_xunlockrel | Niveau supérieur | dio_close


dio_close

(PHP 4 >= 4.2.0)

dio_close -- Ferme l'accès au fichier

Description

void dio_close ( resource fd)

dio_close() ferme l'accès au fichier représenté par la ressource resource.

Précédent | Sommaire | Suivant
Direct IO | Niveau supérieur | dio_fcntl


dio_fcntl

(PHP 4 >= 4.2.0)

dio_fcntl -- Exécute une fonction fichier de langage C

Description

mixed dio_fcntl ( resource fd, int cmd [, mixed arg])

dio_fcntl() exécute l'opération cmd sur le fichier représenté par la ressource fd. Certaines commandes demandent des arguments supplémentaires qui sont fournis dans l'argument args.

arg est un tableau associatif lorsque cmd vaut F_SETLK ou F_SETLLW, avec les entrées suivantes :

  • "start" - offset de début de verrou

  • "length" - taille de la surface verrouillée. zéro indique la fin du fichier.

  • "wenth" - l_start est relatif à : can be SEEK_SET, SEEK_END et SEEK_CUR

  • "type" - type de verrou : peut être F_RDLCK (verrou en lecture), F_WRLCK (verrou en écriture) ou F_UNLCK (déverrouillage)

cmd peut être l'une des opérations suivantes :

  • F_SETLK - Le verrou est posé ou levé. Si le verrou appartient à un autre utilisateur, dio_fcntl() retourne -1.

  • F_SETLKW - identique à F_SETLK, mais si le verrou appartient à quelqu'un d'autre, dio_fcntl() attent la levée du verrou.

  • F_GETLK - dio_fcntl() retourne un tableau associatif (comme décrit ci-dessus) si un autre utilisateur empêche la poste d'un verrou. S'il n'y a aucune empêchement, l'entrée "type" prendra la valeur F_UNLCK.

  • F_DUPFD - trouve les numéros de ressource de fichier les plus petits, disponibles, inférieurs ou égales à arg et les retourne.

Précédent | Sommaire | Suivant
dio_close | Niveau supérieur | dio_open


dio_open

(PHP 4 >= 4.2.0)

dio_open -- Ovre un nouveau fichier

Description

resource dio_open ( string filename, int flags [, int mode])

dio_open() ouvre un accès à un fichier, et retourne une ressource de fichier, ou bien -1 si une erreur survient. Si flags vaut O_CREAT, le troisième paramètre optionnel mode indiquera le mode du fichier (les permissions). Le paramètre flags peut prendre l'une des valeurs suivantes :

  • O_RDONLY - ouvre un fichier en lecture

  • O_WRONLY - ouvre un fichier en écriture

  • O_RDWR - ouvre un fichier en lecture et écriture

Le paramètre flags peut aussi inclure une combinaison des options suivantes :

  • O_CREAT - crée le fichier, s'il n'existe pas

  • O_EXCL - si O_CREAT et O_EXCL sont utilisé, dio_open() échouera si le fichier existe déjà.

  • O_TRUNC - si le fichier existe, etqu,il est ouvert en écriture, le fichier sera réduit à la taille nulle.

  • O_APPEND - les écritures se font à partir de la fin du fichier.

  • O_NONBLOCK -active le mode non bloquant

Précédent | Sommaire | Suivant
dio_fcntl | Niveau supérieur | dio_read


dio_read

(PHP 4 >= 4.2.0)

dio_read -- Lit des octets dans un fichier

Description

string dio_read ( resource fd [, int n])

dio_read() lit et retourne n octets dans le fichier représenté par la ressource fd. Si n est omis, dio_read() lira 1ko de données, et les retournera.

Précédent | Sommaire | Suivant
dio_open | Niveau supérieur | dio_seek


dio_seek

(PHP 4 >= 4.2.0)

dio_seek -- Déplace le pointeur interne de fichier

Description

int dio_seek ( resource fd, int pos, int whence)

dio_seek() sert à modifier la position du pointeur de fichier dans le fichier fd. Le paramètre whence spécifie comment la position pos doit être interprétée :

  • SEEK_SET - pos est spécifiée en byte à partir du début du fichier.

  • SEEK_CUR - pos est un nombre d'octets à partir de la position courante. Ce nombre peut être positif ou négatif.

  • SEEK_END - pos est un nombre de caractères à partir de la fin du fichier. Un nombre négatif indique une position à l'intérieur du fichier courant; un nombre positif indique une extension du fichier. Si vous utilisez une position au delà de la fin du fichier, et que vous écrivez réellement des données, vous allez aggrandir le fichier de pos caractères.

Précédent | Sommaire | Suivant
dio_read | Niveau supérieur | dio_stat


dio_stat

(PHP 4 >= 4.2.0)

dio_stat -- Lit des informations sur le fichier

Description

array dio_stat ( resource fd)

dio_stat() retourne les informations sur le fichier représenté par la ressource fd. dio_stat() retourne un tableau associatif, avec les entrées suivantes :

  • "device" - device

  • "inode" - inode

  • "mode" - mode

  • "nlink" - nombre de liens

  • "uid" - user id

  • "gid" - group id

  • "device_type" - type de device (si inode device)

  • "size" - taille en octets

  • "blocksize" - taille de block

  • "blocks" - nombre de block allouée

  • "atime" - date de dernier accès

  • "mtime" - date de dernière modification

  • "ctime" - date de dernier changement

En cas d'erreur, dio_stat() retourne NULL.

Précédent | Sommaire | Suivant
dio_seek | Niveau supérieur | dio_tcsetattr


dio_tcsetattr

(PHP 4 >= 4.3.0)

dio_tcsetattr -- Modifie les attributs du terminal et le taux de baud du port série

Description

dio_tcsetattr ( resource fd, array options)

dio_tcsetattr() modifie les attributs du terminal et le taux de baud du port série, en les remplaçant par options. fd est une ressource déjà ouverte. Les options actuelles sont :

  • 'baud' - taux de baud du port : peut être 38400,19200,9600,4800, 2400,1800,1200,600,300,200,150,134,110,75 ou 50. Par défaut, c'est 9600.

  • 'bits' - bits de données - peut être 8,7,6 ou 5. Par défaut, c'est 8.

  • 'stop' - bits de stop - peut être 1 ou 2. Par défaut, c'est 1.

  • 'parity' - peut être 0, 1 ou 2. Par défaut, c'est 0.

Exemple 1. Modifier le taux de baud du port série

<?php

$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd,F_SETFL, O_SYNC );

dio_tcsetattr($fd, array(
  'baud' => 9600,
  'bits' => 8,
  'stop'  =>1,
  'parity' => 0
));

while (1) {

  $data = dio_read($fd,256);

  if ($data) {
      echo $data;
  }
}

?>

Note : Cette fonction a été introduite en PHP 4.3.0.

Précédent | Sommaire | Suivant
dio_stat | Niveau supérieur | dio_truncate


dio_truncate

(PHP 4 >= 4.2.0)

dio_truncate -- Tronque le fichier

Description

bool dio_truncate ( resource fd, int offset)

dio_truncate() tronque le fichier représenté par la ressource fd à la taille maximale de offset octets. Si le fichier était plus grand, les données supplémentaires sont perdues. Si le fichier était plus petit, le comportement est non spécifié : le document peut être inchangé, ou bien aggrandi. Dans ce dernier cas, l'extension se fait avec des octets nuls. dio_truncate() retourne 0 en cas de succès, et sinon -1.

Précédent | Sommaire | Suivant
dio_tcsetattr | Niveau supérieur | dio_write


dio_write

(PHP 4 >= 4.2.0)

dio_write -- Ecrit des données dans le fichier

Description

int dio_write ( resource fd, string data [, int len])

dio_write() écrit jusqu'à len octets issues de la variable data, dans le fichier représenté par la ressource fd. Si len n'est pas spécifié, dio_write() utilise la totalité de la variable data. dio_write() retourne le nombre d'octsts écrits dans le fichier fd.

Précédent | Sommaire | Suivant
dio_truncate | Niveau supérieur | Accès aux dossiers


Accès aux dossiers

Manuel PHP
Précédent Suivant

XXIII. Accès aux dossiers

Introduction

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

DIRECTORY_SEPARATOR (string)

PATH_SEPARATOR (string)

Voir aussi

Pour des fonctions connexes telles que dirname(), is_dir(), mkdir() et rmdir(), voyez donc les fonctions Système de fichiers.

Table des matières
chdir -- Change de dossier
chroot -- Change le dossier racine
dir -- directory class
closedir -- Ferme le pointeur sur le dossier
getcwd -- Retourne le dossier de travail
opendir -- Ouvre un dossier, et récupère un pointeur dessus.
readdir -- Lit une entrée du dossier
rewinddir -- Retourne à la première entrée du dossier
scandir -- Liste les fichiers et dossier dans un dossier

Précédent | Sommaire | Suivant
dio_write | Niveau supérieur | chdir


chdir

(PHP 3, PHP 4 )

chdir -- Change de dossier

Description

bool chdir ( string directory)

chdir() change le dossier courant de PHP en directory. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi getcwd().

Précédent | Sommaire | Suivant
Accès aux dossiers | Niveau supérieur | chroot


chroot

(PHP 4 >= 4.0.5)

chroot -- Change le dossier racine

Description

bool chroot ( string directory)

chroot() change la racine du script en cours, et la remplace par directory. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Note : Il n'est pas conseillé d'utiliser cette fonction sur un site web, car il n'est pas possible de restaurer la racine à sa valeur initiale à la fin de la requête. Cette fonction n'est viable que lorsque PHP est utilisé en CGI.

Note : Cette fonction n'est pas implémentée sous Windows.

Précédent | Sommaire | Suivant
chdir | Niveau supérieur | dir


dir

dir -- directory class

Description

 class dir {

  dir(string directory);
  string path;
  resource handle;

  string read();
  void rewind();
  void close();
}

A pseudo-object oriented mechanism for reading a directory. The given directory is opened. Two properties are available once the directory has been opened. The handle property can be used with other directory functions such as readdir(), rewinddir() and closedir(). The path property is set to path the directory that was opened. Three methods are available: read, rewind and close.

Please note the fashion in which dir()'s return value is checked in the example below. We are explicitly testing whether the return value is identical to (equal to and of the same type as--see Comparison Operators for more information) FALSE since otherwise, any directory entry whose name evaluates to FALSE will stop the loop.

Exemple 1. dir() example

<?php
$d = dir("/etc");
echo "Handle: " . $d->handle . "<br />\n";
echo "Path: " . $d->path . "<br />\n";
while (false !== ($entry = $d->read())) {
   echo $entry."<br />\n";
}
$d->close();
?>

Note : The order in which directory entries are returned by the read method is system-dependent.

Note : This defines the internal class Directory, meaning that you will not be able to define your own classes with that name. For a full list of predefined classes in PHP, please see Predefined Classes.

Précédent | Sommaire | Suivant
chroot | Niveau supérieur | closedir


closedir

(PHP 3, PHP 4 )

closedir -- Ferme le pointeur sur le dossier

Description

void closedir ( resource dir_handle)

closedir() ferme le pointeur de dossier dir_handle. Le dossier devait avoir été ouvert avec opendir().

Précédent | Sommaire | Suivant
dir | Niveau supérieur | getcwd


getcwd

(PHP 4 )

getcwd -- Retourne le dossier de travail

Description

string getcwd ( void )

getcwd() retourne le nom du dossier courant.

Voir aussi chdir().

Précédent | Sommaire | Suivant
closedir | Niveau supérieur | opendir


opendir

(PHP 3, PHP 4 )

opendir -- Ouvre un dossier, et récupère un pointeur dessus.

Description

resource opendir ( string path)

opendir() retourne un pointeur sur un dossier pour être utilisé avec les fonctions closedir(), readdir() et rewinddir().

Si le paramètre path n'est pas un dossier valide, ou si le dossier ne peut être accédé pour des raisons de permissions ou des erreurs liées au système de fichiers, opendir() retourne FALSE et génère une erreur PHP. Vous pouvez supprimer cette erreur en ajoutant @ avant le nom de la fonction.

Exemple 1. Exemple avec opendir()

<?php
$dir = "/tmp/";

// Ouvre un dossier bien connu, et liste tous les fichiers
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            print "fichier : $file : type: " . filetype($dir . $file) . "\n";
        }
    closedir($dh);
    }
}
?>

Voir aussi is_dir(), readdir() et dir

Précédent | Sommaire | Suivant
getcwd | Niveau supérieur | readdir


readdir

(PHP 3, PHP 4 )

readdir -- Lit une entrée du dossier

Description

string readdir ( resource dir_handle)

readdir() retourne le nom du fichier suivant dans le dossier identifié par dir_handle. Les noms sont retournés dans n'importe quel ordre.

Exemple 1. Liste tous les fichiers du dossier courant

<?php
  $handle=opendir('.');
  echo "Pointeur de dossier : $handle\n";
  echo "Fichiers :\n";
  while ($file = readdir($handle)) {
    echo "$file\n";
  }
  closedir($handle);
?>

Notez que readdir() retournera aussi les dossiers "." et "..". Si vous ne les voulez pas, supprimez les simplement :

Exemple 2. Liste tous les fichiers du dossier courant, sauf "." et ".."

<?php
$handle=opendir('.');
while ($file = readdir($handle)) {
    if ($file != "." && $file != "..") {
        echo "$file\n";
    }
}
closedir($handle);
?>

Voir aussi is_dir() et glob().

Précédent | Sommaire | Suivant
opendir | Niveau supérieur | rewinddir


rewinddir

(PHP 3, PHP 4 )

rewinddir -- Retourne à la première entrée du dossier

Description

void rewinddir ( resource dir_handle)

rewinddir() retourne à la première entrée du dossier identifié par dir_handle : le prochain fichier lu sera le premier.

Précédent | Sommaire | Suivant
readdir | Niveau supérieur | scandir


scandir

(PHP 5 CVS only)

scandir -- Liste les fichiers et dossier dans un dossier

Description

array scandir ( string directory [, int sorting_order])

scandir retourne un array de fichier et dossier, issus de directory. Si directory n'est pas un dossier, le booléen FALSE est retourné, et une erreur de niveau E_WARNING est générée.

Par défaut, les fichiers sont donnés par ordre alphabétique. Si le paramètre optionnel sorting_order est utilisé avec la valeur 1, le tri sera fait en ordre alphabétique inverse.

Exemple 1. Listage simple de dossier avec scandir()

<?php
$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);

/* Affichera ceci :
Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)
*/
?>

Exemple 2. Alternatives à scandir()

<?php
$dir = "/tmp";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);

/* Affichera ceci :
Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)
*/
?>

Voir aussi
opendir(),
readdir(),
glob(),
is_dir() et
sort().

Précédent | Sommaire | Suivant
rewinddir | Niveau supérieur | DOM XML


DOM XML

Manuel PHP
Précédent Suivant

XXIV. DOM XML

Note importante : cette documentation est en cours de rédaction, et n'est pas encore finie. Elle souffre naturellement d'un manque de détails et de relecture. Soyez en prévenu. (Damien Seguy).

Ces fonctions ne sont disponibles que si PHP a été configuré avec l'option --with-dom=[DIR], et utilise la librairie GNOME xml library. Vous aurez aussi besoin de la librairie libxml-2.2.7 (la version beta ne fonctionne pas). Ces fonctions ont été ajoutées en PHP 4.

Cette extension vous permet de générer des documents XML avec les API DOM. Elle fournit aussi une fonction xmltree() qui transforme un fichier XML en tableau PHP. Actuellement, ce tableau est accessible uniquement en lecture. Cela ne siginifie pas que vous ne pouvez pas le modifier, mais cela n'aurait aucun sens car domxml_dumpmem() ne pourra pas prendre ces modifications en considération. Par conséquent, si vous voulez lire un fichier XML et écrire sa version modifiée, utilisez les fonctions domxml_add_node(), domxml_set_attribute(), etc... et finalement domxml_dumpmem().

Ce module définit les constantes suivantes :

Tableau 1. Constantes XML

Constante | Valeur | Description
XML_ELEMENT_NODE | 1 | Le noeud est un élément
XML_ATTRIBUTE_NODE | 2 | Le noeud est un attribut
XML_TEXT_NODE | 3 | Le noeud est un texte
XML_CDATA_SECTION_NODE | 4 |
XML_ENTITY_REF_NODE | 5 |
XML_ENTITY_NODE | 6 | Le noeud est une entité telle que &nbsp;
XML_PI_NODE | 7 | Le noeud est une instruction
XML_COMMENT_NODE | 8 | Le noeud est un commentaire
XML_DOCUMENT_NODE | 9 | Le noeud est un document
XML_DOCUMENT_TYPE_NODE | 10 |
XML_DOCUMENT_FRAG_NODE | 11 |
XML_NOTATION_NODE | 12 |
XML_GLOBAL_NAMESPACE | 1 |
XML_LOCAL_NAMESPACE | 2 |

Chaque fonction de cette extension peut être utilisée de deux manières différentes. Dans un contexte procédural, il faut passer l'objet en premier argument; dans un contexte objet, vous pouvez appeler la fonction comme une méthode de cet objet. Cette documentation présente les fonctions dans leur contexte procédural. Vous pouvez connaître la méthode objet en supprimant le préfixe "domxml_". Les tables suivantes listes toutes les classes, leurs attributs et leurs méthodes.

Ce module définit un ensemble de classes, qui sont listées ci-dessous (y compris leur attributs et leur méthodes).

Tableau 2. classe DomDocument (méthodes)

Nom de la méthode | Nom de la fonction | Description
root | domxml_root() |
children | domxml_children() |
add_root | domxml_add_root() |
dtd | domxml_intdtd() |
dumpmem | domxml_dumpmem() |
xpath_init | xpath_init |
xpath_new_context | xpath_new_context |
xptr_new_context | xptr_new_context |

Tableau 3. Classe DomDocument (attributs)

Nom | Type | Description
doc | class DomDocument | L'objet lui-même
name | string |
url | string |
version | string | Version de XML
encoding | string |
standalone | long | 1 si le fichier est complet
type | long | Une des constantes de la table ...
compression | long | 1 si le fichier est compressé
charset | long |

Tableau 4. classe DomNode (méthodes)

Nom | Nom en PHP | Description
lastchild | domxml_last_child() |
children | domxml_children() |
parent | domxml_parent() |
new_child | domxml_new_child() |
get_attribute | domxml_get_attribute() |
set_attribute | domxml_set_attribute() |
attributes | domxml_attributes() |
node | domxml_node() |
set_content() | domxml_set_content |

Tableau 5. classe DomNode (attributs)

Nom | Type | Description
node | class DomNode | L'objet lui-même
type | long |
name | string |
content | string |

Table des matières
DomAttribute->name -- Returns name of attribute
DomAttribute->specified -- Checks if attribute is specified
DomAttribute->value -- Returns value of attribute
DomDocument->add_root [deprecated] -- Adds a root node
DomDocument->create_attribute -- Create new attribute
DomDocument->create_cdata_section -- Create new cdata node
DomDocument->create_comment -- Create new comment node
DomDocument->create_element_ns -- Create new element node with an associated namespace
DomDocument->create_element -- Create new element node
DomDocument->create_entity_reference --
DomDocument->create_processing_instruction -- Creates new PI node
DomDocument->create_text_node -- Create new text node
DomDocument->doctype -- Returns the document type
DomDocument->document_element -- Returns root element node
DomDocument->dump_file -- Dumps the internal XML tree back into a file
DomDocument->dump_mem -- Dumps the internal XML tree back into a string
DomDocument->get_element_by_id -- Searches for an element with a certain id
DomDocument->get_elements_by_tagname --
DomDocument->html_dump_mem -- Dumps the internal XML tree back into a string as HTML
DomDocument->xinclude -- Substitutes XIncludes in a DomDocument Object.
DomDocumentType->entities -- Returns list of entities
DomDocumentType->internal_subset -- Returns internal subset
DomDocumentType->name -- Returns name of document type
DomDocumentType->notations -- Returns list of notations
DomDocumentType->public_id -- Returns public id of document type
DomDocumentType->system_id -- Returns system id of document type
DomElement->get_attribute_node -- Returns value of attribute
DomElement->get_attribute -- Returns value of attribute
DomElement->get_elements_by_tagname -- Gets elements by tagname
DomElement->has_attribute -- Checks to see if attribute exists
DomElement->remove_attribute -- Removes attribute
DomElement->set_attribute -- Adds new attribute
DomElement->tagname -- Returns name of element
DomNode->add_namespace -- Adds a namespace declaration to a node.
DomNode->append_child -- Adds new child at the end of the children
DomNode->append_sibling -- Adds new sibling to a node
DomNode->attributes -- Returns list of attributes
DomNode->child_nodes -- Returns children of node
DomNode->clone_node -- Clones a node
DomNode->dump_node -- Dumps a single node
DomNode->first_child -- Returns first child of node
DomNode->get_content -- Gets content of node
DomNode->has_attributes -- Checks if node has attributes
DomNode->has_child_nodes -- Checks if node has children
DomNode->insert_before -- Inserts new node as child
DomNode->is_blank_node -- Checks if node is blank
DomNode->last_child -- Returns last child of node
DomNode->next_sibling -- Returns the next sibling of node
DomNode->node_name -- Returns name of node
DomNode->node_type -- Returns type of node
DomNode->node_value -- Returns value of a node
DomNode->owner_document -- Returns the document this node belongs to
DomNode->parent_node -- Returns the parent of the node
DomNode->prefix -- Returns name space prefix of node
DomNode->previous_sibling -- Returns the previous sibling of node
DomNode->remove_child -- Removes child from list of children
DomNode->replace_child -- Replaces a child
DomNode->replace_node -- Replaces node
DomNode->set_content -- Sets content of node
DomNode->set_name -- Sets name of node
DomNode->set_namespace -- Sets namespace of a node.
DomNode->unlink_node -- Deletes node
DomProcessingInstruction->data -- Returns data of pi node
DomProcessingInstruction->target -- Returns target of pi node
DomXsltStylesheet->process -- Applies the XSLT-Transformation on a DomDocument Object.
DomXsltStylesheet->result_dump_file -- Dumps the result from a XSLT-Transformation into a file
DomXsltStylesheet->result_dump_mem -- Dumps the result from a XSLT-Transformation back into a string
domxml_new_doc -- Creates new empty XML document
domxml_open_file -- Creates a DOM object from XML file
domxml_open_mem -- Creates a DOM object of an XML document
domxml_version -- Get XML library version
domxml_xmltree -- Creates a tree of PHP objects from an XML document
domxml_xslt_stylesheet_doc -- Creates a DomXsltStylesheet Object from a DomDocument Object.
domxml_xslt_stylesheet_file -- Creates a DomXsltStylesheet Object from an XSL document in a file.
domxml_xslt_stylesheet -- Creates a DomXsltStylesheet Object from an XML document in a string.
xpath_eval_expression -- Evaluates the XPath Location Path in the given string
xpath_eval -- Evaluates the XPath Location Path in the given string
xpath_new_context -- Creates new xpath context
xptr_eval -- Evaluate the XPtr Location Path in the given string
xptr_new_context -- Create new XPath Context

Précédent | Sommaire | Suivant
scandir | Niveau supérieur | DomAttribute->name


DomAttribute->name

(no version information, might be only in CVS)

DomAttribute->name -- Returns name of attribute

Description

bool DomAttribute->name ( void )

This function returns the name of the attribute.

See also domattribute_value().

Précédent | Sommaire | Suivant
DOM XML | Niveau supérieur | DomAttribute->specified


DomAttribute->specified

(no version information, might be only in CVS)

DomAttribute->specified -- Checks if attribute is specified

Description

bool DomAttribute->specified ( void )

Check DOM standard for a detailed explanation.

Précédent | Sommaire | Suivant
DomAttribute->name | Niveau supérieur | DomAttribute->value


DomAttribute->value

(no version information, might be only in CVS)

DomAttribute->value -- Returns value of attribute

Description

bool DomAttribute->value ( void )

This function returns the value of the attribute.

See also domattribute_name().

Précédent | Sommaire | Suivant
DomAttribute->specified | Niveau supérieur | DomDocument->add_root [deprecated]


DomDocument->add_root [deprecated]

(no version information, might be only in CVS)

DomDocument->add_root [deprecated] -- Adds a root node

Description

resource DomDocument->add_root ( string name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Adds a root element node to a dom document and returns the new node. The element name is given in the passed parameter.

Exemple 1. Creating a simple HTML document header

<?php
$doc = domxml_new_doc("1.0");
$root = $doc->add_root("HTML");
$head = $root->new_child("HEAD", "");
$head->new_child("TITLE", "Hier der Titel");
echo htmlentities($doc->dump_mem());
?>

Précédent | Sommaire | Suivant
DomAttribute->value | Niveau supérieur | DomDocument->create_attribute


DomDocument->create_attribute

(no version information, might be only in CVS)

DomDocument->create_attribute -- Create new attribute

Description

object DomDocument->create_attribute ( string name, string value)

This function returns a new instance of class DomAttribute. The name of the attribute is the value of the first parameter. The value of the attribute is the value of the second parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_text(),
         domdocument_create_cdata_section(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->add_root [deprecated] | Niveau supérieur | DomDocument->create_cdata_section


DomDocument->create_cdata_section

(no version information, might be only in CVS)

DomDocument->create_cdata_section -- Create new cdata node

Description

string DomDocument->create_cdata_section ( string content)

This function returns a new instance of class DomCData. The content of the cdata is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_text(),
         domdocument_create_attribute(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_attribute | Niveau supérieur | DomDocument->create_comment


DomDocument->create_comment

(no version information, might be only in CVS)

DomDocument->create_comment -- Create new comment node

Description

object DomDocument->create_comment ( string content)

This function returns a new instance of class DomComment. The content of the comment is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_text(),
         domdocument_create_attribute(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference() and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_cdata_section | Niveau supérieur | DomDocument->create_element_ns


DomDocument->create_element_ns

(no version information, might be only in CVS)

DomDocument->create_element_ns -- Create new element node with an associated namespace

Description

object DomDocument->create_element_ns ( string uri, string name [, string prefix])

This function returns a new instance of class DomElement. The tag name of the element is the value of the passed parameter name. The URI of the namespace is the value of the passed parameter uri. If there is already a namespace declaration with the same uri in the root-node of the document, the prefix of this is taken, otherwise it will take the one provided in the optional parameter prefix or generate a random one. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domdocument_create_element_ns(),
         domnode_add_namespace(),
         domnode_set_namespace(),
         domnode_append_child(),
         domdocument_create_text(),
         domdocument_create_comment(),
         domdocument_create_attribute(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_comment | Niveau supérieur | DomDocument->create_element


DomDocument->create_element

(no version information, might be only in CVS)

DomDocument->create_element -- Create new element node

Description

object DomDocument->create_element ( string name)

This function returns a new instance of class DomElement. The tag name of the element is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domdocument_create_element_ns(),
         domnode_append_child(),
         domdocument_create_text(),
         domdocument_create_comment(),
         domdocument_create_attribute(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_element_ns | Niveau supérieur | DomDocument->create_entity_reference


DomDocument->create_entity_reference

(no version information, might be only in CVS)

DomDocument->create_entity_reference --

Description

object DomDocument->create_entity_reference ( string content)

This function returns a new instance of class DomEntityReference. The content of the entity reference is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_text(),
         domdocument_create_cdata_section(),
         domdocument_create_processing_instruction(),
         domdocument_create_attribute(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_element | Niveau supérieur | DomDocument->create_processing_instruction


DomDocument->create_processing_instruction

(no version information, might be only in CVS)

DomDocument->create_processing_instruction -- Creates new PI node

Description

string DomDocument->create_processing_instruction ( string content)

This function returns a new instance of class DomCData. The content of the pi is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_text(),
         domdocument_create_cdata_section(),
         domdocument_create_attribute(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_entity_reference | Niveau supérieur | DomDocument->create_text_node


DomDocument->create_text_node

(no version information, might be only in CVS)

DomDocument->create_text_node -- Create new text node

Description

object DomDocument->create_text_node ( string content)

This function returns a new instance of class DomText. The content of the text is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().

The return value is FALSE if an error occurred.

See also domnode_append_child(),
         domdocument_create_element(),
         domdocument_create_comment(),
         domdocument_create_text(),
         domdocument_create_attribute(),
         domdocument_create_processing_instruction(),
         domdocument_create_entity_reference(), and
         domnode_insert_before().

Précédent | Sommaire | Suivant
DomDocument->create_processing_instruction | Niveau supérieur | DomDocument->doctype


DomDocument->doctype

(no version information, might be only in CVS)

DomDocument->doctype -- Returns the document type

Description

object DomDocument->doctype ( void )

This function returns an object of class DomDocumentType. In versions of PHP before 4.3 this has been the class Dtd, but the DOM Standard does not know such a class.

See also the methods of class DomDocumentType.

Précédent | Sommaire | Suivant
DomDocument->create_text_node | Niveau supérieur | DomDocument->document_element


DomDocument->document_element

(no version information, might be only in CVS)

DomDocument->document_element -- Returns root element node

Description

object DomDocument->document_element ( void )

This function returns the root element node of a document.

The following example returns just the element with name CHAPTER and prints it. The other node -- the comment -- is not returned.

Exemple 1. Retrieving root element

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
print_r($root);
?>

Précédent | Sommaire | Suivant
DomDocument->doctype | Niveau supérieur | DomDocument->dump_file


DomDocument->dump_file

(no version information, might be only in CVS)

DomDocument->dump_file -- Dumps the internal XML tree back into a file

Description

string DomDocument->dump_file ( string filename [, bool compressionmode [, bool format]])

Creates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not. The first parameter specifies the name of the filename and the second parameter, whether it should be compressed or not.

Exemple 1. Creating a simple HTML document header

<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
$doc->dump_file("/tmp/test.xml", false, true);
?>

See also domdocument_dump_mem() domdocument_html_dump_mem().

Précédent | Sommaire | Suivant
DomDocument->document_element | Niveau supérieur | DomDocument->dump_mem


DomDocument->dump_mem

(no version information, might be only in CVS)

DomDocument->dump_mem -- Dumps the internal XML tree back into a string

Description

string DomDocument->dump_mem ( [bool format [, string encoding]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Creates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not.

Exemple 1. Creating a simple HTML document header

<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
echo "<PRE>";
echo htmlentities($doc->dump_mem(true));
echo "</PRE>";
?>

Note : The first parameter was added in PHP 4.3.0.

See also domdocument_dump_file(), domdocument_html_dump_mem().

Précédent | Sommaire | Suivant
DomDocument->dump_file | Niveau supérieur | DomDocument->get_element_by_id


DomDocument->get_element_by_id

(no version information, might be only in CVS)

DomDocument->get_element_by_id -- Searches for an element with a certain id

Description

object DomDocument->get_element_by_id ( string id)

This function is similar to domdocument_get_elements_by_tagname() but searches for an element with a given id. According to the DOM standard this requires a DTD which defines the attribute ID to be of type ID, though the current implementation simply does an xpath search for "//*[@ID = '%s']". This does not comply to the DOM standard which requires to return null if it is not known which attribute is of type id. This behaviour is likely to be fixed, so do not rely on the current behaviour.

See also domdocument_get_elements_by_tagname()

Précédent | Sommaire | Suivant
DomDocument->dump_mem | Niveau supérieur | DomDocument->get_elements_by_tagname


DomDocument->get_elements_by_tagname

(no version information, might be only in CVS)

DomDocument->get_elements_by_tagname --

Description

array DomDocument->get_elements_by_tagname ( string name)

See also domdocument_add_root()

Précédent | Sommaire | Suivant
DomDocument->get_element_by_id | Niveau supérieur | DomDocument->html_dump_mem


DomDocument->html_dump_mem

(no version information, might be only in CVS)

DomDocument->html_dump_mem -- Dumps the internal XML tree back into a string as HTML

Description

string DomDocument->html_dump_mem ( void )

Creates an HTML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below.

Exemple 1. Creating a simple HTML document header

<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
echo "<PRE>";
echo htmlentities($doc->html_dump_mem());
echo "</PRE>";
?>

See also domdocument_dump_file(), domdocument_html_dump_mem().

Précédent | Sommaire | Suivant
DomDocument->get_elements_by_tagname | Niveau supérieur | DomDocument->xinclude


DomDocument->xinclude

(no version information, might be only in CVS)

DomDocument->xinclude -- Substitutes XIncludes in a DomDocument Object.

Description

int DomDocument->xinclude ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomDocument->html_dump_mem | Niveau supérieur | DomDocumentType->entities


DomDocumentType->entities

(no version information, might be only in CVS)

DomDocumentType->entities -- Returns list of entities

Description

array DomDocumentType->entities ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomDocument->xinclude | Niveau supérieur | DomDocumentType->internal_subset


DomDocumentType->internal_subset

(no version information, might be only in CVS)

DomDocumentType->internal_subset -- Returns internal subset

Description

bool DomDocumentType->internal_subset ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomDocumentType->entities | Niveau supérieur | DomDocumentType->name


DomDocumentType->name

(no version information, might be only in CVS)

DomDocumentType->name -- Returns name of document type

Description

string DomDocumentType->name ( void )

This function returns the name of the document type.

Précédent | Sommaire | Suivant
DomDocumentType->internal_subset | Niveau supérieur | DomDocumentType->notations


DomDocumentType->notations

(no version information, might be only in CVS)

DomDocumentType->notations -- Returns list of notations

Description

array DomDocumentType->notations ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomDocumentType->name | Niveau supérieur | DomDocumentType->public_id


DomDocumentType->public_id

(no version information, might be only in CVS)

DomDocumentType->public_id -- Returns public id of document type

Description

string DomDocumentType->public_id ( void )

This function returns the public id of the document type.

The following example echos nothing.

Exemple 1. Retrieving the public id

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$doctype = $dom->doctype();
echo $doctype->public_id();
?>

Précédent | Sommaire | Suivant
DomDocumentType->notations | Niveau supérieur | DomDocumentType->system_id


DomDocumentType->system_id

(no version information, might be only in CVS)

DomDocumentType->system_id -- Returns system id of document type

Description

string DomDocumentType->system_id ( void )

Returns the system id of the document type.

The following example echos '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'.

Exemple 1. Retrieving the system id

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$doctype = $dom->doctype();
echo $doctype->system_id();
?>

Précédent | Sommaire | Suivant
DomDocumentType->public_id | Niveau supérieur | DomElement->get_attribute_node


DomElement->get_attribute_node

(no version information, might be only in CVS)

DomElement->get_attribute_node -- Returns value of attribute

Description

object DomElement->get_attribute_node ( object attr)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomDocumentType->system_id | Niveau supérieur | DomElement->get_attribute


DomElement->get_attribute

(no version information, might be only in CVS)

DomElement->get_attribute -- Returns value of attribute

Description

object DomElement->get_attribute ( string name)

Returns the attribute with name name of the current node.

(PHP >= 4.3 only) If no attribute with given name is found, an empty string is returned.

See also domelement_set_attribute()

Précédent | Sommaire | Suivant
DomElement->get_attribute_node | Niveau supérieur | DomElement->get_elements_by_tagname


DomElement->get_elements_by_tagname

(no version information, might be only in CVS)

DomElement->get_elements_by_tagname -- Gets elements by tagname

Description

bool DomElement->get_elements_by_tagname ( string name)

This function returns an array with all the elements which has name as his tagname. Every element of the array is an DomElement.

Exemple 1. Getting a content

<?php
if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();

$node_array = $root->get_elements_by_tagname("element");

for ($i = 0; $i<count($node_array); $i++) {
    $node = $node_array[$i];
    echo "The element[$i] is: " . $node->get_content();
}

?>

Précédent | Sommaire | Suivant
DomElement->get_attribute | Niveau supérieur | DomElement->has_attribute


DomElement->has_attribute

(no version information, might be only in CVS)

DomElement->has_attribute -- Checks to see if attribute exists

Description

bool DomElement->has_attribute ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomElement->get_elements_by_tagname | Niveau supérieur | DomElement->remove_attribute


DomElement->remove_attribute

(no version information, might be only in CVS)

DomElement->remove_attribute -- Removes attribute

Description

bool DomElement->remove_attribute ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomElement->has_attribute | Niveau supérieur | DomElement->set_attribute


DomElement->set_attribute

(no version information, might be only in CVS)

DomElement->set_attribute -- Adds new attribute

Description

bool DomElement->set_attribute ( string name, string value)

Sets an attribute with name name to the given value. If the attribute does not exist, it will be created.

Exemple 1. Setting an attribute

<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>

See also domelement_get_attribute()

Précédent | Sommaire | Suivant
DomElement->remove_attribute | Niveau supérieur | DomElement->tagname


DomElement->tagname

(no version information, might be only in CVS)

DomElement->tagname -- Returns name of element

Description

string DomElement->tagname ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomElement->set_attribute | Niveau supérieur | DomNode->add_namespace


DomNode->add_namespace

(no version information, might be only in CVS)

DomNode->add_namespace -- Adds a namespace declaration to a node.

Description

bool DomNode->add_namespace ( string uri, string prefix)

See also domdocument_create_element_ns(), domnode_set_namespace()

Précédent | Sommaire | Suivant
DomElement->tagname | Niveau supérieur | DomNode->append_child


DomNode->append_child

(no version information, might be only in CVS)

DomNode->append_child -- Adds new child at the end of the children

Description

object DomNode->append_child ( object newnode)

This functions appends a child to an existing list of children or creates a new list of children. The child can be created with e.g. domdocument_create_element(), domdocument_create_text() etc. or simply by using any other node.

(PHP < 4.3) Before a new child is appended it is first duplicated. Therefore the new child is a completely new copy which can be modified without changing the node which was passed to this function. If the node passed has children itself, they will be duplicated as well, which makes it quite easy to duplicate large parts of an XML document. The return value is the appended child. If you plan to do further modifications on the appended child you must use the returned node.

(PHP 4.3.0/4.3.1) The new child newnode is first unlinked from its existing context, if it's already a child of DomNode. Therefore the node is moved and not copies anymore.

(PHP >= 4.3.2) The new child newnode is first unlinked from its existing context, if it's already in the tree. Therefore the node is moved and not copied. This is the behaviour according to the W3C specifications. If you want to duplicate large parts of an XML document, use DomNode->clone_node() before appending.

The following example will add a new element node to a fresh document and sets the attribute "align" to "left".

Exemple 1. Adding a child

<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>
The above example could also be written as the following:

Exemple 2. Adding a child

<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>
A more complex example is the one below. It first searches for a certain element, duplicates it including its children and adds it as a sibling. Finally a new attribute is added to one of the children of the new sibling and the whole document is dumped.

Exemple 3. Adding a child

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];

$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");

echo "<pre>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</pre>";
?>
The above example could also be done with domnode_insert_before() instead of domnode_append_child().

See also domnode_insert_before(), domnode_clone_node().

Précédent | Sommaire | Suivant
DomNode->add_namespace | Niveau supérieur | DomNode->append_sibling


DomNode->append_sibling

(no version information, might be only in CVS)

DomNode->append_sibling -- Adds new sibling to a node

Description

object DomNode->append_sibling ( object newnode)

This functions appends a sibling to an existing node. The child can be created with e.g. domdocument_create_element(), domdocument_create_text() etc. or simply by using any other node.

Before a new sibling is added it is first duplicated. Therefore the new child is a completely new copy which can be modified without changing the node which was passed to this function. If the node passed has children itself, they will be duplicated as well, which makes it quite easy to duplicate large parts of an XML document. The return value is the added sibling. If you plan to do further modifications on the added sibling you must use the returned node.

This function has been added to provide the behaviour of domnode_append_child() as it works till PHP 4.2.

See also domnode_append_before().

Précédent | Sommaire | Suivant
DomNode->append_child | Niveau supérieur | DomNode->attributes


DomNode->attributes

(no version information, might be only in CVS)

DomNode->attributes -- Returns list of attributes

Description

array DomNode->attributes ( void )

This function only returns an array of attributes if the node is of type XML_ELEMENT_NODE.

(PHP >= 4.3 only) If no attributes are found, NULL is returned.

Précédent | Sommaire | Suivant
DomNode->append_sibling | Niveau supérieur | DomNode->child_nodes


DomNode->child_nodes

(no version information, might be only in CVS)

DomNode->child_nodes -- Returns children of node

Description

array DomNode->child_nodes ( void )

Returns all children of the node.

See also domnode_next_sibling(), domnode_previous_sibling().

Précédent | Sommaire | Suivant
DomNode->attributes | Niveau supérieur | DomNode->clone_node


DomNode->clone_node

(no version information, might be only in CVS)

DomNode->clone_node -- Clones a node

Description

object DomNode->clone_node ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomNode->child_nodes | Niveau supérieur | DomNode->dump_node


DomNode->dump_node

(no version information, might be only in CVS)

DomNode->dump_node -- Dumps a single node

Description

string DomNode->dump_node ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

See also domdocument_dump_mem().

Précédent | Sommaire | Suivant
DomNode->clone_node | Niveau supérieur | DomNode->first_child


DomNode->first_child

(no version information, might be only in CVS)

DomNode->first_child -- Returns first child of node

Description

object DomNode->first_child ( void )

Returns the first child of the node.

(PHP >= 4.3 only) If no first child is found, NULL is returned.

See also domnode_last_child(),
         domnode_next_sibling(),
         domnode_previous_sibling().

Précédent | Sommaire | Suivant
DomNode->dump_node | Niveau supérieur | DomNode->get_content


DomNode->get_content

(no version information, might be only in CVS)

DomNode->get_content -- Gets content of node

Description

string DomNode->get_content ( void )

This function returns the content of the actual node.

Exemple 1. Getting a content

<?php
if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();

$node_array = $root->get_elements_by_tagname("element");

for ($i = 0; $i<count($node_array); $i++) {
     $node = $node_array[$i];
     echo "The element[$i] is: " . $node->get_content();
}

?>

Précédent | Sommaire | Suivant
DomNode->first_child | Niveau supérieur | DomNode->has_attributes


DomNode->has_attributes

(no version information, might be only in CVS)

DomNode->has_attributes -- Checks if node has attributes

Description

bool DomNode->has_attributes ( void )

This function checks if the node has attributes.

See also domnode_has_child_nodes().

Précédent | Sommaire | Suivant
DomNode->get_content | Niveau supérieur | DomNode->has_child_nodes


DomNode->has_child_nodes

(no version information, might be only in CVS)

DomNode->has_child_nodes -- Checks if node has children

Description

bool DomNode->has_child_nodes ( void )

This function checks if the node has children.

See also domnode_child_nodes().

Précédent | Sommaire | Suivant
DomNode->has_attributes | Niveau supérieur | DomNode->insert_before


DomNode->insert_before

(no version information, might be only in CVS)

DomNode->insert_before -- Inserts new node as child

Description

object DomNode->insert_before ( object newnode, object refnode)

This function inserts the new node newnode right before the node refnode. The return value is the inserted node. If you plan to do further modifications on the appended child you must use the returned node.

(PHP >= 4.3 only) If newnode already is part of a document, it will be first unlinked from its existing context. If refnode is NULL, then newnode will be inserted at the end of the list of children.

domnode_insert_before() is very similar to domnode_append_child() as the following example shows which does the same as the example at domnode_append_child().

Exemple 1. Adding a child

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];

$newnode = $element->insert_before($element, $element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");

echo "<PRE>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</PRE>";
?>

See also domnode_append_child().

Précédent | Sommaire | Suivant
DomNode->has_child_nodes | Niveau supérieur | DomNode->is_blank_node


DomNode->is_blank_node

(no version information, might be only in CVS)

DomNode->is_blank_node -- Checks if node is blank

Description

bool DomNode->is_blank_node ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomNode->insert_before | Niveau supérieur | DomNode->last_child


DomNode->last_child

(no version information, might be only in CVS)

DomNode->last_child -- Returns last child of node

Description

object DomNode->last_child ( void )

Returns the last child of the node.

(PHP >= 4.3 only) If no last child is found, NULL is returned.

See also domnode_first_child(),
         domnode_next_sibling(),
         domnode_previous_sibling().

Précédent | Sommaire | Suivant
DomNode->is_blank_node | Niveau supérieur | DomNode->next_sibling


DomNode->next_sibling

(no version information, might be only in CVS)

DomNode->next_sibling -- Returns the next sibling of node

Description

object DomNode->next_sibling ( void )

This function returns the next sibling of the current node. If there is no next sibling it returns FALSE (< 4.3) or null (>= 4.3). You can use this function to iterate over all children of a node as shown in the example.

Exemple 1. Iterate over children

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("tbody");
$element = $elements[0];
$child = $element->first_child();

while ($child) {
   print_r($child);
   $child = $child->next_sibling();
}
?>

See also domnode_previous_sibling().

Précédent | Sommaire | Suivant
DomNode->last_child | Niveau supérieur | DomNode->node_name


DomNode->node_name

(no version information, might be only in CVS)

DomNode->node_name -- Returns name of node

Description

string DomNode->node_name ( void )

Returns name of the node. The name has different meanings for the different types of nodes as illustrated in the following table.

Tableau 1. Meaning of value

Type | Meaning
DomAttribute | value of attribute
DomAttribute |
DomCDataSection | #cdata-section
DomComment | #comment
DomDocument | #document
DomDocumentType | document type name
DomElement | tag name
DomEntity | name of entity
DomEntityReference | name of entity reference
DomNotation | notation name
DomProcessingInstruction | target
DomText | #text

Précédent | Sommaire | Suivant
DomNode->next_sibling | Niveau supérieur | DomNode->node_type


DomNode->node_type

(no version information, might be only in CVS)

DomNode->node_type -- Returns type of node

Description

int DomNode->node_type ( void )

Returns the type of the node. All possible types are listed in the table in the introduction.

Précédent | Sommaire | Suivant
DomNode->node_name | Niveau supérieur | DomNode->node_value


DomNode->node_value

(no version information, might be only in CVS)

DomNode->node_value -- Returns value of a node

Description

string DomNode->node_value ( void )

Returns value of the node. The value has different meanings for the different types of nodes as illustrated in the following table.

Tableau 1. Meaning of value

Type | Meaning
DomAttribute | value of attribute
DomAttribute |
DomCDataSection | content
DomComment | content of comment
DomDocument | null
DomDocumentType | null
DomElement | null
DomEntity | null
DomEntityReference | null
DomNotation | null
DomProcessingInstruction | entire content without target
DomText | content of text

Précédent | Sommaire | Suivant
DomNode->node_type | Niveau supérieur | DomNode->owner_document


DomNode->owner_document

(no version information, might be only in CVS)

DomNode->owner_document -- Returns the document this node belongs to

Description

object DomNode->owner_document ( void )

This function returns the document the current node belongs to.

The following example will create two identical lists of children.

Exemple 1. Finding the document of a node

<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node = $doc->append_child($node);
$children = $doc->children();
print_r($children);

$doc2 = $node->owner_document();
$children = $doc2->children();
print_r($children);
?>

See also domnode_insert_before().

Précédent | Sommaire | Suivant
DomNode->node_value | Niveau supérieur | DomNode->parent_node


DomNode->parent_node

(no version information, might be only in CVS)

DomNode->parent_node -- Returns the parent of the node

Description

object DomNode->parent_node ( void )

This function returns the parent node.

(PHP >= 4.3 only) If no parent is found, NULL is returned.

The following example will show two identical lists of children.

Exemple 1. Finding the document of a node

<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node = $doc->append_child($node);
$children = $doc->children();
print_r($children);

$doc2 = $node->parent_node();
$children = $doc2->children();
print_r($children);
?>

Précédent | Sommaire | Suivant
DomNode->owner_document | Niveau supérieur | DomNode->prefix


DomNode->prefix

(no version information, might be only in CVS)

DomNode->prefix -- Returns name space prefix of node

Description

string DomNode->prefix ( void )

Returns the name space prefix of the node.

Précédent | Sommaire | Suivant
DomNode->parent_node | Niveau supérieur | DomNode->previous_sibling


DomNode->previous_sibling

(no version information, might be only in CVS)

DomNode->previous_sibling -- Returns the previous sibling of node

Description

object DomNode->previous_sibling ( void )

This function returns the previous sibling of the current node. If there is no previous sibling it returns FALSE (< 4.3) or NULL (>= 4.3). You can use this function to iterate over all children of a node as shown in the example.

See also domnode_next_sibling().

Précédent | Sommaire | Suivant
DomNode->prefix | Niveau supérieur | DomNode->remove_child


DomNode->remove_child

(no version information, might be only in CVS)

DomNode->remove_child -- Removes child from list of children

Description

object DomNode->remove_child ( object oldchild)

This functions removes a child from a list of children. If child cannot be removed or is not a child the function will return FALSE. If the child could be removed the functions returns the old child.

Exemple 1. Removing a child

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("tbody");
$element = $elements[0];
$children = $element->child_nodes();
$child = $element->remove_child($children[0]);

echo "<PRE>";
$xmlfile = $dom->dump_mem(true);
echo htmlentities($xmlfile);
echo "</PRE>";
?>

See also domnode_append_child().

Précédent | Sommaire | Suivant
DomNode->previous_sibling | Niveau supérieur | DomNode->replace_child


DomNode->replace_child

(no version information, might be only in CVS)

DomNode->replace_child -- Replaces a child

Description

object DomNode->replace_child ( object oldnode, object newnode)

(PHP 4.2) This function replaces the child oldnode with the passed new node. If the new node is already a child it will not be added a second time. If the old node cannot be found the function returns FALSE. If the replacement succeeds the old node is returned.

(PHP 4.3) This function replaces the child oldnode with the passed newnode, even if the new node already is a child of the DomNode. If newnode was already inserted in the document it is first unlinked from its existing context. If the old node cannot be found the function returns FALSE. If the replacement succeeds the old node is returned. (This behaviour is according to the W3C specs).

See also domnode_append_child()

Précédent | Sommaire | Suivant
DomNode->remove_child | Niveau supérieur | DomNode->replace_node


DomNode->replace_node

(no version information, might be only in CVS)

DomNode->replace_node -- Replaces node

Description

object DomNode->replace_node ( object newnode)

(PHP 4.2) This function replaces an existing node with the passed new node. Before the replacement newnode is copied if it has a parent to make sure a node which is already in the document will not be inserted a second time. This behaviour enforces doing all modifications on the node before the replacement or to refetch the inserted node afterwards with functions like domnode_first_child(), domnode_child_nodes() etc..

(PHP 4.3) This function replaces an existing node with the passed new node. It is not copied anymore. If newnode was already inserted in the document it is first unlinked from its existing context. If the replacement succeeds the old node is returned.

See also domnode_append_child()

Précédent | Sommaire | Suivant
DomNode->replace_child | Niveau supérieur | DomNode->set_content


DomNode->set_content

(no version information, might be only in CVS)

DomNode->set_content -- Sets content of node

Description

bool DomNode->set_content ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomNode->replace_node | Niveau supérieur | DomNode->set_name


DomNode->set_name

(no version information, might be only in CVS)

DomNode->set_name -- Sets name of node

Description

bool DomNode->set_name ( void )

Sets name of node.

See also domnode_node_name().

Précédent | Sommaire | Suivant
DomNode->set_content | Niveau supérieur | DomNode->set_namespace


DomNode->set_namespace

(no version information, might be only in CVS)

DomNode->set_namespace -- Sets namespace of a node.

Description

void DomNode->set_namespace ( string uri [, string prefix])

Sets the namespace of a node to uri. If there is already a namespace declaration with the same uri in one of the parent nodes of the node, the prefix of this is taken, otherwise it will take the one provided in the optional parameter prefix or generate a random one.

See also domdocument_create_element_ns(), domnode_add_namespace()

Précédent | Sommaire | Suivant
DomNode->set_name | Niveau supérieur | DomNode->unlink_node


DomNode->unlink_node

(no version information, might be only in CVS)

DomNode->unlink_node -- Deletes node

Description

object DomNode->unlink_node ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomNode->set_namespace | Niveau supérieur | DomProcessingInstruction->data


DomProcessingInstruction->data

(no version information, might be only in CVS)

DomProcessingInstruction->data -- Returns data of pi node

Description

string DomProcessingInstruction->data ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomNode->unlink_node | Niveau supérieur | DomProcessingInstruction->target


DomProcessingInstruction->target

(no version information, might be only in CVS)

DomProcessingInstruction->target -- Returns target of pi node

Description

string DomProcessingInstruction->target ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
DomProcessingInstruction->data | Niveau supérieur | DomXsltStylesheet->process


DomXsltStylesheet->process

(no version information, might be only in CVS)

DomXsltStylesheet->process -- Applies the XSLT-Transformation on a DomDocument Object.

Description

object DomXsltStylesheet->process ( object DomDocument [, array xslt_parameters [, bool param_is_xpath]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

See also domxml_xslt_stylesheet(), domxml_xslt_stylesheet_file(), domxml_xslt_stylesheet_doc()

Précédent | Sommaire | Suivant
DomProcessingInstruction->target | Niveau supérieur | DomXsltStylesheet->result_dump_file


DomXsltStylesheet->result_dump_file

(no version information, might be only in CVS)

DomXsltStylesheet->result_dump_file -- Dumps the result from a XSLT-Transformation into a file

Description

string DomXsltStylesheet->result_dump_file ( object DomDocument, string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

This function is only available since PHP 4.3

Since DomXsltStylesheet->process() always returns a well-formed XML DomDocument, no matter what output method was declared in <xsl:output> and similar attributes/elements, it's of not much use, if you want to output HTML 4 or text data. This function on the contrary honors <xsl:output method="html|text"> and other output control directives. See the example for instruction of how to use it.

Exemple 1. Saving the result of a XSLT transformation in a file

<?php
$filename = "stylesheet.xsl";
$xmldoc = domxml_open_file("data.xml");
$xsldoc = domxml_xslt_stylesheet_file($filename);
$result =  $xsldoc->process($xmldoc);
echo $xsldoc->result_dump_file($result, "filename");
?>

See also domxml_xslt_result_dump_mem(), domxml_xslt_process()

Précédent | Sommaire | Suivant
DomXsltStylesheet->process | Niveau supérieur | DomXsltStylesheet->result_dump_mem


DomXsltStylesheet->result_dump_mem

(no version information, might be only in CVS)

DomXsltStylesheet->result_dump_mem -- Dumps the result from a XSLT-Transformation back into a string

Description

string DomXsltStylesheet->result_dump_mem ( object DomDocument)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

This function is only available since PHP 4.3

Since DomXsltStylesheet->process() always returns a well-formed XML DomDocument, no matter what output method was declared in <xsl:output> and similar attributes/elements, it's of not much use, if you want to output HTML 4 or text data. This function on the contrary honors <xsl:output method="html|text"> and other output control directives. See the example for instruction of how to use it.

Exemple 1. Outputting the result of a XSLT transformation

<?php
$filename = "stylesheet.xsl";
$xmldoc = domxml_open_file("data.xml");
$xsldoc = domxml_xslt_stylesheet_file($filename);
$result =  $xsldoc->process($xmldoc);
echo $xsldoc->result_dump_mem($result);
?>

See also domxml_xslt_result_dump_file(), domxml_xslt_process()

Précédent | Sommaire | Suivant
DomXsltStylesheet->result_dump_file | Niveau supérieur | domxml_new_doc


domxml_new_doc

(PHP 4 >= 4.2.1)

domxml_new_doc -- Creates new empty XML document

Description

object domxml_new_doc ( string version)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Creates a new dom document from scratch and returns it.

See also domdocument_add_root()

Précédent | Sommaire | Suivant
DomXsltStylesheet->result_dump_mem | Niveau supérieur | domxml_open_file


domxml_open_file

(PHP 4 >= 4.2.1)

domxml_open_file -- Creates a DOM object from XML file

Description

object domxml_open_file ( string filename)

The function parses the XML document in the file named filename and returns an object of class "Dom document", having the properties as listed above. The file is accessed read-only.

Exemple 1. Opening an XML document from a file

<?php

if (!$dom = domxml_open_file("example.xml")) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
?>

See also domxml_open_mem(), domxml_new_doc().

Précédent | Sommaire | Suivant
domxml_new_doc | Niveau supérieur | domxml_open_mem


domxml_open_mem

(PHP 4 >= 4.2.1)

domxml_open_mem -- Creates a DOM object of an XML document

Description

object domxml_open_mem ( string str)

The function parses the XML document in str and returns an object of class "Dom document", having the properties as listed above. This function, domxml_open_file() or domxml_new_doc() must be called before any other function calls.

Exemple 1. Opening an XML document in a string

<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
?>

See also domxml_open_file(), domxml_new_doc().

Précédent | Sommaire | Suivant
domxml_open_file | Niveau supérieur | domxml_version


domxml_version

(PHP 4 >= 4.1.0)

domxml_version -- Get XML library version

Description

string domxml_version ( void )

This function returns the version of the XML library version currently used.

Précédent | Sommaire | Suivant
domxml_open_mem | Niveau supérieur | domxml_xmltree


domxml_xmltree

(PHP 4 >= 4.2.1)

domxml_xmltree -- Creates a tree of PHP objects from an XML document

Description

object domxml_xmltree ( string str)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

The function parses the XML document in str and returns a tree PHP objects as the parsed document. This function is isolated from the other functions, which means you cannot access the tree with any of the other functions. Modifying it, for example by adding nodes, makes no sense since there is currently no way to dump it as an XML file. However this function may be valuable if you want to read a file and investigate the content.

Précédent | Sommaire | Suivant
domxml_version | Niveau supérieur | domxml_xslt_stylesheet_doc


domxml_xslt_stylesheet_doc

(PHP 4 >= 4.2.0)

domxml_xslt_stylesheet_doc -- Creates a DomXsltStylesheet Object from a DomDocument Object.

Description

object domxml_xslt_stylesheet_doc ( object DocDocument Object)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

See also domxsltstylesheet->process(), domxml_xslt_stylesheet(), domxml_xslt_stylesheet_file()

Précédent | Sommaire | Suivant
domxml_xmltree | Niveau supérieur | domxml_xslt_stylesheet_file


domxml_xslt_stylesheet_file

(PHP 4 >= 4.2.0)

domxml_xslt_stylesheet_file -- Creates a DomXsltStylesheet Object from an XSL document in a file.

Description

object domxml_xslt_stylesheet_file ( string xsl file)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

See also domxsltstylesheet->process(), domxml_xslt_stylesheet(), domxml_xslt_stylesheet_doc()

Précédent | Sommaire | Suivant
domxml_xslt_stylesheet_doc | Niveau supérieur | domxml_xslt_stylesheet


domxml_xslt_stylesheet

(PHP 4 >= 4.2.0)

domxml_xslt_stylesheet -- Creates a DomXsltStylesheet Object from an XML document in a string.

Description

object domxml_xslt_stylesheet ( string xsl document)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

See also domxsltstylesheet->process(), domxml_xslt_stylesheet_file(), domxml_xslt_stylesheet_doc()

Précédent | Sommaire | Suivant
domxml_xslt_stylesheet_file | Niveau supérieur | xpath_eval_expression


xpath_eval_expression

(PHP 4 >= 4.0.4)

xpath_eval_expression -- Evaluates the XPath Location Path in the given string

Description

array xpath_eval_expression ( object xpath_context)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

See also xpath_eval()

Précédent | Sommaire | Suivant
domxml_xslt_stylesheet | Niveau supérieur | xpath_eval


xpath_eval

(PHP 4 >= 4.0.4)

xpath_eval -- Evaluates the XPath Location Path in the given string

Description

array xpath_eval ( object xpath context, string xpath expression [, object contextnode])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

The optional contextnode can be specified for doing relative XPath queries.

See also xpath_new_context()

Précédent | Sommaire | Suivant
xpath_eval_expression | Niveau supérieur | xpath_new_context


xpath_new_context

(PHP 4 >= 4.0.4)

xpath_new_context -- Creates new xpath context

Description

object xpath_new_context ( object dom document)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

See also xpath_eval()

Précédent | Sommaire | Suivant
xpath_eval | Niveau supérieur | xptr_eval


xptr_eval

(PHP 4 >= 4.0.4)

xptr_eval -- Evaluate the XPtr Location Path in the given string

Description

int xptr_eval ( [object xpath_context, string eval_str])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xpath_new_context | Niveau supérieur | xptr_new_context


xptr_new_context

(PHP 4 >= 4.0.4)

xptr_new_context -- Create new XPath Context

Description

string xptr_new_context ( [object doc_handle])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xptr_eval | Niveau supérieur | .NET


.NET

Manuel PHP
Précédent Suivant

XXV. .NET

Table des matières
dotnet_load -- Charge un module DOTNET

Précédent | Sommaire | Suivant
xptr_new_context | Niveau supérieur | dotnet_load


dotnet_load

(no version information, might be only in CVS)

dotnet_load -- Charge un module DOTNET

Description

int dotnet_load ( string assembly_name [, string datatype_name [, int codepage]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
.NET | Niveau supérieur | Gestion des erreurs


Gestion des erreurs

Manuel PHP
Précédent Suivant

XXVI. Gestion des erreurs

Introduction

Ces fonctions permettent de gérer les erreurs, et de les enregistrer. Vous pouvez définir les règles de traitement des erreurs et choisir la manière de les enregistrer : vous pouvez adapter le rapport d'erreurs à vos besoins.

Avec les fonctions d'enregistrements, vous pouvez envoyer directement les rapports à d'autres machines (ou même les envoyer par email à un pager), à l'historique système, ou encore sélectionner les erreurs les plus importantes et ne pas enregistrer les autres.

La fonction de niveau d'erreur vous permet de personnaliser le niveau et le type d'erreur noté : depuis les inoffensives alertes jusqu'au erreurs personnalisées retournées par les fonctions.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
error_reporting | E_ALL & ~E_NOTICE & ~E_STRICT | PHP_INI_ALL
display_errors | "1" | PHP_INI_ALL
display_startup_errors | "0" | PHP_INI_ALL
log_errors | "0" | PHP_INI_ALL
log_errors_max_len | "1024" | PHP_INI_ALL
ignore_repeated_errors | "0" | PHP_INI_ALL
ignore_repeated_source | "0" | PHP_INI_ALL
report_memleaks | "1" | PHP_INI_SYSTEM
track_errors | "0" | PHP_INI_ALL
html_errors | "1" | PHP_INI_ALL
docref_root | "http://www.php.net/" | PHP_INI_ALL
docref_ext | ".html" | PHP_INI_ALL
error_prepend_string | NULL | PHP_INI_ALL
error_append_string | NULL | PHP_INI_ALL
error_log | NULL | PHP_INI_ALL
warn_plus_overloading | NULL | PHP_INI??
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

error_reporting integer

Fixe le niveau d'erreur. Ce paramètre est un entier, représentant un champs de bits. Ajoutez les valeurs suivantes pour choisir le niveau que vous désirez, telles que décrite dans la section Constantes prédéfinies, et dans le fichier php.ini. Pour modifier cette configuration durant l'exécution du script, utilisez la fonction error_reporting(). Voyez aussi la directive display_errors.

En PHP 4, la configuration par défaut est E_ALL & ~E_NOTICE. Elle montre toutes les erreurs, sauf les E_NOTICE. Il est recommandée de les afficher durant le développement.

En PHP 5, la configuration par défaut est E_ALL & ~E_NOTICE & ~E_STRICT. Elle montre toutes les erreurs, sauf les E_NOTICE et les E_STRICT. Il est recommandée de les afficher durant le développement.

Note : Activer le rapport d'erreur de niveau E_NOTICE durant le développement a des avantages. En terme de débogage, les message d'alertes vous signalent des bugs potentiels dans votre code. Par exemple, l'utilisation de valeurs non initialisées est signalé. Il est aussi plus pratique pour trouver des coquilles, et ainsi, gagner du temps. Les messages NOTICE vous signaleront aussi les mauvaises pratiques de codages. Par exemple $arr[item] doit toujours être écrit $arr['item'] car PHP va considéder "item" comme une constante, au premier abord. Si cette constante n'est pas définie, alors il va l'utilise comme une chaîne.

En PHP 3, la configuration par défaut est (E_ERROR | E_WARNING | E_PARSE), ce qui correspond à la même configuration qu'en PHP 4. Notez toutefois que les constantes ne sont pas supportées dans le php3.ini de PHP 3, et que le niveau d'erreur doit être spécifié numériquement, c'est à dire 7.

display_errors boolean

Cette directive détermine si les erreurs doivent être affichées à l'écran au format HTML ou non.

display_startup_errors boolean

Même si display_errors est activé, des erreurs peuvent survenir lors de la séquence de démarrage de PHP, et ces erreurs sont cachées. Avec cette option, vous pouvez les afficher, et c'est recommandé pour le débogage. En dehors de ce cas, il est fortement recommandé de laisser display_startup_errors à off.

log_errors boolean

Indique où les messages d'erreur générés doivent être écrits, dans l'historique du serveur ou dans error_log. Cette fonction est spécifique aux serveurs.

Note : Il est recommandé d'utiliser l'historique d'erreur, plutôt que d'afficher les erreurs sur les sites de production.

log_errors_max_len integer

Configure la taille maximale des erreurs qui seront enregistrées dans l'historique, en kilo octets. Dans les informations de error_log, l'origine est ajoutée. La valeur par défaut est de 1024. 0 signifie qu'il n'y a pas de limite de taille.

ignore_repeated_errors boolean

Ne pas enregistrer des messages répétitifs. Les erreurs répétées doivent survenir au même moment, à la même ligne et depuis le même fichier de script, jusqu'à ce que ignore_repeated_source soit mis à TRUE.

ignore_repeated_source boolean

Ignore la source du message lors des messages répétés. Lorsuqe vous avez configuré cette option à On, vous n'enregistrerez par les erreurs les erreurs répétées provenant de fichier et lignes de code différents.

report_memleaks boolean

Si ce paramètre est mis à Off, alors les fuites de mémoires ne seront pas affichées (sur la sortie standard, stdout ou dans les logs). Cette option n'a d'effet que si PHP a été compilé avec l'option de débogage, et si error_reporting inclut E_WARNING dans sa liste.

track_errors boolean

Si cette option est activée, le dernier message d'erreur sera placé dans la variable globale $php_errormsg.

html_errors boolean

Désactive les balises HTML dans les messages d'erreurs. Le nouveau format d'erreurs HTML fournit des messages cliquable, qui redirige l'utilisateur vers la documentation de l'erreur ou de la fonction. Ces références sont affectées par docref_root et docref_ext.

docref_root string

Le nouveau format d'erreur contient une référence à une page décrivant l'erreur, ou la fonction ayant causé l'erreur. Pour le manuel, vous pouvez télécharger le manuel dans votre langue, et configurer cette option pour qu'elle pointe sur votre manuel. Si votre copie du manuel est accessible à '/manual/', vous pouvez simplement utiliser docref_root=/manual/. De plus, vous devez configurer docref_ext pour qu'elle corresponde aux extensions de votre manuel. docref_ext=.html. Il est possible d'utiliser des références externes. Par exemple, vous pouvez utiliser docref_root=http://manual/en/ ou docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F"

La plupart du temps, vous utilisez l'option docref_root avec un slash a la fin ('/'). Mais ce n'est pas obligatoire, comme le montre le second exemple ci-dessus.

docref_ext string

Voir aussi docref_root.

Note : La valeur de docref_ext doit commencer avec un point '.'.

error_prepend_string string

La chaîne à placer avant les messages d'erreur.

error_append_string string

La chaîne à placer après les messages d'erreur.

error_log string

Nom du fichier où seront enregistrées les erreurs. Si la valeur spéciale syslog est utilisée, les erreurs seront envoyées au système d'historique du serveur. Sous Unix, cela correspond à syslog(3) et sous Windows NT, à l'historique d'événement. L'historique n'est pas supporté sous Windows 95. Voir aussi : syslog().

warn_plus_overloading boolean

Si cette option est activée, PHP va afficher une alerte lorsque l'opérateur d'addition (+) est utilisé avec des chaînes de caractères. Cela peut aider à trouver les erreurs où le plus est utilisé comme opérateur de concaténation au lieu de point (.).

Constantes prédefinies

Les constantes listées ici sont toujours disponibles dans PHP.

Note : Vous pouvez utiliser ces constantes dans le fichier php.ini mais pas hors de PHP, comme dans le fichier httpd.conf, où vous devez utiliser les valeurs de champs de bits.

Tableau 2. Erreurs et historique

Valeur | Constante | Description | Note
1 | E_ERROR (integer) | Les erreurs sont aussi affichées par défaut, et l'exécution du script est interrompue. Elles indiquent des erreurs qui ne peuvent pas être ignorées, comme des problèmes d'allocation de mémoire, par exemple. |
2 | E_WARNING (integer) | Les alertes sont affichées par défaut, mais n'interrompent pas l'exécution du script. Elles indiquent un problème qui doit être intercepté par le script durant l'exécution du script. Par exemple, appeler ereg() avec une regex invalide. |
4 | E_PARSE (integer) | Les erreurs d'analyse ne doivent être générées que par l'analyseur. Elles ne sont citées ici que dans le but d'être exhaustif. |
8 | E_NOTICE (integer) | Les notes ne sont pas affichées par défaut, et indique que le script a rencontré quelque chose qui peut être une erreur, mais peut aussi être un événement normal dans la vie du script. Par exemple, essayer d'accéder à une valeur qui n'a pas été déclarée, ou appeler stat sur un fichier qui n'existe pas. |
16 | E_CORE_ERROR (integer) | Elles sont similaires aux erreurs E_ERROR, mais elles sont générées par le code de PHP. Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
32 | E_CORE_WARNING (integer) | Elles sont similaires à E_WARNING, mais elles sont générées par le code de PHP. Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
64 | E_COMPILE_ERROR (integer) | Elles sont similaires à E_ERROR, mais elles sont générées par Zend Scripting Engine. Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
128 | E_COMPILE_WARNING (integer) | Elles sont similaires à E_WARNING, mais elles sont générées par Zend Scripting Engine. Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
256 | E_USER_ERROR (integer) | E_USER_ERROR est comparable à E_ERROR. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
512 | E_USER_WARNING (integer) | E_USER_WARNING est comparable à E_WARNING. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
1024 | E_USER_NOTICE (integer) | E_USER_WARNING est comparable à E_NOTICE. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur. | PHP 4 seulement
2048 | E_STRICT (integer) | Notices au moment de l'exécution. Permet d'obtenir des suggestions de PHP pour modifier votre code, assurant ainsi une meilleure interopérabilité et compatibilité de celui-ci. | PHP 5 seulement.
4095 | E_ALL (integer) | Toutes les erreurs et alertes supportées. | A partir de PHP 5.0.0 la valeur a changé de 2047 à 4095.

Les valeurs ci-dessus (numérique ou symbolique) sont utilisées pour constituer des champs de bits, qui spécifie le niveau de rapport d'erreur. Vous pouvez utiliser les opérateurs de bits pour combiner ces valeurs pour en faire des masques qui filtrent certaines erreurs. Notez bien que seuls '|', '~', '!', '^' et '&' seront compris dans le fichier php.ini, et que aucun opérateur logique ne sera compris en php3.ini.

Exemples

Ci-dessous, vous trouverez un exemple de gestion des erreurs par PHP. Il y est défini un gestionnaire d'erreur, qui enregistre les informations dans un fichier (au format XML), et envoie un courriel au développeur si l'erreur est critique.

Exemple 1. Gestion d'erreurs avancées en PHP

<?php
// Nous allons faire notre propre gestion
error_reporting(0);

// Fonction sp&eacute;ciale de gestion des erreurs
function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {
    // Date et heure de l'erreur
    $dt = date("Y-m-d H:i:s (T)");

    // D&eacute;finit un tableau associatif avec les cha&icirc;nes d'erreur
    // En fait, les seuls niveaux qui nous interessent
    // sont 2,8,256,512 et 1024
    $errortype = array (
                1   =>  "Erreur",
                2   =>  "Alerte",
                4   =>  "Error d'analyse",
                8   =>  "Note",
                16  =>  "Core Error",
                32  =>  "Core Warning",
                64  =>  "Compile Error",
                128 =>  "Compile Warning",
                256 =>  "Erreur sp&eacute;cifique",
                512 =>  "Alerte sp&eacute;cifique",
                1024=>  "Note sp&eacute;cifique"
                );
    // Les niveaux qui seront enregistr&eacute;s
    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);

    $err = "<errorentry>\n";
    $err .= "\t<datetime>".$dt."</datetime>\n";
    $err .= "\t<errornum>".$errno."</errornum>\n";
    $err .= "\t<errortype>".$errortype[$errno]."</errortype>\n";
    $err .= "\t<errormsg>".$errmsg."</errormsg>\n";
    $err .= "\t<scriptname>".$filename."</scriptname>\n";
    $err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n";

    if (in_array($errno, $user_errors))
        $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
    $err .= "</errorentry>\n\n";

    // test
    // echo $err;

    // sauvegarde de l'erreur, et mail si c'est critique
    error_log($err, 3, "/usr/local/php4/error.log");
    if ($errno == E_USER_ERROR)
        mail("phpdev@example.com","Critical User Error",$err);
}

function distance ($vect1, $vect2) {
    if (!is_array($vect1) || !is_array($vect2)) {
        trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
        return NULL;
    }

    if (count($vect1) != count($vect2)) {
        trigger_error("Vectors need to be of the same size", E_USER_ERROR);
        return NULL;
    }

    for ($i=0; $i<count($vect1); $i++) {
        $c1 = $vect1[$i]; $c2 = $vect2[$i];
        $d = 0.0;
        if (!is_numeric($c1)) {
            trigger_error("Coordinate $i in vector 1 is not a number, using zero",
                            E_USER_WARNING);
            $c1 = 0.0;
        }
        if (!is_numeric($c2)) {
            trigger_error("Coordinate $i in vector 2 is not a number, using zero",
                            E_USER_WARNING);
            $c2 = 0.0;
        }
        $d += $c2*$c2 - $c1*$c1;
    }
    return sqrt($d);
}

$old_error_handler = set_error_handler("userErrorHandler");

// constante non d&eacute;finie, qui g&eacute;n&egrave;re une alerte
$t = I_AM_NOT_DEFINED;

// d&eacute;finition de quelques vecteurs
$a = array(2,3,"foo");
$b = array(5.5, 4.3, -1.6);
$c = array (1,-3);

// g&eacute;n&egrave;re une erreur utilisateur
$t1 = distance($c,$b)."\n";

// g&eacute;n&egrave;re une erreur utilisateur
$t2 = distance($b,"i am not an array")."\n";

// G&eacute;n&egrave;re une alerte
$t3 = distance($a,$b)."\n";

?>

Voir aussi

Voir aussi syslog().

Table des matières
debug_backtrace -- Génère le contexte de débogage
debug_print_backtrace -- Affiche une backtrace
error_log -- Stocke un message d'erreur
error_reporting -- Fixe le niveau de rapport d'erreurs PHP
restore_error_handler -- Réactive l'ancienne fonction de gestion des erreurs
set_error_handler -- Choisi une fonction utilisateur comme gestionnaire d'erreurs
trigger_error -- Déclenche une erreur utilisateur
user_error -- Alias de trigger_error()

Précédent | Sommaire | Suivant
dotnet_load | Niveau supérieur | debug_backtrace


debug_backtrace

(PHP 4 >= 4.3.0)

debug_backtrace -- Génère le contexte de débogage

Description

array debug_backtrace ( void )

debug_backtrace() génère un contexte de débogage et retourne cette information sous forme de tableau associatif (array). Les éléments de ce tableau sont les suivants :

Tableau 1. Eléments du tableau de debug_backtrace()

Nam | Type | Description
function | string | Le nom de la fonction courante. Voyez aussi __FUNCTION__.
line | integer | Le numéro courant de ligne. Voyez aussi __LINE__.
file | string | Le nom du fichier courant. Voyez aussi __FILE__.
class | string | Le nom de la classe courante class. Voyez aussi __CLASS__
type | string | Le type de classe courante.
args | array | Si à l'intérieur d'une fonction, la liste des arguments. Si dans un fichier inclus, la liste des fichiers inclus.

Voici un exemple simple d'utilisation.

Exemple 1. Exemple avec debug_backtrace()

// premier fichier : a.php
<?php

function a_test($str) {

    print "\nBonjour : $str";

    var_dump(debug_backtrace());
}

a_test('ami');
?>

// second fichier : b.php
<?php
include_once '/tmp/a.php';
?>

/* R&eacute;sultats lors de l'ex&eacute;cution de /tmp/b.php

Bonjour : ami
array(2) {
  [0]=>
  array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(3) "ami"
    }
  }
  [1]=>
  array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}
*/

Voir aussi trigger_error() et debug_print_backtrace().

Précédent | Sommaire | Suivant
Gestion des erreurs | Niveau supérieur | debug_print_backtrace


debug_print_backtrace

(PHP 5 CVS only)

debug_print_backtrace -- Affiche une backtrace

Description

void debug_print_backtrace ( void )

debug_print_backtrace() affiche la backtrace de PHP.

Voir aussi debug_backtrace().

Précédent | Sommaire | Suivant
debug_backtrace | Niveau supérieur | error_log


error_log

(PHP 3, PHP 4 )

error_log -- Stocke un message d'erreur

Description

int error_log ( string message [, int message_type [, string destination [, string extra_headers]]])

error_log() envoie un message d'erreur à l'historique du serveur web, à un port TCP ou un fichier. message est le message d'erreur qui doit être enregistré. message_type indique où le message doit être envoyé :

Tableau 1. Types de error_log()

0 | message est envoyé à l'historique PHP, qui est basé sur l'historique système ou un fichier, en fonction de la configuration de error_log.
1 | message est envoyé par email à l'adresse destination. C'est le seul type qui utilise le quatrième paramètre extra_headers. Ce message utilise la même fonction interne que mail().
2 | message est envoyé par la connexion de debuggage PHP. Cette option n'est disponible que si l'option remote_debugging a été désactivée. Dans ce cas, le paramètre destination spécifie l'hôte ou l'adresse IP, et optionnellement le numéro de port, de la socket qui recevra les informations de débuggage.
3 | message est ajouté au fichier destination.

Avertissement

Le débuggage à distance via TCP/IP est une fonctionnalité PHP 3 qui n'est pas disponible en PHP 4.

Exemple 1. Exemples avec error_log()

<?php
// Envoi une notification par l'historique du serveur, si la connexion &agrave; la base
// de donn&eacute;es est impossible.
if (!Ora_Logon ($username, $password)) {
    error_log ("Base Oracle indisponible!", 0);
}
// Indiquer &agrave; l'administrateur, par email, qu'il n'y a plus de FOO
if (!($foo = allocate_new_foo())) {
    error_log ("Aya!, Il ne reste plus de FOO disponibles!", 1,
               "operateur@mondomaine.com");
}
// D'autres mani&egrave;res d'appeler error_log():
error_log ("Grosse bourde!", 2, "127.0.0.1:7000");
error_log ("Grosse bourde!", 2, "loghost");
error_log ("Grosse bourde!", 3, "/var/tmp/my-errors.log");
?>

Précédent | Sommaire | Suivant
debug_print_backtrace | Niveau supérieur | error_reporting


error_reporting

(PHP 3, PHP 4 )

error_reporting -- Fixe le niveau de rapport d'erreurs PHP

Description

int error_reporting ( [int level])

error_reporting() fixe le niveau de rapport d'erreur PHP et retourne l'ancienne valeur. Le niveau d'erreur peut être un champ de bits, ou une constante. L'utilisation des constantes est vivement recommandée, pour assurer une compatibilité maximale avec les futures versions. Au fur et à mesure que de nouveaux niveaux d'erreurs sont créés, l'intervalle de validité des niveaux évolue, et les anciennes valeurs n'ont plus les mêmes significations.

Exemple 1. Exemple de modification de niveau d'erreur

<?php
  error_reporting (55);
// En PHP 3, &eacute;quivalent &agrave; E_ALL ^ E_NOTICE
// ...en PHP 4, '55' signifie (E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING)

error_reporting (2039);
// PHP 4 &eacute;quivalent &agrave; E_ALL ^ E_NOTICE

error_reporting (E_ALL ^ E_NOTICE);
// La m&ecirc;me signification en PHP 3 et 4
Suivez les liens de chaque valeur interne pour connaître leur signification :

Tableau 1. Constantes avec error_reporting()

constante | valeur
1 | E_ERROR
2 | E_WARNING
4 | E_PARSE
8 | E_NOTICE
16 | E_CORE_ERROR
32 | E_CORE_WARNING
64 | E_COMPILE_ERROR
128 | E_COMPILE_WARNING
256 | E_USER_ERROR
512 | E_USER_WARNING
1024 | E_USER_NOTICE
2048 | E_STRICT
4096 | E_ALL

Avertissement

A partir de PHP 5.0.0, la constante E_STRICT avec comme valeur 2048 est introduite. La valeur de E_ALL est donc passé à 4096.

Voir aussi la directive display_errors et ini_set().

Précédent | Sommaire | Suivant
error_log | Niveau supérieur | restore_error_handler


restore_error_handler

(PHP 4 >= 4.0.1)

restore_error_handler -- Réactive l'ancienne fonction de gestion des erreurs

Description

void restore_error_handler ( void )

Utilisée après avoir modifié la fonction de gestion des erreurs, grâce à set_error_handler(), restore_error_handler() permet de réutiliser l'ancienne version de gestion des erreurs (qui peut être la fonction PHP par défaut, ou une autre fonction utilisateur).

Voir aussi
error_reporting(),
set_error_handler() et
trigger_error().

Précédent | Sommaire | Suivant
error_reporting | Niveau supérieur | set_error_handler


set_error_handler

(PHP 4 >= 4.0.1)

set_error_handler -- Choisi une fonction utilisateur comme gestionnaire d'erreurs

Description

string set_error_handler ( callback error_handler)

set_error_handler() choisit la fonction utilisateur error_handler pour gérer les erreurs dans un script. Retourne un pointeur sur l'ancienne fonction de gestion des erreurs (si il y en avait une), ou FALSE, en cas d'erreur. set_error_handler() sert à définir votre propre gestionnaire d'erreurs, qui prendra en charge leur traitement durant l'exécution d'un script. Cela peut être utile lorsque vous devez repérer des erreurs critiques lors d'un nettoyage de bases, ou bien si vous souhaitez générer une erreur dans certaines conditions (avec trigger_error()).

La fonction utilisateur doit accepter deux arguments : le code de l'erreur, et une chaîne décrivant l'erreur. L'exemple ci dessous montre le traitement d'exceptions en déclenchant des erreurs, et en les gérant avec une fonction utilisateur.

Note : Au lieu d'un nom de fonction, vous pouvez utiliser un tableau contenant deux éléments, une référence sur un objet et un nom de méthode. Cette fonctionnalité a été ajoutée en PHP 4.3.0.

Note : Les types d'erreur suivants ne peuvent pas être gérés avec cette fonction : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR et E_COMPILE_WARNING.

L'exemple ci-dessous illustre l'interception d'erreurs internes avec génération d'erreur, et exploitation dans une fonction utilisateur :

Exemple 1. Traitement des erreurs avec set_error_handler() et trigger_error()

<?php

// red&eacute;fini les constantes utilisateur (PHP 4 Uniquement)
define ("FATAL",E_USER_ERROR);
define ("ERROR",E_USER_WARNING);
define ("WARNING",E_USER_NOTICE);

// configure le niveau de rapport d'erreur pour ce script
error_reporting (FATAL | ERROR | WARNING);

// gestionnaire d'erreurs
function myErrorHandler ($errno, $errstr, $errfile, $errline) {
  switch ($errno) {
  case FATAL:
    echo "<b>FATAL</b> [$errno] $errstr<br>\n";
    echo "  Fatal error in line ".$errline." of file ".$errfile;
    echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";
    echo "Aborting...<br>\n";
    exit(1);
    break;
  case ERROR:
    echo "<b>ERROR</b> [$errno] $errstr<br>\n";
    break;
  case WARNING:
    echo "<b>WARNING</b> [$errno] $errstr<br>\n";
    break;
    default:
    echo "Unkown error type: [$errno] $errstr<br>\n";
    break;
  }
}

// fonction pour tester la gestion d'erreur
function scale_by_log ($vect, $scale) {
  if ( !is_numeric($scale) || $scale <= 0 )
    trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale",
      FATAL);
  if (!is_array($vect)) {
    trigger_error("Incorrect input vector, array of values expected", ERROR);
    return null;
  }
  for ($i=0; $i<count($vect); $i++) {
    if (!is_numeric($vect[$i]))
      trigger_error("Value at position $i is not a number, using 0 (zero)",
        WARNING);
    $temp[$i] = log($scale) * $vect[$i];
  }
  return $temp;
}

// Configuration du gestionnaire d'erreurs
$old_error_handler = set_error_handler("myErrorHandler");

// g&eacute;n&eacute;ration de quelques erreurs. Commen&ccedil;ons par cr&eacute;er un tableau
echo "vecteur a \n";
$a = array(2,3,"foo",5.5,43.3,21.11);
print_r($a);

// g&eacute;n&eacute;rons maintenant un autre tableau, avec des alertes
echo "----\nvecteur b - une alerte (b = log(PI) * a)\n";
$b = scale_by_log($a, M_PI);
print_r($b);

// ceci est un probl&egrave;me, nous avons utilis&eacute; une cha&icirc;ne au lieu d'un tableau
echo "----\nvecteur c - une erreur\n";
$c = scale_by_log("not array",2.3);
var_dump($c);

// Ceci est une erreur critique : le logarithme de z&eacute;ro ou d'un nombre n&eacute;gatif est ind&eacute;fini
echo "----\nvecteur d - erreur fatale\n";
$d = scale_by_log($a, -2.5);

?>
L'exécution du script devrait donner ceci :

Exemple 2. Résultat de set_error_handler() et trigger_error()

vecteur a
Array
(
    [0] => 2
    [1] => 3
    [2] => foo
    [3] => 5.5
    [4] => 43.3
    [5] => 21.11
)
----
vecteur b - une alerte (b = log(PI) * a)
<b>WARNING</b> [1024] Value at position 2 is not a number, using 0 (zero)<br>
Array
(
    [0] => 2.2894597716988
    [1] => 3.4341896575482
    [2] => 0
    [3] => 6.2960143721717
    [4] => 49.566804057279
    [5] => 24.165247890281
)
----
vecteur c - une erreur
<b>ERROR</b> [512] Incorrect input vector, array of values expected<br>
NULL
----
vecteur d - erreur fatale
<b>FATAL</b> [256] log(x) for x <= 0 is undefined, you used: scale = -2.5<br>
  Fatal error in line 37 of file /Users/imac/-, PHP 5.0.0-dev (Darwin)<br>
Aborting...<br>

Il faut se rappeler que la fonction standard de traitement des erreurs de PHP est alors complètement ignorée. error_reporting() n'aura plus d'effet, et votre fonction de gestion des erreurs sera toujours appelée. Vous pourrez toujours lire la valeur de l'erreur courante de error_reporting() et faire réagir la fonction de gestion des erreurs en fonction. Cette remarque est notamment valable si la commande a été préfixée par @ (0 sera retourné).

Notez aussi qu'il est alors confié à cette fonction de terminer le script (die()) si nécessaire. Si la fonction de gestion des erreurs se termine normalement, l'exécution du script se poursuivra avec l'exécution de la prochaine commande.

Note : Si une erreur survient avant que le script ne soit exécuté (par exemple un téléchargement de fichier), le gestionnaire d'erreurs personnalisés ne pourra pas être appelé, car il n'est pas encore enregistré.

Voir aussi error_reporting(), restore_error_handler(), trigger_error() et les constantes de niveau d'erreurs.

Précédent | Sommaire | Suivant
restore_error_handler | Niveau supérieur | trigger_error


trigger_error

(PHP 4 >= 4.0.1)

trigger_error -- Déclenche une erreur utilisateur

Description

void trigger_error ( string error_msg [, int error_type])

trigger_error() est utilisé pour déclencher une erreur utilisateur. Elle peut aussi être utilisée en conjonction avec un gestionnaire d'erreur interne, ou un gestionnaire d'erreurs utilisateur qui a été choisi comme gestionnaire d'erreur avec set_error_handler().

trigger_error() est pratique lorsque vous devez générer une réponse particulière lors de l'exécution. Par exemple :

Exemple 1. Exemple avec trigger_error()

<?php
if (assert ($divisor == 0))
   trigger_error ("Impossible de diviser par z&eacute;ro", E_USER_ERROR);
?>

Note : Voyez set_error_handler() pour une illustration.

Note : error_msg est limité à 1024 caractères en longueur. Tous les caractères supplémentaires seront ignorés.

Voir aussi error_reporting(), set_error_handler(), restore_error_handler() et les constantes de niveau d'erreurs.

Précédent | Sommaire | Suivant
set_error_handler | Niveau supérieur | user_error


user_error

user_error -- Alias de trigger_error()

Description

user_error() est un alias de la fonction trigger_error().

Précédent | Sommaire | Suivant
trigger_error | Niveau supérieur | Fonctions de monitorage d'altération de fichiers


Fonctions de monitorage d'altération de fichiers

Manuel PHP
Précédent Suivant

XXVII. Fonctions de monitorage d'altération de fichiers

Introduction

FAM monitore les fichiers et les dossiers, notifiant les applications intéressées des changements.

Un script PHP peut spécifier une liste de fichiers à FAM pour les surveiller en utilisant les fonctions fournies par cette extension.

Le processus FAM est démarré lorsque la première connexion d'une application est ouverte. Il se termine après que toutes les connexions aient été fermées.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Cette extension requière ... version ... disponible sur ...

Installation

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Resources FAM

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Tableau 1. Constantes FAM

Constante | Signification
FAMChanged (integer) | Le status de
FAMDeleted (integer) |
FAMStartExecuting (integer) |
FAMStopExecuting (integer) |
FAMCreated (integer) |
FAMMoved (integer) |
FAMAcknowledge (integer) |
FAMExists (integer) |
FAMEndExist (integer) |

Table des matières
fam_cancel_monitor -- Termine le monitoring
fam_close -- Ferme la connexion FAM
fam_monitor_collection -- Monitore les changements d'une collection de fichiers dans un dossier
fam_monitor_directory -- Monitore un dossier pour les changements
fam_monitor_file -- Monitore un fichier régulier pour les changements
fam_next_event -- ...
fam_open -- Ouvre une connexion vers le démon FAM
fam_pending -- Vérifie si des événements FAM sont disponibles
fam_resume_monitor -- Reprend un monitoring suspendu
fam_suspend_monitor -- Suspend temporairement le monitoring

Précédent | Sommaire | Suivant
user_error | Niveau supérieur | fam_cancel_monitor


fam_cancel_monitor

(PHP 5 CVS only)

fam_cancel_monitor -- Termine le monitoring

Description

bool fam_cancel_monitor ( resource fam, resource fam_monitor)

fam_cancel_monitor() termine le monitoring d'une resource créée précédemment en utilisant une fonction FAM.

Voir aussi
fam_monitor_file(),
fam_monitor_directory(),
fam_monitor_collection() et
fam_suspend_monitor()

Précédent | Sommaire | Suivant
Fonctions de monitorage d'altération de fichiers | Niveau supérieur | fam_close


fam_close

(PHP 5 CVS only)

fam_close -- Ferme la connexion FAM

Description

void fam_close ( resource fam)

fam_close() ferme une connexion au service FAM, précédemment ouverte en utilisant fam_open().

Précédent | Sommaire | Suivant
fam_cancel_monitor | Niveau supérieur | fam_monitor_collection


fam_monitor_collection

(PHP 5 CVS only)

fam_monitor_collection -- Monitore les changements d'une collection de fichiers dans un dossier

Description

resource fam_monitor_collection ( resource fam, string dirname, int depth, string mask)

fam_monitor_file() monitore une collection de fichiers dans le dossier dirname. Les fichiers à surveiller sont indiqués par le chemin vers le dossier dirname, la profondeur maximale depth à partir de ce dossier et une pattern shell pour filtrer les fichiers à surveiller.

Voir aussi
fam_monitor_file(),
fam_monitor_directory(),
fam_cancel_monitor(),
fam_suspend_monitor() et
fam_resume_monitor().

Précédent | Sommaire | Suivant
fam_close | Niveau supérieur | fam_monitor_directory


fam_monitor_directory

(PHP 5 CVS only)

fam_monitor_directory -- Monitore un dossier pour les changements

Description

resource fam_monitor_directory ( resource fam, string dirname)

fam_monitor_file() monitore un dossier dirname et tous ses fichiers. Un événement FAM sera généré à chaque fois que le status du dossier (i.e. le résultat de la fonction stat() sur ce dossier) ou de son contenu (ie. le résultat de readdir()) changera.

Voir aussi
fam_monitor_file(),
fam_monitor_collection(),
fam_cancel_monitor(),
fam_suspend_monitor() et
fam_resume_monitor().

Précédent | Sommaire | Suivant
fam_monitor_collection | Niveau supérieur | fam_monitor_file


fam_monitor_file

(PHP 5 CVS only)

fam_monitor_file -- Monitore un fichier régulier pour les changements

Description

resource fam_monitor_file ( resource fam, string filename)

fam_monitor_file() met en place le monitoring pour un fichier. Un événement FAM sera généré à chaque fois que le status du fichier (i.e. le résultat de la fonction stat() sur ce fichier) changera.

Voir aussi
fam_monitor_directory(),
fam_monitor_collection(),
fam_cancel_monitor(),
fam_suspend_monitor() et
fam_resume_monitor().

Précédent | Sommaire | Suivant
fam_monitor_directory | Niveau supérieur | fam_next_event


fam_next_event

(PHP 5 CVS only)

fam_next_event -- ...

Description

array fam_next_event ( resource fam)

fam_next_event() retourne l'événement FAM suivant dans la file d'attente. Cette fonction bloquera tant qu'un événement sera disponible, ce qui peut être vérifié en appelant fam_pending().

fam_ext_event() retournera un tableau contenant un code événement FAM dans l'entrée 'code', le chemin vers le fichier ciblé dans l'entrée 'filename' et optionellement un nom d'hôte dans l'entrée 'hostname'.

Les codes événements possibles sont détaillés dans la partie introduction de cette section.

Voir aussi fam_pending().

Précédent | Sommaire | Suivant
fam_monitor_file | Niveau supérieur | fam_open


fam_open

(PHP 5 CVS only)

fam_open -- Ouvre une connexion vers le démon FAM

Description

resource fam_open ( [string appname])

fam_open() ouvre une connexion vers le démon du service FAM. Le paramètre optionnel appname est une chaîne de caractères identifiant l'application pour les journaux de loggs.

Voir aussi fam_close().

Précédent | Sommaire | Suivant
fam_next_event | Niveau supérieur | fam_pending


fam_pending

(PHP 5 CVS only)

fam_pending -- Vérifie si des événements FAM sont disponibles

Description

int fam_pending ( resource fam)

fam_pending() retourne TRUE si des événements sont disponibles pour être récupérés avec fam_next_event().

Voir aussi fam_next_event().

Précédent | Sommaire | Suivant
fam_open | Niveau supérieur | fam_resume_monitor


fam_resume_monitor

(PHP 5 CVS only)

fam_resume_monitor -- Reprend un monitoring suspendu

Description

bool fam_resume_monitor ( resource fam, resource fam_monitor)

fam_resume_monitor() reprend le monitoring d'une ressource précédemment suspendu avec fam_suspend_monitor().

Voir aussi fam_suspend_monitor().

Précédent | Sommaire | Suivant
fam_pending | Niveau supérieur | fam_suspend_monitor


fam_suspend_monitor

(PHP 5 CVS only)

fam_suspend_monitor -- Suspend temporairement le monitoring

Description

bool fam_suspend_monitor ( resource fam, resource fam_monitor)

fam_suspend_monitor() suspend temporairement le monitoring d'une ressource précédement ouverte avec une fonction FAM. Le monitoring peut être repris par la suite à l'aide de fam_resume_monitor() sans avoir à en recréer un nouveau.

Voir aussi fam_resume_monitor() et fam_cancel_monitor().

Précédent | Sommaire | Suivant
fam_resume_monitor | Niveau supérieur | FrontBase


FrontBase

Manuel PHP
Précédent Suivant

XXVIII. FrontBase

Introduction

Ces fonctions vous permettent d'accéder aux serveurs SQL FrontBase. Plus de détails sur le serveur FrontBase sont disponibles sur le site de http://www.frontbase.com/.

La documentation complète de FrontBase est disponible à http://www.frontbase.com/cgi-bin/WebObjects/FrontBase.woa/wa/productsPage?currentPage=Documentation.

Frontbase est supporté depuis PHP 4.0.6.

Pré-requis

Vous devez installer un serveur de bases de données FrontBase ou, tout au moins, les librairies clientes fbsql, pour accéder à ces fonctions. Vous pouvez accéder au site de FrontBase à l'adresse http://www.frontbase.com/.

Installation

Pour pouvoir les utiliser, vous devez compiler PHP avec le support fbsql en utilisant l'option --with-fbsql. Si vous utilisez cette option sans spécifier le chemin jusqu'à l'installation fbsql, PHP recherchera les librairies du client fbsql dans les dossiers habituels, sur votre système. Les utilisateurs qui ont installé FrontBase dans un dossier non standard doivent spécifier le chemin comme ceci : --with-fbsql=/path/to/fbsql. Cela va indiquer à PHP le bon emplacement des librairies de FrontBase, et éviter les conflits.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM
fbsql.autocommit | "1" | PHP_INI_SYSTEM
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM
fbsql.max_links | "128" | PHP_INI_SYSTEM
fbsql.max_connections | "128" | PHP_INI_SYSTEM
fbsql.max_results | "128" | PHP_INI_SYSTEM
fbsql.batchSize | "1000" | PHP_INI_SYSTEM
fbsql.default_host | NULL | PHP_INI_SYSTEM
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM
fbsql.default_password | "" | PHP_INI_SYSTEM
fbsql.default_database | "" | PHP_INI_SYSTEM
fbsql.default_database_password | "" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

FBSQL_ASSOC (entier)

FBSQL_NUM (entier)

FBSQL_BOTH (entier)

FBSQL_LOCK_DEFERRED (entier)

FBSQL_LOCK_OPTIMISTIC (entier)

FBSQL_LOCK_PESSIMISTIC (entier)

FBSQL_ISO_READ_UNCOMMITTED (entier)

FBSQL_ISO_READ_COMMITTED (entier)

FBSQL_ISO_REPEATABLE_READ (entier)

FBSQL_ISO_SERIALIZABLE (entier)

FBSQL_ISO_VERSIONED (entier)

FBSQL_UNKNOWN (entier)

FBSQL_STOPPED (entier)

FBSQL_STARTING (entier)

FBSQL_RUNNING (entier)

FBSQL_STOPPING (entier)

FBSQL_NOEXEC (entier)

FBSQL_LOB_DIRECT (entier)

FBSQL_LOB_HANDLE (entier)

Table des matières
fbsql_affected_rows -- Lit le nombre de ligne affectées par la dernière requête
fbsql_autocommit -- Active ou désactive la validation automatique
fbsql_change_user -- Change le nom d'utilisateur de la session active
fbsql_close -- Ferme la connexion FrontBase
fbsql_commit -- Valide une transaction
fbsql_connect -- Ouvre une connexion à un serveur FrontBase
fbsql_create_blob -- Crée un BLOB
fbsql_create_clob -- Crée un CLOB
fbsql_create_db -- Crée une base de données
fbsql_data_seek -- Déplace le pointeur interne de résultat FBSQL
fbsql_database_password -- Modifie/lit le mot de passe dans une base FBSQL
fbsql_database -- Lit ou définit le nom de la base de données utilisée avec une connexion
fbsql_db_query -- Envoie une requête à la base FrontBase
fbsql_db_status -- Lit le statut courant d'une base de données
fbsql_drop_db -- Supprime une base de données FrontBase
fbsql_errno -- Retourne le code d'erreur FrontBase
fbsql_error -- Retourne le message d'erreur FrontBase
fbsql_fetch_array -- Lit toute une ligne de résultat dans un tableau.
fbsql_fetch_assoc -- Lit toute une ligne de résultat dans un tableau associatif
fbsql_fetch_field -- Lit des informations sur une colonne dans un résultat, et retourne un objet
fbsql_fetch_lengths -- Lit la taille de chaque colonne d'un résultat
fbsql_fetch_object -- Lit une ligne de résultat sous forme d'objet
fbsql_fetch_row -- Lit une ligne de résultat sous forme de tableau numérique
fbsql_field_flags -- Lit les options associé à une colonne de résultat
fbsql_field_len -- Retourne la taille d'un champ
fbsql_field_name -- Lit le nom d'un champ
fbsql_field_seek -- Déplace le pointeur de résultat
fbsql_field_table -- Lit le nom de la table d'origine d'un champ
fbsql_field_type -- Lit le type d'une colonne
fbsql_free_result -- Libère le résultat de la mémoire
fbsql_get_autostart_info -- Pas de documentation
fbsql_hostname -- Lit ou définit le nom de l'hôte à utiliser avec une connexion
fbsql_insert_id -- Lit le dernier identifiant généré par une requête INSERT
fbsql_list_dbs -- Liste les bases de données FBSQL
fbsql_list_fields -- Liste les champs d'un résultat FrontBase
fbsql_list_tables -- Liste les tables dans une base de données FrontBase
fbsql_next_result -- Déplace le pointeur interne vers le résultat suivant
fbsql_num_fields -- Lit le nombre de champs dans un résultat
fbsql_num_rows -- Lit le nombre de lignes dans un résultat
fbsql_password -- Lit ou définit le mot de passe à utiliser avec une connexion
fbsql_pconnect -- Ouvre une connexion persistante à un serveur FrontBase
fbsql_query -- Exécute une requête sur un serveur FrontBase
fbsql_read_blob -- Lit un BLOB dans une base de données
fbsql_read_clob -- Lit un CLOB dans une base de données
fbsql_result -- Lit des données dans un résultat
fbsql_rollback -- Annule une transaction FBSQL
fbsql_select_db -- Sélectionne une base de données FrontBase
fbsql_set_lob_mode -- Modifie le mode de lecture des LOB
fbsql_set_transaction -- Configure le verrouillage et l'isolation de transactions
fbsql_start_db -- Démarre une base de données FBSQL
fbsql_stop_db -- Stoppe une base de données FBSQL
fbsql_tablename -- Lit le nom de la table d'un champ
fbsql_username -- Lit ou définit le nom de login à utiliser avec une connexion
fbsql_warnings -- Active ou désactive les alertes FrontBase

Précédent | Sommaire | Suivant
fam_suspend_monitor | Niveau supérieur | fbsql_affected_rows


fbsql_affected_rows

(PHP 4 >= 4.0.6)

fbsql_affected_rows -- Lit le nombre de ligne affectées par la dernière requête

Description

int fbsql_affected_rows ( [resource link_identifier])

fbsql_affected_rows() retourne le nombre de lignes affectées par la dernière requête INSERT, UPDATE ou DELETE, effectuée avec la connexion représentée par link_identifier. Si ce dernier n'est pas spécifié, c'est la dernière connexion ouverte par fbsql_connect() qui sera utilisée.

Note : Si vous utilisez les transactions, vous devez appeler fbsql_affected_rows() après votre requête INSERT, UPDATE ou DELETE, et non après la validation.

Si la dernière requête DELETE ne contenait pas de clause WHERE, toutes les lignes seront effacées, mais fbsql_affected_rows() retournera 0.

Note : Lors d'une requête UPDATE, FrontBase ne modifie pas les lignes dont les anciennes valeurs sont égales aux nouvelles. Cela fait que fbsql_affected_rows() ne retournera pas le nombre de ligne traitées, mais le nombre de lignes affectées (modifiées) par la requête.

Si la dernière requête échoue, fbsql_affected_rows() retourne -1.

Voir aussi fbsql_num_rows().

Précédent | Sommaire | Suivant
FrontBase | Niveau supérieur | fbsql_autocommit


fbsql_autocommit

(PHP 4 >= 4.0.6)

fbsql_autocommit -- Active ou désactive la validation automatique

Description

bool fbsql_autocommit ( resource link_identifier [, bool onoff])

fbsql_autocommit() retourne l'état courant de la validation automatique, pour la connexion link_identifier. Si le paramètre onoff est fourni, et vaut TRUE, FBSQL va se mettre en mode d'auto-validation, et les requêtes seront validées automatiquement si aucune erreur n'est trouvée. Si le paramètre onoff est fourni, et vaut FALSE, FBSQL va se mettre en mode de validation manuelle, et les requêtes seront validées par l'appel de la fonction fbsql_commit() ou annulées par fbsql_rollback().

Voir aussi fbsql_commit() et fbsql_rollback()

Précédent | Sommaire | Suivant
fbsql_affected_rows | Niveau supérieur | fbsql_change_user


fbsql_change_user

(no version information, might be only in CVS)

fbsql_change_user -- Change le nom d'utilisateur de la session active

Description

resource fbsql_change_user ( string user, string password [, string database [, resource link_identifier]])

fbsql_change_user() change le nom de l'utilisateur courant sur la session active courante, ou sur link_identifier. Si une base de données est spécifiée avec le paramètre database, elle deviendra la base par défaut du nouvel utilisateur. Le nouvel utilisateur doit être spécifié par son login (user), et son mot de passe (password). Si l'authentification échoue, la session courante restera ouverte.

Précédent | Sommaire | Suivant
fbsql_autocommit | Niveau supérieur | fbsql_close


fbsql_close

(PHP 4 >= 4.0.6)

fbsql_close -- Ferme la connexion FrontBase

Description

bool fbsql_close ( [resource link_identifier])

fbsql_close() retourne TRUE en cas de succès et FALSE en cas d'erreur.

fbsql_close() ferme la connexion au serveur FrontBase associée à la ressource link_identifier. Si link_identifier est omis, c'est la dernière connexion ouverte qui sera fermée.

Utiliser fbsql_close() n'est pas nécessaire, car les liens non persistants seront automatiquement fermés à la fin du script.

Exemple 1. Exemple avec fbsql_close()

<?php
    $link = fbsql_connect("localhost", "_SYSTEM", "secret")
        or die("Impossible de se connecter");
    print("Connect&eacute;!");
    fbsql_close($link);
?>

Voir aussi fbsql_connect() et fbsql_pconnect().

Précédent | Sommaire | Suivant
fbsql_change_user | Niveau supérieur | fbsql_commit


fbsql_commit

(PHP 4 >= 4.0.6)

fbsql_commit -- Valide une transaction

Description

bool fbsql_commit ( [resource link_identifier])

fbsql_commit() termine la transaction courante en sauvant toutes les insertions, modifications et effacements sur le serveur, puis en relachant tous les verrous qui ont été posés sur les tables. Cette commande n'est nécessaire que si FBSQL est en mode de validation manuelle.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi fbsql_autocommit() et fbsql_rollback()

Précédent | Sommaire | Suivant
fbsql_close | Niveau supérieur | fbsql_connect


fbsql_connect

(PHP 4 >= 4.0.6)

fbsql_connect -- Ouvre une connexion à un serveur FrontBase

Description

resource fbsql_connect ( [string hostname [, string username [, string password]]])

fbsql_connect() retourne une ressource de connexion positive en cas de succès, ou un message d'erreur en cas d'échec.

fbsql_connect() établit une connexion avec
un serveur FrontBase. Les valeur suivantes sont utilisées, en cas
d'omission :
hostname = 'NULL',
username = '_SYSTEM' et
password = "" (pas de mot de passe).

Si un deuxième appel est fait à fbsql_connect() avec les mêmes arguments, une nouvelle connexion ne sera pas générée, mais la connexion déjà ouverte sera reutilisée, et retournée.

La connexion au serveur sera fermée dès la fin du scrpit, à moins qu'elle ne soit explicitement terminée plus tôt, avec la fonction fbsql_close().

Exemple 1. Exemple avec fbsql_connect()

<?php
    $link = fbsql_connect("localhost", "_SYSTEM", "secret")
        or die("Impossible de se connecter");
    print("Connexion effectu&eacute;e");
    fbsql_close($link);
?>

Voir aussi fbsql_pconnect() et fbsql_close().

Précédent | Sommaire | Suivant
fbsql_commit | Niveau supérieur | fbsql_create_blob


fbsql_create_blob

(PHP 4 >= 4.2.0)

fbsql_create_blob -- Crée un BLOB

Description

string fbsql_create_blob ( string blob_data [, resource link_identifier])

fbsql_create_blob() retourne une ressource qui représente le nouveau BLOB.

fbsql_create_blob() crée un blob à partir des données fournies par blob_data. La ressource retournée est nécessaire aux commandes de modification et d'insertion, pour sauver le BLOB dans la base de données.

Exemple 1. Exemple avec fbsql_create_blob()

<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Impossible de se connecter");
    $filename = "blobfile.bin";
    $fp = fopen($filename, "rb");
    $blobdata = fread($fp, filesize($filename));
    fclose($fp);
    $blobHandle = fbsql_create_blob($blobdata, $link);
    $sql = "INSERT INTO BLOB_TABLE (BLOB_COLUMN) VALUES ($blobHandle);";
    $rs = fbsql_query($sql, $link);
?>

Voir aussi
fbsql_create_clob(),
fbsql_read_blob(),
fbsql_read_clob() et
fbsql_set_lob_mode().

Précédent | Sommaire | Suivant
fbsql_connect | Niveau supérieur | fbsql_create_clob


fbsql_create_clob

(PHP 4 >= 4.2.0)

fbsql_create_clob -- Crée un CLOB

Description

string fbsql_create_clob ( string clob_data [, resource link_identifier])

fbsql_create_clob() retourne une ressource qui représente le nouveau CLOB.

fbsql_create_clob() crée un clob à partir des données fournies par clob_data. La ressource retournée est nécessaire aux commandes de modification et d'insertion, pour sauver le CLOB dans la base de données.

Exemple 1. Exemple avec fbsql_create_clob()

<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Impossible de se connecter");
    $filename = "clob_file.txt";
    $fp = fopen($filename, "rb");
    $clobdata = fread($fp, filesize($filename));
    fclose($fp);
    $clobHandle = fbsql_create_clob($clobdata, $link);
    $sql = "INSERT INTO CLOB_TABLE (CLOB_COLUMN) VALUES ($clobHandle);";
    $rs = fbsql_query($sql, $link);
?>

Voir aussi
fbsql_create_blob(),
fbsql_read_blob(),
fbsql_read_clob() et
fbsql_set_lob_mode().

Précédent | Sommaire | Suivant
fbsql_create_blob | Niveau supérieur | fbsql_create_db


fbsql_create_db

(PHP 4 >= 4.0.6)

fbsql_create_db -- Crée une base de données

Description

bool fbsql_create_db ( string database_name [, resource link_identifier])

fbsql_create_db() crée une nouvelle base de données, nommée database_name, sur le serveur repéré par la ressource link_identifier.

Exemple 1. Exemple avec fbsql_create_db()

<?php
    $link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
        or die("Impossible de se connecter");
    if (fbsql_create_db("my_db")) {
        echo "Base de donn&eacute;es cr&eacute;&eacute;e!\n";
    } else {
        printf("Erreur de cr&eacute;ation de la base de donn&eacute;es : %s\n", fbsql_error());
    }
?>

Voir aussi fbsql_drop_db().

Précédent | Sommaire | Suivant
fbsql_create_clob | Niveau supérieur | fbsql_data_seek


fbsql_data_seek

(PHP 4 >= 4.0.6)

fbsql_data_seek -- Déplace le pointeur interne de résultat FBSQL

Description

bool fbsql_data_seek ( resource result_identifier, int row_number)

fbsql_data_seek() déplace le pointeur interne de ligne dans le résultat de requête result_identifier jusqu'à la ligne row_number. Le prochain appel à fbsql_fetch_row() retournera cette ligne.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Les lignes sont numérotées à partir de 0.

Exemple 1. Exemple avec fbsql_data_seek()

<?php
    $link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
        or die ("Impossible de se connecter");
    fbsql_select_db("samp_db")
        or die ("Impossible de s&eacute;lectionner une base");
    $query = "SELECT last_name, first_name FROM friends;";
    $result = fbsql_query($query)
        or die ("La requête est mauvaise");
// Lecture des lignes en ordre inverse
    for ($i = fbsql_num_rows($result) - 1; $i >=0; $i--) {
        if (!fbsql_data_seek($result, $i)) {
            printf ("Impossible d'acc&eacute;der &agrave; la ligne %d\n", $i);
            continue;
        }
        if(!($row = fbsql_fetch_object($result)))
            continue;
        printf ("%s %s<BR>\n", $row->last_name, $row->first_name);
    }
    fbsql_free_result($result);
?>

Précédent | Sommaire | Suivant
fbsql_create_db | Niveau supérieur | fbsql_database_password


fbsql_database_password

(PHP 4 >= 4.0.6)

fbsql_database_password -- Modifie/lit le mot de passe dans une base FBSQL

Description

string fbsql_database_password ( resource link_identifier [, string database_password])

fbsql_database_password() retourne le mot de passe du serveur représenté par link_identifier.

fbsql_database_password() modifie et lit le mot de passe de la base de données courante. Si le second paramètre database_password est fourni, fbsql_database_password() remplacera le mot de passe courant par celui-ci. Si aucun serveur n'est précisé car le paramètre link_identifier n'est pas fourni, la dernière connexion ouverte sera utilisée. Si aucune connexion n'a été ouverte PHP essaiera d'en ouvrir une en appelant la fonction fbsql_connect(), et en utilisant la connexion qui en résultera (si elle réussit).

Cette fonction ne modifie pas le mot de passe d'accès au serveur qui est stocké sur le serveur, et elle ne permet pas non plus d'aller lire ce mot de passe.

Exemple 1. Exemple avec fbsql_create_clob()

<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Impossible de se connecter");
    fbsql_database_password($link, "mot de passe secret");
    fbsql_select_db($database, $link);
?>

Voir aussi
fbsql_select_db(),
fbsql_connect() et
fbsql_pconnect().

Précédent | Sommaire | Suivant
fbsql_data_seek | Niveau supérieur | fbsql_database


fbsql_database

(PHP 4 >= 4.0.6)

fbsql_database -- Lit ou définit le nom de la base de données utilisée avec une connexion

Description

string fbsql_database ( resource link_identifier [, string database])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_database_password | Niveau supérieur | fbsql_db_query


fbsql_db_query

(PHP 4 >= 4.0.6)

fbsql_db_query -- Envoie une requête à la base FrontBase

Description

resource fbsql_db_query ( string database, string query [, resource link_identifier])

fbsql_db_query() retourne une ressource positive représentant un résultat de requête en cas de succès, et FALSE en cas d'erreur.

fbsql_db_query() sélectionne la base database et y exécute la requête query. Si le paramètre optionnel link_identifier est spécifié, fbsql_db_query() travaillera sur cette connexion. S'il est omis, fbsql_db_query() essaiera d'utiliser la dernière connexion ouverte. Si aucune connexion n'a été ouverte, fbsql_db_query() essaiera de se connecter automatiquement en appelant la fonction fbsql_connect(), sans arguments.

Voir aussi fbsql_connect().

Précédent | Sommaire | Suivant
fbsql_database | Niveau supérieur | fbsql_db_status


fbsql_db_status

(PHP 4 >= 4.1.0)

fbsql_db_status -- Lit le statut courant d'une base de données

Description

int fbsql_db_status ( string database_name [, resource link_identifier])

fbsql_db_status() retourne un entier représentant le statut courant.

fbsql_db_status() demande le statut de la base de données nommée database_name. Si le paramètre link_identifier est omis, la connexion par défaut sera utilisée.

La valeur de l'entier peut être l'une des suivantes :

  • FALSE - Le gestion de cet hôte était invalide. Cette erreur survient lorsque PHP se connecte directement à une base de données en utilisant un numéro de port. FBExec peut être disponible sur un serveur, mais aucune connexion n'a été faite.

  • FBSQL_UNKNOWN - Le statut est inconnu.

  • FBSQL_STOPPED - La base de données ne fonctionne pas. Utilisez fbsql_start_db() pour démarrer la base.

  • FBSQL_STARTING - La base de données démarre.

  • FBSQL_RUNNING - La base de données fonctionne, et est disponible pour recevoir des requêtes SQL.

  • FBSQL_STOPPING - La base de données s'arrête.

  • FBSQL_NOEXEC - FBExec ne fonctionne par sur le serveur, et il n'est pas possible d'obtenir le statut de la base de données.

Voir aussi fbsql_start_db() et fbsql_stop_db().

Précédent | Sommaire | Suivant
fbsql_db_query | Niveau supérieur | fbsql_drop_db


fbsql_drop_db

(PHP 4 >= 4.0.6)

fbsql_drop_db -- Supprime une base de données FrontBase

Description

bool fbsql_drop_db ( string database_name [, resource link_identifier])

fbsql_drop_db() essaie de supprimer la base de données database_name, sur la connexion représentée par link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
fbsql_db_status | Niveau supérieur | fbsql_errno


fbsql_errno

(PHP 4 >= 4.0.6)

fbsql_errno -- Retourne le code d'erreur FrontBase

Description

int fbsql_errno ( [resource link_identifier])

fbsql_errno() retourne le code d'erreur de la dernière connexion FrontBase, ou bien 0 (zéro) si aucune erreur n'est survenue.

Les erreurs générées par FrontBase ne sont pas automatiquement affichées comme alertes. Il faut utiliser la fonction fbsql_errno() pour connaître leur code d'erreur. Notez que cette fonction ne retourne que le code d'erreur généré par la dernière fonction FrontBase (hormis fbsql_error() et fbsql_errno()) : si vous voulez repérer les erreurs, faites le dès que les fonctions ont été appelées.

Exemple 1. Exemple avec fbsql_errno()

<?php
  fbsql_connect("marliesle");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
  fbsql_select_db("nonexistentdb");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
  $conn = fbsql_query("SELECT * FROM nonexistenttable;");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
?>

Voir aussi fbsql_error() et fbsql_warnings()

Précédent | Sommaire | Suivant
fbsql_drop_db | Niveau supérieur | fbsql_error


fbsql_error

(PHP 4 >= 4.0.6)

fbsql_error -- Retourne le message d'erreur FrontBase

Description

string fbsql_error ( [resource link_identifier])

fbsql_error() retourne le dernier message d'erreur généré par le serveur FrontBase, ou bien '' (chaîne vide) si aucune erreur n'est survenue.

Les erreurs générées par FrontBase ne sont pas automatiquement affichées comme alertes. Il faut utiliser la fonction fbsql_errno() pour connaître leur code d'erreur. Notez que cette fonction ne retourne que le code d'erreur généré par la dernière fonction FrontBase (hormis fbsql_error() et fbsql_errno()) : si vous voulez repérer les erreurs, faites le dès que les fonctions ont été appelées.

Exemple 1. Exemple avec fbsql_error()

<?php
  fbsql_connect("marliesle");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
  fbsql_select_db("nonexistentdb");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
  $conn = fbsql_query("SELECT * FROM nonexistenttable;");
  echo fbsql_errno().": ".fbsql_error()."<BR>";
?>

Voir aussi fbsql_errno() et fbsql_warnings()

Précédent | Sommaire | Suivant
fbsql_errno | Niveau supérieur | fbsql_fetch_array


fbsql_fetch_array

(PHP 4 >= 4.0.6)

fbsql_fetch_array -- Lit toute une ligne de résultat dans un tableau.

Description

array fbsql_fetch_array ( resource result [, int result_type])

fbsql_fetch_array() retourne un tableau contenant la ligne courante du résultat result, ou FALSE s'il n'y a plus de lignes.

fbsql_fetch_array() est une version améliorée de fbsql_fetch_row(). En plus de stocker les données dans un tableau indexé, elle les stocke aussi sous forme de tableau associatif, dont les clefs sont les noms des colonnes.

Si deux colonnes (ou plus) ont le même nom, la dernière colonne sera utilisée. Pour accéder aux autres colonnes de même nom, vous devez absolument utiliser les indices numériques.

Exemple 1. Exemple avec fbsql_fetch_array()

select t1.f1 as foo t2.f1 as bar from t1, t2

Il est important de noter que fbsql_fetch_array() n'est pas significativement plus lente que fbsql_fetch_row(), tandis qu'elle apporte un confort d'utilisation notable.

Le second argument optionnel result_type de fbsql_fetch_array() est une constante qui peut prendre l'une des valeurs suivantes : FBSQL_ASSOC, FBSQL_NUM et FBSQL_BOTH.

Pour plus de détails, reportez-vous à fbsql_fetch_row() et fbsql_fetch_assoc().

Exemple 2. Exemple avec fbsql_fetch_array()

<?php
  fbsql_connect($host, $user, $password);
  $result = fbsql_db_query("database","select user_id, fullname from table");
  while ($row = fbsql_fetch_array($result)) {
    echo "user_id : ".$row["user_id"]."<BR>\n";
    echo "user_id : ".$row[0]."<BR>\n";
    echo "Nom complet : ".$row["fullname"]."<BR>\n";
    echo "Nom complet : ".$row[1]."<BR>\n";
  }
  fbsql_free_result($result);
?>

Précédent | Sommaire | Suivant
fbsql_error | Niveau supérieur | fbsql_fetch_assoc


fbsql_fetch_assoc

(PHP 4 >= 4.0.6)

fbsql_fetch_assoc -- Lit toute une ligne de résultat dans un tableau associatif

Description

array fbsql_fetch_assoc ( resource result)

fbsql_fetch_assoc() retourne un tableau associatif contenant la ligne courante du résultat result, ou FALSE s'il n'y a plus de lignes.

fbsql_fetch_assoc() est équivalent à fbsql_fetch_array() avec l'option FBSQL_ASSOC. Elle ne retourne qu'un tableau associatif. C'est le comportement initial de fbsql_fetch_array(). Si vous avez aussi besoin des indices numériques, utilisez fbsql_fetch_array().

Si deux colonnes (ou plus) ont le même nom, la dernière colonne sera utilisée. Pour accéder aux autres colonnes de même nom, vous devez absolument utiliser la fonction fbsql_fetch_array().

Il est important de noter que fbsql_fetch_assoc() n'est pas significativement plus lente que fbsql_fetch_row(), tandis qu'elle apporte un confort d'utilisation notable.

Pour plus de détails, reportez-vous à fbsql_fetch_row() et fbsql_fetch_array().

Exemple 1. Exemple avec fbsql_fetch_assoc()

<?php
  fbsql_connect($host, $user, $password);
  $result = fbsql_db_query("database","select * from table;");
  while ($row = fbsql_fetch_assoc($result)) {
    echo $row["user_id"];
    echo $row["fullname"];
  }
  fbsql_free_result($result);
?>

Précédent | Sommaire | Suivant
fbsql_fetch_array | Niveau supérieur | fbsql_fetch_field


fbsql_fetch_field

(PHP 4 >= 4.0.6)

fbsql_fetch_field -- Lit des informations sur une colonne dans un résultat, et retourne un objet

Description

object fbsql_fetch_field ( resource result [, int field_offset])

fbsql_fetch_field() retourne une objet contenant les informations sur un champ, dans le résultat result.

fbsql_fetch_field() sert à lire des informations sur les champs dans le résultat result. Si le second paramètre field_offset n'est pas spécifié, le champ suivant est lu.

Les propriétés de l'objet sont :

  • name - Nom de colonne

  • table - Nom de la table d'origine

  • max_length - Taille maximale de la colonne

  • not_null - 1 si la colonne ne peut être nulle

  • type - Type de la colonne

Exemple 1. Exemple avec fbsql_fetch_field()

<?php
  fbsql_connect($host, $user, $password)
    or die ("Impossible de se connecter");
  $result = fbsql_db_query("database", "select * from table;")
    or die ("La requ&ecirc;te a &eacute;chou&eacute;");
// lire les donn&eacute;es de colonnes
  $i = 0;
  while ($i < fbsql_num_fields($result)) {
    echo "Information de la colonne $i:<br>\n";
    $meta = fbsql_fetch_field($result);
    if (!$meta) {
        echo "Aucune information disponible<br>\n";
    }
    echo "<PRE>
max_length:   $meta->max_length
name:         $meta->name
not_null:     $meta->not_null
table:        $meta->table
type:         $meta->type
</PRE>";
    $i++;
  }
  fbsql_free_result($result);
?>

Voir aussi fbsql_field_seek().

Précédent | Sommaire | Suivant
fbsql_fetch_assoc | Niveau supérieur | fbsql_fetch_lengths


fbsql_fetch_lengths

(PHP 4 >= 4.0.6)

fbsql_fetch_lengths -- Lit la taille de chaque colonne d'un résultat

Description

array fbsql_fetch_lengths ( [resource result])

fbsql_fetch_lengths() retourne un tableau contenant les tailles maximales de chaque champ, dans la dernière ligne lue par fbsql_fetch_row() ou FALSE en cas d'erreur.

fbsql_fetch_lengths() stocke les tailles de chaque ligne de résultat retournée par fbsql_fetch_row(), fbsql_fetch_array() et fbsql_fetch_object() dans un tableau à indices numériques, commençant à 0.

Voir aussi fbsql_fetch_row().

Précédent | Sommaire | Suivant
fbsql_fetch_field | Niveau supérieur | fbsql_fetch_object


fbsql_fetch_object

(PHP 4 >= 4.0.6)

fbsql_fetch_object -- Lit une ligne de résultat sous forme d'objet

Description

object fbsql_fetch_object ( resource result [, int result_type])

fbsql_fetch_object() retourne un objet dont les propriétés représentent les colonnes de la ligne à lire, dans le résultat result, ou FALSE s'il n'y a pas de ligne à lire.

fbsql_fetch_object() est similaire à fbsql_fetch_array(), à la différence qu'elle retourne un objet. Nous ne pouvez alors accéder aux données qu'avec les noms des colonnes, et sous la forme de membres d'objet, et non plus avec leurs index (les nombres ne peuvent représenter un membre d'objet).

En terme de vitesse, cette fonction est identique à fbsql_fetch_array() et presque aussi rapide que fbsql_fetch_row() (la différence n'est pas significative).

Exemple 1. Exemple avec fbsql_fetch_object()

<?php
  fbsql_connect($host, $user, $password);
  $result = fbsql_db_query("database", "select * from table;");
  while ($row = fbsql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
  }
  fbsql_free_result($result);
?>

Voir aussi fbsql_fetch_array() et fbsql_fetch_row().

Précédent | Sommaire | Suivant
fbsql_fetch_lengths | Niveau supérieur | fbsql_fetch_row


fbsql_fetch_row

(PHP 4 >= 4.0.6)

fbsql_fetch_row -- Lit une ligne de résultat sous forme de tableau numérique

Description

array fbsql_fetch_row ( resource result)

fbsql_fetch_row() retourne un tableau représentant la ligne courant dans le résultat result, ou bien FALSE s'il n'y a plus de lignes à lire.

fbsql_fetch_row() lit une ligne de données dans le résultat result, et crée un tableau indexé. Chaque colonne est stockée dans une case du tableau, dans le même ordre que dans le résultat. Les indices commencent à 0.

Le prochain appel à fbsql_fetch_row() va lire la prochaine ligne, ou bien retourner FALSE s'il n'y a plus de lignes à lire.

Voir aussi
fbsql_fetch_array(),
fbsql_fetch_object(),
fbsql_data_seek(),
fbsql_fetch_lengths() et
fbsql_result().

Précédent | Sommaire | Suivant
fbsql_fetch_object | Niveau supérieur | fbsql_field_flags


fbsql_field_flags

(PHP 4 >= 4.0.6)

fbsql_field_flags -- Lit les options associé à une colonne de résultat

Description

string fbsql_field_flags ( resource result, int field_offset)

fbsql_field_flags() retourne les options du champ field_offset, dans le résultat result. Les options sont retournées sous la forme d'un seul mot par option, séparées par des espaces, de façons à faciliter la manipulation avec explode().

Précédent | Sommaire | Suivant
fbsql_fetch_row | Niveau supérieur | fbsql_field_len


fbsql_field_len

(PHP 4 >= 4.0.6)

fbsql_field_len -- Retourne la taille d'un champ

Description

int fbsql_field_len ( resource result, int field_offset)

fbsql_field_len() retourne la taille du champ field_offset dans le résultat result.

Précédent | Sommaire | Suivant
fbsql_field_flags | Niveau supérieur | fbsql_field_name


fbsql_field_name

(PHP 4 >= 4.0.6)

fbsql_field_name -- Lit le nom d'un champ

Description

string fbsql_field_name ( resource result, int field_index)

fbsql_field_name() retourne le nom du champ numéro field_index dans le résultat result. field_index est le résultat de fbsql_query() et field_index est l'index numérique du champ.

Note : field_index commence à 0.

e.g. L'index du troisème champ est 2, et l'index du quatrième champ est 3...

Exemple 1. Exemple avec fbsql_field_name()

<?php
// La table utilisateur est constitu&eacute;e de trois colonnes
//   user_id
//   username
//   password
  $res = fbsql_db_query("users", "select * from users;", $link);
  echo fbsql_field_name($res, 0) . "\n";
  echo fbsql_field_name($res, 2);
?>

L'exemple ci-dessus va afficher :

user_id
password

Précédent | Sommaire | Suivant
fbsql_field_len | Niveau supérieur | fbsql_field_seek


fbsql_field_seek

(PHP 4 >= 4.0.6)

fbsql_field_seek -- Déplace le pointeur de résultat

Description

bool fbsql_field_seek ( resource result, int field_offset)

fbsql_field_seek() place le pointeur de colonne à la colonne field_offset. Si ce paramètre est omis, fbsql_fetch_field() retourne le numéro de la colonne courante.

Voir aussi fbsql_fetch_field().

Précédent | Sommaire | Suivant
fbsql_field_name | Niveau supérieur | fbsql_field_table


fbsql_field_table

(PHP 4 >= 4.0.6)

fbsql_field_table -- Lit le nom de la table d'origine d'un champ

Description

string fbsql_field_table ( resource result, int field_offset)

fbsql_field_table() retourne le nom de la table d'où est issue le champ d'indice field_offset. Les numéros de colonnes commencent à 0.

Précédent | Sommaire | Suivant
fbsql_field_seek | Niveau supérieur | fbsql_field_type


fbsql_field_type

(PHP 4 >= 4.0.6)

fbsql_field_type -- Lit le type d'une colonne

Description

string fbsql_field_type ( resource result, int field_offset)

fbsql_field_type() est similaire à la fonction fbsql_field_name(). Les arguments sont identiques, mais le type du champ est retourné. Il peut valoir "int", "real", "string", "blob" ou d'autres valeurs, comme décrit dans la documentation FrontBase.

Exemple 1. Exemple avec fbsql_field_type()

<?php
  fbsql_connect("localhost:3306");
  fbsql_connect("localhost", "_SYSTEM", "");
  $result = fbsql_query("SELECT * FROM onek;");
  $fields = fbsql_num_fields($result);
  $rows   = fbsql_num_rows($result);
  $i = 0;
  $table = fbsql_field_table($result, $i);
  echo "Votre table '".$table."' a ".$fields." colonnes et ".$rows." lignes <BR>";
  echo "La table dispose des champs suivants <BR>";
  while ($i < $fields) {
    $type  = fbsql_field_type ($result, $i);
    $name  = fbsql_field_name ($result, $i);
    $len   = fbsql_field_len  ($result, $i);
    $flags = fbsql_field_flags($result, $i);
    echo $type." ".$name." ".$len." ".$flags."<BR>";
    $i++;
  }
  fbsql_close();
?>

Précédent | Sommaire | Suivant
fbsql_field_table | Niveau supérieur | fbsql_free_result


fbsql_free_result

(PHP 4 >= 4.0.6)

fbsql_free_result -- Libère le résultat de la mémoire

Description

bool fbsql_free_result ( resource result)

fbsql_free_result() va libérer toute la mémoire utilisée par le résultat associé à la ressource result.

fbsql_free_result() n'a besoin d'être appelé que si vous craignez que votre script ne consomme trop de mémoire, lorsqu'une requête retourne de très grand résultats. Toutes les ressources mémoire utilisées par le script sont de toutes manières libérées à la fin du script.

Précédent | Sommaire | Suivant
fbsql_field_type | Niveau supérieur | fbsql_get_autostart_info


fbsql_get_autostart_info

(PHP 4 >= 4.1.0)

fbsql_get_autostart_info -- Pas de documentation

Description

array fbsql_get_autostart_info ( [resource link_identifier])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_free_result | Niveau supérieur | fbsql_hostname


fbsql_hostname

(PHP 4 >= 4.0.6)

fbsql_hostname -- Lit ou définit le nom de l'hôte à utiliser avec une connexion

Description

string fbsql_hostname ( resource link_identifier [, string host_name])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_get_autostart_info | Niveau supérieur | fbsql_insert_id


fbsql_insert_id

(PHP 4 >= 4.0.6)

fbsql_insert_id -- Lit le dernier identifiant généré par une requête INSERT

Description

int fbsql_insert_id ( [resource link_identifier])

fbsql_insert_id() retourne l'identifiant généré par la colonne de type DEFAULT UNIQUE, lors de la dernière requête INSERT, avec la connexion link_identifier. Si link_identifier est omis, la dernière connexion ouverte est utilisée.

fbsql_insert_id() retournera 0 si la dernière requête n'a pas généré de valeur dans la colonne DEFAULT UNIQUE. Si vous devez sauver cette valeur pour plus tard, n'oubliez pas d'appeler fbsql_insert_id() tout de suite après la requête qui a généré cette valeur.

Note : La valeur de la fonction FrontBase SQL "LAST_INSERT_ID()" retourne toujours la dernière valeur générée par DEFAULT UNIQUE et n'est jamais annulée entre les requêtes.

Précédent | Sommaire | Suivant
fbsql_hostname | Niveau supérieur | fbsql_list_dbs


fbsql_list_dbs

(PHP 4 >= 4.0.6)

fbsql_list_dbs -- Liste les bases de données FBSQL

Description

resource fbsql_list_dbs ( [resource link_identifier])

fbsql_list_dbs() retourne un résultat contenant la liste des bases de données disponibles sur le serveur [link_identifier]. Utilisez la fonction fbsql_tablename() pour passer en revue ce résultat.

Exemple 1. Exemple avec fbsql_list_dbs()

<?php
  $link = fbsql_connect('localhost', 'myname', 'secret');
  $db_list = fbsql_list_dbs($link);
  while ($row = fbsql_fetch_object($db_list)) {
    echo $row->Database . "\n";
  }
?>

L'exemple ci-dessus va afficher ceci :

database1
database2
database3
...

Note : L'exemple ci-dessus peut aussi bien fonctionner avec la fonction fbsql_fetch_row() ou toute autre similaire.

Précédent | Sommaire | Suivant
fbsql_insert_id | Niveau supérieur | fbsql_list_fields


fbsql_list_fields

(PHP 4 >= 4.0.6)

fbsql_list_fields -- Liste les champs d'un résultat FrontBase

Description

resource fbsql_list_fields ( string database_name, string table_name [, resource link_identifier])

fbsql_list_fields() lit les informations à propos de la table table_name, dans la base de données table_name, sur la connexion link_identifier. Un résultat de requête est retourné, et pourra être utilisé avec les fonctions fbsql_field_flags(), fbsql_field_len(), fbsql_field_name() et fbsql_field_type().

Un identifiant de résultat est une ressource PHP, représentée par un entier positif. fbsql_list_fields() retourne -1 en cas d'erreur. Une chaîne décrivant l'erreur sera alors placée dans la variable $phperrmsg. Un message d'erreur sera aussi affiché, à moins que la fonction n'ai été appelée avec l'opérateur de suppression des erreurs @.

Exemple 1. Exemple avec fbsql_list_fields()

<?php
  $link = fbsql_connect('localhost', 'monnom', 'secret');
  $fields = fbsql_list_fields("database1", "table1", $link);
  $columns = fbsql_num_fields($fields);
  for ($i = 0; $i < $columns; $i++) {
    echo fbsql_field_name($fields, $i) . "\n";;
  }
?>

L'exemple ci-dessus va afficher :

field1
field2
field3
...

Précédent | Sommaire | Suivant
fbsql_list_dbs | Niveau supérieur | fbsql_list_tables


fbsql_list_tables

(PHP 4 >= 4.0.6)

fbsql_list_tables -- Liste les tables dans une base de données FrontBase

Description

resource fbsql_list_tables ( string database [, resource link_identifier])

fbsql_list_tables() liste les tables dans la base de données database, et retourne un résultat, tout comme fbsql_db_query(). fbsql_tablename() sert à extraire la liste des tables dans ce résultat.

Précédent | Sommaire | Suivant
fbsql_list_fields | Niveau supérieur | fbsql_next_result


fbsql_next_result

(PHP 4 >= 4.0.6)

fbsql_next_result -- Déplace le pointeur interne vers le résultat suivant

Description

bool fbsql_next_result ( resource result_id)

Lorsque vous envoyez plus d'une commande SQL au serveur, ou que vous exécutez une procédure stockée avec de multiple résultats, cela va conduire le serveur à retourner plusieurs jeux de lignes. fbsql_next_result() va vérifier l'existence de plusieurs résultats disponibles sur le serveur. Si un autre jeu de résultat existe, fbsql_next_result() va détruire le résultat précédent, et préparer la lecture dans les nouvelles lignes.

fbsql_next_result() retourne TRUE si un autre résultat est disponbile, ou FALSE sinon.

Exemple 1. Exemple avec fbsql_next_result()

<?php
  $link = fbsql_connect("localhost", "_SYSTEM", "secret");
  fbsql_select_db("MyDB", $link);
  $SQL = "Select * from table1; select * from table2;";
  $rs = fbsql_query($SQL, $link);
  do {
      while ($row = fbsql_fetch_row($rs)) {}
  } while (fbsql_next_result($rs));
  fbsql_free_result($rs);
  fbsql_close($link);
?>

Précédent | Sommaire | Suivant
fbsql_list_tables | Niveau supérieur | fbsql_num_fields


fbsql_num_fields

(PHP 4 >= 4.0.6)

fbsql_num_fields -- Lit le nombre de champs dans un résultat

Description

int fbsql_num_fields ( resource result)

fbsql_num_fields() retourne le nombre de champs dans le résultat result.

Voir aussi
fbsql_db_query(),
fbsql_query(),
fbsql_fetch_field() et
fbsql_num_rows().

Précédent | Sommaire | Suivant
fbsql_next_result | Niveau supérieur | fbsql_num_rows


fbsql_num_rows

(PHP 4 >= 4.0.6)

fbsql_num_rows -- Lit le nombre de lignes dans un résultat

Description

int fbsql_num_rows ( resource result)

fbsql_num_rows() retourne le nombre de lignes dans le résultat result. Cette fonction n'est valable qu'avec les commandes SELECT. Pour connaître le nombre de lignes dans une requête INSERT, UPDATE ou DELETE, utilisez fbsql_affected_rows().

Exemple 1. Exemple fbsql_num_rows()

<?php
  $link = fbsql_connect("localhost", "utilisateur", "password");
  fbsql_select_db("database", $link);
  $result = fbsql_query("SELECT * FROM table1;", $link);
  $num_rows = fbsql_num_rows($result);
  echo "$num_rows lignes\n";
?>

Voir aussi
fbsql_affected_rows(),
fbsql_connect(),
fbsql_select_db() et
fbsql_query().

Précédent | Sommaire | Suivant
fbsql_num_fields | Niveau supérieur | fbsql_password


fbsql_password

(PHP 4 >= 4.0.6)

fbsql_password -- Lit ou définit le mot de passe à utiliser avec une connexion

Description

string fbsql_password ( resource link_identifier [, string password])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_num_rows | Niveau supérieur | fbsql_pconnect


fbsql_pconnect

(PHP 4 >= 4.0.6)

fbsql_pconnect -- Ouvre une connexion persistante à un serveur FrontBase

Description

resource fbsql_pconnect ( [string hostname [, string username [, string password]]])

fbsql_pconnect() retourne une ressource représentant la connexion au serveur FrontBase en cas de succès, ou bien FALSE en cas d'erreur.

fbsql_pconnect() établit une connexion persistante à un serveur FrontBase. En cas d'omission, les valeurs suivantes sont utilisées par défaut : host ='localhost', username = nom de l'utilisateur qui possède le processus, et password = pas de mot de passe.

Pour choisir le port d'accès au serveur FrontBase, voyez fbsql_select_db().

fbsql_pconnect() se comporte comme fbsql_connect() avec deux différences majeures.

Premièrement, lors de la connexion, fbsql_pconnect() essaie de trouver une connexion permanante déjà ouverte sur cet hôte, avec le même nom d'utilisateur et mot de passe. Si une telle connexion est trouvée, son identifiant est retourné, sans ouvrir de nouvelle connexion.

Deuxièmement, la connexion au serveur fbssl ne sera pas terminée avec la fin du script. Au lieu de cela, le lien sera conservé pour un prochain accès (fbsql_close() ne terminera pas une connexion persistante établie par fbsql_pconnect()).

C'est pourquoi ce type de connexion est dite 'persistante'.

Précédent | Sommaire | Suivant
fbsql_password | Niveau supérieur | fbsql_query


fbsql_query

(PHP 4 >= 4.0.6)

fbsql_query -- Exécute une requête sur un serveur FrontBase

Description

resource fbsql_query ( string query [, resource link_identifier])

fbsql_query() envoie la requête query à la base de données courante, sur le serveur représenté par sa connexion link_identifier. Si link_identifier est omis, la dernière connexion ouverte est utilisée. Si aucune connexion n'a été ouverte, fbsql_query() essaie d'établir une connexion en appelant la fonction fbsql_connect() sans aucun argument.

Note : La requête doit être terminée par un point-virgule!

fbsql_query() retourne une ressource en cas de succès, ou FALSE, en cas d'échec.

La requête suivante est invalide, et fbsql_query() échouera puis retournera FALSE:

Exemple 1. Exemple avec fbsql_query()(1)

<?php
  $result = fbsql_query("SELECT * WHERE 1=1;")
    or die("Requ&ecirc;te invalide");
?>

La requête suivante est invalide si my_col n'est pas une colonne dans la table my_tbl : fbsql_query() échouera puis retournera FALSE :

Exemple 2. Exemple avec fbsql_query()(2)

<?php
  $result = fbsql_query("SELECT my_col FROM my_tbl")
    or die ("Requ&ecirc;te invalide");
?>

fbsql_query() échouera si vous n'avez pas les droits d'accès sur l'une des bases de données utilisée dans la requête.

Lorsque la requête réussit, vous pouvez utilisez fbsql_num_rows() pour savoir combien de lignes ont été retournée par une requête SELECT, ou bien fbsql_affected_rows() pour les autres requêtes (DELETE, INSERT, REPLACE et UPDATE).

Pour les requêtes SELECT, fbsql_query() retourne une ressource de résultat, que vous pouvez passer à fbsql_result(). Lors vous avez fini de lire le résultat, vous pouvez libérer les ressources utilisées en appelant fbsql_free_result(). Cependant, la mémoire sera automatiquement libérée à la fin du script.

Voir aussi
fbsql_affected_rows(),
fbsql_db_query(),
fbsql_free_result(),
fbsql_result(),
fbsql_select_db() et
fbsql_connect().

Précédent | Sommaire | Suivant
fbsql_pconnect | Niveau supérieur | fbsql_read_blob


fbsql_read_blob

(PHP 4 >= 4.2.0)

fbsql_read_blob -- Lit un BLOB dans une base de données

Description

string fbsql_read_blob ( string blob_handle [, resource link_identifier])

fbsql_read_blob() retourne une chaîne de caractères contenant le BLOB blob_handle.

fbsql_read_blob() lit les données du BLOB dans la base de données. Si une sélection contient une colonne de type BLOB et/ou de type CLOB, FrontBase retournera directement les données lors de la lecture. Ce comportement par défaut peut être modifié avec la fonction fbsql_set_lob_mode() pour que les fonctions de lectures ne retournent qu'un identifiant de BLOB ou CLOB. Si un identifiant est lu, il faut utiliser la fonction fbsql_read_blob() pour obtenir la valeur du BLOB.

Exemple 1. Exemple avec fbsql_read_blob()

<?php
   $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
       or die ("Impossible de se connecter");
   $sql = "SELECT BLOB_COLUMN FROM BLOB_TABLE;";
   $rs = fbsql_query($sql, $link);
   $row_data = fbsql_fetch_row($rs);
   // $row_data[0] contiendra maintenant les donn&eacute;es du blob de la premi&egrave;re
   // ligne
   fbsql_free_result($rs);
   $rs = fbsql_query($sql, $link);
   fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
   $row_data = fbsql_fetch_row($rs);
   // $row_data[0] contiendra maintenant un indentifiant vers les donn&eacute;es du
   // blob de la premi&egrave;re ligne
   $blob_data = fbsql_read_blob($row_data[0]);
   fbsql_free_result($rs);
?>

Voir aussi
fbsql_create_blob(),
fbsql_read_blob(),
fbsql_read_clob() et
fbsql_set_lob_mode().

Précédent | Sommaire | Suivant
fbsql_query | Niveau supérieur | fbsql_read_clob


fbsql_read_clob

(PHP 4 >= 4.2.0)

fbsql_read_clob -- Lit un CLOB dans une base de données

Description

string fbsql_read_clob ( string clob_handle [, resource link_identifier])

fbsql_read_clob() retourne une chaîne de caractères contenant le CLOB clob_handle.

fbsql_read_clob() lit les données du CLOB dans la base de données. Si une sélection contient une colonne de type CLOB et/ou de type BLOB, FrontBase retournera directement les données lors de la lecture. Ce comportement par défaut peut être modifié avec la fonction fbsql_set_lob_mode() pour que les fonctions de lectures ne retournent qu'un identifiant de BLOB ou CLOB. Si un identifiant est lu, il faut utiliser la fonction fbsql_read_clob() pour obtenir la valeur du CLOB.

Exemple 1. Exemple avec fbsql_read_clob()

<?php
   $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
       or die ("Impossible de se connecter");
   $sql = "SELECT CLOB_COLUMN FROM CLOB_TABLE;";
   $rs = fbsql_query($sql, $link);
   $row_data = fbsql_fetch_row($rs);
   // $row_data[0] contiendra maintenant les donn&eacute;es du blob de la
   // premi&egrave;re ligne
   fbsql_free_result($rs);
   $rs = fbsql_query($sql, $link);
   fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
   $row_data = fbsql_fetch_row($rs);
   // $row_data[0] contiendra maintenant un indentifiant vers les
   // donn&eacute;es du clob de la premi&egrave;re ligne
   $clob_data = fbsql_read_clob($row_data[0]);
   fbsql_free_result($rs);
?>

Voir aussi
fbsql_create_blob(),
fbsql_read_blob(),
fbsql_read_clob() et
fbsql_set_lob_mode().

Précédent | Sommaire | Suivant
fbsql_read_blob | Niveau supérieur | fbsql_result


fbsql_result

(PHP 4 >= 4.0.6)

fbsql_result -- Lit des données dans un résultat

Description

mixed fbsql_result ( resource result, int row [, mixed field])

fbsql_result() lit le contenu du champ field, dans la ligne row, du résultat result. L'argument field peut être l'index du champ, ou bien son nom, ou bien le nom de sa table plus point plus son nom. Si la colonne a été aliasée, utilisez de préférence l'alias.

Lorsque vous travaillez sur de grands résultats, il est vivement recommandé d'utiliser les fonctions qui lisent toute une ligne d'un coup, plutôt que fbsql_result() qui travaille ligne par ligne. Elles sont beaucoup plus rapides. Notez aussi que les offset numériques sont plus rapides que les offset nominaux.

L'utilisation de fbsql_result() ne doivent pas être mélangé avec d'autres fonctions qui utilisent aussi le résultat result.

Alternative vivement recommandées :
fbsql_fetch_row(),
fbsql_fetch_array() et
fbsql_fetch_object().

Précédent | Sommaire | Suivant
fbsql_read_clob | Niveau supérieur | fbsql_rollback


fbsql_rollback

(PHP 4 >= 4.0.6)

fbsql_rollback -- Annule une transaction FBSQL

Description

bool fbsql_rollback ( [resource link_identifier])

fbsql_rollback() termine la transaction courante en annulant toutes les requêtes émises depuis la dernière validation. Cette commande n'est utile que si FrontBase est en mode de validation manuelle.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi fbsql_autocommit() et fbsql_commit()

Précédent | Sommaire | Suivant
fbsql_result | Niveau supérieur | fbsql_select_db


fbsql_select_db

(PHP 4 >= 4.0.6)

fbsql_select_db -- Sélectionne une base de données FrontBase

Description

bool fbsql_select_db ( string database_name [, resource link_identifier])

fbsql_select_db() remplace la base de données active courante par database_name, sur la connexion ouverte et représentée par link_identifier. Si link_identifier est omis, la dernière connexion ouverte sera utilisée. Si aucune connexion n'a été ouverte, fbsql_select_db() essaiera de se connecter en appelant fbsql_connect() sans arguments.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le client contacte FBExec pour connaître le numéro de port à utiliser pour la connexion à la base de données. Si le nom de la base est un numéro, le système l'utilisera comme numéro de port, et ne le demandera pas à FBExec. Le serveur Frontbase peut être démarré avec la commande : FRontBase -FBExec=No -port=<port number> <database name>.

Tous les prochains appels à fbsql_query() se feront dans la base database_name.

Voir aussi
fbsql_database_password(),
fbsql_connect(),
fbsql_pconnect() et
fbsql_query().

Précédent | Sommaire | Suivant
fbsql_rollback | Niveau supérieur | fbsql_set_lob_mode


fbsql_set_lob_mode

(PHP 4 >= 4.2.0)

fbsql_set_lob_mode -- Modifie le mode de lecture des LOB

Description

bool fbsql_set_lob_mode ( resource result, string database_name)

fbsql_set_lob_mode() retourne TRUE en cas de succès et FALSE sinon.

fbsql_set_lob_mode() modifie le mode de lecture des LOB. Lorsque des données BLOB ou CLOB sont stockées dans une base de données FrontBase, elles peuvent l'être de manière directe ou indirecte. Si les données sont stockées directement, elles seront automatiquement lues, quelque soit le mode choisi. Si un LOB fait moins de 512 octets, il sera aussi stocké directement.

  • FBSQL_LOB_DIRECT - les données LOB sont lues directements. Lorsque les données sont lues dans la base avec fbsql_fetch_row() ou d'autres fonctions de lectures, toutes les colonnes de type CLOB et BLOB seront retournées comme des colonnes habituelles. C'est le comportement par défaut de FrontBase.

  • FBSQL_LOB_HANDLE - Les données LOB sont lues sous forme d'identifiants. Lorsque les données sont lues dans la base avec fbsql_fetch_row() ou d'autres fonctions de lectures, toutes les colonnes de type CLOB et BLOB seront retournées sous la forme d'un identifiant. Ce identifiant sera une chaîne de 27 caractères de long, formatée comme ceci : "@'000000000000000000000000'".

Voir aussi
fbsql_create_blob(),
fbsql_create_clob(),
fbsql_read_blob() et
fbsql_read_clob().

Précédent | Sommaire | Suivant
fbsql_select_db | Niveau supérieur | fbsql_set_transaction


fbsql_set_transaction

(PHP 4 >= 4.2.0)

fbsql_set_transaction -- Configure le verrouillage et l'isolation de transactions

Description

void fbsql_set_transaction ( resource link_identifier, int locking, int isolation)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_set_lob_mode | Niveau supérieur | fbsql_start_db


fbsql_start_db

(PHP 4 >= 4.0.6)

fbsql_start_db -- Démarre une base de données FBSQL

Description

bool fbsql_start_db ( string database_name [, resource link_identifier])

fbsql_start_db() démarre la base de données database_name sur la connexion link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi fbsql_db_status() et fbsql_stop_db().

Précédent | Sommaire | Suivant
fbsql_set_transaction | Niveau supérieur | fbsql_stop_db


fbsql_stop_db

(PHP 4 >= 4.0.6)

fbsql_stop_db -- Stoppe une base de données FBSQL

Description

bool fbsql_stop_db ( string database_name [, resource link_identifier])

fbsql_stop_db() stoppe la base de données database_name sur la connexion link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi fbsql_db_status() et fbsql_start_db().

Précédent | Sommaire | Suivant
fbsql_start_db | Niveau supérieur | fbsql_tablename


fbsql_tablename

(PHP 4 >= 4.2.0)

fbsql_tablename -- Lit le nom de la table d'un champ

Description

string fbsql_tablename ( resource result, int i)

fbsql_tablename() retourne le nom de la table d'origine du champ i, dans le résultat result. La fonction fbsql_num_rows() peut être utilisée pour connaître le nombre de tables dans un résultat.

Exemple 1. Exemple avec fbsql_tablename()

<?php
  fbsql_connect("localhost:3306");
  $result = fbsql_list_tables("wisconsin");
  $i = 0;
  while ($i < fbsql_num_rows($result)) {
    $tb_names[$i] = fbsql_tablename($result, $i);
    echo $tb_names[$i] . "<BR>";
    $i++;
  }
?>

Précédent | Sommaire | Suivant
fbsql_stop_db | Niveau supérieur | fbsql_username


fbsql_username

(PHP 4 >= 4.0.6)

fbsql_username -- Lit ou définit le nom de login à utiliser avec une connexion

Description

string fbsql_username ( resource link_identifier [, string username])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fbsql_tablename | Niveau supérieur | fbsql_warnings


fbsql_warnings

(PHP 4 >= 4.0.6)

fbsql_warnings -- Active ou désactive les alertes FrontBase

Description

bool fbsql_warnings ( [bool onoff])

fbsql_warnings() retourne TRUE si les alertes sont actives et FALSE en cas d'erreur.

fbsql_warnings() active ou désactive les alertes FrontBase suivant que onoff est à TRUE ou FALSE.

Précédent | Sommaire | Suivant
fbsql_username | Niveau supérieur | FilePro


FilePro

Manuel PHP
Précédent Suivant

XXIX. FilePro

Introduction

Ces fonctions permettent de lire des données enregistrées dans des bases non modifiables, sur des serveurs filePro.

filePro est une marque de fP Technologies, Inc. Vous pouvez avoir plus de détails sur filePro à http://www.fptech.com/.

Installation

Le support de filePro n'est pas activé par défaut dans PHP. Pour utiliser le support fourni dans la distribution, qui assure l'accès en lecture, vous devez compiler PHP avec l'option --enable-filepro.

Table des matières
filepro_fieldcount -- Retourne le nombre de champs dans une base filePro
filepro_fieldname -- Retourne le nom d'un champ Filepro
filepro_fieldtype -- Retourne le type d'un champ Filepro
filepro_fieldwidth -- Retourne la taille d'un champ Filepro
filepro_retrieve -- Retourne la valeur d'un champ Filepro
filepro_rowcount -- Retourne le nombre de champs dans une base filePro.
filepro -- Lit et vérifie un fichier

Précédent | Sommaire | Suivant
fbsql_warnings | Niveau supérieur | filepro_fieldcount


filepro_fieldcount

(PHP 3, PHP 4 )

filepro_fieldcount -- Retourne le nombre de champs dans une base filePro

Description

int filepro_fieldcount ( void )

filepro_fieldcount() retourne le nombre de champs (ou colonnes) d'une base filePro.

Voir aussi filepro().

Précédent | Sommaire | Suivant
FilePro | Niveau supérieur | filepro_fieldname


filepro_fieldname

(PHP 3, PHP 4 )

filepro_fieldname -- Retourne le nom d'un champ Filepro

Description

string filepro_fieldname ( int field_number)

filepro_fieldname() retourne le nom du champ d'index field_number.

Précédent | Sommaire | Suivant
filepro_fieldcount | Niveau supérieur | filepro_fieldtype


filepro_fieldtype

(PHP 3, PHP 4 )

filepro_fieldtype -- Retourne le type d'un champ Filepro

Description

string filepro_fieldtype ( int field_number)

filepro_fieldtype() retourne le type du champ d'index field_number.

Précédent | Sommaire | Suivant
filepro_fieldname | Niveau supérieur | filepro_fieldwidth


filepro_fieldwidth

(PHP 3, PHP 4 )

filepro_fieldwidth -- Retourne la taille d'un champ Filepro

Description

int filepro_fieldwidth ( int field_number)

filepro_fieldwidth() retourne la taille du champ d'index field_number.

Précédent | Sommaire | Suivant
filepro_fieldtype | Niveau supérieur | filepro_retrieve


filepro_retrieve

(PHP 3, PHP 4 )

filepro_retrieve -- Retourne la valeur d'un champ Filepro

Description

string filepro_retrieve ( int row_number, int field_number)

filepro_retrieve() retourne la valeur du champ d'index row_number, et à la ligne field_number.

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Précédent | Sommaire | Suivant
filepro_fieldwidth | Niveau supérieur | filepro_rowcount


filepro_rowcount

(PHP 3, PHP 4 )

filepro_rowcount -- Retourne le nombre de champs dans une base filePro.

Description

int filepro_rowcount ( void )

filepro_rowcount() retourne le nombre de lignes dans une base filePro.

Voir aussi filepro().

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Précédent | Sommaire | Suivant
filepro_retrieve | Niveau supérieur | filepro


filepro

(PHP 3, PHP 4 )

filepro -- Lit et vérifie un fichier

Description

bool filepro ( string directory)

filepro() lit et vérifie un fichier, puis enregistre le nombre de champs et de lignes.

Aucun verrouillage n'est pratiqué : il vaut alors mieux ne pas modifier la base filePro lorsqu'elle est ouverte par PHP.

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Précédent | Sommaire | Suivant
filepro_rowcount | Niveau supérieur | Système de fichiers


Système de fichiers

Manuel PHP
Précédent Suivant

XXX. Système de fichiers

Introduction

Pré-requis

Aucune librairie externe n'est requise pour avoir cette extension, mais si vous voulez le support LFS (grands fichiers) sur Linux, vous devez avoir une version récente de gclib et vous devrez compiler PHP avec les options suivantes du compilateur : -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
allow_url_fopen | "1" | PHP_INI_ALL
user_agent | NULL | PHP_INI_ALL
default_socket_timeout | "60" | PHP_INI_ALL
from | NULL | ??
auto_detect_line_endings | "Off" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

allow_url_fopen booléen

Cette option active les versions étendues des fonctions d'accès aux fichiers, qui savent exploiter les URL. Les extensions par défaut permettent d'accéder aux fichiers distants avec les protocoles FTP ou HTTP. Certaines extensions apparaissent comme zlib, qui ajoutent d'autres fonctionnalités.

Note : Cette option a été introduite immédiatement après la publication de la version 4.0.3. Pour les versions jusqu'à la, vous ne pouvez désactiver cette fonctionnalité qu'au moment de la compliation, avec l'option --disable-url-fopen-wrapper.

Avertissement

Sous Windows, dans les versions antérieures à la version 4.3, les fonctions suivantes ne supportent pas l'accès aux fichiers distants : include(), include_once(), require(), require_once() et les fonctions imagecreatefromXXX de l'extension Référence XLI, Images.

user_agent string

Définit le type d'"user agent" (Définition du navigateur web) utilisé par PHP.

default_socket_timeout entier

Durée d'expiration (en secondes) pour les flots basés sur les sockets.

Note : Cette option de configuration a été introduite en PHP 4.3.

from="joe@example.com" string

Définit le mot de passe FTP en mode anonyme (en général, votre adresse email).

auto_detect_line_endings booléen

Lorsque cette option est activée, PHP va examiner les données lues par fgets() et file() pour voir si le fichier utilise les conventions de ligne de Unix, MS-Dos ou Macintosh.

Cela permet à PHP d'interopérer avec des systèmes MacIntosh, mais par défaut, cette option est désactivée, car cette détection impose un légère pénalité en temps de traitement, mais aussi parce que ceux qui utilisent les retours chariots comme séparateurs auront des soucis de compatibilité.

Note : Cette option de configuration a été introduite en PHP 4.3.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

GLOB_BRACE (integer)

GLOB_ONLYDIR (integer)

GLOB_MARK (integer)

GLOB_NOSORT (integer)

GLOB_NOCHECK (integer)

GLOB_NOESCAPE (integer)

PATHINFO_DIRNAME (integer)

PATHINFO_BASENAME (integer)

PATHINFO_EXTENSION (integer)

Voir aussi

Pour les fonctions connexes, voyez aussi la section sur les accès aux Dossiers et sur les exécutions de programme.

Pour une liste et une explication sur les différents outils d'accès aux fichiers distants, voyez aussi Annexe I.

Table des matières
basename -- Sépare le nom du fichier et le nom du dossier.
chgrp -- Change le groupe propriétaire d'un fichier
chmod -- Change le mode du fichier
chown -- Change le groupe propriétaire du fichier
clearstatcache -- Efface le cache de stat()
copy -- Copie un fichier
delete -- Effacer
dirname -- Renvoie le nom du dossier
disk_free_space -- Renvoie l'espace disque disponible dans le répertoire.
disk_total_space -- Retourne la taille d'un dossier
diskfreespace -- Alias de disk_free_space()
fclose -- Ferme un fichier
feof -- Teste la fin du fichier
fflush -- Envoi tout le contenu généré dans un fichier
fgetc -- Lit un caractère dans un fichier
fgetcsv -- Renvoie la ligne courante et cherche les champs CSV
fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier.
fgetss -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier et élimine les balises HTML
file_exists -- Vérifie si un fichier existe
file_get_contents -- Lit tout un fichier dans une chaîne
file_put_contents -- Ecrit une chaîne dans un fichier
file -- Lit le fichier et renvoie le résultat dans un tableau
fileatime -- Renvoie la date à laquelle le fichier a été accédé pour la dernière fois.
filectime -- Renvoie l'heure à laquelle l'inode a été accédé pour la dernière fois.
filegroup -- Lire le nom du groupe
fileinode -- Renvoie le numéro d'inode du fichier
filemtime -- Renvoie la date de dernière modification du fichier.
fileowner -- Renvoie le nom du propriétaire du fichier
fileperms -- Renvoie les permissions affectées au fichier.
filesize -- Renvoie la taille du fichier
filetype -- Retourne le type de fichier
flock -- Verrouille le fichier
fnmatch -- Repère un fichier à partir d'un masque
fopen -- Ouverture d'un fichier ou d'une URL
fpassthru -- Affiche le reste du fichier
fputs -- Ecrit dans un fichier
fread -- Lecture du fichier en mode binaire
fscanf -- Analyse un fichier en fonction d'un format
fseek -- Modifie le pointeur de fichier
fstat -- Lit les informations sur un fichier à partir d'un pointeur de fichier
ftell -- Renvoie la position du pointeur du fichier
ftruncate -- Tronque un fichier
fwrite -- Ecriture du fichier en mode binaire
glob -- Recheche des chemins qui vérifie un masque
is_dir -- Indique si le nom de fichier est un dossier
is_executable -- Indique si le fichier est exécutable
is_file -- Indique si le fichier est un véritable fichier.
is_link -- Indique si le fichier est un lien symbolique.
is_readable -- Indique un fichier est autorisé en lecture
is_uploaded_file -- Indique si le fichier a été téléchargé par HTTP POST
is_writable -- Indique si un fichier est autorisé en écriture
is_writeable -- Indique si un fichier est autorisé en écriture
link -- Crée un lien
linkinfo -- Renvoie les informations à propos d'un lien
lstat -- Retourne les informations à propos d'un fichier ou d'un lien symbolique.
mkdir -- Crée un dossier
move_uploaded_file -- Déplace un fichier téléchargé
parse_ini_file -- Traite un fichier de configuration
pathinfo -- Retourne des informations sur un chemin système
pclose -- Ferme un processus de pointeur de fichier
popen -- Crée un processus de pointeur de fichier
readfile -- Affiche un fichier
readlink -- Renvoie le nom du fichier vers lequel pointe un lien symbolique
realpath -- Retourne le chemin canonique absolu
rename -- Renomme un fichier
rewind -- Replace le pointeur de fichier au début
rmdir -- Efface un dossier
set_file_buffer -- Alias de stream_set_write_buffer()
stat -- Renvoie les informations à propos d'un fichier
symlink -- Crée un lien symbolique
tempnam -- Crée un fichier avec un nom unique
tmpfile -- Crée un fichier temporaire
touch -- Modifie la date de modification et de dernièr accès d'un fichier
umask -- Change le "umask" courant
unlink -- Efface un fichier

Précédent | Sommaire | Suivant
filepro | Niveau supérieur | basename


basename

(PHP 3, PHP 4 )

basename -- Sépare le nom du fichier et le nom du dossier.

Description

string basename ( string path [, string suffix])

basename() prend en paramètre le chemin complet d'un fichier et en extrait le nom du fichier. Si [suffix] est fourni, le suffixe sera aussi supprimé.

Sous Windows, les caractères (/) et antislash (\) sont utilisés comme séparateurs de dossier. Sous les autres OS, seul le caractère slash (/) est utilisé.

Exemple 1. Exemple avec basename()

<?php
  $path = "/home/httpd/html/index.php";
  $file = basename ($path);        // $file is set to "index.php"
  $file = basename ($path,".php"); // $file is set to "index"
?>

Note : Le paramètre suffix a été ajouté en PHP 4.1.0.

Voir aussi dirname().

Précédent | Sommaire | Suivant
Système de fichiers | Niveau supérieur | chgrp


chgrp

(PHP 3, PHP 4 )

chgrp -- Change le groupe propriétaire d'un fichier

Description

bool chgrp ( string filename, mixed group)

chgrp() essaie de remplacer le groupe propriétaire courant du fichier filename par group. Seul le super-utilisateur (root) peut changer le groupe propriétaire d'un fichier arbitrairement. Les utilisateurs classiques ne peuvent changer le groupe propriétaire d'un fichier que si l'utilisateur propriétaire du fichier est membre du groupe.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi chown() et chmod().

Précédent | Sommaire | Suivant
basename | Niveau supérieur | chmod


chmod

(PHP 3, PHP 4 )

chmod -- Change le mode du fichier

Description

bool chmod ( string filename, int mode)

chmod() remplace le mode du fichier filename par le mode mode.

Il est à noter que le mode mode est considéré comme un nombre en notation octale. Afin de vous en assurer, vous pouvez préfixer cette valeur par un zéro (mode):

Exemple 1. Comment utiliser chmod()

chmod ("/somedir/somefile", 755);
// notation d&eacute;cimale : probablement faux
chmod ("/somedir/somefile", "u+rwx,go+rx");
// cha&icirc;ne : incorrect
chmod ("/somedir/somefile", 0755);
// notation octale : valeur du mode correcte

Le paramètre mode est constitué de trois valeurs octacles qui spécifient les droits pour le propriétaire, le groupe du propriétaire et les autres, respectivement. Chaque composant peut être calculé en ajoutant les droits désirés. Le chiffre 1 donne les droits d'exécution, le chiffre 2 les droits d'écriture et le chiffre 4 les droits de lecture. Ajoutez simplement ces nombres pour spécifier les droits voulus. Vous pouvez aussi lire le manuel des systèmes Unix avec 'man 1 chmod' et 'man 2 chmod'.

Exemple 2. Comment utiliser le paramètre mode de chmod()

// Lecture et &eacute;criture pour le propri&eacute;taire, rien pour les autres
chmod ("/un_dossier/un_fichier", 0600);

// Lecture et &eacute;criture pour le propri&eacute;taire, &eacute;criture pour les autres
chmod ("/un_dossier/un_fichier", 0644);

// Tous pour le propri&eacute;taire, lecture et &eacute;criture pour les autres
chmod ("/un_dossier/un_fichier", 0755);

// Tout pour le propri&eacute;taire, lecture ex&eacute;cution pour le groupe, rien pour les autres
chmod ("/un_dossier/un_fichier", 0750);

Note : L'utilisateur courant est l'utilisateur avec lequel PHP fonctionne. Il est probablement différent de l'utilisateur que vous utilisez en mode shell ou FTP.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Voir aussi chown() et chgrp().

Précédent | Sommaire | Suivant
chgrp | Niveau supérieur | chown


chown

(PHP 3, PHP 4 )

chown -- Change le groupe propriétaire du fichier

Description

bool chown ( string filename, mixed user)

chown() change le groupe propriétaire du fichier. Seul le super-utilisateur (root) peut changer arbitrairement le propriétaire d'un fichier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Voir aussi chmod().

Précédent | Sommaire | Suivant
chmod | Niveau supérieur | clearstatcache


clearstatcache

(PHP 3, PHP 4 )

clearstatcache -- Efface le cache de stat()

Description

void clearstatcache ( void )

L'appel à la fonction stat ou lstat est relativement coûteux en terme de temps d'exécution. Pour cela, le résultat du dernier appel à l'une des fonctions de statut, (voir la liste ci-dessous), est sauvegardé pour ré-utilisation ultérieure. Si vous voulez forcer la vérification du statut d'un fichier, dans le cas où le fichier aurait pu être modifié ou aurait disparu, vous devez utiliser la fonction clearstatcache() afin d'effacer de la mémoire les résultats du dernier appel à la fonction.

La valeur du cache n'est valable que pour la durée d'une requête.

Les fonctions affectées sont : stat(),
lstat(),
file_exists(),
is_writable(),
is_readable(),
is_executable(),
is_file(),
is_dir(),
is_link(),
filectime(),
fileatime(),
filemtime(),
fileinode(),
filegroup(),
fileowner(),
filesize(),
filetype(), et
fileperms().

Précédent | Sommaire | Suivant
chown | Niveau supérieur | copy


copy

(PHP 3, PHP 4 )

copy -- Copie un fichier

Description

bool copy ( string source, string dest)

copy() fait une copie du fichier source vers le fichier dest. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec copy()

<?php
  if (!copy($file, $file.'.bak')) {
    print("La copie du fichier $file n'a pas r&eacute;ussi...<BR>\n");
  }
?>

Note : Depuis PHP 4.3.0, les deux paramètres source et dest peuvent être des URL si les gestionnaires d'URL ont été activés ("fopen wrappers"). Voyez la fonction fopen() pour plus de détails. Si dest est une URL, la copie peut échouer si ce protocole ne supporte pas l'écrasement de fichiers existants.

Avertissement

Si le fichier de destination dest existe déjà, il sera écrasé.

Voir aussi move_uploaded_file() et rename().

Précédent | Sommaire | Suivant
clearstatcache | Niveau supérieur | delete


delete

(no version information, might be only in CVS)

delete -- Effacer

Description

void delete ( string file)

Ceci est une fausse entrée du manuel pour ceux qui recherchent en fait la fonction unlink() ou unset().

Voir aussi unlink() et unset().

Précédent | Sommaire | Suivant
copy | Niveau supérieur | dirname


dirname

(PHP 3, PHP 4 )

dirname -- Renvoie le nom du dossier

Description

string dirname ( string path)

dirname() retourne le nom du dossier qui contient le fichier ou dossier path.

Sous Windows, les slash (/) et anti-slash (\) sont utilisés comme séparateurs de dossier. Dans les autres environnements, seul le slash (/) est utilisé.

Exemple 1. Exemple avec dirname()

<?php
  $path = "/etc/passwd";
  $file = dirname ($path);
// $file vaut "/etc"
?>

Note : En PHP 4.0.3, dirname() a été modifié pour être compatible POSIX. Cela signifie notamment que si il n'y a pas de slash dans le paramètre path, un point ('.') est retourné, indiquant le dossier courant. Sinon, la chaîne retournée est path avec le composant final / supprimé. Notez que cela signifie que vous allez obtenir un slash ou un point là où l'ancien comportement de dirname() retournait une chaîne vide.

Voir aussi
basename(),
pathinfo() et
realpath().

Précédent | Sommaire | Suivant
delete | Niveau supérieur | disk_free_space


disk_free_space

(PHP 4 >= 4.1.0)

disk_free_space -- Renvoie l'espace disque disponible dans le répertoire.

Description

float disk_free_space ( string directory)

disk_free_space() retournera le nombre d'octets disponibles sur le disque contenant le dossier directory.

Exemple 1. Exemple avec disk_free_space()

<?php
  $df = disk_free_space("/");
  // $df contient le nombre d'octets libres sur "/"
?>

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Précédent | Sommaire | Suivant
dirname | Niveau supérieur | disk_total_space


disk_total_space

(PHP 4 >= 4.1.0)

disk_total_space -- Retourne la taille d'un dossier

Description

float disk_total_space ( string directory)

disk_total_space() lit récursivement toutes les tailles du dossier directory et retourne la somme. directory peut être aussi une partition de disque.

Exemple 1. Exemple avec disk_total_space()

<?php
  $df = disk_total_space("/"); // $df contient le nombre d'octets libres
                               // dans le dossier "/"
?>

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Précédent | Sommaire | Suivant
disk_free_space | Niveau supérieur | diskfreespace


diskfreespace

(PHP 3>= 3.0.7, PHP 4 )

diskfreespace -- Alias de disk_free_space()

Description

float diskfreespace ( string directory)

diskfreespace() est l'ancien nom de la fonction disk_free_space(). Elle est obsolète, et il est vivement recommandé d'utiliser disk_free_space().

Précédent | Sommaire | Suivant
disk_total_space | Niveau supérieur | fclose


fclose

(PHP 3, PHP 4 )

fclose -- Ferme un fichier

Description

bool fclose ( resource handle)

fclose() ferme le fichier handle.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le pointeur de fichier doit être valide et doit avoir été correctement ouvert par fopen() ou fsockopen().

Exemple 1. Exemple avec fclose()

<?php

  $handle = fopen('un_fichier.txt', 'r');

  fclose($handle);

?>

Précédent | Sommaire | Suivant
diskfreespace | Niveau supérieur | feof


feof

(PHP 3, PHP 4 )

feof -- Teste la fin du fichier

Description

bool feof ( resource handle)

feof() retourne TRUE si le pointeur handle est à la fin du fichier, ou si une erreur survient, sinon, retourne FALSE.

Le pointeur de fichier doit être valide, et avoir été correctement ouvert par fopen(), popen(), ou fsockopen().

Précédent | Sommaire | Suivant
fclose | Niveau supérieur | fflush


fflush

(PHP 4 >= 4.0.1)

fflush -- Envoi tout le contenu généré dans un fichier

Description

bool fflush ( resource handle)

fflush() force l'écriture de toutes les données bufferisées dans le fichier désigné par handle. fflush() retourne TRUE en cas de succès, et FALSE sinon.

handle est un pointeur de fichier ouvert avec fopen(), popen(), ou fsockopen().

Précédent | Sommaire | Suivant
feof | Niveau supérieur | fgetc


fgetc

(PHP 3, PHP 4 )

fgetc -- Lit un caractère dans un fichier

Description

string fgetc ( resource handle)

fgetc() retourne une chaîne contenant un seul caractère, lu depuis le fichier pointé par handle. fgetc() retourne FALSE à la fin du fichier (contrairement à feof()).

Le pointeur de fichier doit être valide, et avoir été correctement ouvert par fopen(), popen(), ou fsockopen().

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Exemple 1. Exemple avec fgetc()

<?php
$fp = fopen('unfichier.txt', 'r');
if (!$fp) {
    echo "Impossible d'ouvrir le fichier unfichier.txt";
}
while (false !== ($char = fgetc($fp))) {
    echo "$char\n";
}
?>

Note : Cette fonction gère les chaînes binaires

Voir aussi
fread(),
fopen(),
popen(),
fsockopen() et
fgets().

Précédent | Sommaire | Suivant
fflush | Niveau supérieur | fgetcsv


fgetcsv

(PHP 3>= 3.0.8, PHP 4 )

fgetcsv -- Renvoie la ligne courante et cherche les champs CSV

Description

array fgetcsv ( resource handle, int length [, string delimiter [, string enclosure]])

fgetcsv() est identique à fgets() mais fgetcsv() analyse la ligne qu'il lit et recherche les champs CSV, qu'il va retourner dans un tableau les contenant. Le délimiteur de champs delimiter est la virgule, à moins que vous ne fournissiez un troisième argument.

Note : Le paramètre enclosure a été ajouté en PHP 4.3.0.

handle doit être un pointeur valide, et avoir été correctement ouvert par fopen(), popen(), ou fsockopen().

length doit être plus grand que la plus grande ligne trouvée dans un fichier CSV (en comptant les caractères de fin de ligne).

fgetcsv() retourne FALSE en cas d'erreur, ou en cas de fin du fichier.

Note : Une ligne vide dans un fichier CSV sera retournée sous la forme d'un tableau contenant la valeur NULL et ne sera pas traitée comme une erreur.

Exemple 1. Lit et affiche le contenu d'un fichier CSV avec fgetcsv()

<?php
$row = 1;
$fp = fopen ("test.csv","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
    $num = count ($data);
    print "<p> $num champs dans la ligne $row: <br>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        print $data[$c] . "<br>\n";
    }
}
fclose ($fp);
?>

Voir aussi
explode(),
file() et
pack().

Précédent | Sommaire | Suivant
fgetc | Niveau supérieur | fgets


fgets

(PHP 3, PHP 4 )

fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier.

Description

string fgets ( resource handle [, int length])

fgets() retourne la chaîne lue jusqu'à la longueur length - 1 octet, ou bien la fin du fichier, ou encore un retour chariot (le premier des trois qui sera rencontré).

Si une erreur survient, fgets() retourne FALSE.

Erreur courante :

Les programmeurs habitués à la programmation 'C' noteront que fgets() ne se comporte pas comme son équivalent C lors de la rencontre de la fin du fichier.

handle doit être valide, et avoir été correctement ouvert par fopen(), popen(), ou fsockopen().

Un exemple simple :

Exemple 1. Lecture d'un fichier ligne par ligne

<?php
  $fd = fopen ("/tmp/inputfile.txt", "r");
  while (!feof ($fd)) {
    $buffer = fgets($fd, 4096);
    echo $buffer;
  }
  fclose ($fd);
?>

Note : Le paramètre length est devenu optionnel depuis PHP 4.2.0. Si il est omis, il prend la valeur par défaut de 1024. Depuis PHP 4.3.0, omettre le paramètre length fait que la fonction va continuer à lire le flux jusqu'à ce que la ligne s'achève. Si la majorité des lignes du fichier dépassent les 8 ko, il est plus efficace pour votre script de spécifier ce paramètre.

Note : fgets() est compatible avec les données binaires depuis PHP 4.3. Les versions plus anciennes ne le sont pas.

Note : Si vous avez des problèmes avec PHP qui ne reconnait pas certaines lignes lors de la lecture de fichier qui ont été créé ou lus sur un MacIntosh, vous pouvez activer l'option de configuration auto_detect_line_endings.

Voir aussi
fread(),
fgetc(),
stream_get_line(),
fopen(),
popen(),
fsockopen() et
socket_set_timeout().

Précédent | Sommaire | Suivant
fgetcsv | Niveau supérieur | fgetss


fgetss

(PHP 3, PHP 4 )

fgetss -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier et élimine les balises HTML

Description

string fgetss ( resource handle, int length [, string allowable_tags])

fgetss() est identique à fgets(), mais fgetss() supprime toutes les balises HTML et PHP qu'il trouve dans le texte lu.

Vous pouvez aussi préciser les balises qui seront ignorées dans le troisième paramètre optionnel.

Note : allowable_tags a été ajouté en PHP 3.0.13 et PHP 4.0.0.

Note : Si vous avez des problèmes avec PHP qui ne reconnait pas certaines lignes lors de la lecture de fichier qui ont été créé ou lus sur un MacIntosh, vous pouvez activer l'option de configuration auto_detect_line_endings.

Voir aussi
fgets(),
fopen(),
fsockopen(),
popen() et
strip_tags().

Précédent | Sommaire | Suivant
fgets | Niveau supérieur | file_exists


file_exists

(PHP 3, PHP 4 )

file_exists -- Vérifie si un fichier existe

Description

bool file_exists ( string filename)

file_exists() retourne TRUE si le fichier filename existe, et FALSE sinon.

Utilisation des dossiers partagés Windows : Sous Windows, utilisez le format de chemin //computername/share/filename ou \\\\computername\share\filename pour vérifier qu'un fichier est disponible sur le partage réseau.

Exemple 1. Test d'existence d'un fichier

<?php
$filename = '/chemin/jusqu/a/fichier.txt';

if (file_exists($filename)) {
    print "Le fichier $filename existe";
} else {
    print "Le fichier $filename n'existe pas";
}
?>

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
is_readable(),
is_writable(),
is_file() et
file().

Précédent | Sommaire | Suivant
fgetss | Niveau supérieur | file_get_contents


file_get_contents

(PHP 4 >= 4.3.0)

file_get_contents -- Lit tout un fichier dans une chaîne

Description

string file_get_contents ( string filename [, int use_include_path [, resource context]])

file_get_contents() est identique à la fonction
readfile(), hormis le fait que
file_get_contents() retourne le fichier
filename dans une chaîne.

Note : Cette fonction a été introduite en PHP 4.3.0.

Note : Cette fonction gère les chaînes binaires

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Note : Le support de l'argument context sera ajouté en PHP 5.0.

Voir aussi
fgets(),
file(),
fread(),
include() et
readfile().

Précédent | Sommaire | Suivant
file_exists | Niveau supérieur | file_put_contents


file_put_contents

(PHP 5 CVS only)

file_put_contents -- Ecrit une chaîne dans un fichier

Description

int file_put_contents ( string filename, string data [, int flags [, resource context]])

file_put_contents() revient à appeler successivement
fopen(), fwrite(),
et fclose().

Le paramètre flags peut valoir FILE_USE_INCLUDE_PATH et/ou FILE_APPEND, mais FILE_USE_INCLUDE_PATH doit être utilisé avec prudence.

Note : Cette fonction gère les chaînes binaires

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Voir aussi
fopen(),
fwrite(),
fclose() et
file_get_contents().

Précédent | Sommaire | Suivant
file_get_contents | Niveau supérieur | file


file

(PHP 3, PHP 4 )

file -- Lit le fichier et renvoie le résultat dans un tableau

Description

array file ( string filename [, int use_include_path [, resource context]])

file() est identique à readfile(), hormis le fait que file() retourne le fichier dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.

Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.

Note : Si vous avez des problèmes avec PHP qui ne reconnait pas certaines lignes lors de la lecture de fichier qui ont été créé ou lus sur un MacIntosh, vous pouvez activer l'option de configuration auto_detect_line_endings.

Vous pouvez utiliser l'option use_include_path : en la mettant à "1", vous rechercherez aussi dans le dossier include_path.

Exemple 1. Exemple avec file()

<?php
// Lit une page web dans un tableau.
$lines = file ('http://www.exemple.com/');

// Affiche toutes les lignes du tableau comme code HTML, avec les num&eacute;ros de ligne
foreach ($lines as $line_num => $line) {
    echo "Ligne No <b>$line_num</b> : " . htmlspecialchars($line) . "<br>\n";
}

// Un autre exemple, pour obtenir une page web dans une cha&icirc;ne. Voir aussi la fonction file_get_contents().
$html = implode ('', file ('http://www.exemple.com/'));
?>

Note : Depuis PHP 4.3.0, vous pouvez utiliser file_get_contents() pour lire le contenu d'un fichier dans une chaîne.

En PHP 4.3.0, file() est désormais compatible avec les données binaires.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Voir aussi
readfile(),
fopen(),
fsockopen(),
popen(),
file_get_contents() et
include().

Précédent | Sommaire | Suivant
file_put_contents | Niveau supérieur | fileatime


fileatime

(PHP 3, PHP 4 )

fileatime -- Renvoie la date à laquelle le fichier a été accédé pour la dernière fois.

Description

int fileatime ( string filename)

fileatime() renvoie la date à laquelle le fichier a été accédé pour la dernière fois, ou FALSE en cas d'erreur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
file | Niveau supérieur | filectime


filectime

(PHP 3, PHP 4 )

filectime -- Renvoie l'heure à laquelle l'inode a été accédé pour la dernière fois.

Description

int filectime ( string filename)

filectime() renvoie l'heure à laquelle l'inode filename a été accédé pour la dernière fois, ou FALSE en cas d'erreur.

Note: Sur la plupart des serveurs UNIX, un fichier est considéré comme modifié si les données de son inode sont modifiées. C'est-à-dire lorsque les permissions (utilisateur, groupe ou autre) ont été modifiées. Voyez aussi filemtime() (que vous pourrez utiliser lorsque vous créerez des indications telles que "Dernière modification : " sur les pages web) et fileatime().

Notez aussi que sur certains systèmes UNIX, le ctime d'un fichier texte est considéré comme sa date de création. Cela est faux! Il n'y a pas de date de création de fichier sous la plupart des systèmes UNIX.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
fileatime | Niveau supérieur | filegroup


filegroup

(PHP 3, PHP 4 )

filegroup -- Lire le nom du groupe

Description

int filegroup ( string filename)

filegroup() renvoie le groupe qui possède le fichier filename, ou FALSE en cas d'erreur. L'identifiant de groupe est retourné au format numérique, utilisez posix_getgrgid() pour retrouver le nom du groupe.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
filectime | Niveau supérieur | fileinode


fileinode

(PHP 3, PHP 4 )

fileinode -- Renvoie le numéro d'inode du fichier

Description

int fileinode ( string filename)

fileinode() renvoie le numéro d'inode du fichier filename, ou FALSE en cas d'erreur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
filegroup | Niveau supérieur | filemtime


filemtime

(PHP 3, PHP 4 )

filemtime -- Renvoie la date de dernière modification du fichier.

Description

int filemtime ( string filename)

filemtime() renvoie la date de dernière modification du fichier filename, ou FALSE en cas d'erreur.

filemtime() retourne l'heure d'écriture des blocs données d'un fichier. Utilisez date() sur ce résultat pour obtenir une date de modification humainement lisible.

Exemple 1. Exemple avec filemtime()

<?php
// l'affichage sera : lefichier.txt a &eacute;t&eacute; modifi&eacute; le : December 29 2002 22:16:23.

$filename = 'lefichier.txt';
if (file_exists($filename)) {
    echo "$filename  a &eacute;t&eacute; modifi&eacute; le : " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
filectime(),
stat(),
touch() et
getlastmod().

Précédent | Sommaire | Suivant
fileinode | Niveau supérieur | fileowner


fileowner

(PHP 3, PHP 4 )

fileowner -- Renvoie le nom du propriétaire du fichier

Description

int fileowner ( string filename)

fileowner() renvoie le nom du possesseur du fichier filename, ou FALSE en cas d'erreur. L'identification du possesseur de fichier est numérique : il faut utiliser posix_getpwuid() pour retrouver le nom d'utilisateur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
filemtime | Niveau supérieur | fileperms


fileperms

(PHP 3, PHP 4 )

fileperms -- Renvoie les permissions affectées au fichier.

Description

int fileperms ( string filename)

fileperms() renvoie les permissions affectées au fichier filename, ou FALSE en cas d'erreur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
fileowner | Niveau supérieur | filesize


filesize

(PHP 3, PHP 4 )

filesize -- Renvoie la taille du fichier

Description

int filesize ( string filename)

filesize() renvoie la taille du fichier filename, ou FALSE en cas d'erreur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
fileperms | Niveau supérieur | filetype


filetype

(PHP 3, PHP 4 )

filetype -- Retourne le type de fichier

Description

string filetype ( string filename)

filetype() renvoie le type du fichier filename. Les réponses possibles sont : fifo, char, dir, block, link, file, et unknown.

filetype() retourne FALSE en cas d'erreur.

filetype() ne fonctionne pas sur les fichiers distants. Les fichiers doivent être accessibles par le système de fichier du serveur.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Précédent | Sommaire | Suivant
filesize | Niveau supérieur | flock


flock

(PHP 3>= 3.0.7, PHP 4 )

flock -- Verrouille le fichier

Description

bool flock ( resource handle, int operation [, int &wouldblock])

PHP dispose d'un système complet de verrouillage de fichiers. Tous les programmes qui accèdent au fichier doivent utiliser la même méthode de verrouillage pour qu'il soit efficace.

flock() agit sur le fichier handle qui doit avoir été ouvert au préalable. operation est une des valeurs suivantes :

  • Acquisition d'un verrou en lecture : operation = LOCK_SH (valeur de 1 pour les versions plus anciennes que PHP 4.0.1).

  • Acquisition d'un verrou exclusif en écriture : operation = LOCK_EX (valeur de 2 pour les versions plus anciennes que PHP 4.0.1).

  • Libération d'un verrou partagé ou exclusif, operation = LOCK_UN (valeur de 3 pour les versions plus anciennes que PHP 4.0.1).

  • Si vous voulez que flock() ne se bloque pas durant le verrouillage, ajoutez LOCK_NB à operation (valeur de 4 pour les versions plus anciennes que PHP 4.0.1).

flock() permet de réaliser un système simple de verrous écriture / lecture, qui peut être utilisé sur n'importe quelle plate-forme (Unix et Windows compris). Le troisième paramètre optionnel vaut par défaut TRUE, si le verrou doit bloquer le script (condition d'erreur EWOULDBLOCK).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Comme flock() requiert un pointeur de fichier, vous aurez peut être à utiliser un verrou spécial pour protéger l'accès au fichier que vous voulez tronquer en l'ouvrant en mode d'écriture (avec "w" ou "w+" comme argument de fopen()).

Avertissement

flock() ne fonctionne pas sur NFS ou sur les autres systèmes de fichiers réseaux. Vérifiez la documentation de votre système d'exploitation pour plus de détails.

Sur certains systèmes d'exploitation, flock() est implémenté au niveau processus. Lorsque vous utilisez une API multi-thread comme ISAPI, vous risquez de ne pas pouvoir avoir confiance en flock() pour protéger vos fichiers contre d'autres scripts PHP qui fonctionnent en paralelle sur d'autres thread du même serveur.

flock() n'est pas supporté sur les vieux systèmes de fichiers comme FAT et ses dérivés, et elle retournera forcément FALSE sous ces environnement (ceci est particulièrement vrai pour les utilisateurs de Windows 98).

Précédent | Sommaire | Suivant
filetype | Niveau supérieur | fnmatch


fnmatch

(PHP 4 >= 4.3.0)

fnmatch -- Repère un fichier à partir d'un masque

Description

array fnmatch ( string pattern, string string [, int flags])

fnmatch() vérifie si la chaîne string va passer le masque shell pattern.

C'est tout particulièrement pratique pour les noms de fichiers, et il peut être utilisé sur des chaînes de caractères. L'utilisateur moyen de shell peut être familier avec les masques shell, ou tout au moins, leur expression les plus simples, comme '?' et '*'. De cette façon, utiliser fnmatch() au lieu de ereg() ou preg_match() pour des recherches peut être plus pratique pour les non-initiés.

Exemple 1. Vérifier le nom d'une couleur avec un masque shell

<?php
  if(fnmatch("*gr[ae]y", $color)) {
    echo "some form of gray ...";
  }
?>

Voir aussi
glob(),
ereg() et
preg_match().

Précédent | Sommaire | Suivant
flock | Niveau supérieur | fopen


fopen

(PHP 3, PHP 4 )

fopen -- Ouverture d'un fichier ou d'une URL

Description

resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]])

fopen() crée une ressource nommée, spécifiée par le paramètre filename, sous la forme d'un flux. Si filename est de la forme "protocole://...", filename est supposé être une URL, et PHP va rechercher un gestionnaire de protocole adapté pour lire ce fichier. Si aucun gestionnaire pour ce protocole n'est disponible, PHP va émettre une alerte qui vous permettra de savoir que vous avez des problèmes dans votre script, et il tentera d'exploiter filename comme un fichier classique.

Si PHP décide que le fichier filename est un fichier local, il va essayer d'ouvrir un flux avec ce fichier. Le fichier doit être accessible à PHP. Il vous faut donc vous assurer que vous avez les droits d'accès à ce fichier. Si vous activé le safe mode, ou la directive open_basedir, d'autres conditions peuvent aussi s'appliquer.

Si PHP a décidé que filename spécifie un protocole enregistré, et que ce protocole est enregistré comme un protocole réseau, PHP s'assurera que la directive allow_url_fopen est activée. Si elle est inactive, PHP va émettre une alerte, et l'ouverture va échouer.

Note : La liste des protocoles supportés est disponible Annexe I. Certains protocoles (appelé aussi wrappers ou gestionnaires) supportent des contexte et/ou des options dans le fichier php.ini. Référez vous aux pages du manuel traitant le protocole, pour connaître la liste des options qui sont disponibles. ( i.e. l'option de php.ini user_agent est utilisée par le gestionnaire http) Pour une description des contexts et du paramètre zcontext, voyez Référence CI, Flux.

mode peut prendre les valeurs suivantes :

  • 'r' - Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.

  • 'r+' - Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.

  • 'w' - Ouvre en écriture seule; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.

  • 'w+' - Ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.

  • 'a' - Ouvre en écriture seule; place le pointeur de fichier à la fin du fichier file. Si le fichier n'existe pas, on tente de le créer.

  • 'a+' - Ouvre en lecture et écriture; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.

De plus, mode peut contenir la lettre 'b'. Cette option n'est utile que sur les systèmes qui font la différence entre les fichiers binaires et les fichiers textes (en bref, c'est une fonctionnalité Windows, totalement inutile sous Unix). S'il n'est pas nécessaire, il sera ignoré.

Vous pouvez utiliser le troisième paramètre optionnel pour explorer le dossier include_path, en le mettant à 1.

Le paramètre optionnel zcontext est utilisé pour spécifier des paramètres d'optimisation et de callback.

Si l'ouverture échoue, fopen() retournera FALSE.

Exemple 1. Exemple avec fopen()

<?php
$handle = fopen ("/home/rasmus/file.txt", "r");
$handle = fopen ("/home/rasmus/file.gif", "wb");
$handle = fopen ("http://www.example.com/", "r");
$handle = fopen ("ftp://user:password@example.com/somefile.txt", "w");
?>

Si vous rencontrez des problèmes en lecture ou écriture de fichier et que vous utilisez PHP en version module de serveur, n'oubliez pas que les fichiers auxquels vous accédez ne sont pas nécessairement accessibles au processus serveur.

Sous Windows, assurez-vous de bien échapper les anti-slash utilisés dans le chemin du fichier, ou bien utilisez des slash.

Exemple 2. Exemple avec fopen() sous Windows

<?php
  $handle = fopen ("c:\\data\\info.txt", "r");
?>

Voir aussi
Annexe I,
 fclose(),
 fgets(),
 fsockopen(),
 file(),
 file_exists(),
 is_readable(),
 socket_set_timeout() et
 popen().

Précédent | Sommaire | Suivant
fnmatch | Niveau supérieur | fpassthru


fpassthru

(PHP 3, PHP 4 )

fpassthru -- Affiche le reste du fichier

Description

int fpassthru ( resource handle)

fpassthru() lit tout le reste d'un fichier jusqu'à la fin, et dirige le résultat vers la sortie standard.

Si une erreur survient, fpassthru() retourne FALSE. Sinon, fpassthru() retourne le nombre de caractères lu dans handle et passé à la sortie standard.

Le pointeur de fichier doit être valide, et doit avoir été correctement ouvert par fopen(), popen(), ou fsockopen(). Après lecture, fpassthru() va fermer le fichier (le pointeur handle sera alors invalide).

Note : Lorque vous utilisez la fonction fpassthru() sur un fichier binaire sous Windows, assurez vous d'avoir ouvert le fichier en mode binaire en ajoutant la lettre b au mode d'accès utilisé dans fopen().

Vous êtes encouragés à utiliser l'option b lorsque vous traitez des fichiers binaires, même si votre système ne le requiert pas, de façon à rendre vos scripts portables.

Voir aussi
readfile(),
fopen(),
popen() et
fsockopen().

Précédent | Sommaire | Suivant
fopen | Niveau supérieur | fputs


fputs

(PHP 3, PHP 4 )

fputs -- Ecrit dans un fichier

Description

int fputs ( resource handle, string str [, int length])

fputs() est un alias de fwrite(), et lui est identique en tous points. Notez que length est un paramètre optionnel, et s'il n'est pas spécifié, toute la chaîne est écrite.

Précédent | Sommaire | Suivant
fpassthru | Niveau supérieur | fread


fread

(PHP 3, PHP 4 )

fread -- Lecture du fichier en mode binaire

Description

string fread ( resource handle, int length)

fread() lit jusqu'à length octets dans le fichier reférencé par handle. La lecture s'arrête lorsque length octets ont été lus, ou que l'on a atteint la fin du fichier, ou qu'une erreur survient (le premier des trois).

Exemple 1. Exemple avec fread()

<?php
// Lit un fichier, et le place dans une cha&icirc;ne
$filename = "/usr/local/something.txt";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
?>

Note : Sur les systèmes qui différencient les fichiers textes et binaires (i.e. Windows) le fichier doit être ouvert avec la lettre 'b' ajoutée au paramètre de mode de la fonction fopen().

Note :

Exemple 2. Utilisation des fichiers binaires avec fread()

<?php
  $filename = "c:\\fichiers\\uneimage.gif";
  $handle = fopen ($filename, "rb");
  $contents = fread ($handle, filesize ($filename));
  fclose ($handle);
?>

Voir aussi
fwrite(),
fopen(),
fsockopen(),
popen(),
fgets(),
fgetss(),
file() et
fpassthru().

Précédent | Sommaire | Suivant
fputs | Niveau supérieur | fscanf


fscanf

(PHP 4 >= 4.0.1)

fscanf -- Analyse un fichier en fonction d'un format

Description

mixed fscanf ( resource handle, string format [, string var1])

fscanf() est similaire à sscanf(), mais elle prend comme entrée un fichier, associé à handle et l'interprète en fonction du format format. Si seulement deux paramètres sont passés à la fonction, les valeurs analysées seront retournées sous forme de tableau. Si des arguments optionnels sont passés, la fonction retournera le nombre de valeurs assignées. Les options doivent être passées par référence.

Tous les caractères blancs de la chaîne de formattage correspondent à autant d'espaces dans le flux d'entrée. Cela signifie qu'une tabulation \t dans la chaîne de format peut remplacer un espace simple dans le flux d'entrée.

Exemple 1. Exemple avec fscanf()

<?php
  $handle = fopen ("users.txt","r");
  while ($userinfo = fscanf ($handle, "%s\t%s\t%s\n")) {
    list ($name, $profession, $countrycode) = $userinfo;
    //... traitement des donn&eacute;es
  }
  fclose($handle);
?>

Exemple 2. utilisateurs.txt

javier  argonaute        pe
hiroshi sculpteur        jp
robert  hockeyuer us
luigi   fleuriste it

Note : Avant PHP 4.3.0, le nombre maximum de caractères lus dans le fichier était de 512 (ou bien jusqu'à la première nouvelle ligne "\n" : en fait, le premier des deux). Depuis PHP 4.3.0, des lignes de n'importe quelle taille peuvent être lues.

Voir aussi
fread(),
fgets(),
fgetss(),
sscanf(),
printf() et
sprintf().

Précédent | Sommaire | Suivant
fread | Niveau supérieur | fseek


fseek

(PHP 3, PHP 4 )

fseek -- Modifie le pointeur de fichier

Description

int fseek ( resource handle, int offset [, int whence])

fseek() modifie le curseur de position dans le fichier handle. La nouvelle position mesurée en octets à partir du début du fichier, est obtenue en additionnant la distance offset à la position whence. Ce paramètre peut prendre les valeurs suivantes :

SEEK_SET - La position finale vaut offset octets.
SEEK_CUR - La position finale vaut la position courante ajoutée à offset octets.
SEEK_END - La position finale vaut la position courante par rapport à la fin du fichier, ajoutée de offset.

Si whence n'est pas spécifiée, il vaut par défaut SEEK_SET.

fseek() retourne 0 en cas de succès, et sinon -1. Notez que positionner le pointeur au delà de la fin du fichier n'est pas une erreur.

fseek() ne peut pas être utilisé sur les pointeurs retournés par fopen() s'ils sont au format HTTP ou FTP.

Note : Le paramètre whence a été ajouté en PHP 4.0.0.

Voir aussi ftell() et rewind().

Précédent | Sommaire | Suivant
fscanf | Niveau supérieur | fstat


fstat

(PHP 4 )

fstat -- Lit les informations sur un fichier à partir d'un pointeur de fichier

Description

array fstat ( resource handle)

fstat() rassemble les informations sur le fichier dont on connaît le pointeur handle. fstat() est similaire à la fonction stat(), hormis le fait qu'elle utilise un pointeur de fichier, au lieu d'un nom de fichier.

fstat() retourne un tableau avec les éléments suivants :

  • volume

  • inode

  • nombre de liens

  • id de l'utilisateur propriétaire

  • id du groupe propriétaire

  • type du volume de l'inode *

  • taille en octets

  • date du dernier accès

  • date de la dernière modification

  • date du dernier changement

  • taille de bloc du système pour les entrées/sorties(*)

  • nombre de blocs alloués

* - uniquement sur les systèmes qui supportent le type st_blksize. Les autres systèmes (i.e. Windows) retournent -1.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Précédent | Sommaire | Suivant
fseek | Niveau supérieur | ftell


ftell

(PHP 3, PHP 4 )

ftell -- Renvoie la position du pointeur du fichier

Description

int ftell ( resource handle)

ftell() retourne la position courante du pointeur dans le fichier repéré par le pointeur handle, i.e., son offset.

Si une erreur survient, retourne FALSE.

Le pointeur de fichier doit être valide, et avoir été correctement ouvert par fopen() ou popen().

Voir aussi
fopen(),
popen(),
fseek() et
rewind().

Précédent | Sommaire | Suivant
fstat | Niveau supérieur | ftruncate


ftruncate

(PHP 4 )

ftruncate -- Tronque un fichier

Description

bool ftruncate ( resource handle, int size)

ftruncate() prend le pointeur de fichier handle et le tronque à la taille de size. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi fopen() et fseek()

Voir aussi fopen() et fseek().

Précédent | Sommaire | Suivant
ftell | Niveau supérieur | fwrite


fwrite

(PHP 3, PHP 4 )

fwrite -- Ecriture du fichier en mode binaire

Description

int fwrite ( resource handle, string string [, int length])

fwrite() écrit le contenu de la chaîne string dans le fichier pointé par handle. Si la longueur length est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne (le premier des deux).

fwrite() retourne le nombre de bytes écrites ou FALSE en cas d'erreur.

Notez que si length est fourni, alors l'option de configuration magic_quotes_runtime sera ignorée, et les slash seront conservés.

Note : Sur les systèmes qui font la différence entre les fichiers binaires et les fichiers textes (par exemple, Windows), le fichier doit être ouvert avec l'option 'b' inclus dans le paramètre de mode de fopen().

Exemple 1. Exemple d'écriture dans un fichier avec fwrite()

<?php
$filename = 'test.txt';
$somecontent = "Ajout de cha&icirc;ne dans le fichier \n";

// Assurons nous que le fichier est accessible en &eacute;criture
if (is_writable($filename)) {

    // Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
    // Le pointeur de fichier est plac&eacute; &agrave; la fin du fichier
    // c'est l&agrave; que $somecontent sera plac&eacute;
    if (!$handle = fopen($filename, 'a')) {
         print "Impossible d'ouvrir le fichier ($filename)";
         exit;
    }

    // Write $somecontent to our opened file.
    if (!fwrite($handle, $somecontent)) {
       print "Impossible d'&eacute;crire dans le fichier ($filename)";
       exit;
    }

    print "L'&eacute;criture de ($somecontent) dans le fichier ($filename) a r&eacute;ussi";

    fclose($handle);

} else {
    print "Le fichier $filename n'est pas accessible en &eacute;criture.";
}
?>

Voir aussi
fread(),
fopen(),
fsockopen(),
popen() et
fputs().

Précédent | Sommaire | Suivant
ftruncate | Niveau supérieur | glob


glob

(PHP 4 >= 4.3.0)

glob -- Recheche des chemins qui vérifie un masque

Description

array glob ( string pattern [, int flags])

glob() recherche tous les chemins qui vérifient le masque pattern, en suivant les règles du shell. Aucun remplacement de tilde ~ ou de paramètre n'est fait.

glob() retourne un tableau contenant les chemins et fichiers trouvés, ou FALSE en cas d'erreur.

Exemple 1. Un moyen pratique pour remplacer opendir() par glob()

<?php
  foreach (glob("*.txt") as $filename) {
    echo "$filename occupe " . filesize($filename) . " octets\n";
  }
?>

Le résultat du script ci-dessus pourrait être :

funclist.txt occupe 44686 octets
funcsummary.txt occupe 267625 octets
quickref.txt occupe 137820 octets

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Voir aussi
opendir(),
readdir(),
closedir() et
fnmatch().

Précédent | Sommaire | Suivant
fwrite | Niveau supérieur | is_dir


is_dir

(PHP 3, PHP 4 )

is_dir -- Indique si le nom de fichier est un dossier

Description

bool is_dir ( string filename)

is_dir() retourne TRUE si filename existe et est un dossier.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
chdir(),
opendir(),
is_file() et
is_link().

Précédent | Sommaire | Suivant
glob | Niveau supérieur | is_executable


is_executable

(PHP 3, PHP 4 )

is_executable -- Indique si le fichier est exécutable

Description

bool is_executable ( string filename)

is_executable() retourne TRUE si filename existe et est exécutable.

is_executable() est disponible avec Windows depuis PHP 5.0.0.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi is_file() et is_link().

Précédent | Sommaire | Suivant
is_dir | Niveau supérieur | is_file


is_file

(PHP 3, PHP 4 )

is_file -- Indique si le fichier est un véritable fichier.

Description

bool is_file ( string filename)

is_file() retourne TRUE si filename existe et est un fichier (et pas un dossier).

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi is_dir() et is_link().

Précédent | Sommaire | Suivant
is_executable | Niveau supérieur | is_link


is_link

(PHP 3, PHP 4 )

is_link -- Indique si le fichier est un lien symbolique.

Description

bool is_link ( string filename)

is_link() retourne TRUE si filename existe et est un lien symbolique.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
is_dir(),
is_file() et
readlink().

Précédent | Sommaire | Suivant
is_file | Niveau supérieur | is_readable


is_readable

(PHP 3, PHP 4 )

is_readable -- Indique un fichier est autorisé en lecture

Description

bool is_readable ( string filename)

is_readable() retourne TRUE si filename existe et est accessible en lecture.

N'oubliez pas que PHP accède aux fichiers avec les mêmes autorisations que l'utilisateur qui fait tourner le serveur web (souvent, c'est 'nobody', personne).

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
is_writable(),
file_exists() et
fgets().

Précédent | Sommaire | Suivant
is_link | Niveau supérieur | is_uploaded_file


is_uploaded_file

(PHP 3>= 3.0.17, PHP 4 >= 4.0.3)

is_uploaded_file -- Indique si le fichier a été téléchargé par HTTP POST

Description

bool is_uploaded_file ( string filename)

is_uploaded_file() est disponible à partir des versions PHP 3.0.16 et 4.0.2.

is_uploaded_file() retourne TRUE si le fichier filename a été téléchargé par HTTP POST. Cela est très utile pour vous assurer qu'un utilisateur n'essaie pas d'accéder intentionnellement à un fichier auquel il n'a pas droit (comme /etc/passwd).

Ce type de vérification est spécialement important s'il est possible que les fichiers téléchargés révélent leur contenu à l'utilisateur, ou même aux utilisateurs du même système.

is_uploaded_file() est disponible dans les versions de PHP 3 après PHP 3.0.16, et dans les versions de PHP 4 après la 4.0.2. Si vous êtes coincés avec une version plus ancienne, vous pouvez utiliser l'une des fonctions suivantes pour vous protéger :

Note : L'exemple suivant ne fonctionne pas avec les versions de PHP ultérieures à la 4.0.2. Elle dépend de fonctionnalités internes de PHP qui ont disparu après cette version.

<?php
/* Test utilisateur du fichier t&eacute;l&eacute;charg&eacute;. */
function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
        $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* L'utilisateur peut avoir laiss&eacute; des / finaux dans php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
}

/* Voici comment l'utiliser, car move_uploaded_file() n'est pas disponible
   dans les anciennes versions : */
if (is_uploaded_file($HTTP_POST_FILES['userfile'])) {
    copy($HTTP_POST_FILES['userfile'], "/dossier/ou/placer/un/fichier/upload&eacute;");
} else {
    echo "Tentative d'attaque possible : '$HTTP_POST_FILES[userfile]'.";
}
?>

Voir aussi move_uploaded_file().

Précédent | Sommaire | Suivant
is_readable | Niveau supérieur | is_writable


is_writable

(PHP 4 )

is_writable -- Indique si un fichier est autorisé en écriture

Description

bool is_writable ( string filename)

is_writable() retourne TRUE si filename existe et est accessible en écriture.

N'oubliez pas que PHP accède aux fichiers avec les mêmes autorisations que l'utilisateur qui fait tourner le serveur web (souvent, c'est 'nobody', personne).

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
is_readable(),
file_exists() et
fwrite().

Précédent | Sommaire | Suivant
is_uploaded_file | Niveau supérieur | is_writeable


is_writeable

(PHP 3, PHP 4 )

is_writeable -- Indique si un fichier est autorisé en écriture

Description

bool is_writeable ( string filename)

is_writeable() est un alias de is_writable().

Précédent | Sommaire | Suivant
is_writable | Niveau supérieur | link


link

(PHP 3, PHP 4 )

link -- Crée un lien

Description

bool link ( string target, string link)

link() crée un lien en le fichier source link et le fichier destination target.

Note : Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Voir aussi
symlink(),
readlink() et
linkinfo().

Précédent | Sommaire | Suivant
is_writeable | Niveau supérieur | linkinfo


linkinfo

(PHP 3, PHP 4 )

linkinfo -- Renvoie les informations à propos d'un lien

Description

int linkinfo ( string path)

linkinfo() renvoie les informations à propos d'un lien, c'est-à-dire le champ st_dev de la structure d'information UNIX (comme en langage C). linkinfo() sert à vérifier si un lien (repéré par path) existe (en utilisant la même méthode que la macro S_ISLNK de stat.h). linkinfo() retourne FALSE en cas d'erreur.

Voir aussi
symlink(),
link() et
readlink().

Précédent | Sommaire | Suivant
link | Niveau supérieur | lstat


lstat

(PHP 3>= 3.0.4, PHP 4 )

lstat -- Retourne les informations à propos d'un fichier ou d'un lien symbolique.

Description

array lstat ( string filename)

lstat() renvoie les informations à propos du fichier filename. Cette fonction est identique à la fonction stat() à part que si filename est un lien symbolique, les informations seront alors basées sur le lien symbolique.

Voyez la page de manuel de stat() pour plus d'informations sur la structure du tableau retourné par lstat().

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Voir aussi stat().

Précédent | Sommaire | Suivant
linkinfo | Niveau supérieur | mkdir


mkdir

(PHP 3, PHP 4 )

mkdir -- Crée un dossier

Description

bool mkdir ( string pathname [, int mode])

mkdir() tente de créer un dossier dans le chemin pathname.

Notez que vous aurez à préciser le mode en base octale, ce qui signifie que vous aurez probablement un 0 comme premier chiffre. Le mode sera aussi modifié par le umask courant, que vous pouvez modifier avec la fonction umask().

Note : Le paramètre mode est ignoré sous Windows, et il est devenu optionnel depuis PHP 4.2.0.

Le mode par défaut est le mode 0777, ce qui correspond au maximum de droits possible. Pour plus d'informations sur les modes, lisez en détail la documentation de la fonction chmod().

Exemple 1. Exemple avec mkdir()

<?php
  mkdir ("/chemin/de/mon/dossier", 0700);
?>

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi rmdir().

Précédent | Sommaire | Suivant
lstat | Niveau supérieur | move_uploaded_file


move_uploaded_file

(PHP 4 >= 4.0.3)

move_uploaded_file -- Déplace un fichier téléchargé

Description

bool move_uploaded_file ( string filename, string destination)

move_uploaded_file() s'assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu'à destination.

Si filename n'est pas valide, rien ne se passe, et move_uploaded_file() retournera FALSE.

Si filename est un fichier téléchargé, mais que pour une raison quelconque, il ne peut être déplacé, rien ne se passe, et move_uploaded_file() retourne FALSE. De plus, une alerte sera affichée.

Ce type de vérification est spécialement important s'il est possible que les fichiers téléchargés révèlent leur contenu à l'utilisateur, ou même aux utilisateurs du même système.

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Note : move_uploaded_file() n'est pas affectée par les restrictictions du safe mode. Ce n'est pas un problème, car move_uploaded_file() ne fonctionne que sur des fichiers qui ont été téléchargés avec PHP.

Avertissement

Si le fichier de destination existe déjà, il sera écrasé.

Voir aussi is_uploaded_file().

Précédent | Sommaire | Suivant
mkdir | Niveau supérieur | parse_ini_file


parse_ini_file

(PHP 4 )

parse_ini_file -- Traite un fichier de configuration

Description

array parse_ini_file ( string filename [, bool process_sections])

parse_ini_file() charge le fichier filename et retourne les configuration qui s'y trouve sous forme d'un tableau associatif. En passant le deuxième paramètre optionnel à process_sections, vous obtiendrez un tableau multi-dimensionnel, avec les noms des sections. La valeur par défaut de ce paramètre est FALSE

Note : Cette fonction n'a rien a voir avec le fichier php.ini. Ce dernier a déjà était traité lorsque vous commencez a exécuter votre script. Cette fonction peut vous permettre de lire vos propres fichiers de configuration.

La structure des fichiers de configuration lus est similaire à celle de php.ini.

Note : Si une valeur du fichier .ini contient des données non alphanumérique, il faut la protéger en la plaçant entre guillemets doubles (").

Note : Depuis PHP 4.2.1 cette fonction est aussi affectée par le safe mode et open_basedir.

La structure du fichier .ini est similaire à celle du fichier php.ini.

Les constantes peuvent aussi être utilisées dans le fichier .ini, ce qui fait que si vous définissez une constante avant d'exécuter parse_ini_file(), elle sera intégrée dans les résultats. Seules les valeurs de configuration sont remplacées par leur équivalent en constantes. Par exemple :

Exemple 1. Contenu de exemple.ini

; Ceci est un fichier de configuration
; Les commentaires commencent par ';', comme dans php.ini

[premiere_section]
un = 1
cinq = 5
animal = oiseau

[seconde_section]
chemin = /usr/local/bin
URL = "http://www.exemple.com/~utilisateur"

Exemple 2. Exemple avec parse_ini_file()

<?php

define ('oiseau', 'dodu dodo');

// Analyse sans les sections
$ini_array = parse_ini_file("exemple.ini");
print_r($ini_array);

// Analyse avec les sections
$ini_array = parse_ini_file("exemple.ini", TRUE);
print_r($ini_array);

?>

Cet exemple va produire :

Array
(
    [un] => 1
    [cinq] => 5
    [animal] => dodu dodo
    [chemin] => /usr/local/bin
    [URL] => http://www.example.com/~username
)
Array
(
    [premiere_section] => Array
        (
            [un] => 1
            [cinq] => 5
            [animal] => dodu dodo
        )

    [seconde_section] => Array
        (
            [chemin] => /usr/local/bin
            [URL] => http://www.exemple.com/~utilisateur
        )

)

Précédent | Sommaire | Suivant
move_uploaded_file | Niveau supérieur | pathinfo


pathinfo

(PHP 4 >= 4.0.3)

pathinfo -- Retourne des informations sur un chemin système

Description

array pathinfo ( string path)

pathinfo() retourne un tableau associatif, contenant les informations sur le chemin path. Les éléments suivants sont retournés : dirname, basename et extension.

Exemple 1. Exemple avec pathinfo()

<?php

$path_parts = pathinfo("/www/htdocs/index.html");

echo $path_parts["dirname"] . "\n";
echo $path_parts["basename"] . "\n";
echo $path_parts["extension"] . "\n";

?>

Va afficher :

/www/htdocs
index.html
html

Note : Pour plus d'informations sur la lecture du chemin courant, lisez la section sur les variables prédéfinies.

Voir aussi
dirname(),
basename(),
parse_url() et
realpath().

Précédent | Sommaire | Suivant
parse_ini_file | Niveau supérieur | pclose


pclose

(PHP 3, PHP 4 )

pclose -- Ferme un processus de pointeur de fichier

Description

int pclose ( resource handle)

pclose() ferme un processus de pointeur de fichier ouvert par popen().

Le pointeur de fichier doit être valide, et avoir été ouvert correctement par popen().

pclose() retourne le statut final du processus exécuté.

Voir aussi popen().

Précédent | Sommaire | Suivant
pathinfo | Niveau supérieur | popen


popen

(PHP 3, PHP 4 )

popen -- Crée un processus de pointeur de fichier

Description

resource popen ( string command, string mode)

popen() ouvre un processus fils en faisant un fork de la commande.

popen() retourne un pointeur de fichier
identique à celui retourné par fopen(),
hormis le fait qu'il sera unidirectionnel (lecture seule, ou
écriture seule), et doit être terminé par
pclose(). Ce pointeur peut être utilisé
avec fgets(), fgetss() et
fputs().

Si une erreur survient, retourne FALSE.

Exemple 1. Exemple avec popen()

<?php
  $handle = popen ("/bin/ls", "r");
?>

Note : Si la commande à exécuter n'a pu être trouvée, une ressource valide sera retournée. Cela semble étrange, mais c'est pratique : cela vous permet d'accéder aux messages d'erreur qui ont été retournés par le shell :

Exemple 2. Lire des messages d'erreurs avec popen()

<?php
  error_reporting(E_ALL);

/* Ajoute une redirection pour que vous puissions lire stderr */
  $handle = popen('/chemin/vers/spooge 2>&1', 'r');
  echo "'$handle'; " . gettype($handle) . "\n";
  $read = fread($handle, 2096);
  echo $read;
  pclose($handle);
?>

Voir aussi
pclose(),
fopen() et
proc_open().

Précédent | Sommaire | Suivant
pclose | Niveau supérieur | readfile


readfile

(PHP 3, PHP 4 )

readfile -- Affiche un fichier

Description

int readfile ( string filename [, bool use_include_path [, resource context]])

readfile() lit le fichier filename et l'envoie à la sortie standard.

readfile() retourne le nombre d'octets lus depuis le fichier. Si une erreur survient, retourne FALSE, et à moins que la fonction n'ait été appelée avec @readfile, un message d'erreur est affiché.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Vous pouvez utiliser le deuxième paramètre optionnel pour explorer le dossier include_path, en passant la valeur de 1.

Voir aussi
fpassthru(),
file(),
fopen(),
include(),
require() et
virtual().

Précédent | Sommaire | Suivant
popen | Niveau supérieur | readlink


readlink

(PHP 3, PHP 4 )

readlink -- Renvoie le nom du fichier vers lequel pointe un lien symbolique

Description

string readlink ( string path)

readlink() fait la même chose que la fonction readlink en C : elle retourne le contenu du lien symbolique repéré par path, ou FALSE en cas d'erreur.

Voir aussi
is_link(),
symlink() et
linkinfo().

Précédent | Sommaire | Suivant
readfile | Niveau supérieur | realpath


realpath

(PHP 4 )

realpath -- Retourne le chemin canonique absolu

Description

string realpath ( string path)

realpath() résoud tous les liens symboliques, et remplace toutes les références '/./', '/../' et '/' de path puis retourne le chemin canonique absolu ainsi trouvé. Le résultat ne contient aucun lien symbolique, '/./' ou '/../'.

Exemple 1. Exemple avec realpath()

<?php
  $real_path = realpath ("../../index.php");
?>

Voir aussi
basename(),
dirname() et
pathinfo().

Précédent | Sommaire | Suivant
readlink | Niveau supérieur | rename


rename

(PHP 3, PHP 4 )

rename -- Renomme un fichier

Description

bool rename ( string oldname, string newname)

rename() tente de renommer le fichier oldname en newname.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec rename()

<?php
  rename("/tmp/tmp_file.txt", "/home/user/login/docs/mon_file.txt");
?>

Voir aussi
copy(),
unlink() et
move_uploaded_file()

Voir aussi
copy(),
unlink() et
move_uploaded_file().

Précédent | Sommaire | Suivant
realpath | Niveau supérieur | rewind


rewind

(PHP 3, PHP 4 )

rewind -- Replace le pointeur de fichier au début

Description

bool rewind ( resource handle)

rewind() replace le pointeur du fichier handle au début. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le pointeur de fichier doit être valide, et avoir été correctement ouvert par fopen().

Note : Si vous avez ouvert le fichier en mode d'ajout ("a"), toutes les données que vous écrirez dans ce fichier seront toujours ajoutées, indépendemment de la position du pointeur de fichier.

Voir aussi fseek() et ftell().

Précédent | Sommaire | Suivant
rename | Niveau supérieur | rmdir


rmdir

(PHP 3, PHP 4 )

rmdir -- Efface un dossier

Description

bool rmdir ( string dirname)

rmdir() tente d'effacer le dossier dont le chemin est dirname. Le dossier doit être vide, et le script doit avoir les autorisations adéquates.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi mkdir() et unlink().

Précédent | Sommaire | Suivant
rewind | Niveau supérieur | set_file_buffer


set_file_buffer

(PHP 3>= 3.0.8, PHP 4 >= 4.0.1)

set_file_buffer -- Alias de stream_set_write_buffer()

Description

int set_file_buffer ( int handle, int buffer)

set_file_buffer() est un alias de stream_set_write_buffer().

Précédent | Sommaire | Suivant
rmdir | Niveau supérieur | stat


stat

(PHP 3, PHP 4 )

stat -- Renvoie les informations à propos d'un fichier

Description

array stat ( string filename)

stat() renvoie les informations à propos du fichier filename. Si filename est un lien symbolique, les informations proviennent du fichier lui-même, et non du lien symbolique. lstat() est identique à stat() sauf que les informations seront alors basées sur le lien symbolique.

En cas d'erreurs, stat() retourne FALSE. Elle générera aussi un avertissement.

Retourne un tableau avec des informations sur le fichier avec les éléments suivants. Ce tableau commence à zéro. En plus de retourner ces attributs dans un tableau indexé, ils peuvent être accédés par leurs clefs, comme mentionné à côté de chaque paramètre; ceci est disponible depuis PHP 4.0.6 :

  1. 0 : volume (ou encore dev)

  2. 1 : inode (ou encore ino)

  3. 2 : droits d'accès au fichier (mode de protection du inode). A convertir en octal. Voir aussi fileperms(). (ou encore mode)

  4. 3 : nombre de liens (ou encore nlink)

  5. 4 : id de l'utilisateur propriétaire (ou encore uid)

  6. 5 : id du groupe propriétaire (ou encore gid)

  7. 6 : type du volume de l'inode * (ou encore rdev )

  8. 7 : taille en octets (ou encore size)

  9. 8 : date du dernier accès (ou encore atime)

  10. 9 : date de la dernière modification (ou encore mtime)

  11. 10 : date du dernier changement (ou encore ctime)

  12. 11 : taille de bloc du système pour les entrées/sorties * (ou encore blksize)

  13. 12 : nombre de blocs alloués (ou encore blocks)

* - uniquement sur les systèmes qui supportent le type st_blksize. Les autres systèmes (i.e. Windows) retournent -1.

Note : Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() plus de détails.

Tuyau : Depuis PHP 5.0.0 cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Annexe I pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi
lstat(),
fstat(),
filemtime() et
filegroup().

Précédent | Sommaire | Suivant
set_file_buffer | Niveau supérieur | symlink


symlink

(PHP 3, PHP 4 )

symlink -- Crée un lien symbolique

Description

bool symlink ( string target, string link)

symlink() crée un lien symbolique pour l'objet target avec le nom de link. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
link(),
readlink() et
linkinfo().

Précédent | Sommaire | Suivant
stat | Niveau supérieur | tempnam


tempnam

(PHP 3, PHP 4 )

tempnam -- Crée un fichier avec un nom unique

Description

string tempnam ( string dir, string prefix)

tempnam() crée un fichier temporaire unique dans le dossier dir. Si le dossier n'existe pas, tempnam() va générer un nom de fichier dans le dossier temporaire du système.

Avant PHP 4.0.6, le comportement de tempnam() dépendait de l'OS sous-jacent. Sous Windows, la variable d'environnement TMP remplace le paramètre dir; sous Linux, la variable d'environnement TMPDIR a la priorité, tandis que pour les OS en système V R4, le paramètre dir sera toujours utilisé, si le dossier qu'il représente existe. Consultez votre documentation pour plus de détails.

tempnam() retourne le nom du fichier temporaire, ou la chaîne NULL en cas d'échec.

Exemple 1. Exemple avec tempnam()

$tmpfname = tempnam ("/tmp", "FOO");

$handle = fopen($tmpfname, "w");
fwrite($handle, "Ecrire dans le fichier temporaire");
fclose($handle);

// faire quelquechose ici

unlink($tmpfname);

Note : Le comportement de tempnam() a été modifié en PHP 4.0.3. Le fichier temporaire est aussi créé pour éviter des conflits si le fichier apparait dans le système de fichiers entre le moment où la chaîne est générée et avant que le script n'ai terminé la création du fichier. Notez que vous devez effacer le fichier si vous n'en avez plus besoin, car cela n'est pas fait automatiquement.

Voir aussi tmpfile() et unlink().

Précédent | Sommaire | Suivant
symlink | Niveau supérieur | tmpfile


tmpfile

(PHP 3>= 3.0.13, PHP 4 )

tmpfile -- Crée un fichier temporaire

Description

resource tmpfile ( void )

tmpfile() crée un fichier temporaire avec un nom unique, ouvert en écriture, et retourne un pointeur de fichier, identique à ceux retournés par fopen(). Ce fichier sera automatiquement effacé lorsqu'il sera fermé (avec fclose()), ou lorsque le script sera terminé.

Pour plus de détails, consultez votre documentation système sur la fonction tmpfile(3), et sur stdio.h.

Exemple 1. Exemple avec tmpfile()

<?php
  $temp = tmpfile();
  fwrite($temp, "Ecriture dans le fichier temporaire");
  fclose($temp); // Ceci supprime le fichier temporaire
?>

Voir aussi tempnam().

Précédent | Sommaire | Suivant
tempnam | Niveau supérieur | touch


touch

(PHP 3, PHP 4 )

touch -- Modifie la date de modification et de dernièr accès d'un fichier

Description

bool touch ( string filename [, int time [, int atime]])

touch() tente de forcer la date de modification du fichier nommé filename à la date de time. Si time est omis, c'est l'heure courante qui est utilisée.

Si le fichier n'existe pas, PHP tente de le créer.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec touch()

<?php
if ( touch($NomDeFichier) ) {
  print "La date de modification de $NomDeFichier a
         &eacute;t&eacute; fix&eacute;e &agrave; maintenant";
} else {
  print "D&eacute;sol&eacute;, il est impossible de changer
         la date de modification de $NomDeFichier";
}
?>

Précédent | Sommaire | Suivant
tmpfile | Niveau supérieur | umask


umask

(PHP 3, PHP 4 )

umask -- Change le "umask" courant

Description

int umask ( [int mask])

umask() change le umask de PHP : mask & 0777 et retourne le vieux umask. Lorsque PHP est utilisé comme module de serveur, le umask reprend sa valeur à la fin de chaque script.

umask() appelé sans arguments, retourne simplement le umask courant.

Précédent | Sommaire | Suivant
touch | Niveau supérieur | unlink


unlink

(PHP 3, PHP 4 )

unlink -- Efface un fichier

Description

bool unlink ( string filename [, resource context])

unlink() efface filename. Identique à la fonction Unix C unlink(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Depuis PHP 5.0.0, unlink() peut aussi être utilisée avec quelques prôtocoles d'url. Voyez Annexe I pour une liste des prôtocoles supportant unlink().

Note : La paramètre context a été ajouté en PHP 5.0.0.

Voir aussi rmdir() pour la suppression de dossiers.

Précédent | Sommaire | Suivant
umask | Niveau supérieur | Forms Data Format


Forms Data Format

Manuel PHP
Précédent Suivant

XXXI. Forms Data Format

Introduction

Forms Data Format (FDF) est un format de fomulaire pour les documents PDF. Vous pouvez lire la documentation (en anglais) à http://partners.adobe.com/asn/acrobat/forms.jsp pour plus de détails sur les tenants et les aboutissants.

L'esprit de FDF est similaire à celui des formulaires HTML. Les différences résident dans les moyens de transmission des données au serveur, lorsque le bouton "submit" (soumettre) est pressé (ce qui est du ressort de Form Data Format) et le format de formulaire lui-même (qui est plutôt du ressort de Portable Document Format, PDF). Gérer des données FDF est un des objectifs des fonctions FDF. Mais il y en a d'autres. Vous pouvez aussi prendre un formulaire PDF, et pré-remplir les champs, sans modifier le formulaire lui-même. Dans ce cas, on va créer un document FDF (fdf_create()), remplir les champs (fdf_set_value()) et l'associer à un fichier PDF (fdf_set_file()). Finalement, le tout sera envoyé au client, avec le type MIME "application/vnd.fdf". Le module "Acrobat reader" de votre navigateur va reconnaître ce type MIME, et lire le fichier PDF, puis le remplis avec FDF.

Si vous éditez un fichier FDF avec un éditeur de texte, vous trouverez un catalogue d'objet avec le nom de FDF. Cet objet peut contenir des entrées telles que Fields, F, Status etc.. Les entrées les plus couramment utilisées sont Fields, qui indique une liste de champs de contrôle, et F qui contient le nom du fichier PDF a qui appartiennent ces données. Ces entrées sont désignées dans la documentation PDF sous le nom de /F-Key ou /Status-Key. La modification de ces entrées est possible avec les fonctions fdf_set_file() et fdf_set_status(). Les champs sont modifiables avec les fonctions fdf_set_value(), fdf_set_opt() etc..

Pré-requis

Vous aurez besoin du FDF toolkit SDK, disponible sur le site http://partners.adobe.com/asn/acrobat/forms.jsp. Depuis PHP 4.3, vous aurez besoin du SDK version 5.0. La librairie FDF toolkit est disponible sous forme de librarie compilée, éditée par Adobe, sur les systèmes d'exploitation Win32, Linux, Solaris et AIX.

Installation

You must compile PHP with --with-fdftk[=DIR].

Note : Si vous rencontrez des problèmes lors de la configuration de FDF avec le support fdftk, vérifiez que le fichier d'en-tête fdftk.h et la librairie libfdftk.so sont à leur place. Le fichier de configuration supporte la hierarchie de dossier de la distribution FDF SDK et l'organisation classique DIR/include et DIR/lib : vous pouvez donc utiliser l'un ou l'autre directement avec la distribution décompressée, ou bien en incluant le fichier d'en-têtes et la librairie appropriée dans votre système, c'est à dire dans /usr/local/include et /usr/local/lib. Il ne reste plus qu'à configurer avec --with-fdftk=/usr/local.

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies fdftk.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32).

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

fdf

La plupart des fonctions FDF nécessite une ressource de type fdf comme premier argument. Une ressource fdf est une structure qui représente un fichier FDF ouvert. Vous pouvez créer des ressources fdf avec les fonctions fdf_create(), fdf_open() et fdf_open_string().

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

FDFValue (entier)

FDFStatus (entier)

FDFFile (entier)

FDFID (entier)

FDFFf (entier)

FDFSetFf (entier)

FDFClearFf (entier)

FDFFlags (entier)

FDFSetF (entier)

FDFClrF (entier)

FDFAP (entier)

FDFAS (entier)

FDFAction (entier)

FDFAA (entier)

FDFAPRef (entier)

FDFIF (entier)

FDFEnter (entier)

FDFExit (entier)

FDFDown (entier)

FDFUp (entier)

FDFFormat (entier)

FDFValidate (entier)

FDFKeystroke (entier)

FDFCalculate (entier)

FDFNormalAP (entier)

FDFRolloverAP (entier)

FDFDownAP (entier)

Exemples

Les exemples suivants montre comme évaluer les données du formulaire.

Exemple 1. Evaluer un document FDF

<?php
// Ouvrir un fichier FDF depuis une cha&icirc;ne fournie par l'extension PDF
// Le formulaire PDF contient plusieurs champs texte avec les noms de
// volume, date, comment, publisher, preparer, et two bo&icirc;tes &agrave; cocher
// show_publisher et show_preparer.
$fdf = fdf_open_string($HTTP_FDF_DATA);
$volume = fdf_get_value($fdf, "volume");
echo "Le champ Volume contient la valeur : '<B>$volume</B>'<BR>";

$date = fdf_get_value($fdf, "date");
echo "La valeur du champ date &eacute;tait '<B>$date</B>'<br>";
$comment = fdf_get_value($fdf, "comment");
echo "La valeur du champ comment &eacute;tait '<B>$comment</B>'<br>";
if(fdf_get_value($fdf, "show_publisher") == "On") {
  $publisher = fdf_get_value($fdf, "publisher");
  echo "La valeur du champ Publisher &eacute;tait : '<B>$publisher</B>'<br>";
} else
  echo "La valeur du champ Publisher ne doit pas &ecirc;tre affich&eacute;e.<br>";
if(fdf_get_value($fdf, "show_preparer") == "On") {
  $preparer = fdf_get_value($fdf, "preparer");
  echo "La valeur du champ Preparer &eacute;tait  '<B>$preparer</B>'<br>";
} else
  echo "La valeur du champ Preparer ne doit pas &ecirc;tre affich&eacute;.<br>";
fdf_close($fdf);
?>

Table des matières
fdf_add_doc_javascript -- Ajoute du code javascript dans un document FDF
fdf_add_template -- Ajoute un template dans le document FDF
fdf_close -- Ferme un document FDF
fdf_create -- Crée un nouveau document FDF
fdf_enum_values -- Appelle une fonction utilisateur à chaque valeur FDF
fdf_errno -- Retourne le code d'erreur de la dernière opération FDF
fdf_error -- Retourne le message d'erreur FDF
fdf_get_ap -- Lit l'apparence d'un champ
fdf_get_attachment -- Extrait un fichier intégré dans un document FDF
fdf_get_encoding -- Lit la valeur de la clé /Encoding
fdf_get_file -- Lit la valeur de la clé /F
fdf_get_flags -- Lit les attributs d'un champ FDF
fdf_get_opt -- Lit une valeur dans un tableau de valeur d'un champ FDF
fdf_get_status -- Lit la valeur de la clé /STATUS
fdf_get_value -- Retourne la valeur d'un champ FDF
fdf_get_version -- Lit le numéro de version de l'API FDF
fdf_header -- Emet les en-têtes HTTP spécifiques à FDF
fdf_next_field_name -- Lit le nom du champ FDF suivant
fdf_open_string -- Lit un document FDF à partir d'une chaîne de caractères
fdf_open -- Ouvre un document FDF
fdf_remove_item -- Configure le cadre FDF de destination pour le formulaire
fdf_save_string -- Retourne un document FDF sous forme de chaîne
fdf_save -- Sauver un document FDF
fdf_set_ap -- Fixe l'apparence d'un champ FDF
fdf_set_encoding -- Modifie l'encodage des caractères
fdf_set_file -- Assigne une valeur à un champ FDF
fdf_set_flags -- Modifie une option d'un champ
fdf_set_javascript_action -- Modifie l'action javascript d'un champ
fdf_set_opt -- Modifie une option d'un champ
fdf_set_status -- Fixe la valeur de la clé /STATUS
fdf_set_submit_form_action -- Modifie l'action d'un formulaire
fdf_set_target_frame -- Configure le cadre de destination pour l'affichage du formulaire
fdf_set_value -- Modifie la valeur d'un champ FDF
fdf_set_version -- Modifie le numéro de version du fichier FDF

Précédent | Sommaire | Suivant
unlink | Niveau supérieur | fdf_add_doc_javascript


fdf_add_doc_javascript

(PHP 4 >= 4.3.0)

fdf_add_doc_javascript -- Ajoute du code javascript dans un document FDF

Description

bool fdf_add_doc_javascript ( resource fdfdoc, string script_name, string script_code)

fdf_add_doc_javascript() ajoute le code javascript script_code dans le document fdfdoc, qu'Acrobat ajoutera aux scripts de niveau document, une fois que FDF sera importé. Il est fortement recommandé d'utiliser '\r' comme séparateur de lignes dans le code script_code.

Exemple 1. Ajouter du code JavaScript à un document FDF

<?php
  $fdf = fdf_create();
  fdf_add_doc_javascript($fdf, "PlusOne", "function PlusOne(x)\r{\r  return x+1;\r}\r");
  fdf_save($fdf);
?>

Cet exemple va créer un document FDF comme celui ci :

%FDF-1.2
%&acirc;ãìÓ
1 0 obj
<<
/FDF << /JavaScript << /Doc [ (PlusOne)(function PlusOne\(x\)\r{\r  return x+1;\r}\r)] >> >>
>>
endobj
trailer
<<
/Root 1 0 R

>>
%%EOF

Précédent | Sommaire | Suivant
Forms Data Format | Niveau supérieur | fdf_add_template


fdf_add_template

(PHP 3>= 3.0.13, PHP 4 )

fdf_add_template -- Ajoute un template dans le document FDF

Description

bool fdf_add_template ( resource fdfdoc, int newpage, string filename, string template, int rename)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fdf_add_doc_javascript | Niveau supérieur | fdf_close


fdf_close

(PHP 3>= 3.0.6, PHP 4 )

fdf_close -- Ferme un document FDF

Description

bool fdf_close ( resource fdf_document)

fdf_close() ferme le document FDF.

Voir aussi fdf_open().

Précédent | Sommaire | Suivant
fdf_add_template | Niveau supérieur | fdf_create


fdf_create

(PHP 3>= 3.0.6, PHP 4 )

fdf_create -- Crée un nouveau document FDF

Description

resource fdf_create ( void )

fdf_create() crée un nouveau document FDF. Cette fonction est nécessaire pour ceux qui veulent pré remplir les champs d'un formulaire dans un fichier PDF.

Exemple 1. Pré remplir un formulaire PDF

<?php
  $outfdf = fdf_create();
  fdf_set_value($outfdf, "volume", $volume, 0);
  fdf_set_file($outfdf, "http:/testfdf/resultlabel.pdf");
  fdf_save($outfdf, "outtest.fdf");
  fdf_close($outfdf);
  Header("Content-type: application/vnd.fdf");
  $fp = fopen("outtest.fdf", "r");
  fpassthru($fp);
  unlink("outtest.fdf");
?>

Voir aussi
fdf_close(),
fdf_save() et
fdf_open().

Précédent | Sommaire | Suivant
fdf_close | Niveau supérieur | fdf_enum_values


fdf_enum_values

(PHP 4 >= 4.3.0)

fdf_enum_values -- Appelle une fonction utilisateur à chaque valeur FDF

Description

bool fdf_enum_values ( resource fdfdoc, callback function [, mixed userdata])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fdf_create | Niveau supérieur | fdf_errno


fdf_errno

(PHP 4 >= 4.3.0)

fdf_errno -- Retourne le code d'erreur de la dernière opération FDF

Description

int fdf_errno ( void )

fdf_errno() retourne le code d'erreur généré par la dernière opération FDF. Ce code vaut 0 si il n'y a pas eu d'erreur, ou une valeur non nulle en cas d'échec. Un message d'erreur est accessible via la fonction fdf_error() function.

Voir aussi fdf_error().

Précédent | Sommaire | Suivant
fdf_enum_values | Niveau supérieur | fdf_error


fdf_error

(PHP 4 >= 4.3.0)

fdf_error -- Retourne le message d'erreur FDF

Description

string fdf_error ( [int error_code])

fdf_error() retourne le message d'erreur FDF associé au code d'erreur error_code. Cette fonction utilise le dernier code d'erreur interne si error_code est homis. Sinon, fdf_error() est une fonction pratique pour le lire : fdf_error(fdf_errno()).

Voir aussi fdf_errno().

Précédent | Sommaire | Suivant
fdf_errno | Niveau supérieur | fdf_get_ap


fdf_get_ap

(PHP 4 >= 4.3.0)

fdf_get_ap -- Lit l'apparence d'un champ

Description

bool fdf_get_ap ( resource fdf_document, string field, int face, string filename)

fdf_get_ap() lit l'apparance du champ field (i.e. la valeur de la clé /AP) et le stocke dans le fichier filename. Les valeurs possibles de face sont FDFNormalAP, FDFRolloverAP et FDFDownAP. L'apparance est stockée dans le fichier filename.

Précédent | Sommaire | Suivant
fdf_error | Niveau supérieur | fdf_get_attachment


fdf_get_attachment

(PHP 4 >= 4.3.0)

fdf_get_attachment -- Extrait un fichier intégré dans un document FDF

Description

array fdf_get_attachment ( resource fdf_document, string fieldname, string savepath)

fdf_get_attachment() extrait le fichier fieldname téléchargé par le biais du champ "file selection", puis le stocke dans le fichier savepath. savepath peut être le nom d'un fichier ou bien un dossier dans lequel le fichier uploadé sera créé sous son nom original. Tout fichier déjà existant avec le même nom sera écrasé.

Note : Il semble qu'il n'y ait pas d'autre moyen pour connaître le nom du fichier téléchargé que de le stocker dans un dossier avec savepath puis de lire son nom dans le dossier.

Le tableau retourné contient les champs suivants :

  • path - chemin de stockage du dossier

    size - taille du fichier stocké en octets

    type - Type MIMI du fichier, si il a été fourni dans le document FDF

Exemple 1. Enregistrement d'un fichier téléchargé

<?php
  $fdf = fdf_open_string($HTTP_FDF_DATA);
  $data = fdf_get_attachment($fdf, "filename", "/tmpdir");
  echo "Le fichier t&eacute;l&eacute;charg&eacute; est stock&eacute; dans {$data['path']}";
?>

Précédent | Sommaire | Suivant
fdf_get_ap | Niveau supérieur | fdf_get_encoding


fdf_get_encoding

(PHP 4 >= 4.3.0)

fdf_get_encoding -- Lit la valeur de la clé /Encoding

Description

string fdf_get_encoding ( resource fdf_document)

The fdf_get_encoding() retourne la valeur de la clé /Encoding. Une chaîne vide est retournée si le schéma par défaut est utilisé : PDFDocEncoding/Unicode.

Voir aussi fdf_set_encoding().

Précédent | Sommaire | Suivant
fdf_get_attachment | Niveau supérieur | fdf_get_file


fdf_get_file

(PHP 3>= 3.0.6, PHP 4 )

fdf_get_file -- Lit la valeur de la clé /F

Description

string fdf_get_file ( resource fdf_document)

fdf_set_file() lit la valeur de la clé /F.

Voir aussi fdf_set_file().

Précédent | Sommaire | Suivant
fdf_get_encoding | Niveau supérieur | fdf_get_flags


fdf_get_flags

(PHP 4 >= 4.3.0)

fdf_get_flags -- Lit les attributs d'un champ FDF

Description

fdf_get_flags ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fdf_get_file | Niveau supérieur | fdf_get_opt


fdf_get_opt

(PHP 4 >= 4.3.0)

fdf_get_opt -- Lit une valeur dans un tableau de valeur d'un champ FDF

Description

mixed fdf_get_opt ( resource fdfdof, string fieldname [, int element])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fdf_get_flags | Niveau supérieur | fdf_get_status


fdf_get_status

(PHP 3>= 3.0.6, PHP 4 )

fdf_get_status -- Lit la valeur de la clé /STATUS

Description

string fdf_get_status ( resource fdf_document)

fdf_get_status() retourne la valeur de la clé /STATUS.

Voir aussi fdf_set_status().

Précédent | Sommaire | Suivant
fdf_get_opt | Niveau supérieur | fdf_get_value


fdf_get_value

(PHP 3>= 3.0.6, PHP 4 )

fdf_get_value -- Retourne la valeur d'un champ FDF

Description

string fdf_get_value ( resource fdf_document, string fieldname [, int which])

fdf_get_value() retourne la valeur du champ fieldname dans le document fdf_document.

Les éléments d'un champ tableau peuvent être lus en fournissant le paramètre optionnale which, sous la forme d'un entier donc la plus petite valeur sera 0. Pour les champs qui ne sont pas des tableaux, le paramètre optionnel which sera ignoré.

Note : Le support des tableaux et du paramètre optionnel which ont été ajouté en PHP 4.3.

Voir aussi fdf_set_value().

Précédent | Sommaire | Suivant
fdf_get_status | Niveau supérieur | fdf_get_version


fdf_get_version

(PHP 4 >= 4.3.0)

fdf_get_version -- Lit le numéro de version de l'API FDF

Description

string fdf_get_version ( [resource fdf_document])

fdf_get_version() retourne le numéro de version FDF pour le document fdf_document, pour pour l'API si aucun paramètre n'est donné.

Pour la version actuelle du FDF toolkit 5.0, le numéro de version est '5.0' et le numéro de version de document est '1.2', '1.3' ou '1.4'.

Voir aussi fdf_set_version().

Précédent | Sommaire | Suivant
fdf_get_value | Niveau supérieur | fdf_header


fdf_header

(PHP 4 >= 4.3.0)

fdf_header -- Emet les en-têtes HTTP spécifiques à FDF

Description

bool fdf_header ( void )

fdf_header est une fonction de confort, pour émettre les en-têtes HTTP spécifiques à FDF. Elle permet d'envoyer le type Content-type: avec la valeur application/vnd.fdf.

Précédent | Sommaire | Suivant
fdf_get_version | Niveau supérieur | fdf_next_field_name


fdf_next_field_name

(PHP 3>= 3.0.6, PHP 4 )

fdf_next_field_name -- Lit le nom du champ FDF suivant

Description

string fdf_next_field_name ( resource fdf_document [, string fieldname])

fdf_next_field_name() retourne le nom du champ après le champ fieldname ou le nom du premier champ, si le second paramètre est NULL.

Exemple 1. Détecter tous les noms d'un formulaire FDF

<?php
  $fdf = fdf_open($HTTP_FDF_DATA);
  for($field = fdf_next_field_name($fdf);
     $field != "";
     $field = fdf_next_field_name($fdf, $field)) {
     echo "Champ : $field\n";
  }
?>

Voir aussi fdf_enum_fields() et fdf_get_value().

Précédent | Sommaire | Suivant
fdf_header | Niveau supérieur | fdf_open_string


fdf_open_string

(PHP 4 >= 4.3.0)

fdf_open_string -- Lit un document FDF à partir d'une chaîne de caractères

Description

resource fdf_open_string ( string fdf_data)

fdf_open_string() lit les données du formulaire depuis la chaîne fdf_data. fdf_data doit contenir les données retournées par le formulaire PDF ou créé par les fonctions fdf_create() et fdf_save_string().

Vous pouvez utiliser fdf_open_string() avec la variable $HTTP_FDF_DATA pour traiter des données de formulaires issues de clients distants.

Exemple 1. Acc???s aux données de formulaire FDF

<?php
$fdf = fdf_open_string($HTTP_FDF_DATA);
...
fdf_close($fdf);
?>

Voir aussi
fdf_open(),
fdf_close(),
fdf_create() et
fdf_save_string().

Précédent | Sommaire | Suivant
fdf_next_field_name | Niveau supérieur | fdf_open


fdf_open

(PHP 3>= 3.0.6, PHP 4 )

fdf_open -- Ouvre un document FDF

Description

resource fdf_open ( string filename)

fdf_open() ouvre un fichier avec formulaire. Le fichier doit contenir les données retournées par le formulaire PDF. Actuellement, le fichier doit être créée 'manuellement', en utilisant la fonction fopen() et en y écrivant le contenu du tableau HTTP_FDF_DATA avec la fonction fwrite(). Un mécanisme comparable aux formulaires HTML qui créent une variable pour chaque champ entrant, n'existe pas.

Exemple 1. Accéder aux données du formulaire

<?php
// Sauver le fichier FDF dans un fichier temporaire.
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);
// Ouvrir le fichier temporaire, et utiliser les donn&eacute;es.
$fdf = fdf_open("test.fdf");
...
fdf_close($fdf);
?>

 Voir aussi
fdf_open_string(),
fdf_close(),
fdf_create() et
fdf_save().

Précédent | Sommaire | Suivant
fdf_open_string | Niveau supérieur | fdf_remove_item


fdf_remove_item

(PHP 4 >= 4.3.0)

fdf_remove_item -- Configure le cadre FDF de destination pour le formulaire

Description

bool fdf_remove_item ( resource fdfdoc, string fieldname, int item)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
fdf_open | Niveau supérieur | fdf_save_string


fdf_save_string

(PHP 4 >= 4.3.0)

fdf_save_string -- Retourne un document FDF sous forme de chaîne

Description

string fdf_save_string ( resource fdf_document)

fdf_save_string() retourne le document fdf_document sous forme de chaîne de caractères.

Exemple 1. Lire un document FDF sous forme de chaîne

<?php
$fdf = fdf_create();
fdf_set_value($fdf, "foo", "bar");
$str = fdf_save_string($fdf);
fdf_close($fdf);
echo $str;
?>

affichera

%FDF-1.2
%&acirc;ãìÓ
1 0 obj
<<
/FDF << /Fields 2 0 R >>
>>
endobj
2 0 obj
[
<< /T (foo)/V (bar)>>
]
endobj
trailer
<<
/Root 1 0 R

>>
%%EOF

Voir aussi
fdf_save(),
fdf_open_string(),
fdf_create() et
fdf_close().

Précédent | Sommaire | Suivant
fdf_remove_item | Niveau supérieur | fdf_save


fdf_save

(PHP 3>= 3.0.6, PHP 4 )

fdf_save -- Sauver un document FDF

Description

bool fdf_save ( resource fdf_document [, string filename])

fdf_save() sauve un document FDF. Le FDF Toolkit fournit un moyen d'envoyer le contenu d'un document FDF à au fichier de sortie stdout si le paramètre filename vaut '.'. Ceci ne fonctionne pas si PHP est sous la forme d'un module Apache. Dans ce cas, il faudra écrire le résultat dans un fichier, et utiliser fpassthru() pour l'afficher au client.

Voir aussi
fdf_save_string(),
fdf_create() et
fdf_close().

Précédent | Sommaire | Suivant
fdf_save_string | Niveau supérieur | fdf_set_ap


fdf_set_ap

(PHP 3>= 3.0.6, PHP 4 )

fdf_set_ap -- Fixe l'apparence d'un champ FDF

Description

bool fdf_set_ap ( resource fdf_document, string field_name, int face, string filename, int page_number)

fdf_set_ap() fixe l'apparence d'un champ (i.e. la valeur de la clé /AP). Les valeurs possibles de face sont sont 1=FDFNormalAP, 2=FDFRolloverAP, 3=FDFDownAP.

Précédent | Sommaire | Suivant
fdf_save | Niveau supérieur | fdf_set_encoding


fdf_set_encoding

(PHP 4 >= 4.1.0)

fdf_set_encoding -- Modifie l'encodage des caractères

Description

bool fdf_set_encoding ( resource fdf_document, string encoding)

fdf_set_encoding() modifie l'encodage des caractères du document FDF fdf_document. Le paramètre encoding doit être un nom d'encodage valide. Pour Acrobat 5.0, un nom valide peut notamment être "Shift-JIS", "UHC", "GBK" ou "BigFive".

fdf_set_encoding() a été ajoutée en PHP 4.1.0.

Précédent | Sommaire | Suivant
fdf_set_ap | Niveau supérieur | fdf_set_file


fdf_set_file

(PHP 3>= 3.0.6, PHP 4 )

fdf_set_file -- Assigne une valeur à un champ FDF

Description

bool fdf_set_file ( resource fdf_document, string url [, string target_frame])

fdf_set_file() fixe la valeur de la clé /F. la clé /F est simplement une référence sur un formulaire PDF qui doit être pré-remplis. Dans un environnement web, c'est une URL (e.g. http:/testfdf/resultlabel.pdf).

Le cadre utilisé pour l'affichage dans le document peut être sélectionné avec le paramètre optionnel target_frame ou la fonction fdf_set_target_frame().

Exemple 1. Passer des données FDF à un second formulaire

<?php
  /* Configure l'en-t&ecirc;te pour Adobe FDF */
  fdf_header();

  /* D&eacute;marre un nouveau fichier FDF */
  $fdf = fdf_create();

  /* Assigne au champ "foo" la valeur de "bar" */
  $fdf_set_value($fdf, "foo", "bar");

  /* Indique au client d'afficher les donn&eacute;es FDF avec "fdf_form.pdf" */
  fdf_set_file($fdf, "http://www.example.com/fdf_form.pdf");

  /* Affiche le FDF */
  fdf_save();

  /* Nettoie */
  fdf_close();
?>

Voir aussi fdf_get_file() et fdf_set_target_frame().

Précédent | Sommaire | Suivant
fdf_set_encoding | Niveau supérieur | fdf_set_flags


fdf_set_flags

(PHP 4 >= 4.0.2)

fdf_set_flags -- Modifie une option d'un champ

Description

bool fdf_set_flags ( resource fdf_document, string fieldname, int whichflags, int newflags)

fdf_set_flags() modifie certaines options du champ fieldname.

Voir aussi fdf_set_opt().

Précédent | Sommaire | Suivant
fdf_set_file | Niveau supérieur | fdf_set_javascript_action


fdf_set_javascript_action

(PHP 4 >= 4.0.2)

fdf_set_javascript_action -- Modifie l'action javascript d'un champ

Description

bool fdf_set_javascript_action ( resource fdf_document, string fieldname, int trigger, string script)

fdf_set_javascript_action() affecte un javascript au champ fieldname, exécuté lors de la validation d'un formulaire.

Voir aussi fdf_set_submit_form_action().

Précédent | Sommaire | Suivant
fdf_set_flags | Niveau supérieur | fdf_set_opt


fdf_set_opt

(PHP 4 >= 4.0.2)

fdf_set_opt -- Modifie une option d'un champ

Description

bool fdf_set_opt ( resource fdf_document, string fieldname, int element, string str1, string str2)

fdf_set_opt() modifie les options du champ fieldname.

Voir aussi fdf_set_flags().

Précédent | Sommaire | Suivant
fdf_set_javascript_action | Niveau supérieur | fdf_set_status


fdf_set_status

(PHP 3>= 3.0.6, PHP 4 )

fdf_set_status -- Fixe la valeur de la clé /STATUS

Description

bool fdf_set_status ( resource fdf_document, string status)

fdf_set_status() fixe la valeur de la clé /STATUS.

Voir aussi fdf_get_status().

Précédent | Sommaire | Suivant
fdf_set_opt | Niveau supérieur | fdf_set_submit_form_action


fdf_set_submit_form_action

(PHP 4 >= 4.0.2)

fdf_set_submit_form_action -- Modifie l'action d'un formulaire

Description

bool fdf_set_submit_form_action ( resource fdf_document, string fieldname, int trigger, string script, int flags)

fdf_set_submit_form_action() affecte un javascript au champ fieldname, exécuté lors de la validation d'un formulaire.

Voir aussi fdf_set_javascript_action().

Précédent | Sommaire | Suivant
fdf_set_status | Niveau supérieur | fdf_set_target_frame


fdf_set_target_frame

(PHP 4 >= 4.3.0)

fdf_set_target_frame -- Configure le cadre de destination pour l'affichage du formulaire

Description

bool fdf_set_target_frame ( resource fdf_document, string frame_name)

fdf_target_frame configure le cadre de destination pour l'affichage du résultat PDF défini par fdf_save_file().

Voir aussi fdf_save_file().

Précédent | Sommaire | Suivant
fdf_set_submit_form_action | Niveau supérieur | fdf_set_value


fdf_set_value

(PHP 3>= 3.0.6, PHP 4 )

fdf_set_value -- Modifie la valeur d'un champ FDF

Description

bool fdf_set_value ( resource fdf_document, string fieldname, mixed value [, int isname])

fdf_set_value() fixe la valeur d'un champ. Le dernier paramètre détermine si la valeur doit être convertie en nom PDF (isname = 1) ou affecter une chaîne PDF à un contrôle (isname = 0).

Voir aussi fdf_get_value() et fdf_remove_item().

Précédent | Sommaire | Suivant
fdf_set_target_frame | Niveau supérieur | fdf_set_version


fdf_set_version

(PHP 4 >= 4.3.0)

fdf_set_version -- Modifie le numéro de version du fichier FDF

Description

string fdf_set_version ( resource fdf_document, string version)

fdf_set_version() modifie le numéro de version du document fdf_document par la version fdf_document. Certaines fonctionnalités supportées par cette extension ne sont disponibles que pour les nouvelles versions de FDF. Pour le FDF toolkit 5.0 courant, version peut valior '1.2', '1.3' ou '1.4'.

Voir aussi fdf_get_version().

Précédent | Sommaire | Suivant
fdf_set_value | Niveau supérieur | FriBiDi


FriBiDi

Manuel PHP
Précédent Suivant

XXXII. FriBiDi

Introduction

FriBiDi est une implementation libre de l'algorithme bidirectionnel unicode.

Pré-requis

Vous devez télécharger et installer la librairie FriBiDi.

Installation

Pour activer le support FriBiDi, vous devez compilers PHP avec l'option --with-fribidi[=DIR] où DIR est le dossier d'installation de FriBiDi.

Configuration à l'exécution

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

FRIBIDI_CHARSET_UTF8 (entier)

FRIBIDI_CHARSET_8859_6 (entier)

FRIBIDI_CHARSET_8859_8 (entier)

FRIBIDI_CHARSET_CP1255 (entier)

FRIBIDI_CHARSET_CP1256 (entier)

FRIBIDI_CHARSET_ISIRI_3342 (entier)

Table des matières
fribidi_log2vis -- Convertit une chaîne logique en chaîne visuelle

Précédent | Sommaire | Suivant
fdf_set_version | Niveau supérieur | fribidi_log2vis


fribidi_log2vis

(4.0.4 - 4.3.2 only)

fribidi_log2vis -- Convertit une chaîne logique en chaîne visuelle

Description

string fribidi_log2vis ( string str, string direction, int charset)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
FriBiDi | Niveau supérieur | FTP


FTP

Manuel PHP
Précédent Suivant

XXXIII. FTP

Introduction

FTP : File Transfer Protocol (Protocole de transfert de fichiers). Ces fonctions implémentent un client pour accéder aux serveurs FTP, comme défini dans http://www.faqs.org/rfcs/rfc959.html.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Pour activer le module FTP de votre configuration PHP, il faut utiliser l'option --enable-ftp en PHP 4, et l'option --with-ftp en PHP 3 avec le script de configuration.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

This extension uses one resource type, which is the link identifier of the FTP connection.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

FTP_ASCII (entier)

FTP_TEXT (entier)

FTP_BINARY (entier)

FTP_IMAGE (entier)

FTP_TIMEOUT_SEC (entier)

Voir ftp_set_option() pour les détails.

Les constantes suivantes ont été introduites en PHP 4.3.0.

FTP_AUTOSEEK (entier)

Voir ftp_set_option() pour les détails.

FTP_AUTORESUME (entier)

Déterimine automatiquement la position de reprise (RESUME) et la position de début pour les requêtes GET et PUT (ne fonctionne qu'avec FTP_AUTOSEEK)

FTP_FAILED (entier)

Le mode asynchrone a échoué

FTP_FINISHED (entier)

Le mode asynchrone a terminé

FTP_MOREDATA (entier)

Le mode asynchrone est encore actif

Exemples

Exemple 1. Exemple FTP

<?php
// cr&eacute;ation de la connexion
$conn_id = ftp_connect($ftp_server);

// authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// v&eacute;rification de la connexion
if ((!$conn_id) || (!$login_result)) {
        echo "La connexion FTP a &eacute;chou&eacute;!";
        echo "Tentative de connexion &agrave; $ftp_server avec $ftp_user_name";
        die;
    } else {
        echo "Connected to $ftp_server, for user $ftp_user_name";
    }

// t&eacute;l&eacute;chargement d'un fichier
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// V&eacute;rification de t&eacute;l&eacute;chargement
if (!$upload) {
        echo "Le t&eacute;l&eacute;chargement FTP a &eacute;chou&eacute;!";
    } else {
        echo "T&eacute;l&eacute;chargement de $source_file sur $ftp_server en $destination_file";
    }

// fermeture de la connexion FTP.
ftp_close($conn_id);
?>

Table des matières
ftp_alloc -- Alloue de l'espace pour un téléchargement de fichier
ftp_cdup -- Change de dossier et passe au dossier parent
ftp_chdir -- Change le dossier FTP courant
ftp_chmod -- Modifie les droits d'un fichier via FTP
ftp_close -- Ferme une connexion FTP
ftp_connect -- Ouvre une connexion FTP
ftp_delete -- Efface un fichier sur un serveur FTP
ftp_exec -- Exécute une commande sur le serveur FTP
ftp_fget -- Télécharge un fichier via FTP dans un flux local
ftp_fput -- Charge un fichier sur un serveur FTP
ftp_get_option -- Lit différenctes options pour la connexion FTP courante
ftp_get -- Télécharge un fichier depuis un serveur FTP
ftp_login -- Identification avec une connexion FTP
ftp_mdtm -- Retourne la date de dernière modification d'un fichier sur un serveur FTP.
ftp_mkdir -- Crée un dossier sur un serveur FTP
ftp_nb_continue -- Reprend le téléchargement d'un fichier (non bloquant)
ftp_nb_fget -- Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)
ftp_nb_fput -- Ecrit un fichier sur un serveur FTP, et le lit depuis un fichier (non bloquant)
ftp_nb_get -- Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)
ftp_nb_put -- Envoie un fichier sur le serveur FTP (non-bloquant)
ftp_nlist -- Retourne la liste des fichiers dans un dossier
ftp_pasv -- Active ou désactive le mode passif
ftp_put -- Charge un fichier sur un serveur FTP
ftp_pwd -- Retourne le nom du dossier courant
ftp_quit -- Ferme une connexion FTP
ftp_raw -- Envoie une commande FTP brute
ftp_rawlist -- Fait une liste détaillée de fichiers dans un dossier
ftp_rename -- Renomme un fichier sur un serveur FTP
ftp_rmdir -- Efface un dossier FTP
ftp_set_option -- Modifie les options de la connexion FTP
ftp_site -- Envoie la commande SITE au serveur
ftp_size -- Retourne la taille d'un fichier.
ftp_ssl_connect -- Ouvre une connexion FTP sécurisée avec SSL
ftp_systype -- Retourne un identifiant de type de serveur FTP.

Précédent | Sommaire | Suivant
fribidi_log2vis | Niveau supérieur | ftp_alloc


ftp_alloc

(no version information, might be only in CVS)

ftp_alloc -- Alloue de l'espace pour un téléchargement de fichier

Description

bool ftp_alloc ( resource ftp_stream, int filesize [, string &result])

ftp_alloc() envoie la commande FTP ALLO pour allouer un espace sur le serveur FTP de filesize octets. ftp_alloc() returne TRUE en cas de succès, et FALSE sinon.

Note : De nombreux serveur FTP ne supportent pas cette commande. Ces serveurs peuvent retourner un code d'erreur (FALSE) qui indique que la commande n'est pas supportée, ou (TRUE) pour dire que la pré-allocation n'est pas nécessaire : le client continue alors ses opérations de la même façon. A cause de cela, il est préférable de n'utiliser cette fonction qu'avec les serveurs qui requièrent spécifiquement cette fonction.

Une représentation textuelle de la réponse du serveur sera retournée dans le paramètre result, qui doit alors être fournit par référence.

Exemple 1. Exemple avec ftp_alloc()

<?php

$file = "/home/user/myfile";

/* Connexion au serveur */
$conn_id = ftp_connect('ftp.example.com);
$login_result = ftp_login($conn_id, 'anonymous', 'user@example.com');

if (ftp_alloc($conn_id, filesize($file), $result)) {
  echo "L'espace a pu &ecirc;tre r&eacute;serv&eacute; sur le serveur. Envoi de $file.\n";
  ftp_put($conn_id, '/incomming/myfile', $file, FTP_BINARY);
} else {
  echo "Impossible d'allouer l'espace sur le serveur. Le serveur a dit : $result\n";
}

ftp_close($conn_id);

?>

Voir aussi ftp_put() et ftp_fput().

Précédent | Sommaire | Suivant
FTP | Niveau supérieur | ftp_cdup


ftp_cdup

(PHP 3>= 3.0.13, PHP 4 )

ftp_cdup -- Change de dossier et passe au dossier parent

Description

bool ftp_cdup ( resource ftp_stream)

ftp_cdup() change de dossier et passe au dossier parent.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ftp_chdir().

Précédent | Sommaire | Suivant
ftp_alloc | Niveau supérieur | ftp_chdir


ftp_chdir

(PHP 3>= 3.0.13, PHP 4 )

ftp_chdir -- Change le dossier FTP courant

Description

bool ftp_chdir ( resource ftp_stream, string directory)

ftp_chdir() change le dossier courant en directory.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_chdir()

<?php

// Connexion
$conn_id = ftp_connect($ftp_server);

// Identification par login et mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// V&eacute;rification de la connexion
if ((!$conn_id) || (!$login_result)) {
    die("La connexion FTP a &eacute;chou&eacute;!");
}

echo "Dossier courant : ", ftp_pwd($conn_id), "\n";

if (@ftp_chdir($conn_id, "somedir")) {
    echo "Le dossier courant est maintenant : ", ftp_pwd($conn_id), "\n";
} else {
    echo "Impossible de changer le dossier courant.\n";
}
?>

Voir aussi ftp_cdup().

Précédent | Sommaire | Suivant
ftp_cdup | Niveau supérieur | ftp_chmod


ftp_chmod

(PHP 5 CVS only)

ftp_chmod -- Modifie les droits d'un fichier via FTP

Description

string ftp_chmod ( resource ftp_stream, int mode, string filename)

ftp_chmod() modifie les droits d'accès au fichier filename sur le serveur FTP ftp_stream, en leur attribuant les droits de mode, spécifié sous la forme d'un entier en base octale.

ftp_chmod() retourne les permissions du fichier en cas de succès et FALSE sinon.

Voir aussi chmod().

Précédent | Sommaire | Suivant
ftp_chdir | Niveau supérieur | ftp_close


ftp_close

(PHP 4 >= 4.2.0)

ftp_close -- Ferme une connexion FTP

Description

void ftp_close ( resource ftp_stream)

Note : ftp_close() n'est disponible que dans les sources du CVS.

ftp_close() ferme la connexion ftp_stream et libère les ressources. Après avoir appelé cette fonction, vous ne pouvez plus utiliser l'ancienne connexion, et vous devez en ouvrir une nouvelle avec ftp_connect().

Précédent | Sommaire | Suivant
ftp_chmod | Niveau supérieur | ftp_connect


ftp_connect

(PHP 3>= 3.0.13, PHP 4 )

ftp_connect -- Ouvre une connexion FTP

Description

resource ftp_connect ( string host [, int port [, int timeout]])

ftp_connect() retourne un flux FTP en cas de succès, et FALSE sinon.

ftp_connect() ouvre une connexion FTP avec l'hôte host. Le paramètre port spécifie le port de connexion. S'il est omis, le port 21 sera utilisé.

Le paramètre timeout spécifie la durée d'expiration des opérations réseaux ultérieures. Si il est omis, il vaut par défaut 90 secondes. Ce délai d'expiration peut être modifiée et lu à tout moment avec les fonctions ftp_set_option() et ftp_get_option().

Note : Le paramètre timeout a été ajouté en PHP 4.2.0.

Exemple 1. Exemple avec ftp_connect()

<?php

$ftp_server = "ftp.exemple.com";

// ouvre une connexion ou &eacute;choue
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter &agrave; $ftp_server");

?>

Voir aussi ftp_close() et ftp_ssl_connect().

Précédent | Sommaire | Suivant
ftp_close | Niveau supérieur | ftp_delete


ftp_delete

(PHP 3>= 3.0.13, PHP 4 )

ftp_delete -- Efface un fichier sur un serveur FTP

Description

bool ftp_delete ( resource ftp_stream, string path)

ftp_delete() efface le fichier path sur un serveur FTP.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ftp_connect | Niveau supérieur | ftp_exec


ftp_exec

(PHP 4 >= 4.0.3)

ftp_exec -- Exécute une commande sur le serveur FTP

Description

bool ftp_exec ( resource ftp_stream, string command)

ftp_exec() envoie une commande SITE EXEC au serveur FTP, pour qu'il exécute le programme command. ftp_exec() retourne le résultat de la commande si elle a réussi, et FALSE sinon.

Voir aussi ftp_raw().

Précédent | Sommaire | Suivant
ftp_delete | Niveau supérieur | ftp_fget


ftp_fget

(PHP 3>= 3.0.13, PHP 4 )

ftp_fget -- Télécharge un fichier via FTP dans un flux local

Description

bool ftp_fget ( resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos])

ftp_fget() télécharge le fichier remote_file depuis le serveur FTP, et l'écrit dans le fichier identifié par handle. Le mode de transfert mode spécifié doit être FTP_ASCII ou FTP_BINARY.

Note : La paramètre resumepos a été ajouté en PHP 4.3.0.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ftp_get(),
ftp_nb_get() et
ftp_nb_fget().

Précédent | Sommaire | Suivant
ftp_exec | Niveau supérieur | ftp_fput


ftp_fput

(PHP 3>= 3.0.13, PHP 4 )

ftp_fput -- Charge un fichier sur un serveur FTP

Description

bool ftp_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos])

ftp_fput() charge les données issues du fichier identifié par handle jusqu'à la fin du fichier. Le résultat est stocké dans le fichier remote_file sur le serveur FTP. Le mode de transfert mode spécifié doit être FTP_ASCII ou FTP_BINARY.

Note : Le paramètre startpos a été ajouté en PHP 4.3.0.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ftp_put(),
ftp_nb_fput() et
ftp_nb_put().

Précédent | Sommaire | Suivant
ftp_fget | Niveau supérieur | ftp_get_option


ftp_get_option

(PHP 4 >= 4.2.0)

ftp_get_option -- Lit différenctes options pour la connexion FTP courante

Description

mixed ftp_get_option ( resource ftp_stream, int option)

Note : ftp_get_option() n'est disponible que dans le CVS.

ftp_get_option() retourne la valeur de l'option option en cas de succès, et FALSE si l'option option n'est pas supportée. Dans ce dernier cas, un message d'erreur est alors affiché.

ftp_get_option() retourne la valeur de l'option option pour la connexion ftp_stream. Actuellement, les options suivantes sont supportées :

Tableau 1. Options FTP supportées

FTP_TIMEOUT_SEC Retourne le délai d'expiration pour les opérations liées au réseau.

Exemple 1. Exemple avec ftp_get_option()

<?php
  // Lit le d&eacute;lai d'expiration pour la connexion en cours
  $timeout = ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
?>

Voir aussi ftp_set_option().

Précédent | Sommaire | Suivant
ftp_fput | Niveau supérieur | ftp_get


ftp_get

(PHP 3>= 3.0.13, PHP 4 )

ftp_get -- Télécharge un fichier depuis un serveur FTP

Description

bool ftp_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos])

ftp_get() télécharge le fichier remote_file depuis le serveur FTP, et le sauve dans le fichier local local_file. Le mode de transfert mode spécifié doit être soit FTP_ASCII ou FTP_BINARY.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ftp_fget(),
ftp_nb_get() et
ftp_nb_fget().

Précédent | Sommaire | Suivant
ftp_get_option | Niveau supérieur | ftp_login


ftp_login

(PHP 3>= 3.0.13, PHP 4 )

ftp_login -- Identification avec une connexion FTP

Description

bool ftp_login ( resource ftp_stream, string username, string password)

ftp_login() authentifie le flux FTP.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_login()

<?php

$ftp_server = "ftp.exemple.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// Connexion
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// Tentative de login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo "Connect&eacute; avec $ftp_user@$ftp_server\n";
} else {
    echo "Impossible de se connecter avec $ftp_user\n";
}

?>

Précédent | Sommaire | Suivant
ftp_get | Niveau supérieur | ftp_mdtm


ftp_mdtm

(PHP 3>= 3.0.13, PHP 4 )

ftp_mdtm -- Retourne la date de dernière modification d'un fichier sur un serveur FTP.

Description

int ftp_mdtm ( resource ftp_stream, string remote_file)

ftp_mdtm() retourne un UNIX timestamp en cas de succès, et FALSE sinon.

ftp_mdtm() lit la date de dernière modification d'un fichier et retourne le UNIX timestamp. Si une erreur survient, ou si le fichier n'existe pas,la valeur -1 est retournée. Certains serveurs FTP ne supportent pas cette fonction.

Précédent | Sommaire | Suivant
ftp_login | Niveau supérieur | ftp_mkdir


ftp_mkdir

(PHP 3>= 3.0.13, PHP 4 )

ftp_mkdir -- Crée un dossier sur un serveur FTP

Description

string ftp_mkdir ( resource ftp_stream, string directory)

ftp_mkdir() retourne le nom du dossier ainsi créé en cas de succès, et FALSE sinon.

ftp_mkdir() crée le dossier nommé directory.

Voir aussi ftp_rmdir().

Précédent | Sommaire | Suivant
ftp_mdtm | Niveau supérieur | ftp_nb_continue


ftp_nb_continue

(PHP 4 >= 4.3.0)

ftp_nb_continue -- Reprend le téléchargement d'un fichier (non bloquant)

Description

bool ftp_nb_continue ( resource ftp_stream)

ftp_nb_continue() reprend le téléchargement d'un fichier, de manière asynchrone.

ftp_nb_continue() retourne FTP_FAILED ou FTP_FINISHED, ou encore FTP_MOREDATA.

Précédent | Sommaire | Suivant
ftp_mkdir | Niveau supérieur | ftp_nb_fget


ftp_nb_fget

(PHP 4 >= 4.3.0)

ftp_nb_fget -- Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)

Description

bool ftp_nb_fget ( resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos])

ftp_nb_fget() lit le fichier remote_file présent sur le serveur FTP ftp_stream, puis écrit ce fichier dans le pointeur de fichier handle. Le mode de transfert mode spécifié peut être FTP_ASCII ou FTP_BINARY. La différence entre cette fonction et ftp_fget() est que cette fonction peut lire le fichier de manière asynchrone, de manière à ce que votre programme fasse autre chose, pendant que le fichier est téléchargé.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ftp_nb_get(),
ftp_nb_continue(),
ftp_fget() et
ftp_get().

Précédent | Sommaire | Suivant
ftp_nb_continue | Niveau supérieur | ftp_nb_fput


ftp_nb_fput

(PHP 4 >= 4.3.0)

ftp_nb_fput -- Ecrit un fichier sur un serveur FTP, et le lit depuis un fichier (non bloquant)

Description

bool ftp_nb_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos])

ftp_nb_fput() écrit le fichier remote_file présent sur la machine locale, sur le serveur FTP ftp_stream, puis lui donne le nom de handle. Le mode de transfert mode spécifié peut être FTP_ASCII ou FTP_BINARY. La différence entre cette fonction et ftp_fput() est que cette fonction peut lire le fichier de manière asynchrone, de manière à ce que votre programme fasse autre chose, pendant que le fichier est téléchargé.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ftp_nb_put(),
ftp_nb_continue(),
ftp_put() et
ftp_fput().

Précédent | Sommaire | Suivant
ftp_nb_fget | Niveau supérieur | ftp_nb_get


ftp_nb_get

(PHP 4 >= 4.3.0)

ftp_nb_get -- Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)

Description

bool ftp_nb_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos])

ftp_nb_get() lit le fichier remote_file présent sur le serveur FTP ftp_stream, puis écrit ce fichier dans le pointeur de fichier handle. Le mode de transfert mode spécifié peut être FTP_ASCII ou FTP_BINARY. La différence entre cette fonction et ftp_fget() est que cette fonction peut lire le fichier de manière asynchrone, de manière à ce que votre programme fasse autre chose, pendant que le fichier est téléchargé.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_nb_get()

// Initialisation
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // Faites ce que vous voulez
   echo ".";

   // Continue le chargement
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement du fichier...";
   exit(1);
}

Exemple 2. Reprise d'un chargement avec ftp_nb_get()

// Initialisation
$ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY,
                      filesize("test"));
// Ou : $ret = ftp_nb_get ($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   // Faites ce que vous voulez
   echo ".";

   // Continue le chargement
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement du fichier...";
   exit(1);
}

Exemple 3. Reprise du téléchargement à la position 100 avec ftp_nb_get()

// D&eacute;sactive l'option de Autoseek
ftp_set_option ($my_connection, FTP_AUTOSEEK, FALSE);

// Initialisation
$ret = ftp_nb_get ($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {

   ...

   // Continue le chargement
   $ret = ftp_nb_continue ($my_connection);
}

Dans l'exemple ci-dessus, "newfile" est 100 octets plus petit que "README" sur le site FTP, car nous avons commencé à lire à l'offset 100. Si nous n'avions pas désactivé l'option FTP_AUTOSEEK, les premiers 100 octets du fichier seraient complétés avec '\0'.

Voir aussi
ftp_nb_fget(),
ftp_nb_continue(),
ftp_get() et
ftp_fget().

Précédent | Sommaire | Suivant
ftp_nb_fput | Niveau supérieur | ftp_nb_put


ftp_nb_put

(PHP 4 >= 4.3.0)

ftp_nb_put -- Envoie un fichier sur le serveur FTP (non-bloquant)

Description

bool ftp_nb_put ( resource ftp_stream, string remote_file, string local_file, int mode [, int startpos])

ftp_nb_put() écrit le fichier remote_file présent sur la machine locale, sur le serveur FTP ftp_stream, puis lui donne le nom de handle. Le mode de transfert mode spécifié peut être FTP_ASCII ou FTP_BINARY. La différence entre cette fonction et ftp_fput() est que cette fonction peut lire le fichier de manière asynchrone, de manière à ce que votre programme fasse autre chose, pendant que le fichier est téléchargé.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_nb_put()

// Initialisation
$ret = ftp_nb_put($my_connection, "test.remote", "test.local", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // Faites ce que vous voulez
   echo ".";

   // Continue le t&eacute;l&eacute;chargement...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement...";
   exit(1);
}

Exemple 2. Resuming an upload with ftp_nb_put()

// Initialisation
$ret = ftp_nb_put ($my_connection, "test.remote", "test.local",
                      FTP_BINARY, ftp_size("test.remote"));
// ou bien : $ret = ftp_nb_put ($my_connection, "test.remote", "test.local",
//                           FTP_BINARY, FTP_AUTORESUME);

while ($ret == FTP_MOREDATA) {

   // Faites ce que vous voulez
   echo ".";

   // Continue le t&eacute;l&eacute;chargement...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement...";
   exit(1);
}

Voir aussi
ftp_nb_fput(),
ftp_nb_continue(),
ftp_put() et
ftp_fput().

Précédent | Sommaire | Suivant
ftp_nb_get | Niveau supérieur | ftp_nlist


ftp_nlist

(PHP 3>= 3.0.13, PHP 4 )

ftp_nlist -- Retourne la liste des fichiers dans un dossier

Description

array ftp_nlist ( resource ftp_stream, string directory)

ftp_nlist() retourne un tableau contenant les noms des fichiers en cas de succès, et FALSE sinon.

Exemple 1. Exemple avec ftp_nlist()

<?php

// Connexion
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// V&eacute;rification de la connexion
if ((!$conn_id) || (!$login_result)) {
    die("La connexion a &eacute;chou&eacute; !");
}

// Lire le contenu du dossier root
$contents = ftp_nlist($conn_id, "/");

// Afficher les entr&eacute;es
foreach ($contents as $entry) {
    echo $entry, "<br />\n";
}

?>

Voir aussi ftp_rawlist().

Précédent | Sommaire | Suivant
ftp_nb_put | Niveau supérieur | ftp_pasv


ftp_pasv

(PHP 3>= 3.0.13, PHP 4 )

ftp_pasv -- Active ou désactive le mode passif

Description

bool ftp_pasv ( resource ftp_stream, bool pasv)

ftp_pasv() active le mode passif si pasv est à TRUE (et le désactive si pasv est à FALSE). En mode passif, les données de connexion sont initiées par le client, plutôt que par le serveur.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ftp_nlist | Niveau supérieur | ftp_put


ftp_put

(PHP 3>= 3.0.13, PHP 4 )

ftp_put -- Charge un fichier sur un serveur FTP

Description

bool ftp_put ( resource ftp_stream, string remote_file, string local_file, int mode [, int startpos])

ftp_put() enregistre le fichier local_file sur le serveur FTP, sous le nom de remote_file. Le mode de transfert mode spécifié doit être FTP_ASCII ou FTP_BINARY.

Note : Le paramètre startpos a été ajouté en PHP 4.3.0.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_put()

<?php
  $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_ASCII);
?>

Voir aussi
ftp_fput(),
ftp_nb_fput() et
ftp_nb_put().

Précédent | Sommaire | Suivant
ftp_pasv | Niveau supérieur | ftp_pwd


ftp_pwd

(PHP 3>= 3.0.13, PHP 4 )

ftp_pwd -- Retourne le nom du dossier courant

Description

string ftp_pwd ( resource ftp_stream)

ftp_pwd() retourne le nom du dossier courant, ou FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
ftp_put | Niveau supérieur | ftp_quit


ftp_quit

(PHP 3>= 3.0.13, PHP 4 )

ftp_quit -- Ferme une connexion FTP

Description

void ftp_quit ( resource ftp_stream)

ftp_quit() ferme la connexion ftp_stream.

ftp_quit() est un alias de ftp_close().

Précédent | Sommaire | Suivant
ftp_pwd | Niveau supérieur | ftp_raw


ftp_raw

(PHP 5 CVS only)

ftp_raw -- Envoie une commande FTP brute

Description

array ftp_raw ( resource ftp_stream, string command)

ftp_raw() envoie la commande FTP brute command au serveur FTP identifié par ftp_stream. ftp_raw() retourne alors la réponse du serveur sous forme d'un tableau de chaînes. Aucun traitement de la réponse n'est fait et ftp_raw() ne tente pas de savoir si la commande a réussi ou échouée.

Exemple 1. Utilisation de ftp_raw() pour se logger manuellement

<?php
  $fp = ftp_connect("ftp.exemple.com");

/* Ceci est la m&ecirc;me chose que
   ftp_login($fp, "joeblow", "secret"); */

  ftp_raw($fp, "USER joeblow");
  ftp_raw($fp, "PASS secret");
?>

Voir aussi ftp_exec().

Précédent | Sommaire | Suivant
ftp_quit | Niveau supérieur | ftp_rawlist


ftp_rawlist

(PHP 3>= 3.0.13, PHP 4 )

ftp_rawlist -- Fait une liste détaillée de fichiers dans un dossier

Description

array ftp_rawlist ( resource ftp_stream, string directory)

ftp_rawlist() exécute la commande FTP LIST, et retourne le résultat dans un tableau. Chaque élément du tableau correspond à une ligne du résultat de la commande. Le résultat n'est pas analysé, et est retourné brut. L'identifiant de système retourné par ftp_systype() sera utile pour déterminer la façon d'interpréter le résultat.

Voir aussi ftp_nlist().

Précédent | Sommaire | Suivant
ftp_raw | Niveau supérieur | ftp_rename


ftp_rename

(PHP 3>= 3.0.13, PHP 4 )

ftp_rename -- Renomme un fichier sur un serveur FTP

Description

bool ftp_rename ( resource ftp_stream, string from, string to)

ftp_rename() renomme le fichier ou dossier from en to, sur le serveur ftp_stream.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ftp_rawlist | Niveau supérieur | ftp_rmdir


ftp_rmdir

(PHP 3>= 3.0.13, PHP 4 )

ftp_rmdir -- Efface un dossier FTP

Description

bool ftp_rmdir ( resource ftp_stream, string directory)

ftp_rmdir() efface le dossier directory.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ftp_mkdir().

Précédent | Sommaire | Suivant
ftp_rename | Niveau supérieur | ftp_set_option


ftp_set_option

(PHP 4 >= 4.2.0)

ftp_set_option -- Modifie les options de la connexion FTP

Description

bool ftp_set_option ( resource ftp_stream, int option, mixed value)

ftp_set_option() retourne TRUE si l'option option a pu être modifiée avec la nouvelle valeur value, et FALSE sinon. Un message d'erreur sera affiché si option n'est pas supporté, ou si la valeur value n'est pas une valeur valide pour l'option option.

Cette fonction contrôle différentes options de connexion. Le paramètre value dépend de l'option option choisie. Actuellement, les options suivantes sont supportées :

Tableau 1. Options de connexion FTP

FTP_TIMEOUT_SEC | Modifie le délai d'expiration pour les opérations réseau. value doit être un entier positif ou null. La valeur par défaut est de 90 secondes.
FTP_AUTOSEEK | Lorsque cette option est activée, les requêtes de GET et PUT avec le paramètre resumepos ou startpos va générer un positionnement automatique du pointeur dans le fichier. C'est le comportement par défaut.

Exemple 1. Exemple avec ftp_set_option()

<?php
  // modifie le d&eacute;lai d'expiration pour les op&eacute;rations
  //r&eacute;seau &agrave; 10 secondes
  ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10);
?>

Voir aussi ftp_get_option().

Précédent | Sommaire | Suivant
ftp_rmdir | Niveau supérieur | ftp_site


ftp_site

(PHP 3>= 3.0.15, PHP 4 )

ftp_site -- Envoie la commande SITE au serveur

Description

bool ftp_site ( resource ftp_stream, string cmd)

ftp_site() envoie la commande cmd au serveur FTP. Les commandes SITE ne sont pas normalisées, et peuvent varier d'un serveur à l'autre. Elles permettent de gérer notamment les permissions de fichier, et les groupes.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ftp_set_option | Niveau supérieur | ftp_size


ftp_size

(PHP 3>= 3.0.13, PHP 4 )

ftp_size -- Retourne la taille d'un fichier.

Description

int ftp_size ( resource ftp_stream, string remote_file)

ftp_size() retourne la taille du fichier en cas de succès, et FALSE sinon.

ftp_size() retourne la taille d'un fichier sur un serveur FTP. Si une erreur survient, ou que le fichier n'existe pas, la valeur -1 est retournée. Certains serveurs FTP ne supportent pas cette fonction.

Voir aussi ftp_rawlist().

Précédent | Sommaire | Suivant
ftp_site | Niveau supérieur | ftp_ssl_connect


ftp_ssl_connect

(PHP 4 >= 4.3.0)

ftp_ssl_connect -- Ouvre une connexion FTP sécurisée avec SSL

Description

resource ftp_ssl_connect ( string host [, int port [, int timeout]])

ftp_ssl_connect() retourne un flux FTP sécurisé par SSL en cas de succès et FALSE sinon.

ftp_ssl_connect() ouvre une connexion SSL-FTP avec le serveur FTP host. Le paramètre port spécifie un port alternatif. Si il est omis, ou bien configuré à 0, alors la valeur par défaut est 21.

Le paramètre timeout spécifie la durée d'expiration des opérations de réseaux ultérieures. Si elle est omise, cette valeur vaut 90 secondes. La durée d'expiration des opérations réseau peut être lue et modifiée avec les fonctions ftp_set_option() et ftp_get_option().

Pourquoi cette fonction peut ne pas exister : ftp_ssl_connect() est uniquement disponible si OpenSSL a été ajouté dans la liste des extensions de PHP. Si vous avez compilé PHP avec le support FTP mais que cette fonction est indisponible, alors c'est la raison.

Voir aussi ftp_connect().

Précédent | Sommaire | Suivant
ftp_size | Niveau supérieur | ftp_systype


ftp_systype

(PHP 3>= 3.0.13, PHP 4 )

ftp_systype -- Retourne un identifiant de type de serveur FTP.

Description

string ftp_systype ( resource ftp_stream)

ftp_systype() retourne le type de serveur, ou FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
ftp_ssl_connect | Niveau supérieur | Fonctions


Fonctions

Manuel PHP
Précédent Suivant

XXXIV. Fonctions

Introduction

Ces fonctions effectuent les manipulations liées à la gestion des fonctions.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
call_user_func_array -- Appelle une fonction utilisateur avec les paramètres rassemblés en tableau
call_user_func -- Appelle une fonction utilisateur
create_function -- Crée une fonction anonyme (style lambda)
func_get_arg -- Retourne un élément de la liste des arguments
func_get_args -- Retourne les arguments d'une fonction sous forme de tableau
func_num_args -- Retourne le nombre d'arguments passé à la fonction
function_exists -- Indique si une fonction est définie
get_defined_functions -- Liste toutes les fonctions définies
register_shutdown_function -- Enregistre une fonction pour exécution à l'extinction
register_tick_function -- Enregistre une fonction exécutée à chaque tick
unregister_tick_function -- Annule la fonction exécutée à chaque tick

Précédent | Sommaire | Suivant
ftp_systype | Niveau supérieur | call_user_func_array


call_user_func_array

(PHP 4 >= 4.0.4)

call_user_func_array -- Appelle une fonction utilisateur avec les paramètres rassemblés en tableau

Description

mixed call_user_func_array ( callback function [, array paramarr])

call_user_func_array() appelle la fonction utilisateur function_name avec les paramètres paramarr, rassemblés dans un tableau.

Exemple 1. Exemple avec call_user_func_array()

function debug($var, $val)
    echo "***DEBUGGING\nVARIABLE: $var\nVALUE:";
    if (is_array($val) || is_object($val) || is_resource($val))
        print_r($val);
    else
        echo "\n$val\n";
    echo "***\n";
}

$c = mysql_connect();
$host = $_SERVER["SERVER_NAME"];

call_user_func_array ('debug', array("host", $host));
call_user_func_array ('debug', array("c", $c));
call_user_func_array ('debug', array("_POST", $_POST));

Voir aussi
call_user_func(),
call_user_method() et
call_user_method_array().

Précédent | Sommaire | Suivant
Fonctions | Niveau supérieur | call_user_func


call_user_func

(PHP 3>= 3.0.3, PHP 4 )

call_user_func -- Appelle une fonction utilisateur

Description

mixed call_user_func ( callback function [, mixed parameter [, mixed ...]])

call_user_func() appelle la fonction utilisateur function_name, et lui passe les paramètres parameter.

Exemple 1. Exemple avec call_user_func()

<?php
  function barbier ($type) {
    print "Vous vouliez une coupe $type, pas de probl&egrave;me";
  }

  call_user_func('barbier', "&agrave; la one again");
  call_user_func('barbier', "militaire");
  call_user_func('barbier', "au bol");
?>

Les méthodes d'objets peuvent être appelées statiquement en passant array($objectname, $methodname) au paramètre function.

Exemple 2. Exemple avec call_user_func() et une méthode de classe

<?php
class maclasse {
  function dit_bonjour() {
    print "Bonjour!\n";
  }
}

$classname = "maclasse";

call_user_func(array($classname,'dit_bonjour'));
?>

Voir aussi
call_user_func_array(),
call_user_method() et
call_user_method_array().

Précédent | Sommaire | Suivant
call_user_func_array | Niveau supérieur | create_function


create_function

(PHP 4 >= 4.0.1)

create_function -- Crée une fonction anonyme (style lambda)

Description

string create_function ( string args, string code)

create_function() crée une fonction anonyme, à partir des paramètres passés, et retourne un nom de fonction unique. Généralement, les arguments args sont présentés sous la forme d'une chaîne à guillemets simples, et la même recommandation vaut pour code. La raison de l'utilisation des guillemets simples est de proteger les noms de variables du remplacement par leur valeur. Si vous utilisez les guillemets doubles, n'oubliez pas d'échapper les noms de variables (i.e. \$avar).

Vous pouvez utiliser cette fonction pour (par exemple) créer une fonction à partir d'informations récoltés durant l'exécution.

Exemple 1. Création d'une fonction anonyme avec create_function()

<?php
  $newfunc = create_function('$a,$b','return "ln($a) + ln($b) = ".log($a * $b);');
  echo "Nouvelle fonction anonyme : $newfunc\n";
  echo $newfunc(2,M_E)."\n";
// affichera :
// Nouvelle fonction anonyme : lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>
Ou, pour pouvoir appliquer une fonction générique à une liste d'arguments.

Exemple 2. Traitement générique par fonction avec create_function()

<?php
function process($var1, $var2, $farr) {
    for ($f=0; $f < count($farr); $f++)
    echo $farr[$f]($var1,$var2)."\n";
}

// Cr&eacute;ation d'une s&eacute;rie de fonction math&eacute;matiques
$f1 = 'if ($a>=0) {return "b*a^2 = ".$b*sqrt($a);} else {return FALSE;}';
$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
$f3 = 'if ($a> 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b;} else {return FALSE;}';
$farr = array(
    create_function('$x,$y', 'return "un peu de trigo : ".(sin($x) + $x*cos($y));'),
    create_function('$x,$y', 'return "une hypot&eacute;nuse: ".sqrt($x*$x + $y*$y);'),
    create_function('$a,$b', $f1),
    create_function('$a,$b', $f2),
    create_function('$a,$b', $f3)
    );

echo "\nUtilisation de la premi&egrave;re liste de fonctions anonymes\n";
echo "param&eacute;tres: 2.3445, M_PI\n";
process(2.3445, M_PI, $farr);

// Maintenant une liste de fonction sur cha&icirc;ne de caract&egrave;res
$garr = array(
    create_function('$b,$a','if (strncmp($a,$b,3) == 0) return "** \"$a\" '.
    'et \"$b\"\n** Ces cha&icirc;nes de ressemblent!! (regarde les trois premiers caract&egrave;res)";'),
    create_function('$a,$b','; return "CRCs: ".crc32($a)." , ".crc32(b);'),
    create_function('$a,$b','; return "similarit&eacute;(a,b) = ".similar_text($a,$b,&$p)."($p%)";')
    );
echo "\nUtilisation de la secondes liste de fonctions anonymes\n";
process("Twas brilling and the slithy toves", "Twas the night", $garr);
?>

Et lorsque vous utilisez le code ci-dessus, l'affichage sera

Utilisation de la premi&egrave;re liste de fonctions anonymes
param&eacute;tres: 2.3445, M_PI
un peu de trigo : -1.6291725057799
une hypot&eacute;nuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Utilisation de la secondes liste de fonctions anonymes
** "Twas the night" et "Twas brilling and the slithy toves"
** Ces cha&icirc;nes de ressemblent!! (regarde les trois premiers caract&egrave;res)
CRCs: -725381282 , 1908338681
similarit&eacute;(a,b) = 11(45.833333333333%)
Mais l'utilisation la plus courante des fonctions lambda est la fonction de callback, par exemple lors de l'utilisation de array_walk() ou usort()

Exemple 3. Utilisation de fonctions anonymes comme fonction de callback

<?php
$av = array("la ","une ","cette ","une certaine ");
array_walk($av, create_function('&$v,$k','$v = $v."maison";'));
print_r($av);  // En PHP 3 utilisez var_dump()
// affiche:
// Array
// (
//   [0] => la maison
//   [1] => une maison
//   [2] => cette maison
//   [3] => une certaine maison
// )
// un tableau de cha&icirc;ne class&eacute; par taille
$sv = array("petite","moyenne","tres longue","vraiment tres longue");
print_r($sv);
// affiche:
// Array
// (
//   [0] => petite
//   [1] => moyenne
//   [2] => tres longue
//   [3] => vraiment tres longue
// )
// Tri par ordre de taille d&eacute;croissant
usort($sv, create_function('$a,$b','return strlen($b) - strlen($a);'));
print_r($sv);
// outputs:
// Array
// (
//   [0] => vraiment tres longue
//   [1] => tres longue
//   [2] => moyenne
//   [3] => petite
// )
?>

Précédent | Sommaire | Suivant
call_user_func | Niveau supérieur | func_get_arg


func_get_arg

(PHP 4 )

func_get_arg -- Retourne un élément de la liste des arguments

Description

mixed func_get_arg ( int arg_num)

func_get_arg() retourne l'argument à la position arg_num dans la liste d'argument d'une fonction utilisateur. Les arguments sont comptés en commençant à zéro. func_get_arg() générera une alerte si elle est appelée hors d'une fonction.

Si arg_num est plus grand que le nombre d'arguments passés, une alerte est générée et la fonction retourne FALSE.

Exemple 1. Exemple avec func_get_arg()

<?php
  function foo() {
     $numargs = func_num_args();
     echo "Nombre d'arguments: $numargs<BR>\n";
     if ($numargs >= 2) {
     echo "Le second argument est: " . func_get_arg (1) . "<BR>\n";
     }
  }
  foo(1, 2, 3);
?>

func_get_arg() peut être utilisé
conjointement à func_num_args() et
func_get_args() pour permettre aux fonctions
utilisateurs d'accepter un nombre variable d'arguments.

Note : func_get_arg() a été ajoutée en PHP 4.

Précédent | Sommaire | Suivant
create_function | Niveau supérieur | func_get_args


func_get_args

(PHP 4 )

func_get_args -- Retourne les arguments d'une fonction sous forme de tableau

Description

array func_get_args ( void )

func_get_args() retourne un tableau dont les éléments correspondent aux éléments de la liste d'arguments de la fonction. func_get_args() générera une alerte si elle est appelée hors d'une fonction.

Exemple 1. Exemple avec func_get_args()

<?php
  function foo() {
    $numargs = func_num_args();
    echo "Nombre d'arguments: $numargs<BR>\n";
    if ($numargs >= 2) {
       echo "Le second argument est : " . func_get_arg (1) . "<BR>\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
       echo "L'argument $i est : " . $arg_list[$i] . "<BR>\n";
    }
  }
  foo(1, 2, 3);
?>

func_get_arg() peut être utilisé
conjointement à func_num_args() et
func_get_args() pour permettre aux fonctions
utilisateurs d'accepter un nombre variable d'arguments.

Note : func_get_arg() a été ajoutée en PHP 4.

Précédent | Sommaire | Suivant
func_get_arg | Niveau supérieur | func_num_args


func_num_args

(PHP 4 )

func_num_args -- Retourne le nombre d'arguments passé à la fonction

Description

int func_num_args ( void )

func_num_args() retourne le nombre d'arguments passé à la fonction utilisateur courante. func_num_args() générera une alerte si elle est appelée hors d'une fonction.

Exemple 1. Exemple avec func_num_args()

<?php
  function foo() {
    $numargs = func_num_args();
    echo "Nombre d'arguments: $numargs\n";
  }
  foo (1, 2, 3);    // affiche 'Nombre d'arguments: 3'
?>

func_get_arg() peut être utilisé
conjointement à func_num_args() et
func_get_args() pour permettre aux fonctions
utilisateurs d'accepter un nombre variable d'arguments.

Note : func_get_arg() a été ajoutée en PHP 4.

Précédent | Sommaire | Suivant
func_get_args | Niveau supérieur | function_exists


function_exists

(PHP 3>= 3.0.7, PHP 4 )

function_exists -- Indique si une fonction est définie

Description

bool function_exists ( string function_name)

function_exists() vérifie la liste des fonctions définies par l'utilisateur. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec function_exists()

<?php
  if (function_exists('imap_open')) {
    echo "Les fonctions IMAP sont disponibles.<BR>\n";
  } else {
    echo "Les fonctions IMAP ne sont pas disponibles.<BR>\n";
  }
?>
Notez qu'une fonction peut exister, même si elle est indisponible, à cause de la configuration ou des options de compilation.

Voir aussi method_exists() et get_defined_functions().

Précédent | Sommaire | Suivant
func_num_args | Niveau supérieur | get_defined_functions


get_defined_functions

(PHP 4 >= 4.0.4)

get_defined_functions -- Liste toutes les fonctions définies

Description

array get_defined_functions ( void )

get_defined_functions() retourne un tableau multi- dimensionnel, contenant la liste de toutes les fonctions définies, aussi bien les fonctions internes à PHP que celle déjà définie par l'utilisateur. Les noms des fonctions internes sont accessibles via $arr["internal"], et les fonctions utilisateur sont accessibles via $arr["user"].

Exemple 1. Exemple avec get_defined_functions()

<?php
  function maligne($id, $data) {
    return "<tr><th>$id</th><td>$data</td></tr>\n";
  }
  $arr = get_defined_functions();
  print_r($arr);
?>

Ce script va afficher :

Array
(
    [internal] => Array
        (
            [0] => zend_version
            [1] => func_num_args
            [2] => func_get_arg
            [3] => func_get_args
            [4] => strlen
            [5] => strcmp
            [6] => strncmp
            ...
            [750] => bcscale
            [751] => bccomp
        )
    [user] => Array
        (
            [0] => maligne
        )
)

Voir aussi get_defined_vars() et get_defined_constants().

Précédent | Sommaire | Suivant
function_exists | Niveau supérieur | register_shutdown_function


register_shutdown_function

(PHP 3>= 3.0.4, PHP 4 )

register_shutdown_function -- Enregistre une fonction pour exécution à l'extinction

Description

void register_shutdown_function ( callback function)

register_shutdown_function() enregistre la fonction func pour exécution à l'extinction du script.

Plusieurs appels à register_shutdown_function() sont possibles dans le même script, et les fonctions seront appelées dans le même ordre que celui dans elles sont enregistrées. SI vous appelez exit() durant l'une des fonctions d'extinction, le processus sera définitivement arrété, sans que les autres fonctions soient appelées.

Les fonctions d'extinction sont appelées après la fin de la requête (notamment les buffers ont été vidés), ce qui fait qu'il est impossible d'afficher du texte depuis cette fonction, avec echo() ou print(), ou encore de lire le contenu des buffers avec ob_get_contents().

Note : Typiquement, les fonctions non définies causent des erreurs fatales en PHP, mais lorsque la fonction function est appelée avec register_shutdown_function() en étant non définie, une erreur de type E_WARNING est générée. De plus, pour des raisons internes à PHP cette erreur va être indiquée comme Unknown at line #0.

Voir aussi auto_append_file, exit(), et la section sur la gestion des connexions.

Précédent | Sommaire | Suivant
get_defined_functions | Niveau supérieur | register_tick_function


register_tick_function

(PHP 4 >= 4.0.3)

register_tick_function -- Enregistre une fonction exécutée à chaque tick

Description

void register_tick_function ( callback function [, mixed arg])

register_tick_function() enregistre la fonction func pour être exécutée à chaque fois qu'un tick est appelé.

Exemple 1. Exemple avec register_tick_function()

<?php
// Utilisation d'une fonction de callback
register_tick_function('ma_function', TRUE);

// Utilisation d'une m&eacute;thode d'objet
$objet = new ma_classe();
register_tick_function(array(&$objet, 'ma_methode'), TRUE);
?>

Voir aussi declare() et unregister_tick_function().

Précédent | Sommaire | Suivant
register_shutdown_function | Niveau supérieur | unregister_tick_function


unregister_tick_function

(PHP 4 >= 4.0.3)

unregister_tick_function -- Annule la fonction exécutée à chaque tick

Description

void unregister_tick_function ( string function_name)

unregister_tick_function() annule l'exécution automatique de func à chaque tick.

Précédent | Sommaire | Suivant
register_tick_function | Niveau supérieur | Gettext (GNU)


Gettext (GNU)

Manuel PHP
Précédent Suivant

XXXV. Gettext (GNU)

Les fonctions gettext implémentent l'API NLS (Native Language Support) qui peut servir à internationaliser vos scripts PHP. Lisez la documentation GNU pour plus d'explications sur ces fonctions.

Table des matières
bind_textdomain_codeset -- Specify the character encoding in which the messages from the DOMAIN message catalog will be returned
bindtextdomain -- Fixe le chemin d'un domaine
dcgettext -- Remplace le domaine lors d'une recherche.
dcngettext -- Plural version of dcgettext
dgettext -- Remplace le domaine courant.
dngettext -- Plural version of dgettext
gettext -- Recherche un message dans le domaine courant.
ngettext -- Plural version of gettext
textdomain -- Fixe le domaine par défaut

Précédent | Sommaire | Suivant
unregister_tick_function | Niveau supérieur | bind_textdomain_codeset


bind_textdomain_codeset

(PHP 4 >= 4.2.0)

bind_textdomain_codeset -- Specify the character encoding in which the messages from the DOMAIN message catalog will be returned

Description

string bind_textdomain_codeset ( string domain, string codeset)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Gettext (GNU) | Niveau supérieur | bindtextdomain


bindtextdomain

(PHP 3>= 3.0.7, PHP 4 )

bindtextdomain -- Fixe le chemin d'un domaine

Description

string bindtextdomain ( string domain, string directory)

bindtextdomain() fixe le chemin du domaine domain à directory. Cette fonction retourne le chemin complet pour le domaine courament utilisé.

Exemple 1. Exemple avec bindtextdomain()

<?php

$domain = 'monappli';
echo bindtextdomain($domain, '/usr/share/monappli/locale');

?>

cela affichera :

/usr/share/monappli/locale

Précédent | Sommaire | Suivant
bind_textdomain_codeset | Niveau supérieur | dcgettext


dcgettext

(PHP 3>= 3.0.7, PHP 4 )

dcgettext -- Remplace le domaine lors d'une recherche.

Description

string dcgettext ( string domain, string message, int category)

dcgettext() permet de remplacer le domaine courant lors de la recherche d'un message. Elle permet aussi de spécifier une catégorie.

Précédent | Sommaire | Suivant
bindtextdomain | Niveau supérieur | dcngettext


dcngettext

(PHP 4 >= 4.2.0)

dcngettext -- Plural version of dcgettext

Description

string dcngettext ( string domain, string msgid1, string msgid2, int n, int category)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
dcgettext | Niveau supérieur | dgettext


dgettext

(PHP 3>= 3.0.7, PHP 4 )

dgettext -- Remplace le domaine courant.

Description

string dgettext ( string domain, string message)

dgettext() remplace le domaine courant.

Précédent | Sommaire | Suivant
dcngettext | Niveau supérieur | dngettext


dngettext

(PHP 4 >= 4.2.0)

dngettext -- Plural version of dgettext

Description

string dngettext ( string domain, string msgid1, string msgid2, int n)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
dgettext | Niveau supérieur | gettext


gettext

(PHP 3>= 3.0.7, PHP 4 )

gettext -- Recherche un message dans le domaine courant.

Description

string gettext ( string message)

gettext() retourne une chaîne traduite, si elle en a trouvé une dans la table de traduction, ou bien le message message, s'il n'a pas été trouvé. Vous pouvez utiliser le caractère souligné (_) comme alias de cette fonction.

Exemple 1. Vérification gettext()

<?php
// Choix l'allemand
putenv("LANG=de");
// Spécifie la localisation des tables de traduction
bindtextdomain("myPHPApp", "./locale");
// Choisit le domaine
textdomain("myPHPApp");
// Affiche un message de test
print (gettext ("Bienvenue sur mon application PHP"));
?>

Précédent | Sommaire | Suivant
dngettext | Niveau supérieur | ngettext


ngettext

(PHP 4 >= 4.2.0)

ngettext -- Plural version of gettext

Description

string ngettext ( string msgid1, string msgid2, int n)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
gettext | Niveau supérieur | textdomain


textdomain

(PHP 3>= 3.0.7, PHP 4 )

textdomain -- Fixe le domaine par défaut

Description

string textdomain ( string text_domain)

textdomain() fixe le domaine text_domain à utiliser lors des recherches avec gettext(). Ce domaine dépend généralement de l'application. Le domaine par défaut précédent est retourné. Appelez cette fonction avec NULL comme paramètre pour avoir la valeur courante, sans la modifier.

Précédent | Sommaire | Suivant
ngettext | Niveau supérieur | GMP


GMP

Manuel PHP
Précédent Suivant

XXXVI. GMP

Introduction

Ces fonctions vous permettent de travailler avec des nombres de taille arbitraire, en utilisant la librairie GNU MP.

Ces fonctions ont été ajoutées en PHP 4.0.4.

Note : La majorité des fonctions GMP acceptent des nombres GMP comme arguments, définis ci-dessous comme resource. Cependant, la plupart de ces fonctions acceptent aussi des nombres et des chaînes à partir du moment où on peut les convertir en nombre. Si une fonction utilisant les entiers est plus rapide, elle sera automatiquement appelée si les arguments fournis sont des entiers. Cela se fait de manière transparente : vous pouvez donc utiliser des entiers avec les fonctions GMP sans perte de vitesse. Voir aussi gmp_init().

Avertissement

Si vous voulez explicitement spécifier un entier de grande taille, spécifiez le sous forme de chaîne. Si vous ne le faite pas, PHP va interpréter votre entier, et le transformer en une représentation interne, qui vous fera surement perdre de la précision.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Vous pouvez télécharger GMP sur le site de http://www.swox.com/gmp/. Ce site propose aussi un manuel GMP.

Vous devez utiliser GMP version 2 ou plus récent pour utiliser ces fonctions. Certaines d'entre elles peuvent requérir une version encore plus récente de GMP.

Installation

Pour pouvoir y accéder, vous devez compiler PHP avec le support GMP en utilisant l'option --with-gmp.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

GMP_ROUND_ZERO (entier)

GMP_ROUND_PLUSINF (entier)

GMP_ROUND_MINUSINF (entier)

Exemples

Exemple 1. Factorielle avec GMP

<?php
function fact($x) {
  if($x <= 1)
        return 1;
  else
        return gmp_mul($x,fact($x-1));
}
print gmp_strval(fact(1000))."\n";
?>

Cet exemple va calculer factorielle de 1000 (un plutôt grand nombre) très vite.

Voir aussi

D'autres fonctions mathématiques sont disponibles avec les extensions Nombres de grande taille BCMath et Mathématiques.

Table des matières
gmp_abs -- Valeur absolue GMP
gmp_add -- Addition de 2 nombres GMP
gmp_and -- ET logique
gmp_clrbit -- Annule un bit
gmp_cmp -- Compare des nombres GMP
gmp_com -- Calcule le complémentaire d'un nombre
gmp_div_q -- Divisions de 2 nombres GMP
gmp_div_qr -- Divise deux nombres GMP
gmp_div_r -- Reste de la division de deux nombres GMP
gmp_div -- Divise deux nombres GMP
gmp_divexact -- Division exacte de nombres GMP
gmp_fact -- Factorielle GMP
gmp_gcd -- PGCD
gmp_gcdext -- PGCD étendu
gmp_hamdist -- Distance de Hamming
gmp_init -- Crée un nombre GMP
gmp_intval -- Convertit un nombre GMP en entier
gmp_invert -- Inverse modulo
gmp_jacobi -- Symbole de Jacobi
gmp_legendre -- Symbole de Legendre
gmp_mod -- Modulo GMP
gmp_mul -- Multiplication de 2 nombres GMP
gmp_neg -- Opposé de nombre GMP
gmp_or -- OU logique
gmp_perfect_square -- Carré parfait GMP
gmp_popcount -- Compte de population
gmp_pow -- Puissance
gmp_powm -- Puissance et modulo
gmp_prob_prime -- Nombre GMP probablement premier
gmp_random -- Nombre GMP aléatoire
gmp_scan0 -- Recherche 0
gmp_scan1 -- Recherche 1
gmp_setbit -- Modifie un bit
gmp_sign -- Signe du nombre GMP
gmp_sqrt -- Racine carrée GMP
gmp_sqrtrm -- Racine carrée avec reste GMP
gmp_strval -- Convertit un nombre GMP en chaîne
gmp_sub -- Soustraction de 2 nombres GMP
gmp_xor -- OU exclusif logique

Précédent | Sommaire | Suivant
textdomain | Niveau supérieur | gmp_abs


gmp_abs

(PHP 4 >= 4.0.4)

gmp_abs -- Valeur absolue GMP

Description

resource gmp_abs ( resource a)

gmp_abs() retourne la valeur absolue de a.

Précédent | Sommaire | Suivant
GMP | Niveau supérieur | gmp_add


gmp_add

(PHP 4 >= 4.0.4)

gmp_add -- Addition de 2 nombres GMP

Description

resource gmp_add ( resource a, resource b)

gmp_add() additionne les nombres GMP a et b. Le résultat est un nombre GMP.

Précédent | Sommaire | Suivant
gmp_abs | Niveau supérieur | gmp_and


gmp_and

(PHP 4 >= 4.0.4)

gmp_and -- ET logique

Description

resource gmp_and ( resource a, resource b)

gmp_and() calcule le ET logique de a et b.

Précédent | Sommaire | Suivant
gmp_add | Niveau supérieur | gmp_clrbit


gmp_clrbit

(PHP 4 >= 4.0.4)

gmp_clrbit -- Annule un bit

Description

resource gmp_clrbit ( resource &a, int index)

gmp_clrbit() met le bit index à 0 dans le nombre GMP a.

Précédent | Sommaire | Suivant
gmp_and | Niveau supérieur | gmp_cmp


gmp_cmp

(PHP 4 >= 4.0.4)

gmp_cmp -- Compare des nombres GMP

Description

int gmp_cmp ( resource a, resource b)

gmp_cmp() retourne une valeur positive si a > b, zéro si a = b et négative si a < b.

Précédent | Sommaire | Suivant
gmp_clrbit | Niveau supérieur | gmp_com


gmp_com

(PHP 4 >= 4.0.4)

gmp_com -- Calcule le complémentaire d'un nombre

Description

resource gmp_com ( resource a)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
gmp_cmp | Niveau supérieur | gmp_div_q


gmp_div_q

(PHP 4 >= 4.0.4)

gmp_div_q -- Divisions de 2 nombres GMP

Description

resource gmp_div_q ( resource a, resource b [, int round])

gmp_div_q() divise le nombre GMP b par a. Le résultat est un entier. L'arrondi du résultat est défini par round, qui peut prendre l'une des valeurs suivantes :

  • gmp_round_zero: Le résultat est tronqué vers 0.

  • gmp_round_plusinf: Le résultat est tronqué vers +infinity

  • gmp_round_minusinf: Le résultat est tronqué vers -infinity

gmp_div_q() peut aussi être appelée gmp_div().

Voir aussi gmp_div_r() et gmp_div_qr().

Précédent | Sommaire | Suivant
gmp_com | Niveau supérieur | gmp_div_qr


gmp_div_qr

(PHP 4 >= 4.0.4)

gmp_div_qr -- Divise deux nombres GMP

Description

array gmp_div_qr ( resource n, resource d [, int round])

gmp_div_qr() divise n par d et retourne un tableau, dont le premier élément est [n/d] (le quotient entier de la division) et le second est (n - [n/d] * d) (le reste).

Voir gmp_div_q() pour une description du paramètre round.

Exemple 1. Division de nombres GMP

<?php
    $a = gmp_init ("0x41682179fbf5");
    $res = gmp_div_qr ($a, "0xDEFE75");
    printf("Le r&eacute;sultat est : q - %s, r - %s",
             gmp_strval($res[0]), gmp_strval($res[1]));
?>

Voir aussi gmp_div_q() et gmp_div_r().

Précédent | Sommaire | Suivant
gmp_div_q | Niveau supérieur | gmp_div_r


gmp_div_r

(PHP 4 >= 4.0.4)

gmp_div_r -- Reste de la division de deux nombres GMP

Description

resource gmp_div_r ( resource n, resource d [, int round])

gmp_div_r() le reste de la division entière de n par d. Le reste a le même signe que n, s'il est non nul.

Voir gmp_div_q() pour une description du paramètre round.

Voir aussi gmp_div_q() et gmp_div_qr().

Précédent | Sommaire | Suivant
gmp_div_qr | Niveau supérieur | gmp_div


gmp_div

(PHP 4 >= 4.0.4)

gmp_div -- Divise deux nombres GMP

Description

resource gmp_div ( resource a, resource b)

gmp_div() est un alias de gmp_div_q().

Précédent | Sommaire | Suivant
gmp_div_r | Niveau supérieur | gmp_divexact


gmp_divexact

(PHP 4 >= 4.0.4)

gmp_divexact -- Division exacte de nombres GMP

Description

resource gmp_divexact ( resource n, resource d)

gmp_divexact() divis n par d, en utilisant les algorithmes de "division exacte". Cette fonction ne fournit de résultats cohérents que s'il est su par avance que d divise n.

Précédent | Sommaire | Suivant
gmp_div | Niveau supérieur | gmp_fact


gmp_fact

(PHP 4 >= 4.0.4)

gmp_fact -- Factorielle GMP

Description

resource gmp_fact ( int a)

gmp_fact() calcule la factorielle de a : a!.

Précédent | Sommaire | Suivant
gmp_divexact | Niveau supérieur | gmp_gcd


gmp_gcd

(PHP 4 >= 4.0.4)

gmp_gcd -- PGCD

Description

resource gmp_gcd ( resource a, resource b)

gmp_gcd() calcule de PGCD (plus grand commun diviseur) de a et b. Le résultat est toujours positif, même si l'un des deux (ou les deux) nombres est négatif.

Précédent | Sommaire | Suivant
gmp_fact | Niveau supérieur | gmp_gcdext


gmp_gcdext

(PHP 4 >= 4.0.4)

gmp_gcdext -- PGCD étendu

Description

array gmp_gcdext ( resource a, resource b)

gmp_gcdext() calcule les entiers g, s, et t, tels que a*s + b*t = g = gcd(a,b), où gcd est le pgcd de a et b. La fonction retourne un tableau avec les index g, s et t.

Cette fonction peut être utilisée pour résoudre des équations diophantines linéaires à deux variables. Ces équations n'ont qu'une seule solution entière, et elles sont de la forme :

Pour plus d'informations, voyez les pages pages "Diophantine Equation" sur MathWorld, en anglais.

Exemple 1. Résolution d'une équation Diophantine linéaire

// R&eacute;solution de l'&eacute;quation a*s + b*t = g
// o&ugrave; a = 12, b = 21, g = gcd(12, 21) = 3
$a = gmp_init(12);
$b = gmp_init(21);
$g = gmp_gcd($a, $b);
$r = gmp_gcdext($a, $b);

$check_gcd = (gmp_strval($g) == gmp_strval($r['g']));
$eq_res = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t']));
$check_res = (gmp_strval($g) == gmp_strval($eq_res));

if ($check_gcd && $check_res) {
    $fmt = "Solution: %d*%d + %d*%d = %d\n";
    printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b),
    gmp_strval($r['t']), gmp_strval($r['g']));
} else {
    echo "Erreur lors de la r&eacute;solution de l'&eacute;quation\n";
}

// R&eacute;sultat : Solution : 12*2 + 21*-1 = 3

Précédent | Sommaire | Suivant
gmp_gcd | Niveau supérieur | gmp_hamdist


gmp_hamdist

(PHP 4 >= 4.0.4)

gmp_hamdist -- Distance de Hamming

Description

int gmp_hamdist ( resource a, resource b)

gmp_hamdist() retourne la distance de Hamming entre a et b. Les deux paramètres doivent être strictement positifs.

Précédent | Sommaire | Suivant
gmp_gcdext | Niveau supérieur | gmp_init


gmp_init

(PHP 4 >= 4.0.4)

gmp_init -- Crée un nombre GMP

Description

resource gmp_init ( mixed number)

gmp_init() crée un nombre GMP, à partir d'un entier ou d'une chaîne. Les chaînes peuvent être en décimal ou en hexadécimal. Dans ce dernier cas, la chaîne doit commencer par0x.

Exemple 1. Création d'un nombre GMP

<?php
    $a = gmp_init (123456);
    $b = gmp_init ("0xFFFFDEBACDFEDF7200");
?>

Avertissement

Si vous devez explicitement spécifier un entier de grande taille, faites le avec une chaîne. Sinon, PHP va interpréter l'entier littéralement, et vous y perdrez en précision avant que les fonctions GMP n'entre en jeu.

Note : Il n'est pas nécessaire d'appeler gmp_init() si vous voulez utiliser des entiers ou des chaînes à la place de nombre GMP dans les fonctions GMP, comme par exemple gmp_add(). Les arguments de ces fonctions sont automatiquement convertis en nombres GMP, si cette conversion est possible et nécessaire, en utilisant les mêmes règles que gmp_init().

Précédent | Sommaire | Suivant
gmp_hamdist | Niveau supérieur | gmp_intval


gmp_intval

(PHP 4 >= 4.0.4)

gmp_intval -- Convertit un nombre GMP en entier

Description

int gmp_intval ( resource gmpnumber)

gmp_intval() convertit un nombre GMP en entier.

Avertissement

gmp_intval() retourne un résultat cohérent uniquement si le nombre GMP peut être représenté par un entier PHP (i.e. type long signé). Si vous vous voulez simplement afficher un nombre GMP, utilisez plutôt gmp_strval().

Précédent | Sommaire | Suivant
gmp_init | Niveau supérieur | gmp_invert


gmp_invert

(PHP 4 >= 4.0.4)

gmp_invert -- Inverse modulo

Description

resource gmp_invert ( resource a, resource b)

gmp_invert() calcule l'inverse de a modulo b. gmp_invert() retourne FALSE si un tel inverse n'existe pas.

Précédent | Sommaire | Suivant
gmp_intval | Niveau supérieur | gmp_jacobi


gmp_jacobi

(PHP 4 >= 4.0.4)

gmp_jacobi -- Symbole de Jacobi

Description

int gmp_jacobi ( resource a, resource p)

gmp_jacobi() calcule le symbole de Jacobi de a et p. p doit être positif et impair.

Précédent | Sommaire | Suivant
gmp_invert | Niveau supérieur | gmp_legendre


gmp_legendre

(PHP 4 >= 4.0.4)

gmp_legendre -- Symbole de Legendre

Description

int gmp_legendre ( resource a, resource p)

gmp_legendre() calcule le symbole de Legendre de a et p. p doit être positif et impair.

Précédent | Sommaire | Suivant
gmp_jacobi | Niveau supérieur | gmp_mod


gmp_mod

(PHP 4 >= 4.0.4)

gmp_mod -- Modulo GMP

Description

resource gmp_mod ( resource n, resource d)

gmp_mod() calcule n modulo d. Le résultat est toujours positif ou nul, car le signe de d est ignoré.

Précédent | Sommaire | Suivant
gmp_legendre | Niveau supérieur | gmp_mul


gmp_mul

(PHP 4 >= 4.0.4)

gmp_mul -- Multiplication de 2 nombres GMP

Description

resource gmp_mul ( resource a, resource b)

gmp_mul() multiplie les nombres GMP a et b. Le résultat est un nombre GMP.

Précédent | Sommaire | Suivant
gmp_mod | Niveau supérieur | gmp_neg


gmp_neg

(PHP 4 >= 4.0.4)

gmp_neg -- Opposé de nombre GMP

Description

resource gmp_neg ( resource a)

gmp_neg() retourne l'opposé de a (-1 * a).

Précédent | Sommaire | Suivant
gmp_mul | Niveau supérieur | gmp_or


gmp_or

(PHP 4 >= 4.0.4)

gmp_or -- OU logique

Description

resource gmp_or ( resource a, resource b)

gmp_or() calcule le OU logique de a et b.

Précédent | Sommaire | Suivant
gmp_neg | Niveau supérieur | gmp_perfect_square


gmp_perfect_square

(PHP 4 >= 4.0.4)

gmp_perfect_square -- Carré parfait GMP

Description

bool gmp_perfect_square ( resource a)

gmp_perfect_square() retourn TRUE si a est un carré parfait, et FALSE sinon.

Voir aussi gmp_sqrt() et gmp_sqrtrm().

Précédent | Sommaire | Suivant
gmp_or | Niveau supérieur | gmp_popcount


gmp_popcount

(PHP 4 >= 4.0.4)

gmp_popcount -- Compte de population

Description

int gmp_popcount ( resource a)

gmp_popcount() dénombre la population de a.

Précédent | Sommaire | Suivant
gmp_perfect_square | Niveau supérieur | gmp_pow


gmp_pow

(PHP 4 >= 4.0.4)

gmp_pow -- Puissance

Description

resource gmp_pow ( resource base, int exp)

gmp_pow() élève base à la puissance exp. Dans le cas de 0^0, gmp_pow() retourne 1.exp ne doit pas être négatif.

Précédent | Sommaire | Suivant
gmp_popcount | Niveau supérieur | gmp_powm


gmp_powm

(PHP 4 >= 4.0.4)

gmp_powm -- Puissance et modulo

Description

resource gmp_powm ( resource base, resource exp, resource mod)

gmp_powm() calcule (base puissance exp) modulo mod. Si exp est négatif, le résultat est indéfini.

Précédent | Sommaire | Suivant
gmp_pow | Niveau supérieur | gmp_prob_prime


gmp_prob_prime

(PHP 4 >= 4.0.4)

gmp_prob_prime -- Nombre GMP probablement premier

Description

int gmp_prob_prime ( resource a [, int reps])

Si gmp_prob_prime() retourne 0, a est défini comme non premier. Si gmp_prob_prime() retourne 1, alors a est "probablement" premier. Si gmp_prob_prime() retourne 2, alors a est sûrement premier. reps peut raisonnablement varier de 5 à 10 (par défaut, c'est 10); une valeur supérieure réduit la probabilité qu'un nombre non premier soit identifié comme "probablement" premier.

gmp_prob_prime() utilise le test de probabilité Miller-Rabin.

Précédent | Sommaire | Suivant
gmp_powm | Niveau supérieur | gmp_random


gmp_random

(PHP 4 >= 4.0.4)

gmp_random -- Nombre GMP aléatoire

Description

resource gmp_random ( int limiter)

gmp_random() génère un nombre aléatoire. Ce nombre est limité par limiter. Si limiter est négatif, un nombre négatif est généré.

Précédent | Sommaire | Suivant
gmp_prob_prime | Niveau supérieur | gmp_scan0


gmp_scan0

(PHP 4 >= 4.0.4)

gmp_scan0 -- Recherche 0

Description

int gmp_scan0 ( resource a, int start)

gmp_scan0() recherche dans a, en commençant à la position start, vers les bits de poids lourd, jusqu'à ce qu'elle rencontre un bit à 0. Sa position est alors retournée.

Précédent | Sommaire | Suivant
gmp_random | Niveau supérieur | gmp_scan1


gmp_scan1

(PHP 4 >= 4.0.4)

gmp_scan1 -- Recherche 1

Description

int gmp_scan1 ( resource a, int start)

gmp_scan1() recherche dans a, en commençant à la position start, vers les bits de poids lourd, jusqu'à ce qu'elle rencontre un bit à 1. Sa position est alors retournée.

Précédent | Sommaire | Suivant
gmp_scan0 | Niveau supérieur | gmp_setbit


gmp_setbit

(PHP 4 >= 4.0.4)

gmp_setbit -- Modifie un bit

Description

resource gmp_setbit ( resource &a, int index [, bool set_clear])

gmp_setbit() modifie le bit index dans a. set_clear indique si le bit est mis à 0 ou 1. Par défaut, il est mis à 1.

Précédent | Sommaire | Suivant
gmp_scan1 | Niveau supérieur | gmp_sign


gmp_sign

(PHP 4 >= 4.0.4)

gmp_sign -- Signe du nombre GMP

Description

int gmp_sign ( resource a)

gmp_sign() retourne le signe de a : 1 si a est positif et -1 s'il est négatif.

Précédent | Sommaire | Suivant
gmp_setbit | Niveau supérieur | gmp_sqrt


gmp_sqrt

(PHP 4 >= 4.0.4)

gmp_sqrt -- Racine carrée GMP

Description

resource gmp_sqrt ( resource a)

gmp_sqrt() calcule la racine carrée de a.

Précédent | Sommaire | Suivant
gmp_sign | Niveau supérieur | gmp_sqrtrm


gmp_sqrtrm

(no version information, might be only in CVS)

gmp_sqrtrm -- Racine carrée avec reste GMP

Description

array gmp_sqrtrm ( resource a)

gmp_sqrtrm() retourne un tableau dont le premier élément est la racine carrée entière de a (voir aussi gmp_sqrt()), et le second est le reste de (i.e., la différence entre a et le carré du premier élément).

Précédent | Sommaire | Suivant
gmp_sqrt | Niveau supérieur | gmp_strval


gmp_strval

(PHP 4 >= 4.0.4)

gmp_strval -- Convertit un nombre GMP en chaîne

Description

string gmp_strval ( resource gmpnumber [, int base])

gmp_strval() convertit un nombre GMP en chaîne de caractères, dans la base base. La base par défaut est 10. Les valeurs possibles vont de 2 à 36.

Exemple 1. Conversion d'un nombre GMP en chaîne

<?php
    $a = gmp_init("0x41682179fbf5");
    printf("D&eacute;cimal: %s, base 36: %s",
       gmp_strval($a), gmp_strval($a,36));
?>

Précédent | Sommaire | Suivant
gmp_sqrtrm | Niveau supérieur | gmp_sub


gmp_sub

(PHP 4 >= 4.0.4)

gmp_sub -- Soustraction de 2 nombres GMP

Description

resource gmp_sub ( resource a, resource b)

gmp_sub() soustrait le nombre GMP b de a. Le résultat est un nombre GMP.

Précédent | Sommaire | Suivant
gmp_strval | Niveau supérieur | gmp_xor


gmp_xor

(PHP 4 >= 4.0.4)

gmp_xor -- OU exclusif logique

Description

resource gmp_xor ( resource a, resource b)

gmp_or() calcule le OU exclusif logique de a et b.

Précédent | Sommaire | Suivant
gmp_sub | Niveau supérieur | HTTP


HTTP

Manuel PHP
Précédent Suivant

XXXVII. HTTP

Introduction

Ces fonctions permettent de travailler sur les informations transmises au navigateur, via le protocole HTTP.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
header -- Envoie un en-tête HTTP
headers_list -- Retourne une liste d'entêtes de réponses envoyées (ou qui le seront)
headers_sent -- Indique si les en-têtes HTTP ont déjà été envoyés
setcookie -- Envoie un cookie

Précédent | Sommaire | Suivant
gmp_xor | Niveau supérieur | header


header

(PHP 3, PHP 4 )

header -- Envoie un en-tête HTTP

Description

void header ( string string [, bool replace [, int http_response_code]])

header() permet de spécifier un en-tête HTTP lors de l'envoi des fichiers HTML. Reportez-vous à HTTP 1.1 Specification pour plus d'informations sur les en-têtes HTTP.

Le paramètre optionnel replace indique si la fonction header() doit remplacer un en-tête précédemment émis, ou bien ajouter un autre en-tête du même type. Par défaut, un nouvel en-tête va écraser le précédent, mais si vous passez FALSE dans cet argument, vous pouvez forcer les en-têtes multiples pour un même type d'en-tête. Par exemple :

Exemple 1. Identification HTTP avec header()

<?php
  header('WWW-Authenticate: Negotiate');
  header('WWW-Authenticate: NTLM', FALSE);
?>

Le second paramètre optionnel force le code de réponse HTTP à la valeur de the http_response_code. Ce paramètre est disponible en PHP 4.3.0 et plus récent.

Il y a cependant deux en-têtes spéciaux. Le premier est "Location". Non seulement il renvoie un en-tête au client, mais, en plus, il envoie un statut de redirection à Apache. Du point de vue de l'auteur de script, cela importe peu, mais pour ceux qui connaissent les rouages internes d'Apache, c'est primordial.

Exemple 2. Redirection HTTP avec header()

<?php
  header("Location: http://www.php.net/");
/* Redirige le client vers le site PHP */
  exit();
/* Garantie que le code ci-dessous n'est jamais ex&eacute;cut&eacute;. */
?>

Note : HTTP/1.1 demande une URI absolue comme argument de Location:, y compris le protocole, hôte et chemin absolu. Mais certains navigateurs acceptent les URI relatives. Vous pouvez généralement utiliser les variables globales $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] et dirname() pour construire vous-même une URI absolue :

Exemple 3. Redirection à l'aide de header()

<?php
  header("Location: http://".$_SERVER['HTTP_HOST']
                     ."/".dirname($_SERVER['PHP_SELF'])
                     ."/".$relative_url);
?>

Le deuxième type d'appel spécial regroupe tous les en-têtes qui commencent par "HTTP/" (la casse n'est pas importante). Par exemple, si vous avez votre page d'erreur 404 Apache qui pointe sur un script PHP, c'est une bonne idée que de vous assurer que le script PHP génère une erreur 404. La première chose à faire dans votre script est :

Exemple 4. Limitation d'accès à l'aide de header()

<?php
  header("HTTP/1.0 404 Not Found");
?>

Note : En PHP 3, cela ne fonctionne que si PHP est compilé comme module Apache. Vous pouvez arriver au même résultat en utilisant l'en-tête Status.

Exemple 5. Limitation d'accès à l'aide de header(), en PHP 3

<?php
  header("Status: 404 Not Found");
?>

Les scripts PHP génèrent souvent du HTML dynamiquement, qui ne doit pas être mis en cache, ni par le client, ni par les proxy intermédiaires. On peut forcer la désactivation du cache de nombreux clients et proxy avec

Exemple 6. Interdire la mise en cache avec header()

<?php
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");             // Date du pass&eacute;
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // toujours modifi&eacute;
  header("Cache-Control: no-cache, must-revalidate");           // HTTP/1.1
  header("Pragma: no-cache");                                   // HTTP/1.0
?>

Note : Vous pouvez vous rendre compte que vos pages ne sont jamais mises en cache même si vous utilisez tous les en-têtes ci-dessus. Il existe toute une collection de paramètres que les utilisateurs peuvent modifier sur leur navigateur pour modifier le comportement par défaut du cache. En envoyant les en-têtes ci-dessus, vous pouvez imposer vos propres valeurs.

De plus, les paramètres session_cache_limiter() et session.cache_limiter peuvent être utilisés pour générer les en-têtes de caches corrects, lorsque les sessions sont utilisées.

N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.

Exemple 7. header() doit toujours être appelé en premier

<?php

  require("user_logging.inc")
?>
<?php
  header("Content-Type: audio/x-pn-realaudio");
?>
&nbsp;
// Erreur :  Notez la ligne blanche ci-dessus
?>

Note : En PHP 4, vous pouvez utiliser le système de cache (output buffering) pour contourner ce problème. Tous vos textes générés seront mis en buffer sur le serveur jusqu'à ce que vous les envoyiez. Vous pouvez utiliser les fonctions ob_start() et ob_end_flush() dans vos scripts, ou en modifiant la directive de configuration output_buffering dans votre fichier php.ini ou vos fichiers de configuration du serveur.

Si vous voulez que vos utilisateur recoivent une alerte pour sauver les fichiers générés, comme par exemple si vous générez un fichier PDF, vous pouvez utiliser l'en-tête Content-Disposition pour fournir un nom de fichier par défaut, à afficher dans le dialogue de sauvegarde.

Exemple 8. Utilisation de header() pour générer un PDF ou autre type

<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... output pdf file ... */
?>

Note : Il y a un bug sous Microsoft Internet Explorer 4.01 qui empêche cet en-tête de fonctionner. Il n'y a pas d'autre solution. Il y a aussi un bug dans Microsoft Internet Explorer 5.5 qui interfère avec ceci, mais qui peut être résolu en utilisant le Service Pack 2 ou plus récent.

Note : Si safe mode est activé, l'UID du script est ajouté à la partie realm des en-têtes WWW-Authenticate que vous envoyez avec cet en-tête.

Voir aussi headers_sent(), setcookie(), et la section sur l'authentification HTTP .

Précédent | Sommaire | Suivant
HTTP | Niveau supérieur | headers_list


headers_list

(no version information, might be only in CVS)

headers_list -- Retourne une liste d'entêtes de réponses envoyées (ou qui le seront)

Description

array headers_list ( void )

headers_list() retourne un tableau indexé contenant les entêtes HTTP qui seont envoyées au naviguateur / client. Pour savoir si ces entêtes ont déjà été envoyées, utilisez headers_sent().

Exemple 1. Exemples utilisant headers_list()

<?php

/* setcookie() ajoute une ent&ecirc;te HTTP */
setcookie('foo','bar');

/* D&eacute;finition d'une ent&ecirc;te maison, elle sera ignor&eacute;e par la
   plupart des clients */
header("X-Sample-Test: foo");

/* Notre contenu est en texte plain */
header('Content-type: text/plain');

/* Quelles ent&ecirc;tes vont &ecirc;tre affich&eacute;es ? */
var_dump(headers_list());

?>

Ce script va afficher :

array(4) {
  [0]=>
  string(29) "X-Powered-By: PHP/5.0.0"
  [1]=>
  string(19) "Set-Cookie: foo=bar"
  [2]=>
  string(18) "X-Sample-Test: foo"
  [3]=>
  string(24) "Content-type: text/plain"
}

Voir aussi
headers_sent(),
header() et
setcookie().

Précédent | Sommaire | Suivant
header | Niveau supérieur | headers_sent


headers_sent

(PHP 3>= 3.0.8, PHP 4 )

headers_sent -- Indique si les en-têtes HTTP ont déjà été envoyés

Description

bool headers_sent ( [string &file [, int &line]])

headers_sent() retourne TRUE si les en-têtes HTTP ont déjà été envoyés, et FALSE sinon. Si les paramètres optionnels file et line sont fournis, headers_sent() va placer le nom du fichier source et le numéro de ligne qui ont débuté l'affichage, dans les variables file et line.

Vous ne pouvez plus envoyer d'en-têtes avec la fonction header() une fois que le bloc d'en-tête a été fermé. En utilisant cette fonction, vous pouvez au moins éviter de voir s'afficher les erreurs HTTP reliées. Une autre option est d'utilise le contrôle de sortie.

Nouveaux paramètres : Les paramètres optionnels file et line ont été ajouté en PHP 4.3.0.

Exemple 1. Exemple avec headers_sent()

<?php

// Si aucun en-t&ecirc;te n'a &eacute;t&eacute; envoy&eacute;, envoyons en un
if (!headers_sent()) {
    header ('Location: http://www.nexen.net/');
    exit;
}

// Voici un exemple d'utilisation des param&egrave;tres optionnels de fichier et de ligne
// disponibles depuis PHP 4.3.0. Notez que $filename et $linenum sont
// transmis pour utilisation ult&eacute;rieure. Ne les assignez pas avant de les utiliser.
if (!headers_sent($filename, $linenum)) {
    header ('Location: http://www.nexen.net/');
    exit;

// Vous allez probablement d&eacute;clencher une erreur ici
} else {

    print "Les en-t&ecirc;tes ont d&eacute;j&agrave; &eacute;t&eacute; envoy&eacute;s, depuis le fichier $filename &agrave; la ligne $linenum\n" .
          "Il est donc impssible de vous rediriger automatiquement, aussi veuillez
          cliquez <a href=\"http://www.nexen.net\">ici</a>.\n";
    exit;
}

?>

Voir aussi ob_start(), trigger_error() et header() pour plus de détails sur les tenants et aboutissants.

Précédent | Sommaire | Suivant
headers_list | Niveau supérieur | setcookie


setcookie

(PHP 3, PHP 4 )

setcookie -- Envoie un cookie

Description

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

setcookie() définit un cookie qui sera envoyé avec le reste des en-têtes. Les cookies doivent passer avant toute autre en-tête (c'est une restriction des cookies, pas de PHP). Cela vous impose d'appeler cette fonction avant toute balise <HTML> ou <HEAD>.

Note : En PHP 4, vous pouvez utiliser la bufferisation de sortie pour pouvoir envoyer du contenu avant d'appeler cette fonction, avec la contrepartie que toute votre page sera envoyé en une fois. Vous pouvez faire cela en appelant ob_start() et ob_end_flush() dans votre script, ou en activant la directive output_buffering dans votre fichier de configuration php.ini.

Tous les arguments sauf name (nom) sont optionnels. Si seul le nom est présent, le cookie portant ce nom sera supprimé du navigateur de l'internaute. Vous pouvez aussi utiliser une chaîne vide comme valeur, pour ignorer un argument. Le paramètre expire est un timestamp UNIX, du même genre que celui retourné par time() ou mktime(). Le paramètre secure indique que le cookie doit être uniquement transmis à travers une connexion HTTPS sécurisée.

Une fois que le cookie a été placé, il est accessible dans les variables globales $_COOKIE ou bien $HTTP_COOKIE_VARS arrays. Notez que les autoglobales telles que $_COOKIE sont disponibles en PHP depuis la version 4.1.0. $HTTP_COOKIE_VARS existe depuis PHP 3. Les valeurs de cookies existent aussi dans la variable $_REQUEST.

Erreurs communes :

  • Les cookies ne seront accessibles qu'au chargement de la prochaine page, ou au rechargement de la page courante.

  • Les cookies doivent être effacés avec les mêmes paramètres que ceux utilisés lors de leur création.

En PHP 3, les appels multiples à setcookie() dans le même script seront effectués dans l'ordre inverse. Si vous essayez d'effacer un cookie avant d'insérer une nouvelle valeur, vous devez placer l'insertion avant l'effacement. En PHP 4, les appels multiples à setcookie() sont effectués dan un ordre naturel.

Les appels multiples à setcookie() dans la même page seront réalisés dans l'ordre inverse. Si vous essayez d'effacer un cookie avant d'insérer une autre valeur, il faut placer l'insertion avant l'effacement.

Quelques exemples :

Exemple 1. Exemples avec setcookie()

<?php
  setcookie("TestCookie","Valeur de test");
  setcookie("TestCookie",$value,time()+3600);  /* expire dans une heure */
  setcookie("TestCookie",$value,time()+3600,"/~rasmus/",".utoronto.ca",1);
?>

Notez que la partie "valeur" du cookie sera automatiquement encodée URL lorsque vous envoyez le cookie, et lorsque vous le recevez, il sera automatiquement décodé, et affecté à la variable du même nom que le cookie. Pour voir le résultat, essayez les scripts suivants :

<?php
// Afficher un cookie
echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];

// Une autre m&eacute;thode pour afficher tous les cookies
print_r($_COOKIE);
?>

Lorsque vous effacez un cookie, vous devriez toujours vous assurer que la date d'expiration du cookie est déjà passée, pour déclencher le mécanisme de votre navigateur. Voici comment procéder :

Exemple 2. Exemple d'effacement de cookies avec setcookie()

<?php
// utilisation de la date moins une heure
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".exemple.com", 1);
?>

Vous pouvez aussi utiliser les cookies avec des tableaux, en utilisant la notation des tableaux. Cela a pour effet de créer autant de cookies que votre tableau a d'éléments, mais lorsque les cookies seront reçus par PHP, les valeurs seront placées dans un tableau :

<?php
  setcookie( "cookie[three]", "cookiethree" );
  setcookie( "cookie[two]", "cookietwo" );
  setcookie( "cookie[one]", "cookieone" );
  if ( isset( $cookie ) ) {
    while( list( $name, $value ) = each( $cookie ) ) {
      echo "$name == $value<br>\n";
    }
  }
?>

Pour d'autres informations sur les cookies, jetez un oeil sur http://www.netscape.com/newsref/std/cookie_spec.html.

Microsoft Internet Explorer 4 utilisé avec le Service Pack 1 ne gère pas bien les cookies qui possèdent un paramètre path.

Netscape Communicator 4.05 et Microsoft Internet Explorer 3.x semblent ne pas gérer correctement les cookies lorsque path et time> ne sont pas fournis.

Précédent | Sommaire | Suivant
headers_sent | Niveau supérieur | Hyperwave


Hyperwave

Manuel PHP
Précédent Suivant

XXXVIII. Hyperwave

Introduction

Hyperwave a été développé par IICM à Graz. Son nom original était Hyper-G et il a pris le nom de Hyperwave lors de sa commercialisation (en 1996, si mes souvenirs sont bons).

Hyperwave n'est pas gratuit. La version actuelle est la 5.5, disponible à http://www.hyperwave.com/. Une version limitée à 30 jours peut être demandée.

Voir aussi le module Hyperwave API.

HIS est un système d'information similaire à une base de données, (HIS, Hyperwave Information Server). HIS se concentre sur l'enregistrement et la gestion des documents. Un document peut être n'importe quelle donnée, qui peut être stockée dans un fichier. Chaque document est accompagné par un enregistrement. Cet enregistrement contient des méta données à propos du document. Ces méta données sont des listes d'attributs qui peuvent être étendues par l'utilisateur. Un attribut est une paire clé/valeur de la forme : clé =valeur. L'enregistrement complet contient autant de paire que le désire l'utilisateur. Le nom d'un attribut n'a pas besoin d'être unique, c'est-à-dire qu'une même clé peut apparaître plusieurs fois dans un enregistrement. Cela peut être utile si vous devez donner un titre à votre document en plusieurs langues, par exemple. Dans un cas pareil, la convention est que chaque valeur de titre est précédée par deux lettres et deux points, tel que : 'fr:Titre en français' ou 'ge:Titel in deutsch'. D'autres attributs comme une description ou des mots clés sont aussi susceptibles de recourir à ce genre de procédé. Vous pouvez aussi remplacer l'abréviation de langage par une autre chaîne, tant qu'elle est séparée de la valeur par les deux points.

Chaque enregistrement a une représentation native qui contient toutes les paires clé/valeur, séparées par un retour à la ligne. L'extension Hyperwave reconnaît une autre représentation qui est un tableau associatif, où les attributs servent de clés. Les attributs multilingues étant géré sous la forme d'un autre tableau associatif, dont les clés sont les chaînes de langue. En fait, tous les attributs multiformes sont gérés sous la forme de tableau associatif. (Cela n'est pas encore complètement codé. Uniquement les attributs de titre, description et mot clés sont traités correctement).

En dehors des documents, tous les hyper liens contenus dans un documents sont enregistrés dans un autre enregistrement. Les hyperliens qui sont à l'intérieur d'un document en seront supprimés, et enregistrés dans des objets particuliers, au moment de l'insertion dans la base de données. L'enregistrement des hyper-liens contient les informations d'origine et d'objectif. Afin d'accéder au document original, vous devrez lire le document sans les liens, puis lire les liens, et les réinsérer (les hw_pipedocument() et hw_gettext() le font pour vous. L'avantage de séparer les liens du document est évident : une fois qu'un document, cible d'un hyperlien, a été renommé, le liens peut facilement être modifié. Le document contenant le lien n'est pas modifié pour autant. Vous pouvez même ajouter un lien à un document sans le modifier.

Dire que hw_pipedocument() et hw_gettext() font l'insertion automatiquement n'est pas aussi simple qu'il n'y paraît. L'insertion implique une certaine hiérarchie de documents. Sur un serveur web, la hiérarchie est fournie par le système de fichiers, mais Hyperwave dispose de sa propre hiérarchie et les noms de fichiers ne reflètent pas la position d'un objet dans cette hiérarchie. Ainsi, la création de liens requiert en premier lieu la construction de la hiérarchie et de l'espace des noms dans une hiérarchie web et un espace de nom web. La différence fondamentale entre Hyperwave et le web est qu'il y a une distinction claire en les noms et la hiérarchie dans Hyperwave. Le nom ne contient aucune information à propos de la position de l'objet dans la hiérarchie. Sur le web, le nom contient les informations de localisation dans la hiérarchie. Cela conduit à deux méthodes de d'accès : soit la hiérarchie Hyperwave et le nom de l'objet sont inscrits dans l'URL. Pour simplifier les choses, une deuxième approche est pratiquée. L'objet Hyperwave de nom 'mon_objet' correspond à l'URL 'http://hote/mon_objet', peu importe alors où il est rangé dans la hiérarchie. Un objet dont le nom est 'parent/mon_objet' peut être le fils de l'objet 'mon_objet' dans la hiérarchie Hyperwave, bien que ce soit le contraire en convention web, et cela risque de perturber l'utilisateur.

Ayant pris cette décision, un deuxième problème surgit : comment faire l'interface avec PHP ? L'URL http://hote/mon_objet n'appellera aucun script PHP à moins que vous ne demandiez à votre serveur web de le remplacer par autre chose, comme par exemple : 'http://host/php3_script/mon_objet' et le script 'php3_script' utilise la variable $PATH_INFO pour rechercher l'objet 'mon_objet' sur le serveur Hyperwave. Il y a juste un petit inconvénient , qui peut facilement être corrigé. Réécrire une URL ne vous permettra aucun accès aux autres documents du serveur web. Un script de recherche dans le serveur Hyperwave serait impossible. Il vous faudra donc au moins une autre règle pour exclure certaines URL, comme par exemple celles qui commencent par http://host/Hyperwave. Voici, de manière simple, la manière de partager un espace de nom entre un serveur web et un serveur Hyperwave serveur.

Basé sur le mécanisme précédent, on trouve l'insertion dans les documents.

Il est plus compliqué d'avoir PHP ne fonctionne pas comme un module de serveur, ou un script CGI, mais comme une application indépendante. Dans ce cas, il est utile d'inscrire la hiérarchie et le nom de fichier Hyperwave dans le système de fichier. Mais comme cela risque d'entrer en conflit avec le séparateur de dossier ('/'), il faut le remplacer par un autre caractère,. '_'.

Le protocole réseau pour communiquer avec un serveur Hyperwave est appelé HG-CSP (Hyper-G Client/Server Protocol). Il est basé sur des messages qui initie des actions, comme par exemple, lire l'en-tête de fichier. Dans les premières versions de Hyperwave Server deux clients natifs (Harmony, Amadeus) étaient fournis pour permettre la communication avec le serveur. Ils ont disparu lors de la commercialisation de Hyperwave. En tant qu'ersatz, un client appelé wavemaster est désormais fourni. wavemaster est un espèce ce convertisseur de protocole de HTTP en HG-CSP. L'idée est de faire toute l'administration de la base et la visualisation des documents par une interface web. Le wavemaster implémente un jeu d'emplacement pour certaines actions de personnalisation de l'interface. Ce jeu est appelé PLACE language. PLACE pêche encore par le manque de nombreuses fonctions de programmation, et le manque d'évolutivité. Cela a conduit à l'utilisation de JavaScript ce qui ne rend pas la vie facile.

Que PHP supporte Hyperwave permet de combler ces manques. PHP implémente tous les messages définis par HG-CSP mais fourni d'autres commandes puissantes, comme par exemple, celle de lire des documents complets.

Hyperwave dispose de sa propre terminologie pour localiser certaines informations. Cette terminologie a été largement étendue. Presque toutes les fonctions utilisent l'un des types de données suivants :

  • object ID: un entier, unique pour chaque objet sur le serveur Hyperwave. C'est aussi un des attributs de l'enregistrement de l'objet (ObjectID).Les object ids sont souvent utilisées comme paramètre d'entrée pour spécifier un objet.

  • object record: Une chaîne contenant des paires clé=valeur. Les paires sont séparées par un retour à la ligne. Un enregistrement d'objet peut facilement être converti en tableau, avec la fonction hw_objrec2array(). De nombreuses fonctions retournent un object records. Ces fonctions ont leur nom qui finit par obj.

  • object array: Un tableau associatif qui contient tous les attributs d'un objet. La clé est l'attribut. Si un attribut apparaît plusieurs fois, il sera représenté sous la forme d'un tableau associatif ou indexé. Les attributs qui dépendent des langues (comme title, keyword ou description) seront représentés sous la forme d'un tableau associatif, dont les clés seront les abréviations de langues. Tous les autres attributs à valeur multiple prendront la forme d'un tableau indexé.

  • hw_document: Ce type est un nouveau type de données, qui contient le document lui-même, comme par exemple HTML, PDF etc. Il est optimisé pour les documents HTML mais peut s'utiliser avec n'importe quel format.

De nombreuses fonctions qui retournent un tableau d'enregistrements, retournent aussi un tableau associé, avec des informations statistiques. Ce tableau est le dernier élément du tableau d'enregistrements. Les statistiques contiennent les entrées suivantes :

Hidden

Nombre d'objets dont l'attribut PresentationHints est Hidden.

CollectionHead

Nombre d'objet dont l'attribut PresentationHints est CollectionHead.

FullCollectionHead

Nombre d'objet dont l'attribut PresentationHints est FullCollectionHead.

CollectionHeadNr

Index du premier objet du tableau d'enregistrement avec l'attribut PresentationHints à CollectionHead.

FullCollectionHeadNr

Index du premier objet du tableau d'enregistrement avec l'attribut PresentationHints est FullCollectionHead.

Total

Total: Nombre d'enregistrements.

Pré-requis

Cette extension requiert un serveur Hyperwave, téléchargeable sur le site de http://www.hyperwave.com/.

Installation

Pour activer le support Hyperwave, compilez PHP avec l'option --with-hyperwave.

Intégration avec Apache

L'extension Hyperwave est utilisée de manière optimale lorsque PHP est compilé comme module Apache. Dans ce cas, le serveur Hyperwave sous jacent peut être caché quasiment totalement aux utilisateurs, si Apache utilise son moteur d'écriture. Les explications suivantes vous éclaireront :

Etant donné que PHP avec l'extension Hyperwave et Apache tend à remplacer la solution native basée sur Wavemaster, je vais supposer que le serveur Apache servira seulement d'interface Hyperwave. Ce n'est pas nécessaire, mais cela simplifie grandment la configuration. Le concept est très simple. Premièrement, vous avez besoin d'un script PHP qui évalue la variable $_ENV['PATH_INFO'] et considère que cette valeur est un objet Hyperwave. Appelons ce script 'Hyperwave'. L'URL http://votre.hote/Hyperwave/nom_objet retourne alors l'objet Hyperwave dont le nom est 'nom_objet'. Le script doit alors réagir suivant le type de l'objet. Si c'est un groupe, il devra probablement retourner une liste de fils. Si c'est un document, il pourra retourner son type MIME et son contenu. Une amélioration peut être obtenue en utilisant le moteur de réécriture d'Apache. D'un point de vue utilisateur, il est plus direct si l'URL http://votre.hote/nom_objet retourne l'objet. La règle de réécriture est simple :

Exemple 1. Configuration d'Apache pour HyperWave

RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
Maintenant toutes les URL pointent sur un objet Hyperwave. Cela conduit à un problème simple. Il n'y a pas d'autre façon d'exécuter, c'est-à-dire rechercher, un autre script que ce script 'Hyperwave'. Cela pourra être corrigé avec une autre règle telle que:

Exemple 2. Configuration d'Apache pour HyperWave (2)

RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
Le dossier /usr/local/apache/htdocs/hw sera ainsi réservé pour d'autres scripts et fichiers. Assurez-vous que cette règle est évaluée avant la première règle que nous avons définie. Il y a juste un léger inconvénient : tous les objets Hyperwave qui commencent par 'hw/' seront cachés. Alors, assurez-vous que vous n'utilisez pas de tels noms. Si vous avez besoin d'autres dossiers, par exemple, un dossier d'images, ajoutez simplement d'autres règles. N'oubliez pas de lancer le moteur de réécriture avec

Exemple 3. Demarrer les règles de réécriture d'Apache pour HyperWave

RewriteEngine on
Mon expérience m'a montré que vous aurez besoin des scripts suivants :

  • Retourne l'objet lui-même

  • Pour autoriser la recherche

  • S'identifier

  • Choisir une configuration

  • Un script pour chaque fonction supplémentaire, comme afficher un objet, afficher des informations sur les utilisateurs, afficher le statut du serveur, etc...

Une alternative pour le moteur de réécriture est l'utilisation de la directive Apache ErrorDocument, mais sachez alors que ErrorDocument n'effectue pas les redirections de méthodes POST.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
hyerwave.allow_persistent | "0" | PHP_INI_SYSTEM
hyperwave.default_port | "418" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

HW_ATTR_LANG (entier)

HW_ATTR_NR (entier)

HW_ATTR_NONE (entier)

A faire

Il reste encore beaucoup à faire :

  • La fonction hw_InsertDocument doit être séparée en deux : hw_insertobject() et hw_putdocument().

  • Les noms de nombreuses fonctions ne sont pas encore fixés.

  • La majorité des fonctions requièrent la connexion courante comme premier paramètre. Cela conduit à beaucoup de frappe clavier, même s'il n'y a souvent qu'une seule connexion en jeu. Une connexion par défaut améliorerait ceci.

  • La conversion depuis un object record en un object array a besoin de gérer les attributs multiples.

Table des matières
hw_array2objrec -- Convertit un tableau en un objet
hw_changeobject -- Change les attributs d'un objet (obsolète)
hw_children -- Liste des object ids des objets fils
hw_childrenobj -- Liste des object records des objets fils
hw_close -- Ferme la connexion Hyperwave
hw_connect -- Ouvre une connexion Hyperwave
hw_connection_info -- Affiche des informations sur la connexion au serveur Hyperwave
hw_cp -- Copie des objets HyperWave
hw_deleteobject -- Efface des objets
hw_docbyanchor -- Identifiant d'objet de l'objet dans l'ancrage
hw_docbyanchorobj -- Attributs de l'objet dans l'ancrage
hw_document_attributes -- Object record de hw_document
hw_document_bodytag -- Balise de corps d'un document
hw_document_content -- Contenu d'un document
hw_document_setcontent -- Modifie/remplace le contenu d'un document
hw_document_size -- Taille d'un document
hw_dummy -- Fonction sans objet pour Hyperwave
hw_edittext -- Retourne un document texte
hw_error -- Retourne le code d'erreur
hw_errormsg -- Retourne un message d'erreur
hw_free_document -- Détruit un document
hw_getanchors -- Identifiants des ancrages d'un document
hw_getanchorsobj -- Attributs des ancrages d'un document
hw_getandlock -- Retourne les attributs, et verrouille l'objet
hw_getchildcoll -- Identifiant d'objet des groupes fils
hw_getchildcollobj -- object records d'un groupe d'enfants
hw_getchilddoccoll -- ids des documents fils d'un groupe
hw_getchilddoccollobj -- Attributs des documents fils d'un groupe
hw_getobject -- Lit les attributs d'un objet Hyperwave
hw_getobjectbyquery -- Recherche un objet
hw_getobjectbyquerycoll -- Recherche un objet dans un groupe
hw_getobjectbyquerycollobj -- Recherche un objet dans un groupe
hw_getobjectbyqueryobj -- Recherche un objet
hw_getparents -- Identifiant d'objet des parents
hw_getparentsobj -- Attributs des parents
hw_getrellink -- Crée le lien depuis la source vers le destinataire, relativement à rootid
hw_getremote -- Retourne un document distant
hw_getremotechildren -- Retourne les fils d'un document distant
hw_getsrcbydestobj -- Retourne les ancrages qui pointent sur un objet
hw_gettext -- Retourne un document texte
hw_username -- Nom de l'utilisateur actuellement identifié
hw_identify -- Identifie un utilisateur
hw_incollections -- Vérifie qu'un identifiant d'objet est dans un groupe.
hw_info -- Informations à propos d'une connexion
hw_inscoll -- Insère un groupe
hw_insdoc -- Insère un document
hw_insertanchors -- Insère uniquement des ancres dans du texte
hw_insertdocument -- Insère un document dans un groupe
hw_insertobject -- Insère un object record
hw_mapid -- Représente un id global en un id virtuel local
hw_modifyobject -- Modifie les attributs d'objet record
hw_mv -- Déplace un objet
hw_new_document -- Crée un nouveau document
hw_objrec2array -- Convertit les attributs d'un objet en tableau
hw_output_document -- Affiche hw_document
hw_pconnect -- Crée une connexion persistante
hw_pipedocument -- Retourne un document
hw_root -- Object id de la racine
hw_setlinkroot -- Configure l'identifiant vers lequel les liens sont calculés
hw_stat -- Retourne le statut de la chaîne
hw_unlock -- Déverrouille un objet
hw_who -- Liste des utilisateurs actuellement identifiés

Précédent | Sommaire | Suivant
setcookie | Niveau supérieur | hw_array2objrec


hw_array2objrec

(PHP 3>= 3.0.4, PHP 4 )

hw_array2objrec -- Convertit un tableau en un objet

Description

string hw_array2objrec ( array object_array)

hw_array2objrec() convertit un object_array en un objet. Les attributs multiples tels que 'Title' en différentes langues seront traités correctement.

Voir aussi hw_objrec2array().

Précédent | Sommaire | Suivant
Hyperwave | Niveau supérieur | hw_changeobject


hw_changeobject

(PHP 3>= 3.0.3, PHP 4 )

hw_changeobject -- Change les attributs d'un objet (obsolète)

Description

void hw_changeobject ( int link, int objid, array attributes)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_array2objrec | Niveau supérieur | hw_children


hw_children

(PHP 3>= 3.0.3, PHP 4 )

hw_children -- Liste des object ids des objets fils

Description

array hw_children ( int connection, int objectid)

hw_children() retourne un tableau avec des object ids. Chaque object id est celui d'un des fils du groupe dont l'id est objectid. Ce tableau contient tous les fils, documents et groupes.

Précédent | Sommaire | Suivant
hw_changeobject | Niveau supérieur | hw_childrenobj


hw_childrenobj

(PHP 3>= 3.0.3, PHP 4 )

hw_childrenobj -- Liste des object records des objets fils

Description

array hw_childrenobj ( int connection, int objectid)

hw_childrenobj() retourne un tableau avec des object records. Chaque object records est celui d'un des fils du groupe dont l'id est objectid. Ce tableau contient tous les fils, documents et groupes

Précédent | Sommaire | Suivant
hw_children | Niveau supérieur | hw_close


hw_close

(PHP 3>= 3.0.3, PHP 4 )

hw_close -- Ferme la connexion Hyperwave

Description

int hw_close ( int connection)

hw_close() ferme la connexion connection à un serveur Hyperwave. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
hw_childrenobj | Niveau supérieur | hw_connect


hw_connect

(PHP 3>= 3.0.3, PHP 4 )

hw_connect -- Ouvre une connexion Hyperwave

Description

int hw_connect ( string host, int port, string username, string password)

hw_connect() ouvre une connexion Hyperwave et retourne un identifiant de connexion, en cas de succès, ou FALSE, si la connexion n'a pas pu être créée. Chaque argument doit être entouré de guillemets, sauf le numéro de port. Les arguments username et password sont optionnels, et peuvent être ignorés. Dans ce cas, aucune identification ne sera faite au niveau du serveur. Cela revient à s'identifier en tant qu'utilisateur anonyme. Cette fonction retourne un identifiant de connexion qui sera nécessaire aux autres fonctions Hyperwave. Vous pouvez avoir plusieurs connexions simultanées. N'oubliez pas que les mots de passe ne sont pas cryptés.

Voir aussi hw_pconnect().

Précédent | Sommaire | Suivant
hw_close | Niveau supérieur | hw_connection_info


hw_connection_info

(PHP 3>= 3.0.3, PHP 4 )

hw_connection_info -- Affiche des informations sur la connexion au serveur Hyperwave

Description

void hw_connection_info ( int link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_connect | Niveau supérieur | hw_cp


hw_cp

(PHP 3>= 3.0.3, PHP 4 )

hw_cp -- Copie des objets HyperWave

Description

int hw_cp ( int connection, array object_id_array, int destination_id)

hw_cp() copie les objets ayant les identifiants object_id_array, et crée un groupe ayant l'object id destination_id.

La valeur retournée est le nombre d'objets copiés.

Voir aussi hw_mv().

Précédent | Sommaire | Suivant
hw_connection_info | Niveau supérieur | hw_deleteobject


hw_deleteobject

(PHP 3>= 3.0.3, PHP 4 )

hw_deleteobject -- Efface des objets

Description

int hw_deleteobject ( int connection, int object_to_delete)

hw_deleteobject() efface l'objet dont l'identifiant est object_to_delete. Toutes les instances de l'objet object_to_delete seront effacées.

hw_deleteobject() retourne TRUE si aucune erreur ne survient, et sinon, FALSE.

Voir aussi hw_mv().

Précédent | Sommaire | Suivant
hw_cp | Niveau supérieur | hw_docbyanchor


hw_docbyanchor

(PHP 3>= 3.0.3, PHP 4 )

hw_docbyanchor -- Identifiant d'objet de l'objet dans l'ancrage

Description

int hw_docbyanchor ( int connection, int anchorid)

hw_docbyanchor() retourne l'dentifiant d'objet de l'objet dans l'ancrage anchorid.

Précédent | Sommaire | Suivant
hw_deleteobject | Niveau supérieur | hw_docbyanchorobj


hw_docbyanchorobj

(PHP 3>= 3.0.3, PHP 4 )

hw_docbyanchorobj -- Attributs de l'objet dans l'ancrage

Description

string hw_docbyanchorobj ( int connection, int anchorid)

hw_docbyanchorobj() retourne les attributs du document qui correspond à anchorid.

Précédent | Sommaire | Suivant
hw_docbyanchor | Niveau supérieur | hw_document_attributes


hw_document_attributes

(PHP 3>= 3.0.3, PHP 4 )

hw_document_attributes -- Object record de hw_document

Description

string hw_document_attributes ( int hw_document)

hw_document_attributes() retourne les attributs du document hw_document.

Voir aussi hw_document_bodytag() et hw_document_size().

Pour la compatibilité ascendente, hw_document_attributes() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_docbyanchorobj | Niveau supérieur | hw_document_bodytag


hw_document_bodytag

(PHP 3>= 3.0.3, PHP 4 )

hw_document_bodytag -- Balise de corps d'un document

Description

string hw_document_bodytag ( int hw_document)

hw_document_bodytag() retourne la balise BODY du document hw_document.Si le document est un document HTML , la balise BODY doit être affichée avant le document.

Voir aussi hw_document_attributes() et hw_document_size().

Pour la compatibilité ascendente, hw_document_bodytag() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_document_attributes | Niveau supérieur | hw_document_content


hw_document_content

(PHP 3>= 3.0.3, PHP 4 )

hw_document_content -- Contenu d'un document

Description

string hw_document_content ( int hw_document)

hw_documentcontent() retourne la balise BODY du document hw_document.Si le document est un document HTML, la balise BODY doit être affichée avant le document.

Voir aussi
hw_document_attributes(),
hw_document_size() et
hw_document_setcontent().

Pour la compatibilité ascendente, hw_document_content() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_document_bodytag | Niveau supérieur | hw_document_setcontent


hw_document_setcontent

(PHP 4 )

hw_document_setcontent -- Modifie/remplace le contenu d'un document

Description

string hw_document_setcontent ( int hw_document, string content)

hw_document_setcontent() modifie/remplace le contenu du document hw_document par la valeur de content. Si le document est un document HTML, le contenu représente tout qui est placé au-delà de la balise BODY. Les informations de HEAD et de la balise BODY sont enregistrés dans les attributs. Si vous fournissez aussi ces informations dans le corps du document, le serveur Hyperwave modifiera les attributs. Cela n'est cependant pas une bonne idée. Si la fonction échoue, l'ancien contenu est restauré.

Voir aussi
hw_document_attributes(),
hw_document_size() et
hw_document_content().

Pour la compatibilité ascendente, hw_documentsetcontent() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_document_content | Niveau supérieur | hw_document_size


hw_document_size

(PHP 3>= 3.0.3, PHP 4 )

hw_document_size -- Taille d'un document

Description

int hw_document_size ( int hw_document)

hw_document_size() retourne la taille du document en octets.

Voir aussi hw_document_bodytag() et hw_document_attributes().

Pour la compatibilité ascendente, hw_documentsize() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_document_setcontent | Niveau supérieur | hw_dummy


hw_dummy

(PHP 3>= 3.0.3, PHP 4 )

hw_dummy -- Fonction sans objet pour Hyperwave

Description

string hw_dummy ( int link, int id, int msgid)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_document_size | Niveau supérieur | hw_edittext


hw_edittext

(PHP 3>= 3.0.3, PHP 4 )

hw_edittext -- Retourne un document texte

Description

int hw_edittext ( int connection, int hw_document)

hw_edittext() charge le texte du document sur le serveur. Les attributs du document ne doivent pas être modifiés tant que le document est en train d'être édité. Cette fonction n'est disponible que sur les documents texte. Elle n'ouvrira pas de canal de transfert, et donc, bloquera le script durant le transfert.

Voir aussi
hw_pipedocument(),
hw_free_document(),
hw_document_bodytag(),
hw_document_size(),
hw_output_document() et
hw_gettext().

Précédent | Sommaire | Suivant
hw_dummy | Niveau supérieur | hw_error


hw_error

(PHP 3>= 3.0.3, PHP 4 )

hw_error -- Retourne le code d'erreur

Description

int hw_error ( int connection)

hw_error() retourne le code d'erreur de la dernière erreur. Si la valeur 0 est retournée, c'est qu'il n'y avait pas d'erreur. L'erreur se rapporte à la dernière commande.

Précédent | Sommaire | Suivant
hw_edittext | Niveau supérieur | hw_errormsg


hw_errormsg

(PHP 3>= 3.0.3, PHP 4 )

hw_errormsg -- Retourne un message d'erreur

Description

string hw_errormsg ( int connection)

hw_errormsg() retourne une chaîne contenant le dernier message d'erreur, ou 'No Error' (pas d'erreur). Si FALSE est retourné, cette fonction a échoué. Ce message est relatif à la dernière commande exécutée.

Précédent | Sommaire | Suivant
hw_error | Niveau supérieur | hw_free_document


hw_free_document

(PHP 3>= 3.0.3, PHP 4 )

hw_free_document -- Détruit un document

Description

int hw_free_document ( int hw_document)

hw_free_document() détruit un document Hyperwave.

Précédent | Sommaire | Suivant
hw_errormsg | Niveau supérieur | hw_getanchors


hw_getanchors

(PHP 3>= 3.0.3, PHP 4 )

hw_getanchors -- Identifiants des ancrages d'un document

Description

array hw_getanchors ( int connection, int objectid)

hw_getanchors() retourne un tableau contenant les identifiants des ancrages du document objectid.

Précédent | Sommaire | Suivant
hw_free_document | Niveau supérieur | hw_getanchorsobj


hw_getanchorsobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getanchorsobj -- Attributs des ancrages d'un document

Description

array hw_getanchorsobj ( int connection, int objectid)

hw_getanchorsobj() retourne un tableau d'attributs des ancrages du document objectid.

Précédent | Sommaire | Suivant
hw_getanchors | Niveau supérieur | hw_getandlock


hw_getandlock

(PHP 3>= 3.0.3, PHP 4 )

hw_getandlock -- Retourne les attributs, et verrouille l'objet

Description

string hw_getandlock ( int connection, int objectid)

hw_getandlock() retourne les attributs, et verrouille l'objet objectid. Le verrouillage empêchera les autres utilisateurs d'y accéder, jusqu'à ce qu'il soit deverrouillé.

Voir aussi hw_unlock() et hw_getobject().

Précédent | Sommaire | Suivant
hw_getanchorsobj | Niveau supérieur | hw_getchildcoll


hw_getchildcoll

(PHP 3>= 3.0.3, PHP 4 )

hw_getchildcoll -- Identifiant d'objet des groupes fils

Description

array hw_getchildcoll ( int connection, int objectid)

hw_getchildcoll() retourne un tableau contenant les identifiants d'objets des groupes fils du groupe objectid. Cette fonction ne retournera pas d'identifiants d'objets des documents fils.

Voir aussi hw_children() et hw_getchilddoccoll().

Précédent | Sommaire | Suivant
hw_getandlock | Niveau supérieur | hw_getchildcollobj


hw_getchildcollobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getchildcollobj -- object records d'un groupe d'enfants

Description

array hw_getchildcollobj ( int connection, int objectid)

hw_getchildcollobj() retourne un tableau d'object record. Chaque object records appartient à un groupe d'enfants de la collection objectid. La fonction ne retournera pas de documents enfants.

Voir aussi hw_childrenobj() et hw_getchilddoccollobj().

Précédent | Sommaire | Suivant
hw_getchildcoll | Niveau supérieur | hw_getchilddoccoll


hw_getchilddoccoll

(PHP 3>= 3.0.3, PHP 4 )

hw_getchilddoccoll -- ids des documents fils d'un groupe

Description

array hw_getchilddoccoll ( int connection, int objectid)

hw_getchilddoccoll() retourne un tableau avec les id des documents fils d'une collection.

Voir aussi hw_children() et hw_getchildcoll().

Précédent | Sommaire | Suivant
hw_getchildcollobj | Niveau supérieur | hw_getchilddoccollobj


hw_getchilddoccollobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getchilddoccollobj -- Attributs des documents fils d'un groupe

Description

array hw_getchilddoccollobj ( int connection, int objectid)

hw_getchilddoccollobj() retourne un tableau contenant les attributs des documents fils du groupe objectid.

Voir aussi hw_childrenobj() et hw_getchildcollobj().

Précédent | Sommaire | Suivant
hw_getchilddoccoll | Niveau supérieur | hw_getobject


hw_getobject

(PHP 3>= 3.0.3, PHP 4 )

hw_getobject -- Lit les attributs d'un objet Hyperwave

Description

array hw_getobject ( int connection, mixed objectid, string query)

hw_getobject() retourne les attributs de l'objet dont l'identifiant est objectid, si le second paramètre est un entier. Si le second paramètre est un tableau, la fonction retournera un tableau d'attributs. Dans ce cas, le dernier paramètre est aussi évalué.

query a la syntaxe suivante :

<expression> ::= "(" <expression> ")" |

"!" <expression> | /* NOT */

<expression> "||" <expression> | /* OR */

<expression> "&&" <expression> | /* AND */

<attribute> <operator> <value>

<attribute> ::= /* * n'importe quel attribut (Title, Author, DocumentType ...) */

<operator> ::= "=" | /* égal */

"<" | /* moins que (comparaison de type chaîne) */

">" | /* plus que (comparaison de type chaîne) */

"~" /* recherche par expression régulière */

query permet de sélectionner une nouvelle fois certains objets dans la liste des objets donnés. Contrairement aux autres requêtes, celle-ci peut utiliser des attributs non indexés. Le nombre d'attributs retourné dépend de la requête de la requête, et des autorisations d'accès aux objets.

Voir aussi hw_getandlock() et hw_getobjectbyquery().

Précédent | Sommaire | Suivant
hw_getchilddoccollobj | Niveau supérieur | hw_getobjectbyquery


hw_getobjectbyquery

(PHP 3>= 3.0.3, PHP 4 )

hw_getobjectbyquery -- Recherche un objet

Description

array hw_getobjectbyquery ( int connection, string query, int max_hits)

hw_getobjectbyquery() recherche un objet sur tout le serveur et retourne un tableau d' object ids. Le nombre maximum d'objet est limité par max_hits. Si max_hits vaut -1 il n'y a pas de limite.

La requête ne fonctionnera qu'avec des attributs indexés.

Voir aussi hw_getobjectbyqueryobj().

Précédent | Sommaire | Suivant
hw_getobject | Niveau supérieur | hw_getobjectbyquerycoll


hw_getobjectbyquerycoll

(PHP 3>= 3.0.3, PHP 4 )

hw_getobjectbyquerycoll -- Recherche un objet dans un groupe

Description

array hw_getobjectbyquerycoll ( int connection, int objectid, string query, int max_hits)

hw_getobjectbyquerycoll() recherche un objet sur tout le groupe objectID et retourne un tableau d' object records. Le nombre maximum d'objet est limité par objectid. Si objectid vaut -1 il n'y a pas de limite.

La requête ne fonctionnera qu'avec des attributs indexés.

Voir aussi hw_getobjectbyquerycollobj().

Précédent | Sommaire | Suivant
hw_getobjectbyquery | Niveau supérieur | hw_getobjectbyquerycollobj


hw_getobjectbyquerycollobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getobjectbyquerycollobj -- Recherche un objet dans un groupe

Description

array hw_getobjectbyquerycollobj ( int connection, int objectid, string query, int max_hits)

hw_getobjectbyquerycollobj() recherche un objet sur tout le groupe objectID et retourne un tableau d' object records. Le nombre maximum d'objet est limité par objectid. Si objectid vaut -1 il n'y a pas de limite.

La requête ne fonctionnera qu'avec des attributs indexés.

Voir aussi hw_getobjectbyquerycoll().

Précédent | Sommaire | Suivant
hw_getobjectbyquerycoll | Niveau supérieur | hw_getobjectbyqueryobj


hw_getobjectbyqueryobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getobjectbyqueryobj -- Recherche un objet

Description

array hw_getobjectbyqueryobj ( int connection, string query, int max_hits)

hw_getobjectbyqueryobj() recherche un objet sur tout le serveur et retourne un tableau d' object records. Le nombre maximum d'objet est limité par max_hits. Si max_hits vaut -1 il n'y a pas de limite.

La requête ne fonctionnera qu'avec des attributs indexés.

Voir aussi hw_getobjectbyquery().

Précédent | Sommaire | Suivant
hw_getobjectbyquerycollobj | Niveau supérieur | hw_getparents


hw_getparents

(PHP 3>= 3.0.3, PHP 4 )

hw_getparents -- Identifiant d'objet des parents

Description

array hw_getparents ( int connection, int objectid)

hw_getparents() retourne un tableau indexé avec les identifiants des objets parents de objectid.

Précédent | Sommaire | Suivant
hw_getobjectbyqueryobj | Niveau supérieur | hw_getparentsobj


hw_getparentsobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getparentsobj -- Attributs des parents

Description

array hw_getparentsobj ( int connection, int objectid)

hw_getparentsobj() retourne un tableau indexé, avec les attributs et un tableau associé, d'informations statistiques à propos des attributs. Ce tableau associé est le dernier élément du tableau retourné. Chaque attribut appartient au père de l'objet objectid.

Précédent | Sommaire | Suivant
hw_getparents | Niveau supérieur | hw_getrellink


hw_getrellink

(PHP 3>= 3.0.3, PHP 4 )

hw_getrellink -- Crée le lien depuis la source vers le destinataire, relativement à rootid

Description

string hw_getrellink ( int link, int rootid, int sourceid, int destid)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_getparentsobj | Niveau supérieur | hw_getremote


hw_getremote

(PHP 3>= 3.0.3, PHP 4 )

hw_getremote -- Retourne un document distant

Description

int hw_getremote ( int connection, int objectid)

hw_getremote() retourne un document distant. Les documents distants sont , en Hyperwave, des documents lus depuis une source externe. La plupart des documents éloignés sont des pages web externes, ou des requêtes sur une base de données. Afin de pouvoir accéder à des sources externes, grâce aux documents distants, Hyperwave introduit l'interface HGI (Hyperwave Gateway Interface) qui est similaire à CGI. Actuellement, seuls les protocoles de FTP, HTTP et certaines bases de données sont accessibles avec HGI. hw_getremote() retourne le document de la source distante. Si vous voulez utiliser cette fonction, il vous faut vous familiariser avec HGIs. Il est aussi préférable d'utiliser PHP plutôt que Hyperwave pour accéder aux sources externes. Le support des bases de données sera plus difficile avec Hyperwave que PHP.

Voir aussi hw_getremotechildren().

Précédent | Sommaire | Suivant
hw_getrellink | Niveau supérieur | hw_getremotechildren


hw_getremotechildren

(PHP 3>= 3.0.3, PHP 4 )

hw_getremotechildren -- Retourne les fils d'un document distant

Description

int hw_getremotechildren ( int connection, string object_record)

hw_getremotechildren() retourne les fils d'un document distant. Les fils d'un document distant sont des documents distants eux mêmes. Cela est cohérent si une requête sur une base de données doit être rendu plus sélective, comme expliqué dans Hyperwave Programmers' Guide. Si le nombre de fils est 1 la fonction va retourner le document lui-même, la fonction retournera le document lui-même, formaté Hyperwave Gateway Interface (HGI). Si le nombre de fils est supérieur 1 la fonction retournera un tableau d'attributs, qui pourra servir à une nouvelle requête avec hw_getremotechildren(). Ces attributs sont virtuels et n'existent pas sur le serveur Hyperwave, et ainsi, n'ont pas d'identifiant d'objet valide. L'ordre exact de ces objets est du ressort de HGI. Si vous voulez utiliser cette fonction, vous devez être très familier HGIs. Il vaut mieux PHP plutôt que Hyperwave pour accéder aux fichiers distants. Le support de base de données y est bien meilleur.

Voir aussi hw_getremote().

Précédent | Sommaire | Suivant
hw_getremote | Niveau supérieur | hw_getsrcbydestobj


hw_getsrcbydestobj

(PHP 3>= 3.0.3, PHP 4 )

hw_getsrcbydestobj -- Retourne les ancrages qui pointent sur un objet

Description

array hw_getsrcbydestobj ( int connection, int objectid)

hw_getsrcbydestobj() retourne les attributs de tous les ancrages qui pointent sur objectid. L'objet peut être un document ou un autre ancrage, de type destination.

Voir aussi hw_getanchors().

Précédent | Sommaire | Suivant
hw_getremotechildren | Niveau supérieur | hw_gettext


hw_gettext

(PHP 3>= 3.0.3, PHP 4 )

hw_gettext -- Retourne un document texte

Description

int hw_gettext ( int connection, int objectid [, mixed rootid/prefix])

hw_gettext() retourne le document de l'objet objectid. Si le document possède des ancrages qui peuvent être insérés, ils seront déjà insérés. L'option rootID/prefix peut être une chaîne ou un entier. Si c'est un entier, il détermine la méthode d'insertion des liens dans le document. Par défaut, il vaut 0 et les liens seront construits en fonction du nom de l'objet cible. Cela sert beaucoup dans les applications web. Si un lien pointe sur un objet avec le nom 'film_internet' le lien HTML sera <A HREF="/internet_movie">. La position réelle de la source et de la cible dans la hiérarchie seront ignorés. Vous devrez modificer votre site web pour qu'il réécrive les URL, comme par exemple '/mon_script.php3/film_internet'. 'mon_script.php3' devra analyser $PATH_INFO et savoir recherche le document '/mon_script.php3/film_internet'. Si vous ne voulez pas de ce comportement, vous pouvez affecter à rootID/prefix n'importe quel prefixe. Dans ce cas, ce sera une chaîne.

Si rootid/prefix est un entier différent de 0 le lien sera construit avec tous les noms de la hiérarchie, en commençant à l'objet d'identifiant rootID/prefix, et séparé par des slash. Si, par exemple, le document 'film_internet' est situé à 'a-b-c-internet_movie' et '-' qui sert de séparateur hiérarchique de niveau sur le serveur Hyperwave et le document source est situé dans 'a-b-d-source' alors, le lien HTML serait: <A HREF="../c/internet_movie">. Cela est très pratique si vous voulez télécharger tout le contenu d'un serveur sur un disque, et faire une carte du système sur votre disque.

hw_gettext() n'est opérationnelle qu'avec des documents de pur texte. Elle n'ouvrira pas de canal spécial de transfert, et ainsi, bloquera le script le temps du transfert.

Voir aussi
hw_pipedocument(),
hw_free_document(),
hw_document_bodytag(),
hw_document_size() et
hw_output_document().

Précédent | Sommaire | Suivant
hw_getsrcbydestobj | Niveau supérieur | hw_username


hw_username

(no version information, might be only in CVS)

hw_username -- Nom de l'utilisateur actuellement identifié

Description

string hw_getusername ( int connection)

hw_getusername() retourne le nom d'utilisateur utilisé par la connexion.

Précédent | Sommaire | Suivant
hw_gettext | Niveau supérieur | hw_identify


hw_identify

(PHP 3>= 3.0.3, PHP 4 )

hw_identify -- Identifie un utilisateur

Description

int hw_identify ( string username, string password)

hw_identify() identifie un utilisateur, dont le nom d'utilisateur est username et le mot de passe password. L'identification n'est valide que pour la session en cours. Je ne pense pas que cette fonction serve souvent. Dans la plupart des cas, il est plus simple de s'identifier lors de l'ouverture de la connexion.

Voir aussi hw_connect().

Précédent | Sommaire | Suivant
hw_username | Niveau supérieur | hw_incollections


hw_incollections

(PHP 3>= 3.0.3, PHP 4 )

hw_incollections -- Vérifie qu'un identifiant d'objet est dans un groupe.

Description

array hw_incollections ( int connection, array object_id_array, array collection_id_array, int return_collections)

hw_incollections() vérifie qu'un ensemble d'objets (documents ou groupes) donnés par object_id_array fait partie des groupe listés par object_id_array. Lorsque le quatrième paramètre return_collections vaut 0, le sous ensemble d'identifiants qui font partie d'un groupe (i.e. les documents ou groupes qui sont fils d'un ou plusieurs groupe, ou leurs fils, récursivement) est retourné sous la forme d'un tableau. Cette option permet de mettre en valeur la partie de l'arborescence qui contient le résultat d'une requête, dans un sens graphique.

Précédent | Sommaire | Suivant
hw_identify | Niveau supérieur | hw_info


hw_info

(PHP 3>= 3.0.3, PHP 4 )

hw_info -- Informations à propos d'une connexion

Description

string hw_info ( int connection)

hw_info() retourne les informations de la connexion courante. La chaîne retournée a le format suivant : <Serverstring>, <Host>, <Port>, <Username>, <Port of Client>, <Byte swapping>

Précédent | Sommaire | Suivant
hw_incollections | Niveau supérieur | hw_inscoll


hw_inscoll

(PHP 3>= 3.0.3, PHP 4 )

hw_inscoll -- Insère un groupe

Description

int hw_inscoll ( int connection, int objectid, array object_array)

hw_inscoll() insère un nouveau groupe, avec les attributs object_array dans le groupe objectid.

Précédent | Sommaire | Suivant
hw_info | Niveau supérieur | hw_insdoc


hw_insdoc

(PHP 3>= 3.0.3, PHP 4 )

hw_insdoc -- Insère un document

Description

int hw_insdoc ( int connection, int parentid, string object_record, string text)

hw_insdoc() insère un nouveau document avec les attributs object_record, dans le groupe parentid. Cette fonction insère soit un objet avec ses seuls attributs, soit pur objet ascii, avec text s'il est fourni. Si vous voulez insérer un document de type général, utilisez plutôt hw_insertdocument().

Voir aussi hw_insertdocument() et hw_inscoll().

Précédent | Sommaire | Suivant
hw_inscoll | Niveau supérieur | hw_insertanchors


hw_insertanchors

(PHP 4 >= 4.0.4)

hw_insertanchors -- Insère uniquement des ancres dans du texte

Description

string hw_insertanchors ( int hwdoc, array anchorecs, array dest [, array urlprefixes])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_insdoc | Niveau supérieur | hw_insertdocument


hw_insertdocument

(PHP 3>= 3.0.3, PHP 4 )

hw_insertdocument -- Insère un document dans un groupe

Description

int hw_insertdocument ( int connection, int parent_id, int hw_document)

hw_insertdocument() insère un document dans le groupe parent_id. Le document doit avoir été créé auparavant avec hw_new_document(). Assurez-vous que les attributs du nouveau document contiennent au moins les attributs suivants : Type, DocumentType, Title et Name. Vous aurez aussi parfois besoin de MimeType. La fonction retourne l'identifiant de l'objet inséré, ou bien FALSE.

Voir aussi hw_pipedocument().

Précédent | Sommaire | Suivant
hw_insertanchors | Niveau supérieur | hw_insertobject


hw_insertobject

(PHP 3>= 3.0.3, PHP 4 )

hw_insertobject -- Insère un object record

Description

int hw_insertobject ( int connection, string object_rec, string parameter)

hw_insertobject() insère un objet dans le serveur. L'objet peut être n'importe quel objet Hyperwave valide. Reportez-vous à la documentation HG-CSP pour plus de détails sur les paramètres.

Note: Si vous voulez insérer un ancre, l'attribut Position doit être mis à la valeur start/end (début ou fin) ou encore 'invisible'. Les positions invisibles sont nécessaire si l'annotation n'a pas de liens correspondant dans le texte de l'annotation.

Voir aussi
hw_pipedocument(),
hw_insertdocument(),
hw_insdoc() et
hw_inscoll().

Précédent | Sommaire | Suivant
hw_insertdocument | Niveau supérieur | hw_mapid


hw_mapid

(PHP 3>= 3.0.13, PHP 4 )

hw_mapid -- Représente un id global en un id virtuel local

Description

int hw_mapid ( int connection, int server_id, int object_id)

hw_mapid() représente l'id d'un objet global de n'importe quel serveur Hyperwave, même si vous ne vous y êtes pas connecté avec hw_connect(), avec un id d'objet local virtuel. Cet id d'objet local peut alors être utilisé comme n'importe quel id d'objet : par exemple on peut obtenir l'enregistrement d'objet avec la fonction hw_getobject(). L'id du serveur est la première partie de l'id global (GOid) de l'objet, qui est en fait une adresse IP.

Note: Afin d'utiliser cette fonction, vous devez lever le flag F_DISTRIBUTED, ce qui ne peut être fait qu'à la compilation. Par défaut, il n'est pas levé. Lisez les commentaires dans le fichier hg_comm.c

Précédent | Sommaire | Suivant
hw_insertobject | Niveau supérieur | hw_modifyobject


hw_modifyobject

(PHP 3>= 3.0.7, PHP 4 )

hw_modifyobject -- Modifie les attributs d'objet record

Description

int hw_modifyobject ( int connection, int object_to_change, array remove, array add, int mode)

hw_modifyobject() permet d'effacer, d'ajouter ou de modifier les attributs d'un objet. L'objet est reperé par son identifiant object_to_change. Le premier tableau, remove, est la liste des attributs à effacer. Le deuxième tableau add est la liste des attributs à ajouter. Afin de modifier un attribut, il vous faudra dont l'effacer, puis l'ajouter à nouveau. hw_modifyobject() effacera toujours les attributs avant de les ajouter, à moins que la valeur de l'attribut à effacer ne soit pas une chaîne, ou un tableau.

Le dernier paramètre détermine si la modification est récursive ou pas. 1 signifie que la modification est récursive. Si un objet ne peut pas être modifié, il sera ignoré. hw_error() n'indiquera alors pas toujours d'erreur, même si certains objets n'ont pas pu être modifié.

Les clés des deux tableaux sont les noms des attributs. La valeur de chaque élément peut être un tableau, ou une chaîne ou n'importe quoi d'autre. Dans le cas du tableau, la valeur de l'attribut est construite en séparant chaque élément par un point virgule. Dans le cas de la chaîne, elle sert directement de valeur. Une chaîne vide provoquera un effacement de l'attribut. Dans le cas où la valeur n'est ni un tableau, ni une chaîne, aucune opération ne sera effectuée. Cela est nécessaire si vous voulez ajouter un attribut complètement une nouvelle valeur pour un attribut existant. Si le tableau d'effacement contenait une chaîne vide comme attribut, le serveur tenterait d'effacer l'attribut, ce qui échouerai de toute manière, car cet attribut n'existe pas. L'ajout de cet attribut échouerai aussi. Affecter la valeur de 0 à cet attribut ne l'effacerait pas, et l'ajout fonctionnerait.

Si vous voulez changer l'attribut 'Nom' de valeur courante 'livres' en 'articles' vous devrez faire deux tableaux, et appeler hw_modifyobject().

Exemple 1. Modification d'un attribut

<?php
       // $connect est une connexion valide
       // $objid est l'identifiant de l'objet
       $remarr = array("Name" => "books");
       $addarr = array("Name" => "articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);
?>
Afin d'effacer/ajouter une paire nom=valeur aux attributs d'un objet, utilisez simplement les tableaux d'effacement et d'ajout, et laissez le dernier/troisième paramètre vide. Si l'attribut est le premier de ce nom à ajouter, donnez une valeur entière à cet élément.

Exemple 2. Ajouter un nouvel attribut

<?php
 // $connect st une connexion Hyperwave valide
 // $objid est l'identifiant de l'objet &agrave; modifier
 $remarr = array("Name" => 0);
 $addarr = array("Name" => "articles");
 $hw_modifyobject($connect, $objid, $remarr, $addarr);
?>

Note : Les attributs multilingues, (tels que 'Title'), peuvent être modifiés de deux manières : soit en fournissant la valeur de ces attributs de manière native (langue :valeur), soit en fournissant un tableau avec les éléments de chaque langue, comme décrit ci-dessus. L'exemple deviendrai alors :

Exemple 3. Modifier l'attribut de Titre (Title)

<?php
  $remarr = array("Title" => "en:Books");
  $addarr = array("Title" => "en:Articles");
  $hw_modifyobject($connect, $objid, $remarr, $addarr);
?>
ou

Exemple 4. Modifier l'attribut Title

<?php
  $remarr = array("Title" => array("en" => "Books"));
  $addarr = array("Title" => array("en" => "Articles", "ge"=>"Artikel"));
  $hw_modifyobject($connect, $objid, $remarr, $addarr);
?>
Pour supprimer l'entrée française 'Livres' et ajouter l'entrée 'Articles' et l'entrée allemande 'Artikel'.

Exemple 5. Suppression d'un attribut

<?php
  $remarr = array("Title" => "");
  $addarr = array("Title" => "en:Articles");
  $hw_modifyobject($connect, $objid, $remarr, $addarr);
?>

Note : Cet exemple va effacer tous les attributs avec le nom 'Title' et ajouter un nouvel attribut 'Title'. Cela peut être pratique pour effacer des attributs récursivement.

Note : Si vous devez effacer tous les attributs avec un certain nom, vous devez passer une chaîne vide comme valeur.

Note : Seuls les attributs 'Title', 'Description' et 'Keyword' gère correctement le préfixe de langue. Pour les autres attributs qui ne portent pas de préfixe de langage, le préfixe 'xx' sera assigné.

Note : L'attribut 'Name' est un peu particulier. Dans certains cas, il ne peut pas être complétement effacé. Vous aurez alors le message 'Change of base attribute' (l'apparition de cette erreur n'est pas très claire). Ainsi, vous aurez à ajouter une nouvelle entrée pour Name puis, effacer l'ancien.

Note : Il ne faut pas encadrer cette fonction par des appels à hw_getandlock() et hw_unlock(). hw_modifyobject() le fait de manière interne.

Retourne TRUE si aucune erreur ne survient, et FALSE sinon.

Précédent | Sommaire | Suivant
hw_mapid | Niveau supérieur | hw_mv


hw_mv

(PHP 3>= 3.0.3, PHP 4 )

hw_mv -- Déplace un objet

Description

int hw_mv ( int connection, array object_id_array, int source_id, int destination_id)

hw_mv() déplaces les objets dont les identifiants sont passés dans le tableau source_id, depuis le source_id dans le destination_id. Si destination id vaut 0, les objets ne seront plus insérés dans le groupe (ni dans le serveur). Dans ce cas, si une instance était la dernière instance d'un objet, l'objet sera effacé. Si vous voulez effacer toutes les instances d'un coup, utilisez hw_deleteobject().

La valeur retournée est le nombre d'objet déplacés.

Voir aussi hw_cp() et hw_deleteobject().

Précédent | Sommaire | Suivant
hw_modifyobject | Niveau supérieur | hw_new_document


hw_new_document

(PHP 3>= 3.0.3, PHP 4 )

hw_new_document -- Crée un nouveau document

Description

int hw_new_document ( string object_record, string document_data, int document_size)

hw_new_document() retourne un nouveau document Hyperwave avec comme données document_data et comme attributs object_record. La longueur de document_data doit être données dans document_size. Cette fonction n'insère pas l'objet dans le serveur Hyperwave.

Voir aussi
hw_free_document(),
hw_document_size(),
hw_document_bodytag(),
hw_output_document() et
hw_insertdocument().

Précédent | Sommaire | Suivant
hw_mv | Niveau supérieur | hw_objrec2array


hw_objrec2array

(PHP 3>= 3.0.3, PHP 4 )

hw_objrec2array -- Convertit les attributs d'un objet en tableau

Description

array hw_objrec2array ( string object_record [, array format])

hw_objrec2array() convertit les attributs object_record d'un objet en un tableau. Les clés du tableau seront les noms des attributs. Les attributs multiples comme par exemple 'Title', dans différentes langues, seront rassemblées dans un autre tableau. Une clé est la partie gauche d'un attribut. Cette partie doit être longue d'au moins deux caractères. Les autres valeurs multiples d'un attribut sans préfixe forment un tableau indexé. Si le paramètre optionnel format est omis, les attributs 'Title', 'Description' et 'Keyword' seront traités comme des attributs de langue, et les attributs 'Group', 'Parent' et'HtmlAttr' seront traités comme des attributs non préfixés, à valeur multiples. En passant un tableau qui contient le type de chaque attributs, vous pouvez modifier ce comportement. Le tableau est un tableau associatif, avec les attributs comme nom d'index, et la valeur étant l'une des suivantes : HW_ATTR_LANG or HW_ATTR_NONE

Voir aussi hw_array2objrec().

Précédent | Sommaire | Suivant
hw_new_document | Niveau supérieur | hw_output_document


hw_output_document

(PHP 3>= 3.0.3, PHP 4 )

hw_output_document -- Affiche hw_document

Description

int hw_output_document ( int hw_document)

hw_output_document() affiche hw_document sans la balise BODY.

Pour la compatibilité ascendente, hw_outputdocument() est aussi accepté, mais il est déconseillé.

Précédent | Sommaire | Suivant
hw_objrec2array | Niveau supérieur | hw_pconnect


hw_pconnect

(PHP 3>= 3.0.3, PHP 4 )

hw_pconnect -- Crée une connexion persistante

Description

int hw_pconnect ( string host, int port, string username, string password)

hw_pconnect() retourne un index de connexion en cas de succès, et FALSE si la connexion n'a pas pu être créée. hw_pconnect() ouvre une connexion persistante à un serveur Hyperwave. Tous les arguments doivent être entre guillemets, hormis le numéro de port port. Les arguments username et password sont optionnels, et peuvent être ignorés. Dans ce cas, aucune authentification ne sera faite, (connexion anonyme). Cette fonction retourne un index de connexion qui sera utilisée par les autres fonctions Hyperwave. Vous pouvez ouvrir plusieurs connexions simultanées.

Voir aussi hw_connect().

Précédent | Sommaire | Suivant
hw_output_document | Niveau supérieur | hw_pipedocument


hw_pipedocument

(PHP 3>= 3.0.3, PHP 4 )

hw_pipedocument -- Retourne un document

Description

int hw_pipedocument ( int connection, int objectid)

hw_pipedocument() retourne le document Hyperwave d'objet id objectid. Si le document a des ancrages, ils seront insérés. Le document sera transmis via une connexion de données spéciale, qui ne bloque pas la connexion de contrôle (ie, le serveur n'attend pas la fin du transfert pour rendre la main).

Voir aussi
hw_gettext(),
hw_free_document(),
hw_document_size(),
hw_document_bodytag() et
hw_output_document().

Précédent | Sommaire | Suivant
hw_pconnect | Niveau supérieur | hw_root


hw_root

(PHP 3>= 3.0.3, PHP 4 )

hw_root -- Object id de la racine

Description

int hw_root ( )

hw_root() retourne l'object id de la racine. Actuellement, cette identifiant est toujours 0. L'ensemble des fils de la racine est celui du serveur courant.

Précédent | Sommaire | Suivant
hw_pipedocument | Niveau supérieur | hw_setlinkroot


hw_setlinkroot

(PHP 3>= 3.0.3, PHP 4 )

hw_setlinkroot -- Configure l'identifiant vers lequel les liens sont calculés

Description

void hw_setlinkroot ( int link, int rootid)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_root | Niveau supérieur | hw_stat


hw_stat

(PHP 3>= 3.0.3, PHP 4 )

hw_stat -- Retourne le statut de la chaîne

Description

string hw_stat ( int link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hw_setlinkroot | Niveau supérieur | hw_unlock


hw_unlock

(PHP 3>= 3.0.3, PHP 4 )

hw_unlock -- Déverrouille un objet

Description

int hw_unlock ( int connection, int objectid)

hw_unlock() déverrouille un document, et laisse l'accès aux autres utilisateurs.

Voir aussi hw_getandlock().

Précédent | Sommaire | Suivant
hw_stat | Niveau supérieur | hw_who


hw_who

(PHP 3>= 3.0.3, PHP 4 )

hw_who -- Liste des utilisateurs actuellement identifiés

Description

int hw_who ( int connection)

hw_who() retourne un tableau contenant la liste des utilisateurs actuellement connectés au serveur Hyperwave. Chaque élément du tableau est lui-même un tableau, qui contient l'identifiant de l'élément, le nom, le système, la date de connexion (onSinceDate), l'heure de connexion (onSinceTime), la durée de connexion (TotalTime ) et self. 'self' contient l'élément est l'utilisateur qui a appelé la fonction.

Précédent | Sommaire | Suivant
hw_unlock | Niveau supérieur | Hyperwave API


Hyperwave API

Manuel PHP
Précédent Suivant

XXXIX. Hyperwave API

Introduction

Hyperwave a été développé à l'IICM à Graz. Le projet a commencé avec le nom de Hyper-G, puis il est devenu Hyperwave, lors de sa commercialisation en 1996.

Hyperwave n'est pas un logiciel libre. Sa version courante, la 5.5, est disponible à http://www.hyperwave.com/. Une version limitée dans le temps est commandable gratuitement (30 jours).

Voir aussi le module Hyperwave.

Hyperwave est un système d'information comparable à une base de données (HIS, Hyperwave Information Server). Il se concentre sur le stockage et la gestion de documents. Un document peut être n'importe quelle pièce de données qui soit stockable dans un fichier. Chaque document est accompagné de son propre enregistrement. L'enregistrement contient les méta-données du document. Les métas données sont des listes d'attributs qui peuvent être manipulés par l'utilisateur. Certains attributs sont gérés par le serveur Hyperwave, les autres peuvent être modifiés par l'utilisateur.

Pré-requis

Depuis 2001, il y a un SDK Hyperwave disponible. Il supporte Java, JavaScript et C++. Cette extension PHP est basée sur l'interface C++. Pour activer le support hwapi de PHP, vous devez installer le SDK d'abord.

Installation

Après avoir installé le SDK Hyperwave, compilez PHP avec l'option --with-hwapi[=DIR].

intégration dans Apache

L'intégration dans Apache et éventuellement d'autres serveurs est déjà décrite dans le module Hyperwave, qui a été la première extension à se connecter au serveur Hyperwave.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
hwapi.allow_persistent | "0" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Classes

L'API fournie avec l'extension HW_API est complétement orientée objet. Elle est très similaire à l'interface C++ du SDK Hyperwave. Elle est constituée des classes suivantes :

  • HW_API

  • HW_API_Object

  • HW_API_Attribute

  • HW_API_Error

  • HW_API_Content

  • HW_API_Reason

Certains classes basiques comme HW_API_String, HW_API_String_Array, etc., qui existent dans le SDK Hyperwave SDK n'ont pas été implémentées, car PHP a de puissants ersatz pour elles.

Chaque classe dispose de certaines méthodes, dont les noms sont identiques à leur alter ego du SDK Hyperwave SDK. Le passage des arguments à ces fonctions diffère de toutes les autres extensions PHP, mais est proche de l'API C++ du SDK Hyperwave. Au lieu de passer plusieurs paramètres, ils sont tous placés dans un tableau associatif, et transmis sous la forme d'un seul paramètre. Les paramètres les plus communs sont listés ci-dessous. Si d'autres paramètres sont nécessaires, ils seront documentés à chaque cas.

  • objectIdentifier Le nom ou l'identifiant de l'objet, e.g. "rootcollection", "0x873A8768 0x00000002".

  • parentIdentifier Le nom ou l'identifiant de l'objet qui est considéré comme parent.

  • object Une instance de la classe HW_API_Object.

  • parameters Une instance de la classe HW_API_Object.

  • version La version de l'objet.

  • mode Un entier qui détermine la méthode d'exécution de l'opération.

  • attributeSelector Un tableau de chaînes de caractères, chacun contenant le nom d'un attribut. C'est le cas si vous lisez des enregistrements d'objets, et que vous voulez inclure certains attributs.

  • objectQuery Une requête pour sélectionner certains objets dans une liste. Elle est utilisée pour réduire le nombre d'objets qui a été livré par une fonction comme hw_api->children() ou hw_api->find().

Table des matières
hw_api_attribute->key -- Retourne la clé d'un attribut
hw_api_attribute->langdepvalue -- Retourne la valeur d'un attribut dans une langue
hw_api_attribute->value -- Retourne la valeur de l'attribut HW
hw_api_attribute->values -- Retourne toutes les valeurs de l'attribut sous la forme d'un tableau de chaînes
hw_api_attribute -- Crée une nouvelle instance de la classe hw_api_attribute
hw_api->checkin -- Archive un objet
hw_api->checkout -- Extrait un objet
hw_api->children -- Retourne le fils d'un objet
hw_api_content->mimetype -- Retourne le type MIME
hw_api_content->read -- Lit le contenu
hw_api->content -- Retourne le contenu d'un objet
hw_api->copy -- Copies physically
hw_api->dbstat -- Retourne des statistiques sur le serveur de bases
hw_api->dcstat -- Retourne des statistiques sur le serveur de cache de document
hw_api->dstanchors -- Liste toutes les ancres de destination
hw_api->dstofsrcanchors -- Retourne la destination d'une ancre source
hw_api_error->count -- Retourne le nombre de raisons d'erreurs
hw_api_error->reason -- Retourne la première raison d'erreur
hw_api->find -- Recherche des objets
hw_api->ftstat -- Retourne des statistiques sur le serveur de textes
hwapi_hgcsp -- Retourne un objet de classe hw_api
hw_api->hwstat -- Retourne les statistiques sur le serveur Hyperwave
hw_api->identify -- S'identifie auprès du serveur Hyperwave
hw_api->info -- Retourne des information sur la configuration du serveur
hw_api->insert -- Insère un nouvel objet
hw_api->insertanchor -- Insère un nouvel objet de type ancre
hw_api->insertcollection -- Insère un nouvel objet de type collection
hw_api->insertdocument -- Insère un nouvel objet de type document
hw_api->link -- Crée un lien avec un objet
hw_api->lock -- Verrouille un objet
hw_api->move -- Déplace un objet d'une collection à l'autre
hw_api->content -- Crée une nouvelle instance de la classe hw_api_content
hw_api_object->assign -- Clone un objet
hw_api_object->attreditable -- Vérifie si un attribut est éditable
hw_api_object->count -- Retourne le nombre d'attributs
hw_api_object->insert -- Insère un nouvel attribut HyperWave
hw_api_object -- Crée une nouvelle instance de la classe hw_api_object
hw_api_object->remove -- Supprime un attribut HyperWave
hw_api_object->title -- Retourne le titre de l'attribut
hw_api_object->value -- Retourne la valeur de l'attribut
hw_api->object -- Lit les informations d'attribut
hw_api->objectbyanchor -- Retourne l'objet propriétaire d'une ancre
hw_api->parents -- Retourne le parent d'un objet
hw_api_reason->description -- Retourne la description d'une raison
hw_api_reason->type -- Retourne le type de raison
hw_api->remove -- Efface un objet
hw_api->replace -- Remplace un objet
hw_api->setcommitedversion -- Valide une version autre que la dernière
hw_api->srcanchors -- Retourne la liste de toutes les ancres
hw_api->srcsofdst -- Retourne les sources d'un objet de destination
hw_api->unlock -- Déverrouille un objet HyperWave verrouillé
hw_api->user -- Retourne le propriétaire d'un objet
hw_api->userlist -- Retourne la liste des utilisateurs connectés

Précédent | Sommaire | Suivant
hw_who | Niveau supérieur | hw_api_attribute->key


hw_api_attribute->key

(no version information, might be only in CVS)

hw_api_attribute->key -- Retourne la clé d'un attribut

Description

string key ( void )

key retourne le nom de l'attribut.

Voir aussi hwapi_attribute_value().

Précédent | Sommaire | Suivant
Hyperwave API | Niveau supérieur | hw_api_attribute->langdepvalue


hw_api_attribute->langdepvalue

(no version information, might be only in CVS)

hw_api_attribute->langdepvalue -- Retourne la valeur d'un attribut dans une langue

Description

string langdepvalue ( string language)

hw_api_attribute->langdepvalue() retourne la valeur de l'attribut dans la langue language.

Voir aussi hwapi_attribute_value().

Précédent | Sommaire | Suivant
hw_api_attribute->key | Niveau supérieur | hw_api_attribute->value


hw_api_attribute->value

(no version information, might be only in CVS)

hw_api_attribute->value -- Retourne la valeur de l'attribut HW

Description

string value ( void )

hw_api_attribute->value() retourne la valeur de l'attribut.

Voir aussi hwapi_attribute_key() et hwapi_attribute_values().

Précédent | Sommaire | Suivant
hw_api_attribute->langdepvalue | Niveau supérieur | hw_api_attribute->values


hw_api_attribute->values

(no version information, might be only in CVS)

hw_api_attribute->values -- Retourne toutes les valeurs de l'attribut sous la forme d'un tableau de chaînes

Description

array values ( void )

hw_api_attribute->values() retourne toutes les valeurs de l'attribut sous la forme d'un tableau de chaînes.

Voir aussi hwapi_attribute_value().

Précédent | Sommaire | Suivant
hw_api_attribute->value | Niveau supérieur | hw_api_attribute


hw_api_attribute

(no version information, might be only in CVS)

hw_api_attribute -- Crée une nouvelle instance de la classe hw_api_attribute

Description

object attribute ( [string name [, string value]])

hw_api_attribute->attribute() crée une nouvelle instance de la classe hw_api_attribute avec le nom name et la valeur value.

Précédent | Sommaire | Suivant
hw_api_attribute->values | Niveau supérieur | hw_api->checkin


hw_api->checkin

(no version information, might be only in CVS)

hw_api->checkin -- Archive un objet

Description

object checkin ( array parameter)

hw_api->checkin archive un objet ou une hiérarchie d'objets. Le paramètre obligatoire parameter contient un 'objectIdentifier' et les éléments optionnels 'version', 'comment', 'mode' et 'objectQuery'. 'version' spécifie la version de l'objet. Elle est constituée de version majeure et mineure, séparée par des virgules. Si une version n'existe pas, la version mineure est incrémentée. 'mode' peut être l'une des constantes suivantes :

HW_API_CHECKIN_NORMAL

Archive et valide l'objet. L'objet doit être un document.

HW_API_CHECKIN_RECURSIVE

Si l'objet à archiver est une collection, tous les fils seront vérifié récursivement, si ils sont des documents. Tenter d'archiver une collection générera une erreur.

HW_API_CHECKIN_FORCE_VERSION_CONTROL

Archive un objet même si il ne passe pas sous le contrôle de versions.

HW_API_CHECKIN_REVERT_IF_NOT_CHANGED

Vérifie si il existe une version différente de la dernière version. A moins que cela ne soit le cas, l'objet sera alors archivé.

HW_API_CHECKIN_KEEP_TIME_MODIFIED

Conserve la date de modification du plus récent objet.

HW_API_CHECKIN_NO_AUTO_COMMIT

L'objet n'est pas automatiquement validé lors de l'archivage.

Voir aussi hwapi_checkout().

Précédent | Sommaire | Suivant
hw_api_attribute | Niveau supérieur | hw_api->checkout


hw_api->checkout

(no version information, might be only in CVS)

hw_api->checkout -- Extrait un objet

Description

object checkout ( array parameter)

hw_api->checkout extrait un objet ou toute une hiérarchie d'objets. Le paramètre parameter contient l'élément obligatoire 'objectIdentifier' et les éléments optionnels 'version', 'mode' et 'objectQuery'. 'mode' peut prendre l'une des valeurs suivantes :

HW_API_CHECKIN_NORMAL

Extrait un objet. L'objet doit être un document.

HW_API_CHECKIN_RECURSIVE

Si l'objet à extraire est une collection, tous les fils seront extraits récursivement, si ce sont des documents. Extraire une collection générera une erreur.

Voir aussi hwapi_checkin().

Précédent | Sommaire | Suivant
hw_api->checkin | Niveau supérieur | hw_api->children


hw_api->children

(no version information, might be only in CVS)

hw_api->children -- Retourne le fils d'un objet

Description

array children ( array parameter)

hw_api->children() retrouve le fils d'une collection ou l'attribut d'un document. Le fils peut être ensuite filtré en spécifiant une requête d'objet. Le paramètre parameter contient les éléments requis 'objectIdentifier' et les éléments optionnels 'attributeSelector' et 'objectQuery'.

La valeur retournée est un tableau d'objets de type HW_API_Object ou HW_API_Error.

Voir aussi hwapi_parents().

Précédent | Sommaire | Suivant
hw_api->checkout | Niveau supérieur | hw_api_content->mimetype


hw_api_content->mimetype

(no version information, might be only in CVS)

hw_api_content->mimetype -- Retourne le type MIME

Description

string mimetype ( void )

hw_api_content->mimetype retourne le type MIME du contenu.

Précédent | Sommaire | Suivant
hw_api->children | Niveau supérieur | hw_api_content->read


hw_api_content->read

(no version information, might be only in CVS)

hw_api_content->read -- Lit le contenu

Description

string read ( string buffer, integer len)

hw_api_content->read() lit len octets dans le buffer buffer.

Précédent | Sommaire | Suivant
hw_api_content->mimetype | Niveau supérieur | hw_api->content


hw_api->content

(no version information, might be only in CVS)

hw_api->content -- Retourne le contenu d'un objet

Description

object content ( array parameter)

hw_api->content() retourne le contenu d'un document sous la forme d'un objet de type hw_api_content. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectidentifier' et l'élément optionnel 'mode'. Le mode peut être l'une des constantes suivantes : HW_API_CONTENT_ALLLINKS, HW_API_CONTENT_REACHABLELINKS ou HW_API_CONTENT_PLAIN. HW_API_CONTENT_ALLLINKS signifie qu'il faut insérer toutes les ancres même si la destination n'est pas accessible. HW_API_CONTENT_REACHABLELINKS indique à hw_api_content() qu'il faut insérer uniquement les destinations accessibles, et HW_API_CONTENT_PLAIN conduit à un document sans aucun liens.

Précédent | Sommaire | Suivant
hw_api_content->read | Niveau supérieur | hw_api->copy


hw_api->copy

(no version information, might be only in CVS)

hw_api->copy -- Copies physically

Description

object copy ( array parameter)

hw_api->copy() fait une copie physique incluant le contenu éventuel, et retourne un nouvel objet, ou un objet d'erreur. Le paramètre parameter est un tableau, qui contient les éléments obligatoires 'objectIdentifier' et 'destinationParentIdentifier' et l'élément optionnel 'attributeSelector'.

Voir aussi hwapi_move() et hwapi_link().

Précédent | Sommaire | Suivant
hw_api->content | Niveau supérieur | hw_api->dbstat


hw_api->dbstat

(no version information, might be only in CVS)

hw_api->dbstat -- Retourne des statistiques sur le serveur de bases

Description

object dbstat ( array parameter)

dbstat() retourne des statistiques sur le serveur de bases.

Voir aussi
hwapi_dcstat(),
hwapi_hwstat() et
hwapi_ftstat().

Précédent | Sommaire | Suivant
hw_api->copy | Niveau supérieur | hw_api->dcstat


hw_api->dcstat

(no version information, might be only in CVS)

hw_api->dcstat -- Retourne des statistiques sur le serveur de cache de document

Description

object dcstat ( array parameter)

hw_api->dcstat() retourne des statistiques sur le serveur de cache de document.

Voir aussi
hwapi_hwstat(),
hwapi_dbstat() et
hwapi_ftstat().

Précédent | Sommaire | Suivant
hw_api->dbstat | Niveau supérieur | hw_api->dstanchors


hw_api->dstanchors

(no version information, might be only in CVS)

hw_api->dstanchors -- Liste toutes les ancres de destination

Description

object dstanchors ( array parameter)

hw_api->dstanchors() liste toutes les ancres de destination. Le paramètre parameter contient l'élément obligatoire 'objectIdentifier' et les éléments optionnels 'attributeSelector' et 'objectQuery'.

Voir aussi hwapi_srcanchors().

Précédent | Sommaire | Suivant
hw_api->dcstat | Niveau supérieur | hw_api->dstofsrcanchors


hw_api->dstofsrcanchors

(no version information, might be only in CVS)

hw_api->dstofsrcanchors -- Retourne la destination d'une ancre source

Description

object dstofsrcanchors ( array parameter)

hw_api->dstofsrcanchors() retourne l'objet de destination sur lequel pointe l'ancre source spécifiée. L'objet de destination peut être une ancre de destination ou un document entier. Le paramètre parameter contient l'élément obligatoire 'objectIdentifier' et le paramètre optionnel 'attributeSelector'.

Voir aussi
hwapi_srcanchors(),
hwapi_dstanchors() et
hwapi_objectbyanchor().

Précédent | Sommaire | Suivant
hw_api->dstanchors | Niveau supérieur | hw_api_error->count


hw_api_error->count

(no version information, might be only in CVS)

hw_api_error->count -- Retourne le nombre de raisons d'erreurs

Description

int count ( void )

hw_api_error->count() retourne le nombre de raisons d'erreurs.

Voir aussi hwapi_error_reason().

Précédent | Sommaire | Suivant
hw_api->dstofsrcanchors | Niveau supérieur | hw_api_error->reason


hw_api_error->reason

(no version information, might be only in CVS)

hw_api_error->reason -- Retourne la première raison d'erreur

Description

object reason ( void )

hw_api_error->reason() retourne la première raison d'erreur.

Voir aussi hwapi_error_count().

Précédent | Sommaire | Suivant
hw_api_error->count | Niveau supérieur | hw_api->find


hw_api->find

(no version information, might be only in CVS)

hw_api->find -- Recherche des objets

Description

array find ( array parameter)

hw_api->find() recherche des objets grâce à leur clé d'exécution et/ou grâce à une requête en texte plein. Les objets trouvés peuvent alors être filtrés à nouveau par une requête optionnelle. Les objets sont triés par importance. La seconde opération de recherche est relativement lente, et ses résultats peuvent être limités à certaines valeurs. Cela permet de réaliser des recherches incrémentales, chacune retournant un sous ensemble de tous les documents trouvés, en partant d'un index donné. Le paramètre parameter est un tableau qui contient les éléments obligatoires 'objectquery', 'scope', 'lanugages' et 'attributeselector'. En cas de recherche incrémentale, les éléments optionnels 'startIndex', 'numberOfObjectsToGet' et 'exactMatchUnit' peuvent aussi être passés.

Précédent | Sommaire | Suivant
hw_api_error->reason | Niveau supérieur | hw_api->ftstat


hw_api->ftstat

(no version information, might be only in CVS)

hw_api->ftstat -- Retourne des statistiques sur le serveur de textes

Description

object ftstat ( array parameter)

ftstat() retourne des statistiques sur le serveur de textes.

Voir aussi
hwapi_dcstat(),
hwapi_dbstat() et
hwapi_hwstat().

Précédent | Sommaire | Suivant
hw_api->find | Niveau supérieur | hwapi_hgcsp


hwapi_hgcsp

(no version information, might be only in CVS)

hwapi_hgcsp -- Retourne un objet de classe hw_api

Description

object hwapi_hgcsp ( string hostname [, int port])

hwapi_hgcsp() ouvre une connexion au serveur Hyperwave sur l'hôte hostname. Le protocole utilisé est HGCSP. Si vous l'omettez, le port 418 sera utilisé.

Voir aussi hwapi_hwtp().

Précédent | Sommaire | Suivant
hw_api->ftstat | Niveau supérieur | hw_api->hwstat


hw_api->hwstat

(no version information, might be only in CVS)

hw_api->hwstat -- Retourne les statistiques sur le serveur Hyperwave

Description

object hwstat ( array parameter)

hwstat() retourne les statistiques sur le serveur Hyperwave.

Voir aussi
hwapi_dcstat(),
hwapi_dbstat() et
hwapi_ftstat().

Précédent | Sommaire | Suivant
hwapi_hgcsp | Niveau supérieur | hw_api->identify


hw_api->identify

(no version information, might be only in CVS)

hw_api->identify -- S'identifie auprès du serveur Hyperwave

Description

object identify ( array parameter)

hw_api->identify() s'identifie auprès du serveur Hyperwave. Le paramètre parameter est un tableau qui contient les éléments obligatoires 'username' et 'password'.

La valeur retournée sera un objet du type HW_API_Error si l'identification a échoué, ou bien TRUE si cela a fonctionné.

Précédent | Sommaire | Suivant
hw_api->hwstat | Niveau supérieur | hw_api->info


hw_api->info

(no version information, might be only in CVS)

hw_api->info -- Retourne des information sur la configuration du serveur

Description

object info ( array parameter)

hw_api->info() retourne des information sur la configuration du serveur.

Voir aussi
hwapi_dcstat(),
hwapi_dbstat(),
hwapi_ftstat() et
hwapi_hwstat().

Précédent | Sommaire | Suivant
hw_api->identify | Niveau supérieur | hw_api->insert


hw_api->insert

(no version information, might be only in CVS)

hw_api->insert -- Insère un nouvel objet

Description

object insert ( array parameter)

hw_api->insert() insère un nouvel objet. Le type d'objet peut être user, group, document ou anchor. Suivant le type de l'autre objet, des attributs supplémentaires doivent être assignés. Le paramètre parameter est un tableau qui contient les élément obligatoires 'object' et 'content' (si l'objet est un document) et les éléments optionnels 'parameters', 'mode' et 'attributeSelector'. 'object' doit contenir tous les attributs de l'objet. 'parameters' est un objet, qu contient les attributs supplémentaires, comme ceux de destination (attribut 'Parent'). 'content' est une combinaison des constantes suivantes :

HW_API_INSERT_NORMAL

L'object est inseré sur le serveur.

HW_API_INSERT_FORCE-VERSION-CONTROL

HW_API_INSERT_AUTOMATIC-CHECKOUT

HW_API_INSERT_PLAIN

HW_API_INSERT_KEEP_TIME_MODIFIED

HW_API_INSERT_DELAY_INDEXING

Voir aussi hwapi_replace().

Précédent | Sommaire | Suivant
hw_api->info | Niveau supérieur | hw_api->insertanchor


hw_api->insertanchor

(no version information, might be only in CVS)

hw_api->insertanchor -- Insère un nouvel objet de type ancre

Description

object insertanchor ( array parameter)

hw_api->insertanchor() est un raccourci pour hwapi_insert(). Elle insère un objet de type ancre ('anchor') et assigne les attribus nécessaires. Le paramètre parameter contient les éléments obligatoires 'object' et 'documentIdentifier' et les éléments optionnels 'destinationIdentifier', 'parameter', 'hint' et 'attributeSelector'. L'élément 'documentIdentifier' spécifie le document d'insertion de l'ancre. La cible de l'ancre est spécifiée par 'destinationIdentifier' si il existe. Si la cible n'existe pas, l'élément 'hint' doit être configuré avec le nom de l'objet qui est prévu pour être inséré ultérieurement. Une fois que l'insertion a été faite, la cible sera résolue automatiquement.

Voir aussi
hwapi_insertdocument(),
hwapi_insertcollection() et
hwapi_insert().

Précédent | Sommaire | Suivant
hw_api->insert | Niveau supérieur | hw_api->insertcollection


hw_api->insertcollection

(no version information, might be only in CVS)

hw_api->insertcollection -- Insère un nouvel objet de type collection

Description

object insertcollection ( array parameter)

hw_api->insertcollection() est un raccourci pour la fonction hwapi_insert(). Elle insère un objet de type collection et lui assigne certains attributs obligatoires. parameter est un tableau qui contient les éléments obligatoires 'object' et 'parentIdentifier', et les éléments optionnels 'parameter' et 'attributeSelector'. Voyez hwapi_insert() pour connaitre le détails de chaque élément.

Voir aussi
hwapi_insertdocument(),
hwapi_insertanchor() et
hwapi_insert().

Précédent | Sommaire | Suivant
hw_api->insertanchor | Niveau supérieur | hw_api->insertdocument


hw_api->insertdocument

(no version information, might be only in CVS)

hw_api->insertdocument -- Insère un nouvel objet de type document

Description

object insertdocument ( array parameter)

hw_api->insertdocument() est un raccourci pour hwapi_insert(). Il insère un objet avec un contenu et assigne certains attributs obligatoires. Le paramètre parameter est un tableau qui contient les éléments obligatoires 'object', 'parentIdentifier' et 'content' et les éléments optionnels 'mode', 'parameter' et 'attributeSelector'. Voyez hwapi_insert() pour la signification de chacun des éléments.

Voir aussi
hwapi_insert(),
hwapi_insertanchor() et
hwapi_insertcollection().

Précédent | Sommaire | Suivant
hw_api->insertcollection | Niveau supérieur | hw_api->link


hw_api->link

(no version information, might be only in CVS)

hw_api->link -- Crée un lien avec un objet

Description

object link ( array parameter)

hw_api->link() crée un lien avec un objet. Accéder à ce lien revient à accéder à l'objet vers lequel il pointe. Le paramètre parameter contient les éléments obligatoires de 'objectIdentifier' et 'destinationParentIdentifier'. 'destinationParentIdentifier' est la collection de destination.

hw_api->link() retourne TRUE en cas de succès, et sinon, un objet d'erreur.

Voir aussi hwapi_copy().

Précédent | Sommaire | Suivant
hw_api->insertdocument | Niveau supérieur | hw_api->lock


hw_api->lock

(no version information, might be only in CVS)

hw_api->lock -- Verrouille un objet

Description

object lock ( array parameter)

hw_api->lock() verrouille un objet pour le faire éditer exclusivement par l'utilisateur qui appelle cette fonction. L'objet ne peut être déverrouillé que par cet utilisateur ou par le système. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectIdentifier' et les paramètres optionnels 'mode' et 'objectquery'. 'mode' détermine comment l'objet est verrouillé. HW_API_LOCK_NORMAL signifie que le 'objet est verrouillé jusqu'à son déverrouillage. HW_API_LOCK_RECURSIVE est uniquement valide pour une collection et verrouille tous les objets de la collexion et des sous-collections. HW_API_LOCK_SESSION signifie que l'objet est verrouillé aussi longtemps que tient la session en cours.

Voir aussi hwapi_unlock().

Précédent | Sommaire | Suivant
hw_api->link | Niveau supérieur | hw_api->move


hw_api->move

(no version information, might be only in CVS)

hw_api->move -- Déplace un objet d'une collection à l'autre

Description

object move ( array parameter)

hw_api->move() déplace un objet d'une collection à l'autre.

Voir aussi hw_objrec2array().

Précédent | Sommaire | Suivant
hw_api->lock | Niveau supérieur | hw_api->content


hw_api->content

(no version information, might be only in CVS)

hw_api->content -- Crée une nouvelle instance de la classe hw_api_content

Description

string content ( string content, string mimetype)

hw_api->() crée un nouvel objet de contenu à partir de la chaîne content. Le type MIME utilisé est mimetype.

Précédent | Sommaire | Suivant
hw_api->move | Niveau supérieur | hw_api_object->assign


hw_api_object->assign

(no version information, might be only in CVS)

hw_api_object->assign -- Clone un objet

Description

object assign ( array parameter)

hw_api_object->assign() clone les attributs d'un objet.

Précédent | Sommaire | Suivant
hw_api->content | Niveau supérieur | hw_api_object->attreditable


hw_api_object->attreditable

(no version information, might be only in CVS)

hw_api_object->attreditable -- Vérifie si un attribut est éditable

Description

bool attreditable ( array parameter)

hw_api_object->attreditable() vérifie si un attribut est éditable.

Précédent | Sommaire | Suivant
hw_api_object->assign | Niveau supérieur | hw_api_object->count


hw_api_object->count

(no version information, might be only in CVS)

hw_api_object->count -- Retourne le nombre d'attributs

Description

int count ( array parameter)

hw_api_object->count() retourne le nombre d'attributs.

Précédent | Sommaire | Suivant
hw_api_object->attreditable | Niveau supérieur | hw_api_object->insert


hw_api_object->insert

(no version information, might be only in CVS)

hw_api_object->insert -- Insère un nouvel attribut HyperWave

Description

bool insert ( object attribute)

hw_api_object->insert() ajoute l'attribut attribute à l'objet courant. hw_api_object->insert() retourne TRUE en cas de succès, et sinon, FALSE.

Voir aussi hwapi_object_remove().

Précédent | Sommaire | Suivant
hw_api_object->count | Niveau supérieur | hw_api_object


hw_api_object

(no version information, might be only in CVS)

hw_api_object -- Crée une nouvelle instance de la classe hw_api_object

Description

object hw_api_object ( array parameter)

hw_api_object() crée une nouvelle instance de la classe hw_api_object.

Voir aussi hwapi_lock().

Précédent | Sommaire | Suivant
hw_api_object->insert | Niveau supérieur | hw_api_object->remove


hw_api_object->remove

(no version information, might be only in CVS)

hw_api_object->remove -- Supprime un attribut HyperWave

Description

bool remove ( string name)

hw_api_object->remove() supprime l'attribut de nom name dans l'objet courant. hw_api_object->remove() retourne TRUE en cas de succès, et FALSE sinon.

Voir aussi hwapi_object_insert().

Précédent | Sommaire | Suivant
hw_api_object | Niveau supérieur | hw_api_object->title


hw_api_object->title

(no version information, might be only in CVS)

hw_api_object->title -- Retourne le titre de l'attribut

Description

string title ( array parameter)

Précédent | Sommaire | Suivant
hw_api_object->remove | Niveau supérieur | hw_api_object->value


hw_api_object->value

(no version information, might be only in CVS)

hw_api_object->value -- Retourne la valeur de l'attribut

Description

string value ( string name)

hw_api_object->value() retourne la valeur de l'attribut name, ou bien FALSE si une erreur est survenue.

Précédent | Sommaire | Suivant
hw_api_object->title | Niveau supérieur | hw_api->object


hw_api->object

(no version information, might be only in CVS)

hw_api->object -- Lit les informations d'attribut

Description

object hw_api->object ( array parameter)

hw_api->object() lit les informations d'attributs d'un objet de n'importe quelle version. Elle ne retournera pas le contenu du document. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectIdentifier' et les éléments optionnels 'attributeSelector' et 'version'.

L'objet retourné est une instance de la classe HW_API_Object en cas de succès ou HW_API_Error en cas d'erreur.

Cet exemple simple lit un objet et vérifie les erreurs.

Exemple 1. Lit un objet Hyperwave et le vérifie

<?php
function handle_error($error) {
  $reason = $error->reason(0);
  echo "Type: <B>";
  switch($reason->type()) {
    case 0:
      echo "Erreur";
      break;
    case 1:
      echo "Alerte";
      break;
    case 2:
      echo "Message";
      break;
  }
  echo "</B><BR>\n";
  echo "Description : ".$reason->description("en")."<BR>\n";
}

function list_attr($obj) {
  echo "<TABLE>\n";
  $count = $obj->count();
  for($i=0; $i<$count; $i++) {
    $attr = $obj->attribute($i);
    printf("  <TR><TD ALIGN=right bgcolor=#c0c0c0><B>%s</B></TD><TD bgcolor=#F0F0F0>%s</TD>\n",
             $attr->key(), $attr->value());
  }
  echo "</TABLE>\n";
}

$hwapi = hwapi_hgcsp($g_config[HOSTNAME]);
$parms = array("objectIdentifier"=>"rootcollection, "attributeSelector"=>array("Title", "Name", "DocumentType"));
$root = $hwapi->object($parms);
if(get_class($root) == "HW_API_Error") {
  handle_error($root);
  exit;
}
list_attr($root);
?>

Voir aussi hwapi_content().

Précédent | Sommaire | Suivant
hw_api_object->value | Niveau supérieur | hw_api->objectbyanchor


hw_api->objectbyanchor

(no version information, might be only in CVS)

hw_api->objectbyanchor -- Retourne l'objet propriétaire d'une ancre

Description

object objectbyanchor ( array parameter)

hw_api->objectbyanchor() retourne l'objet qui contient une ancre donnée. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectIdentifier' et l'élément optionnel 'attributeSelector'.

Voir aussi
hwapi_dstofsrcanchor(),
hwapi_srcanchors() et
hwapi_dstanchors().

Précédent | Sommaire | Suivant
hw_api->object | Niveau supérieur | hw_api->parents


hw_api->parents

(no version information, might be only in CVS)

hw_api->parents -- Retourne le parent d'un objet

Description

array parents ( array parameter)

hw_api->parents() lit le parent d'un objet. Le parent peut être filtrés en spécifiant un objet de requête. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectidentifier' et les éléments optionnels 'attributeselector' et 'objectquery'.

La valeur retournée est un tableau d'objets de type HW_API_Object ou HW_API_Error.

Voir aussi hwapi_children().

Précédent | Sommaire | Suivant
hw_api->objectbyanchor | Niveau supérieur | hw_api_reason->description


hw_api_reason->description

(no version information, might be only in CVS)

hw_api_reason->description -- Retourne la description d'une raison

Description

string description ( void )

hw_api_reason->description() retourne la description d'une raison.

Précédent | Sommaire | Suivant
hw_api->parents | Niveau supérieur | hw_api_reason->type


hw_api_reason->type

(no version information, might be only in CVS)

hw_api_reason->type -- Retourne le type de raison

Description

object type ( void )

hw_api_reason->type() retourne le type de raison.

Précédent | Sommaire | Suivant
hw_api_reason->description | Niveau supérieur | hw_api->remove


hw_api->remove

(no version information, might be only in CVS)

hw_api->remove -- Efface un objet

Description

object remove ( array parameter)

hw_api->remove() efface un objet avec un parent spécifique. Les collections seront effacées récursivement. Vous pouvez passez un objet optionnel de requête pour filtrer les objets qui seront filtrés. Un objet sera effacé physiquement si c'est sa dernière instance. Le paramètre parameter est un tableau qui contient les éléments obligatoires 'objectidentifier' et 'parentidentifier'. Si vous souhaitez effacer un utilisateur ou un gropue, 'parentidentifier' peut être omis. L'élément optionnel 'mode' détermine comme l'effacement est réalisé. En mode normal, l'objet sera effacé phyisiquement lorsque toutes ses instances seront supprimées. En mode physique, toutes les instances d'un objet seront supprimées immédiatement. En mode removelinks toutes les références vers et depuis l'objet seront aussi effacées. En mode nonrecursive, l'effacement n'est pas récusrsif. Effacer une collection qui n'est pas vide causera une erreur.

Voir aussi hwapi_move().

Précédent | Sommaire | Suivant
hw_api_reason->type | Niveau supérieur | hw_api->replace


hw_api->replace

(no version information, might be only in CVS)

hw_api->replace -- Remplace un objet

Description

object replace ( array parameter)

hw_api->replace() remplace les attributs et le contenu d'un bjet. Le paramètre parameter est un tableau qui contient les éléments obligatoires 'objectIdentifier' et 'object' et les paramètres optionnels 'content', 'parameters', 'mode' et 'attributeSelector'. 'objectIdentifier' contient l'objet qui doit être remplacé. 'object' contient le nouvel objet. 'content' contient le nouveau contenu. 'parameters' contient des informations supplémentaires pour les documents HTML. HTML_Language est l'abbrévation de la langue pour le titre. HTML_Base est l'attribut de base pour le contenu du document HTML. 'mode' peut être la combinaison de l'une des constantes suivantes :

HW_API_REPLACE_NORMAL

L'objet sur le serveur est remplacé par l'objet passé.

HW_API_REPLACE_FORCE_VERSION_CONTROL

HW_API_REPLACE_AUTOMATIC_CHECKOUT

HW_API_REPLACE_AUTOMATIC_CHECKIN

HW_API_REPLACE_PLAIN

HW_API_REPLACE_REVERT_IF_NOT_CHANGED

HW_API_REPLACE_KEEP_TIME_MODIFIED

Voir aussi hwapi_insert().

Précédent | Sommaire | Suivant
hw_api->remove | Niveau supérieur | hw_api->setcommitedversion


hw_api->setcommitedversion

(no version information, might be only in CVS)

hw_api->setcommitedversion -- Valide une version autre que la dernière

Description

object setcommitedversion ( array parameter)

hw_api->setcommitedversion() valide une version du document. La version validée est celle qui est visible aux utilisateurs ayant un accès en lecture. Par défaut, la dernière version est celle qui est validée.

Voir aussi
hwapi_checkin(),
hwapi_checkout() et
hwapi_revert().

Précédent | Sommaire | Suivant
hw_api->replace | Niveau supérieur | hw_api->srcanchors


hw_api->srcanchors

(no version information, might be only in CVS)

hw_api->srcanchors -- Retourne la liste de toutes les ancres

Description

object srcanchors ( array parameter)

hw_api->srcanchors() lit toutes les ancres sources d'un objet. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectIdentifier' et les éléments optionnels 'attributeSelector' wr 'objectQuery'.

Voir aussi hwapi_dstanchors().

Précédent | Sommaire | Suivant
hw_api->setcommitedversion | Niveau supérieur | hw_api->srcsofdst


hw_api->srcsofdst

(no version information, might be only in CVS)

hw_api->srcsofdst -- Retourne les sources d'un objet de destination

Description

object srcsofdst ( array parameter)

hw_api->srcsofdst() retourne les sources d'un objet de destination. L'objet de destination peut être une ancre ou un document complet. Le paramètre parameter est un tableau qui contient l'élément obligatoire 'objectIdentifier' et les éléments optionnels 'attributeSelector' et 'objectQuery'. La fonction retourne un tableau d'objet ou une erreur.

Voir aussi hwapi_dstofsrcanchor().

Précédent | Sommaire | Suivant
hw_api->srcanchors | Niveau supérieur | hw_api->unlock


hw_api->unlock

(no version information, might be only in CVS)

hw_api->unlock -- Déverrouille un objet HyperWave verrouillé

Description

object unlock ( array parameter)

hw_api->unlock() déverrouille un objet verrouillé. Seul, l'utilisateur qui a verrouillé un objet et l'administrateur système, peuvent le déverrouiller. Le paramètre parameter est un tableau qui contient les éléments obligatoires de objectIdentifier et les paramètres optionnels de mode et objectquery. La signification de mode est la même que dans la fonction hwapi_lock().

hw_api->unlock() retourne TRUE en cas de succès, et sinon, un objet d'erreur HW_API_Error.

Voir aussi hwapi_lock().

Précédent | Sommaire | Suivant
hw_api->srcsofdst | Niveau supérieur | hw_api->user


hw_api->user

(no version information, might be only in CVS)

hw_api->user -- Retourne le propriétaire d'un objet

Description

object user ( array parameter)

hw_api->user() retourne le propriétaire d'un objet.

Voir aussi hwapi_userlist().

Précédent | Sommaire | Suivant
hw_api->unlock | Niveau supérieur | hw_api->userlist


hw_api->userlist

(no version information, might be only in CVS)

hw_api->userlist -- Retourne la liste des utilisateurs connectés

Description

object userlist ( array parameter)

hw_api->userlist() retourne la liste des utilisateurs connectés.

Voir aussi hwapi_user().

Précédent | Sommaire | Suivant
hw_api->user | Niveau supérieur | Iconv


Iconv

Manuel PHP
Précédent Suivant

XL. Iconv

Introduction

Ce module est une interface vers la librairie iconv. L'extension iconv convertit des fichiers entre divers jeux de caractères. Les jeux supportés dépendent de l'implémentation de iconv() sur votre système. Notez que cette fonction ne fonctionne pas toujours bien sur tous les systèmes. Dans ce cas, vous devez installer la librairie tout de même.

Pré-requis

Pour cela, vous devez avoir la fonction iconv() dans votre librairie standard C, ou bien la librairie libiconv installée sur votre système. La librairie libiconv est disponible à http://www.gnu.org/software/libiconv/.

Installation

To be able to use the functions defined in this module you must compile your PHP interpreter using the configure line --with-iconv[=DIR].

Note to Win32 Users : In order to enable this module on a Windows environment, you must copy iconv-1.3.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). Starting with PHP 4.2.1 the name changed to iconv.dll

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Iconv configuration options

Name | Default | Changeable
iconv.input_encoding | ICONV_INPUT_ENCODING | PHP_INI_ALL
iconv.output_encoding | ICONV_OUTPUT_ENCODING | PHP_INI_ALL
iconv.internal_encoding | ICONV_INTERNAL_ENCODING | PHP_INI_ALL
For further details and definition of the PHP_INI_* constants see ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Since PHP 4.3.0 it is possible to identify at runtime which iconv implementation is adopted by this extension.

Tableau 2. iconv constants

constant | type | description
ICONV_IMPL | string | The implementation name
ICONV_VERSION | string | The implementation version

Note : Writing implementation-dependent scripts with these constants should be discouraged.

Voir aussi

Voir aussi les fonctions GNU Recode.

Table des matières
iconv_get_encoding -- Lit le jeu de caractères courant
iconv_mime_decode -- Decodes a mime header field
iconv_mime_encode -- Composes a mime header field with field_name and field_value in a specified scheme
iconv_set_encoding -- Modifie le jeu courant de caractères courant
iconv_strlen -- Retourne le nombre de caractères d'une chaîne
iconv_strpos -- Trouve la position de la première occurence de needle dans haystack
iconv_strrpos -- Finds position of last occurrence of needle within part of haystack beginning with offset
iconv_substr -- Returns specified part of a string
iconv -- Convertit une chaîne dans un jeu de caractères
ob_iconv_handler -- Gestionnaire de sortie pour maitriser le jeu de caractères de sortie

Précédent | Sommaire | Suivant
hw_api->userlist | Niveau supérieur | iconv_get_encoding


iconv_get_encoding

(PHP 4 >= 4.0.5)

iconv_get_encoding -- Lit le jeu de caractères courant

Description

array iconv_get_encoding ( [string type])

iconv_get_encoding() retourne le paramètrage courant du gestionnaire ob_iconv_handler(), sous la forme d'un tableau, ou bien FALSE, en cas d'échec. Les valeurs possibles pour le paramètre optionnel type sont :

all
input_encoding
output_encoding
internal_encoding

Si type est omis ou différent de all (c'est à dire "tous"), iconv_get_encoding() retourne la configuration courante de ob_iconv_handler() sous forme de chaîne.

Exemple 1. Exemple avec iconv_get_encoding()

<pre>
<?php
  iconv_set_encoding("internal_encoding", "UTF-8");
  iconv_set_encoding("output_encoding", "ISO-8859-1");
  var_dump(iconv_get_encoding('all'));
?>
</pre>

Le script ci-dessus va afficher :
Array
(
    [input_encoding] => ISO-8859-1
    [output_encoding] => ISO-8859-1
    [internal_encoding] => UTF-8
)

Voir aussi iconv_set_encoding() et ob_iconv_handler().

Précédent | Sommaire | Suivant
Iconv | Niveau supérieur | iconv_mime_decode


iconv_mime_decode

(PHP 5 CVS only)

iconv_mime_decode -- Decodes a mime header field

Description

string iconv_mime_decode ( string encoded_string [, string charset])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
iconv_get_encoding | Niveau supérieur | iconv_mime_encode


iconv_mime_encode

(PHP 5 CVS only)

iconv_mime_encode -- Composes a mime header field with field_name and field_value in a specified scheme

Description

string iconv_mime_encode ( string field_name, string field_value [, array preference])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
iconv_mime_decode | Niveau supérieur | iconv_set_encoding


iconv_set_encoding

(PHP 4 >= 4.0.5)

iconv_set_encoding -- Modifie le jeu courant de caractères courant

Description

bool iconv_set_encoding ( string type, string charset)

iconv_set_encoding() modifie le jeu de caractères courant, et remplace la valeur courante du paramétre type par charset. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Les valeurs possibles de type sont :

input_encoding
output_encoding
internal_encoding

Exemple 1. Exemple avec iconv_set_encoding()

<?php
  iconv_set_encoding("internal_encoding", "UTF-8");
  iconv_set_encoding("output_encoding", "ISO-8859-1");
?>

Voir aussi iconv_get_encoding() et ob_iconv_handler().

Précédent | Sommaire | Suivant
iconv_mime_encode | Niveau supérieur | iconv_strlen


iconv_strlen

(PHP 5 CVS only)

iconv_strlen -- Retourne le nombre de caractères d'une chaîne

Description

int iconv_strlen ( string str [, string charset])

iconv_strlen() retourne le nombre de caractères de la chaîne str.

A l'opposée de strlen(), la valeur de retour de iconv_strlen() est le nombre de caractères faisant partie de la séquence de bytes str, ce qui n'est pas toujours la même chose que la taille en bytes de la chaîne de caractères.

Si charset n'est pas passé en paramètre, str est supposée être encodée en iconv.internal_charset.

Précédent | Sommaire | Suivant
iconv_set_encoding | Niveau supérieur | iconv_strpos


iconv_strpos

(PHP 5 CVS only)

iconv_strpos -- Trouve la position de la première occurence de needle dans haystack

Description

int iconv_strpos ( string haystack, string needle, int offset [, string charset])

iconv_strpos() retourne la position numérique de la première occurence de needle dans haystack.

Le paramètre optionnel offset spécifie la position à partir de laquelle la recherche doit commencer.

Si needle n'est pas trouvé, iconv_strpos() retournera FALSE.

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Si haystack ou needle ne sont pas des chaînes de caractères, ils sont convertis en entiers et appliqués en tant que valeur ordinale d'un caractère.

Voir aussi strpos() et iconv_strrpos().

Précédent | Sommaire | Suivant
iconv_strlen | Niveau supérieur | iconv_strrpos


iconv_strrpos

(PHP 5 CVS only)

iconv_strrpos -- Finds position of last occurrence of needle within part of haystack beginning with offset

Description

string iconv_strrpos ( string haystack, string needle [, string charset])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
iconv_strpos | Niveau supérieur | iconv_substr


iconv_substr

(PHP 5 CVS only)

iconv_substr -- Returns specified part of a string

Description

string iconv_substr ( string str, int offset [, int length [, string charset]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
iconv_strrpos | Niveau supérieur | iconv


iconv

(PHP 4 >= 4.0.5)

iconv -- Convertit une chaîne dans un jeu de caractères

Description

string iconv ( string in_charset, string out_charset, string str)

iconv() convertit la chaîne string depuis le jeu de caractères in_charset vers le jeu de caractères out_charset. Elle retourne la chaîne ainsi convertie, ou bien FALSE, en cas d'échec.

Exemple 1. Exemple avec iconv()

<?php
  echo iconv("ISO-8859-1","UTF-8","Ceci est un test.");
?>

Précédent | Sommaire | Suivant
iconv_substr | Niveau supérieur | ob_iconv_handler


ob_iconv_handler

(PHP 4 >= 4.0.5)

ob_iconv_handler -- Gestionnaire de sortie pour maitriser le jeu de caractères de sortie

Description

array ob_iconv_handler ( string contents, int status)

ob_iconv_handler() convertit la chaîne utilisant le jeu de caractères internal_encoding en une chaîne utilisant le jeu de caractères output_encoding.

internal_encoding et output_encoding doivent être définis par iconv_set_encoding() ou dans le fichier de configuration php.ini.

Exemple 1. Exemple avec ob_iconv_handler()

<?php
  ob_start("ob_iconv_handler"); // start output buffering
?>

Voir aussi iconv_get_encoding() et iconv_set_encoding(), et bufferisation de sortie.

Précédent | Sommaire | Suivant
iconv | Niveau supérieur | Images


Images

Manuel PHP
Précédent Suivant

XLI. Images

Introduction

PHP ne se limite pas à la génération de pages HTML. Il peut aussi servir à créer et manipuler des images, dans un grand choix de formats, comme gif, png, jpg, wbmp et xpm. Et PHP peut même générer directement des images pour le navigateur, avec la librarie GD. GD et PHP auront aussi besoin d'autres librairies, en fonction des formats que vous souhaitez utiliser.

Vous pouvez utiliser les fonctions PHP pour obtenir les tailles des images aux formats JPEG, GIF, PNG, SWF, TIFF et JPEG2000.

Note : Lisez la section sur les pré-requis pour savoir comment améliorer les possibilités le lecture, modification et écriture d'images, ainsi que les possibilités de lecture d'images prises par des appareils numériques.

Pré-requis

Si vous disposez de la librairie GD (disponible à http://www.boutell.com/gd/) vous pourrez aussi créer et manipuler ces images.

Les formats des images que vous pourrez manipuler dépendent de la version de GD que vous installerez, et de toute autre librairie dont GD a besoin pour traiter à ces images. Les versions antérieures à la version 1.6 supportent le GIF, mais pas le PNG. Pour les versions plus récentes, c'est le contraire.

Note : Depuis PHP 4.3, il existe une version de GD qui est distribuée avec PHP. Cette version contient des fonctionnalités supplémentaires, comme les canaux alpha, et il est recommandé de l'utiliser de préférence à la librairie externe, car elle est mieux supportée, et bien plus stable.

Vous pouvez aussi améliorer GD en lui ajoutant des formats d'images supplémentaires.

Tableau 1. Formats d'images supportés

Format d'image | Librairie à télécharger | Notes
gif |  | Uniquement supporté en versions de GD antérieures à gd-1.6. Le support des images GIF est disponible en lecture seule depuis PHP 4.3.0, et dans la version de la librairie qui est fournie avec la distribution de PHP.
jpeg-6b | ftp://ftp.uu.net/graphics/jpeg/ |
png | http://www.libpng.org/pub/png/libpng.html | Uniquement supporté avec GD plus récente que gd-1.6.
xpm | ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | Il est probable que vous ayez déjà cette librairie disponible si votre système dispose d'un environnement X.

Vous pouvez aussi améliorer GD en lui ajoutant des fonctionalités de manipulation de polices. Les librairies suivantes sont supportées :

Tableau 2. Supported font libraries

Librarie de police | Téléchargement | Notes
FreeType 1.x | http://www.freetype.org/ |
FreeType 2 | http://www.freetype.org/ |
T1lib | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Support des polices de Type 1.

Si vous avez compilé PHP avec l'option --enable-exif vous serez capable d'accéder aux données stockées dans les entêtes des images JPEG et TIFF. De cette façon, vous pouvez lire les méta données générées par les appareils numériques. Ces fonctions ne requièrent par la librairie GD.

Note : PHP ne requiert aucune librairie supplémentaire pour gérer les données EXIF.

Installation

Pour activer le support de GD, vous devez compiler PHP avec l'option --with-gd[=DIR], où DIR est le dossier d'installation de GD. Il est recommandé d'utiliser la version de GD qui est distribué avec PHP, en utilisant simplement l'option --with-gd. Sous Windows, vous devez inclure la librairie php_gd2.dll comme extension dans le fichier php.ini. Il y a aussi la librairie php_gd.dll pour GD version 1.x mais elle n'est pas recommandée.

Pour désactiver le support de GD en PHP 3, ajoutez simplement l'option --without-gd dans votre ligne de configuration.

Augmentez les possibilités des GD de gérer d'autres formats d'images en spécifiant les options de compilations suivantes :

Tableau 3. Formats d'image supportés

Format d'image | Option de compilation
jpeg-6b | Pour activer le support de la librairie JPEG-6b, ajouter l'option --with-jpeg-dir=DIR.
png | Pour activer le support de la librairie PNG, ajouter l'option --with-png-dir=DIR. Notez que libpng requiert la librairie zlib, et donc, il vous faudra ajouter aussi --with-zlib-dir[=DIR] dans votre ligne de compilation.
xpm | Pour activer le support de la librairie XPM, ajoutez l'option --with-xpm-dir=DIR. Si le script de compilation n'est pas capable de trouver les librairies nécessaires, il vous faudra ajouter le chemin vers les librairies X11.

Augmentez les possibilités de GD pour qu'elle manipule différentes types de polices de caractères en ajoutant les options de compilations suivantes :

Tableau 4. Librairies des polices de caractères supportées

Librairie | Option de configuration
FreeType 1.x | Pour activer le support de FreeType 1.x, ajoutez l'option --with-ttf[=DIR].
FreeType 2 | Pour activer le support de FreeType 2, ajoutez l'option --with-freetype-dir=DIR.
T1lib | Pour activer le support de T1lib (Type 1 fonts), ajoutez l'option --with-t1lib[=DIR].
Native TrueType string function | Pour activer le support des chaînes de caractères TrueType, ajoutez l'option --enable-gd-native-ttf.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Exif supporte automatiquement la conversion en Unicode et JIS pour les commentaires des utilisateurs, lorsque le module mbstring est disponible. Cela se fait en décodant le commentaire avec le bon jeu de caractères. Le résultat peut alors être encodé dans le jeu de caractères de votre serveur HTTP.

Tableau 5. Options de configuration

Nom | Par défaut | Modifiable
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL
exif.encode_jis | "" | PHP_INI_ALL
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL
exif.decode_jis_intel | "JIS" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

exif.encode_unicode string

exif.encode_unicode définit le jeu de caractères UNICODE utilisé pour les commentaires. Par défaut, c'est ISO-8859-15, qui devrait fonctionner pour les pays non asiatiques. Cette option peut être vide, ou bien contenir un jeu de caractères qui est supporté par mbstring. Si cette option est vide, la configuration de mbstring sera utilisée.

exif.decode_unicode_motorola string

exif.decode_unicode_motorola définit le jeu de caractères interne pour les utilisateurs Unicode, si le commentaire de l'image est en big-endian (ordre de motorola). Cette option ne peut être vide, mais vous pouvez y spécifier une liste de jeux de caractères utilisés par mbstring. Par défaut, c'est UCS-2BE.

exif.decode_unicode_intel string

exif.decode_unicode_intel définit le jeu de caractères interne pour les utilisateurs Unicode, si le commentaire de l'image est en little-endian (ordre d'intel). Cette option ne peut être vide, mais vous pouvez y spécifier une liste de jeux de caractères utilisés par mbstring. Par défaut, c'est UCS-2LE.

exif.encode_jis string

exif.encode_jis définit le jeux de caractères pour les commentaires en JIS. Par défaut, c'est une valeur vide, ce qui force la fonction à utiliser le jeu de caractères interne de mbstring.

exif.decode_jis_motorola string

exif.decode_jis_motorola définit le jeu de caractères interne pour les utilisateurs JIS, si le commentaire de l'image est en big-endian (ordre de motorola). Cette option ne peut être vide, mais vous pouvez y spécifier une liste de jeux de caractères utilisés par mbstring. Par défaut, c'est JIS.

exif.decode_jis_intel string

exif.decode_jis_intel définit le jeu de caractères interne pour les utilisateurs JIS, si le commentaire de l'image est en little-endian (ordre d'intel). Cette option ne peut être vide, mais vous pouvez y spécifier une liste de jeux de caractères utilisés par mbstring. Par défaut, c'est JIS.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

IMG_GIF (entier)

IMG_JPG (entier)

IMG_JPEG (entier)

IMG_PNG (entier)

IMG_WBMP (entier)

IMG_XPM (entier)

IMG_COLOR_TILED (entier)

IMG_COLOR_STYLED (entier)

IMG_COLOR_BRUSHED (entier)

IMG_COLOR_STYLEDBRUSHED (entier)

IMG_COLOR_TRANSPARENT (entier)

IMG_ARC_ROUNDED (entier)

IMG_ARC_PIE (entier)

IMG_ARC_CHORD (entier)

IMG_ARC_NOFILL (entier)

IMG_ARC_EDGED (entier)

IMAGETYPE_GIF (entier)

IMAGETYPE_JPG (entier)

IMAGETYPE_PNG (entier)

IMAGETYPE_SWF (entier)

IMAGETYPE_PSD (entier)

IMAGETYPE_BMP (entier)

IMAGETYPE_TIFF_II (entier)

IMAGETYPE_TIFF_MM (entier)

IMAGETYPE_JPC (entier)

IMAGETYPE_JP2 (entier)

IMAGETYPE_JPX (entier)

IMAGETYPE_SWC (entier)

Exemples

Exemple 1. Création d'une image PNG avec PHP

<?php
    header("Content-type: image/png");
    $string = $_GET['text'];
    $im     = imagecreatefrompng("images/button1.png");
    $orange = imagecolorallocate($im, 220, 210, 60);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $orange);
    imagepng($im);
    imagedestroy($im);
?>
Cet exemple doit être appelé depuis une page HTML avec une balise image telle que : <img src="button.php?text">. Le script ci-dessus, button.php, prend la chaîne "text" et l'inscrit sur le fond d'image appelé "images/button1.png" et l'affiche. C'est une méthode très pratique pour éviter de redessiner un nouveau bouton, dès que vous changez le texte d'un bouton. De cette façon, ils sont générés dynamiquement .

Table des matières
exif_imagetype -- Détermine le type d'une image
exif_read_data -- Lit les en-têtes EXIF des images JPEG et TIFF
exif_thumbnail -- Récupère la miniature d'une image TIFF ou JPEG
gd_info -- Retourne des informations à propos de la librairie GD installée
getimagesize -- Retourne la taille d'une image
image_type_to_mime_type -- Lit le Mime-Type d'un type d'image
image2wbmp -- Crée une image WBMP
imagealphablending -- Modifie le mode de blending d'une image
imageantialias -- Utiliser ou non les fonctions d'antialias
imagearc -- Dessine une ellipse partielle
imagechar -- Dessine un caractère horizontalement
imagecharup -- Dessine un caractère verticalement
imagecolorallocate -- Alloue une couleur pour une image
imagecolorallocatealpha -- Alloue une couleur à une image
imagecolorat -- Retourne l'index de la couleur d'un pixel donné
imagecolorclosest -- Retourne l'index de la couleur la plus proche d'une couleur donnée.
imagecolorclosestalpha -- Retourne la couleur la plus proche, en tenant compte du canal alpha
imagecolorclosesthwb -- Lit l'index de la couleur la plus proche d'une couleur spécifiée avec sa teinte, blanc et noir (hue, white and blackness)
imagecolordeallocate -- Supprime une couleur d'une image
imagecolorexact -- Retourne l'index de la couleur donnée
imagecolorexactalpha -- Retourne l'index d'une couleur avec son canal alpha
imagecolormatch -- Fait correspondre un peu plus les couleurs de la version palette d'une image aux couleurs de sa version truecolor
imagecolorresolve -- Retourne l'index de la couleur donnée, ou la plus proche possible.
imagecolorresolvealpha -- Retourne un index de couleur ou son alternative la plus proche, y compris le canal alpha
imagecolorset -- Change la couleur dans une palette à l'index donné.
imagecolorsforindex -- Retourne la couleur associée à un index
imagecolorstotal -- Calcule le nombre de couleurs d'une palette
imagecolortransparent -- Définit la couleur transparente
imagecopy -- Copie une partie d'une image
imagecopymerge -- Copie et fusionne une partie d'une image
imagecopymergegray -- Copie et fusionne une partie d'une image en niveaux de gris
imagecopyresampled -- Copie, redimensionne, rééchantillonne une image
imagecopyresized -- Copie et redimensionne une partie d'une image
imagecreate -- Crée une nouvelle image à palette
imagecreatefromgd2 -- Crée une nouvelle image à partir d'un fichier GD2 ou d'une URL
imagecreatefromgd2part -- Crée une nouvelle image à partir d'une partie de fichier GD2 ou d'une URL
imagecreatefromgd -- Crée une nouvelle image à partir d'un fichier GD ou d'une URL
imagecreatefromgif -- Crée une nouvelle image à partir d'un fichier ou d'une URL.
imagecreatefromjpeg -- Crée une nouvelle image JPEG à partir d'un fichier ou d'une URL
imagecreatefrompng -- Crée une nouvelle image PNG à partir d'un fichier ou d'une URL
imagecreatefromstring -- Crée une image à partir d'une chaîne
imagecreatefromwbmp -- Crée une image depuis un fichier WBMP
imagecreatefromxbm -- Crée une image à partir d'un fichier XBM
imagecreatefromxpm -- Crée une image à partir d'un fichier XPM
imagecreatetruecolor -- Crée une nouvelle image en vraies couleurs
imagedashedline -- Dessine une ligne pointillée
imagedestroy -- détruit une image
imageellipse -- Dessine une ellipse
imagefill -- Remplit
imagefilledarc -- Dessine une ellipse partielle et la remplit
imagefilledellipse -- Dessine une ellipse pleine
imagefilledpolygon -- Dessine un polygone rempli
imagefilledrectangle -- Dessine un rectangle rempli
imagefilltoborder -- Remplit avec une région avec une couleur spécifique
imagefontheight -- Retourne la hauteur de la police
imagefontwidth -- Retourne la largeur de la police
imageftbbox -- Calcule le rectangle d'encadrement pour un texte, en utilisant la police courante et freetype2
imagefttext -- Ecrit du texte dans une image avec la police courante et FreeType 2
imagegammacorrect -- Applique une correction gamma à l'image
imagegd2 -- Génère une image au format GD2, vers le navigateur ou un fichier
imagegd -- Génère une image au format GD, vers le navigateur ou un fichier
imagegif -- Envoie une image GIF vers un navigateur ou un fichier
imageinterlace -- Active ou désactive l'entrelacement
imageistruecolor -- Détermine si une image est une image truecolor.
imagejpeg -- Envoie une image JPEG vers un navigateur ou un fichier.
imageline -- Dessine une ligne
imageloadfont -- Charge une nouvelle police
imagepalettecopy -- Copie la palette d'une image à l'autre
imagepng -- Envoie une image PNG vers un navigateur ou un fichier.
imagepolygon -- Dessine un polygone
imagepsbbox -- Retourne le rectangle entourant un texte et dessiné avec une police PostScript Type1.
imagepscopyfont -- Fait une copie d'une police chargée pour modification ultérieure.
imagepsencodefont -- Change le codage vectoriel d'un caractère dans une police
imagepsextendfont -- Etend ou condense une police de caractères
imagepsfreefont -- Libère la mémoire occupée par une police PostScript Type 1
imagepsloadfont -- Charge une police PostScript Type 1 depuis un fichier
imagepsslantfont -- Incline une police de caractères PostScript
imagepstext -- Dessine un texte sur une image avec une police PostScript Type1
imagerectangle -- Dessine un rectangle
imagerotate -- Fait tourner une image d'un angle
imagesavealpha -- Définit l'option pour enregistrer les informations complètes du canal alpha lors de la sauvegarde d'images PNG.
imagesetbrush -- Modifie la brosse pour le dessin des lignes
imagesetpixel -- Dessine un pixel
imagesetstyle -- Configure le style pour le dessin des lignes
imagesetthickness -- Modifie l'épaisseur d'un trait
imagesettile -- Modifie l'image utilisée pour le carrelage
imagestring -- Dessine une chaîne horizontale
imagestringup -- Dessine une chaîne verticale
imagesx -- Retourne la largeur d'une image
imagesy -- Retourne la hauteur de l'image
imagetruecolortopalette -- Convertit une image en vraies couleurs en image à palette
imagettfbbox -- Retourne le rectangle entourant un texte et dessiné avec une police TrueType.
imagettftext -- Dessine un texte avec une police TrueType
imagetypes -- Retourne les types d'images supportés par la version courante de PHP
imagewbmp -- Affiche une image WBMP
iptcembed -- Intègre des données binaires IPTC dans une image JPEG
iptcparse -- Analyse un bloc binaire IPTC http://www.iptc.org/ et recherche les balises simples.
jpeg2wbmp -- Convertit une image JPEG en image WBMP
png2wbmp -- Convertit une image PNG en image WBMP
read_exif_data -- Alias de exif_read_data()

Précédent | Sommaire | Suivant
ob_iconv_handler | Niveau supérieur | exif_imagetype


exif_imagetype

(PHP 4 >= 4.3.0)

exif_imagetype -- Détermine le type d'une image

Description

int exif_imagetype ( string filename)

exif_imagetype() lit les premiers octets du fichier d'image filename, et vérifie sa signature. Lorsqu'une signature corecte est trouvée, elle sera retournée. Sinon, FALSE est retourné. La valeur retournée est la même que celle que retourne getimagesize() dans son index 2, mais exif_imagetype() est bien plus rapide.

Les constantes suivantes sont définies :
1 = IMAGETYPE_GIF,
2 = IMAGETYPE_JPG,
3 = IMAGETYPE_PNG,
4 = IMAGETYPE_SWF,
5 = IMAGETYPE_PSD,
6 = IMAGETYPE_BMP,
7 = IMAGETYPE_TIFF_II (ordre d'octets d'intel),
8 = IMAGETYPE_TIFF_MM (ordre d'octets motorola),
9 = IMAGETYPE_JPC,
10 = IMAGETYPE_JP2,
11 = IMAGETYPE_JPX et
12 = IMAGETYPE_SWC.

Cette fonction peut être utilisée pour éviter l'appel à d'autres fonctions exif si le format d'image n'est pas supporté, ou bien en conjonction avec $_SERVER['HTTP_ACCEPT'] pour indiquer si le navigateur est capable de lire ou non un format d'image.

Note : Cette fonction est disponible uniquement si PHP 4 est compilé avec l'option --enable-exif.

Cette fonction ne requiert pas la librairie GD.

Voir aussi getimagesize().

Précédent | Sommaire | Suivant
Images | Niveau supérieur | exif_read_data


exif_read_data

(PHP 4 >= 4.2.0)

exif_read_data -- Lit les en-têtes EXIF des images JPEG et TIFF

Description

array exif_read_data ( string filename [, string sections [, bool arrays [, bool thumbnail]]])

exif_read_data() lit les en-têtes EXIF des images JPEG et TIFF. Elle retourne un tableau associatif avec comme index les noms des en-têtes, et en valeur, les valeurs des en-têtes. Si aucune donnée n'a pu être lue, elle retourne FALSE.

filename est le nom du fichier à lire. Il ne peut pas être une URL.

sections est une liste de valeur séparée par des virgules des sections qui devront être présentées dans le tableau de résultat.

FILE | FileName (nom du ficher), FileSize(taille du fichier), FileDateTime (date de modification du fichier), SectionsFound (sections trouvées)
COMPUTED | html (attributs HTML), Width (largeur), Height (Hauteur), IsColor (couleur ou noir et blanc) et quelques autres si ils sont disponibles.
ANY_TAG | Toutes les informations concernant cette balise, comme par exemple IFD0, EXIF, ...
IFD0 | Toutes les balises IFD0. Dans les images normales, ils contiennent les dimensions de l'images, etc...
THUMBNAIL | Un fichier qui contient une minitaure, si il y a un second IFD. Toutes les informations mises en balises à propos de cette miniature seront stockées dans cette section.
COMMENT | En-tête de commentaire des images JPEG.
EXIF | La section EXIF est une sous section de la section IFD0. Elle contient des informations plus détaillées sur les images. La plupart de ces index sont reliés aux appareils numériques.

arrays spécifie si chaque section doit être un tableau ou non. Les sections FILE, COMPUTED et THUMBNAIL seront toujours transformées en tableau, car elle contiennent des noms qui risquent d'être en conflit.

thumbnail indique si il faut lire la miniature elle-même, et pas seulement les données en balises.

Note : Les en-têtes Exif sont souvent présents dans les en-têtes d'images JPEG/TIFF, générées par les appareils numériques, mais malheureusement, chaque fabriquant d'appareils ont tous une idée différente pour étiquetter leurs images, et vous ne pourrez pas compter sur des en-têtes communs.

Exemple 1. Exemple avec exif_read_data()

<?php
echo "test1.jpg : <br />\n";
$exif = exif_read_data ('tests/test1.jpg','IFD0');
echo $exif===false ? "No header data found.<br />\n" : "Image contains headers<br />";
$exif = exif_read_data ('tests/test2.jpg',0,true);
echo "test2.jpg : <br />\n";
foreach($exif as $key=>$section) {
    foreach($section as $name=>$val) {
        echo "$key.$name: $val<br />\n";
    }
}?>

La première commande échoue, car l'image n'a pas d'en-têtes d'informations.
test1.jpg:
No header data found.
test2.jpg:
FILE.FileName: test2.jpg
FILE.FileDateTime: 1017666176
FILE.FileSize: 1240
FILE.FileType: 2
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
COMPUTED.html: width="1" height="1"
COMPUTED.Height: 1
COMPUTED.Width: 1
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.UserComment: Exif test image.
COMPUTED.UserCommentEncoding: ASCII
COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
COMPUTED.Copyright.Editor: Edited by M.Boerger.
IFD0.Copyright: Photo (c) M.Boerger
IFD0.UserComment: ASCII
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.JPEGInterchangeFormatLength: 523
COMMENT.0: Comment #1.
COMMENT.1: Comment #2.
COMMENT.2: Comment #3end

THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.Thumbnail.Height: 1
THUMBNAIL.Thumbnail.Height: 1

Note : Si l'image contient des données IFD0, alors la section COMPUTED contient l'entrée ByteOrderMotorola qui vaut 0 pour little-endian (intel) et 1 pour big-endian (motorola). Ceci a été ajoué en PHP 4.3.

Lorsqu'un en-tête Exif contient une note de Copyright, cet en-tête peut alors contenir lui même deux valeurs. Comme cette solution est incohérente avec les standards Exif 2.10, la section COMPUTED retournera les deux en-têtes, Copyright.Photographer et Copyright.Editor, tandis que les sections IFD0 contiennent le tableau d'octets avec des caractères NULL pour séparer les deux entrées. Ou bien, juste la première entére si le type de données était erroné (comportement par défaut de Exif). La section COMPUTED va aussi contenir une entrée Copyright, qui sera soit la chaîne originale de copyright, soit une liste de valeur séparée par des virgules de photos et de copyright de l'auteur.

Note : La balise UserComment présente le même problème que la balise Copyright. Elle peut stocker deux valeurs : en premier, le jeu de caractères utilisé, puis la valeur elle-même. Si c'est le cas, la section IFD contiendra uniquement le jeu de caractères, ou bien un tableau d'octets. La section COMPUTED va stocker les deux entrées UserCommentEncoding et UserComment. L'index UserComment est disponbile dans les deux cas, et il est préférable de l'utiliser, plutôt que la valeur de la section IFD0.

Si les commentaires utilisateurs utilisent l'Unicode ou bien le JIS et que le module mbstring est accessible, ces jeux de caractères seront automatiquement changés en fonction la configuration de EXIF dans le fichier php.ini. Cette possibilité a été ajoutée en PHP 4.3.

Note : La hauteur (Height) et la largeur (Width) sont calculés de la même façon que la fonction getimagesize() le fait, et leurs valeurs ne devraient jamais différer. De même, l'index html est la représentation textuelle utilisée dans une balise image HTML classique.

Note : Depuis PHP 4.3, cette fonction peut aussi lire les sections IFD incluent dans les tableaux, et retournée sous cette forme. De plus, la taille d'une miniature intégrée est retournée dans le sous tableau THUMBNAIL et la fonction exif_read_data() peut retourner les miniatures au format TIFF. Enfin, il n'y a plus de longueur maximale pour les valeurs retournées (hormis la place en mémoire).

Note : Cette fonction est uniquement disponible en PHP 4, si il a été compilé avec l'option --enable-exif. Ses fonctionnalités et comportement ont changés en PHP 4.2. Les premières versions étaient très instables.

Depuis PHP 4.3, les commentaires utilisateurs peuvent être automatiquement convertis d'un jeu de caractères à l'autre avec l'extension --enable-mbstring.

Cette fonction ne requiert pas la librairie GD.

Voir aussi exif_thumbnail() et getimagesize().

Précédent | Sommaire | Suivant
exif_imagetype | Niveau supérieur | exif_thumbnail


exif_thumbnail

(PHP 4 >= 4.2.0)

exif_thumbnail -- Récupère la miniature d'une image TIFF ou JPEG

Description

string exif_thumbnail ( string filename [, int &width [, int &height [, int &imagetype]]])

exif_thumbnail() lit la miniature de l'image TIFF ou JPEG, dans le fichier filename. Si il n'y a pas de miniature, FALSE sera retourné.

Les paramètres width, height et imagetype sont disponibles depuis PHP 4.3 et retourne les dimensions de la miniature, ainsi que son type. Il est possible que exif_thumbnail() ne puisse pas créer une image, mais en détermine la taille. Dans ce cas, la valeur retournée par la fonction est FALSE, mais width et height se voient assignés une valeur.

Si vous voulez exploiter les miniatures avec cette fonction, il faut nevoyer les en-têtes HTTP avec la fonction header(). L'exemple ci-dessous montre comment faire :

Exemple 1. Exemple d'utilisation de miniature avec exif_thumbnail()

<?php
if (array_key_exists('file',$_REQUEST)) {
    $image = exif_thumbnail($_REQUEST['file'], $width, $height, $type);
} else {
    $image = false;
}
if ($image!==false) {
    header("Content-type: ".image_type_to_mime_type($type));
    echo $image;
    exit;
} else {
    // aucune miniature, gestion d'erreur
    echo "Pas de miniature disponible";
}
?>

Depuis PHP 4.3, la fonction exif_thumbnail() lit aussi les miniatures dans les images au format TIFF.

Note : Cette fonction n'est disponible que si vous avez compilé PHP avec l'option --enable-exif. Les fonctionnalités et le comportement de cette fonction ont changé en PHP 4.2

Cette fonction ne requiert pas la librairie GD.

Voir aussi exif_read_data() et image_type_to_mime_type().

Précédent | Sommaire | Suivant
exif_read_data | Niveau supérieur | gd_info


gd_info

(PHP 4 >= 4.3.0)

gd_info -- Retourne des informations à propos de la librairie GD installée

Description

array gd_info ( void )

Retourne un tableau associatif décrivant la version et les possibilités de la librairie GD installée.

Tableau 1. Eléments du tableau retourné par gd_info()

Attribut | Signification
GD Version | chaîne de caractères décrivant la version de libgd qui est installée.
Freetype Support | booléen. TRUE si le support Freetype est installé.
Freetype Linkage | chaîne de caractères décrivant la façon de laquelle Freetype a été lié. Les valeurs attendues sont : 'with freetype', 'with TTF library', et 'with unknown library'. Cet élément ne sera défini que si Freetype Support est évalué TRUE.
T1Lib Support | booléen. TRUE si le support T1Lib est inclus.
GIF Read Support | booléen. TRUE si le support pour la lecture des images GIF est inclus.
GIF Create Support | booléen. TRUE si le support pour la création des images GIF est inclus.
JPG Support | booléen. TRUE si le support de JPG est inclus.
PNG Support | booléen. TRUE si le support de PNG est inclus.
WBMP Support | booléen. TRUE si le support de WBMP est inclus.
XBM Support | booléen. TRUE si le support de XBM est inclus.

Exemple 1. Utilisation de gd_info()

<?php
var_dump(gd_info());

/* Sortie typique
   ==============

array(9) {
  ["GD Version"]=>
  string(24) "bundled (2.0 compatible)"
  ["FreeType Support"]=>
  bool(false)
  ["T1Lib Support"]=>
  bool(false)
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(false)
  ["JPG Support"]=>
  bool(false)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XBM Support"]=>
  bool(false)
}

*/
?>

Voir aussi imagepng(),
imagejpeg(),
imagegif(),
imagewbmp(), et
imagetypes().

Précédent | Sommaire | Suivant
exif_thumbnail | Niveau supérieur | getimagesize


getimagesize

(PHP 3, PHP 4 )

getimagesize -- Retourne la taille d'une image

Description

array getimagesize ( string filename [, array imageinfo])

getimagesize() va déterminer la taille des images de type GIF, JPG, PNG, SWF, PSD ou BMP et en retourner les dimensions, le type d'image, et une chaîne type "height/width", à placer dans une balise HTML ou <IMG> normale.

Si l'accès au fichier filename est impossible, ou si ce n'est pas un format d'image supporté, getimagesize() retournera FALSE et générera une alerte.

getimagesize() retourne un tableau de 4 éléments. L'index 0 contient la longueur. L'index 1 contient la largeur. L'index 2 contient le type de l'image : 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF. Ces valeurs correspondent aux constantes IMAGETYPE qui ont été ajoutée en PHP 4.3. L'index 3 contient la chaîne à placer dans les balises HTML : "height=xxx width=xxx".

Exemple 1. Exemple avec getimagesize()

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr>";
?>>

Exemple 2. getimagesize() avec une URL

<?php
  $size = getimagesize("http://www.php.net/gifs/logo.gif");
?>

Avec les images JPEG, deux en-têtes supplémentaires sont retournés : channel et bits. channel vaudra 3 avec les images RGB, et 4 avec les images CMYK. bits est le nombre de bits de chaque couleur.

Depuis PHP 4.3, bits et channels sont présent pour tous les types d'images. Cependant, la présence de ces valeurs peut mener à la confusion. Par exemple, une image GIF utilise toujours trois canaux par pixel, mais le nombre de bits par pixel ne peut être calculé dans le cas d'une image animée GIF ayant une table de couleur globale.

Certains formats peuvent ne contenir aucune image, ou bien plusieurs images. Dans ces cas, getimagesize() peut ne pas être capable de déterminer correctement la taille de l'image. getimagesize() retourne alors zéro comme taille de hauteur et largeur.

Depuis PHP 4.3, getimagesize() retourne aussi un paramètre additionnel, mime, qui correspond au type MIME d'une image. Cette information peut être utilisée pour envoyer l'en-tête HTTP correct.

Exemple 3. getimagesize() et types MIME

<?php
$size = getimagesize ($filename);
$fp=fopen($filename, "rb");
if ($size && $fp) {
  header("Content-type: {$size['mime']}");
  fpassthru($fp);
  exit;
} else {
  // error
}
?>

Si l'accès à filename est impossible, ou si ce n'est pas une image valide, getimagesize() retournera NULL et générera une alerte.

Le paramètre optionnel imageinfo permet d'extraire des informations supplémentaires du fichier image. Actuellement, cette option va retourner différents marqueurs JPG APP dans un tableau associatif. Certains programmes utilisent ces marqueur APP pour préciser les informations dans les balises HTML. Un marqueur commun est le marqueur APP13, décrit à http://www.iptc.org/. Vous pouvez utiliser la fonction iptcparse() pour analyser ce marqueur, et obtenir des informations intelligibles.

Exemple 4. getimagesize() qui retourne IPTC

<?php
  $size = getimagesize("testimg.jpg", $info);
  if (isset($info["APP13"])) {
    $iptc = iptcparse($info["APP13"]);
    var_dump($iptc);
  }
?>

Note : getimagesize() ne requiert pas la bibliothèque GD.

Le support URL a été ajouté en PHP 4.0.5.

Voir aussi
image_type_to_mime_type(),
exif_imagetype(),
exif_read_data() et
exif_thumbnail().

Le support du format TIFF a été ajouté en PHP 4.2.

Précédent | Sommaire | Suivant
gd_info | Niveau supérieur | image_type_to_mime_type


image_type_to_mime_type

(PHP 4 >= 4.3.0)

image_type_to_mime_type -- Lit le Mime-Type d'un type d'image

Description

string image_type_to_mime_type ( int imagetype)

image_type_to_mime_type() détermine le type Mime (Mime-Type), à utiliser dans l'en-tête HTTP Content-type. imagetype est une constante, représentant un type d'image, et retournée par getimagesize(), exif_read_data(), exif_thumbnail() ou exif_imagetype().

Exemple 1. image_type_to_mime_type (file)

<?php
header ("Content-type: ".image_type_to_mime_type (IMAGETYPE_PNG));
?>

Note : Cette fonction ne requiert par la librairie GD.

Voir ausi
getimagesize(),
exif_imagetype(),
exif_read_data() et
exif_thumbnail().

Précédent | Sommaire | Suivant
getimagesize | Niveau supérieur | image2wbmp


image2wbmp

(PHP 4 >= 4.0.5)

image2wbmp -- Crée une image WBMP

Description

int image2wbmp ( resource image [, string filename [, int threshold]])

image2wbmp() crée une image WBMP à partir de l'image image. Si le paramètre filename est fourni, l'image sera créée dans ce fichier, sinon, elle sera envoyée au navigateur. image est une image valide, créée avec la fonction imagecreate().

Le nom de fichier filename est optionnel, et si il est omis, l'image sera renvoyée directement au navigateur. En retournant un en-tête HTTP Content-Type : image/vnd.wap.wbmp avec la fonction header(), vous pouvez créer des images WBMP avec vos scripts PHP.

Exemple 1. Exemple avec image2wbmp()

<?php

  $file = 'php.jpg';

  header('Content-type: ' . image_type_to_mime_type(IMAGETYPE_WBMP));
  image2wbmp($file); // output the stream directly

?>

Note : Le support WBMP n'est disponible qu'avec GD-1.8 ou plus récent.

Voir aussi imagewbmp().

Précédent | Sommaire | Suivant
image_type_to_mime_type | Niveau supérieur | imagealphablending


imagealphablending

(PHP 4 >= 4.0.6)

imagealphablending -- Modifie le mode de blending d'une image

Description

bool imagealphablending ( resource image, bool blendmode)

imagealphablending() fournit deux modes de dessins des images en vraies couleurs (truecolors). En mode "blending", le canal alpha de chaque couleur est fournie à chaque fonction de dessin, tel que imagesetpixel() peut déterminer sa transparence. GD va alors automatiquement mixer la couleur à ce point, et stocker le résultat dans l'image. Le pixel résultant est alors opaque. En mode non-mixant, la couleur est copiée littéralement avec ses informations de canal alpha, et remplace le pixel de destination. Le mixage n'est pas disponible avec les images à palette. Si blendmode vaut TRUE, alors le mode de mixage sera activé, sinon il sera désactivé.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : imagealphablending() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
image2wbmp | Niveau supérieur | imageantialias


imageantialias

(PHP 4 >= 4.3.2)

imageantialias -- Utiliser ou non les fonctions d'antialias

Description

bool imageantialias ( resource im, bool on)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi imagecreatetruecolor().

Précédent | Sommaire | Suivant
imagealphablending | Niveau supérieur | imagearc


imagearc

(PHP 3, PHP 4 )

imagearc -- Dessine une ellipse partielle

Description

int imagearc ( resource image, int cx, int cy, int w, int h, int s, int e, int color)

imagearc() dessine une ellipse partielle, centrée sur cx, cy (le coin en haut à gauche est l'origine (0,0)) dans l'image référencée par image. w et h spécifient la largeur et la hauteur de l'ellipse, tandis que le début et la fin de l'arc sont donnés en degrés, par les arguments s et e. color est la couleur utilisée pour dessiner l'ellipse.

Voir aussi
imageellipse(),
imagefilledellipse() et
imagefilledarc().

Précédent | Sommaire | Suivant
imageantialias | Niveau supérieur | imagechar


imagechar

(PHP 3, PHP 4 )

imagechar -- Dessine un caractère horizontalement

Description

int imagechar ( resource image, int font, int x, int y, string c, int color)

imagechar() dessine le premier caractère de la chaîne c dans l'image id avec le coin supérieur gauche placé à la position x,y (le coin en haut à gauche est l'origine (0,0)) avec la couleur color. Si la police est 1, 2, 3, 4 ou 5, une police intégrée sera utilisée (plus le chiffre est grand, plus grande est la police).

Voir aussi imageloadfont().

Précédent | Sommaire | Suivant
imagearc | Niveau supérieur | imagecharup


imagecharup

(PHP 3, PHP 4 )

imagecharup -- Dessine un caractère verticalement

Description

int imagecharup ( resource image, int font, int x, int y, string c, int color)

imagecharup() dessine le premier caractère de la chaîne c dans l'image id avec le coin supérieur gauche placé à la position (x,y) (le coin en haut à gauche est l'origine (0,0)), avec la couleur color. Si la police est 1, 2, 3, 4 ou 5, une police intégrée sera utilisée (plus le chiffre est grand, plus grande est la police).

Voir aussi imageloadfont().

Précédent | Sommaire | Suivant
imagechar | Niveau supérieur | imagecolorallocate


imagecolorallocate

(PHP 3, PHP 4 )

imagecolorallocate -- Alloue une couleur pour une image

Description

int imagecolorallocate ( resource image, int red, int green, int blue)

imagecolorallocate() retourne un identifiant de couleur, représentant la couleur composée avec les couleurs RGB (red, green, blue). L'argument image est le résultat de la fonction imagecreate(). imagecolorallocate() doit être appelée pour créer chaque couleur qui sera représentée par image.

<?php
  $white = imagecolorallocate($im, 255,255,255);
  $black = imagecolorallocate($im, 0,0,0);
?>

Précédent | Sommaire | Suivant
imagecharup | Niveau supérieur | imagecolorallocatealpha


imagecolorallocatealpha

(PHP 4 >= 4.3.2)

imagecolorallocatealpha -- Alloue une couleur à une image

Description

int imagecolorallocatealpha ( resource image, int red, int green, int blue, int alpha)

imagecolorallocatealpha() se comporte comme imagecolorallocate() avec en plus le paramètre de transparence alpha qui prend une valeur entre 0 et 127. 0 indique une opacité complète tandis que 127 indique une transparence complète.

Retourne FALSE si l'allocation a échoué.

Précédent | Sommaire | Suivant
imagecolorallocate | Niveau supérieur | imagecolorat


imagecolorat

(PHP 3, PHP 4 )

imagecolorat -- Retourne l'index de la couleur d'un pixel donné

Description

int imagecolorat ( resource image, int x, int y)

imagecolorat() retourne l'index de la couleur du pixel situé aux coordonnées (x, y), dans l'image image.

Si PHP supporte la librairie GD library 2.0 ou plus récent, et que l'image est une image en truecolor, cette fonction retourne la valeur RGB du pixel, sous forme d'un entier. Utiliser les opérateurs de bits et les masques pour distinguer le rouge, du vert du bleu :

Exemple 1. Accès aux valeurs RGB

<?php
$im = ImageCreateFromPng("rockym.png");
$rgb = ImageColorAt($im, 100, 100);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
?>

Voir aussi imagecolorset() et imagecolorsforindex().

Précédent | Sommaire | Suivant
imagecolorallocatealpha | Niveau supérieur | imagecolorclosest


imagecolorclosest

(PHP 3, PHP 4 )

imagecolorclosest -- Retourne l'index de la couleur la plus proche d'une couleur donnée.

Description

int imagecolorclosest ( resource image, int red, int green, int blue)

imagecolorclosest() retourne l'index de la couleur de la palette qui est la plus proche de la valeur RGB passée.

La "distance" entre la couleur souhaitée et les couleurs de la palette est calculée en considérant l'espace RGB comme un espace à 3 dimensions.

Voir aussi imagecolorexact().

Précédent | Sommaire | Suivant
imagecolorat | Niveau supérieur | imagecolorclosestalpha


imagecolorclosestalpha

(PHP 4 >= 4.0.6)

imagecolorclosestalpha -- Retourne la couleur la plus proche, en tenant compte du canal alpha

Description

int imagecolorclosestalpha ( resource image, int red, int green, int blue, int alpha)

imagecolorclosestalpha() retourne l'index de la couleur, dans la palette de l'image image, la plus proche de la couleur spécifiée par les autres paramètres, au format RGB et de canal alpha alpha.

Voir aussi imagecolorexactalpha().

Note : imagecolorclosestalpha() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagecolorclosest | Niveau supérieur | imagecolorclosesthwb


imagecolorclosesthwb

(PHP 4 >= 4.0.1)

imagecolorclosesthwb -- Lit l'index de la couleur la plus proche d'une couleur spécifiée avec sa teinte, blanc et noir (hue, white and blackness)

Description

int imagecolorclosesthwb ( resource image, int red, int green, int blue)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imagecolorclosestalpha | Niveau supérieur | imagecolordeallocate


imagecolordeallocate

(PHP 3>= 3.0.6, PHP 4 )

imagecolordeallocate -- Supprime une couleur d'une image

Description

int imagecolordeallocate ( resource image, int color)

imagecolordeallocate() désalloue la couleur color précédemment allouée avec la fonction imagecolorallocate(), pour l'image image.

Exemple 1. Exemple avec imagecolordeallocate()

<?php
  $white = imagecolorallocate($im, 255, 255, 255);
  imagecolordeallocate($im, $white);
?>

Précédent | Sommaire | Suivant
imagecolorclosesthwb | Niveau supérieur | imagecolorexact


imagecolorexact

(PHP 3, PHP 4 )

imagecolorexact -- Retourne l'index de la couleur donnée

Description

int imagecolorexact ( resource image, int red, int green, int blue)

imagecolorexact() retourne l'index de la couleur spécifiée dans la palette de l'image image.

Si la couleur n'existe pas dans cette palette, imagecolorexact() retourne -1.

Voir aussi imagecolorclosest().

Précédent | Sommaire | Suivant
imagecolordeallocate | Niveau supérieur | imagecolorexactalpha


imagecolorexactalpha

(PHP 4 >= 4.0.6)

imagecolorexactalpha -- Retourne l'index d'une couleur avec son canal alpha

Description

int imagecolorexactalpha ( resource image, int red, int green, int blue, int alpha)

imagecolorexactalpha() retourne l'index de la couleur fournie au format RGB et son canal alpha alpha, dans l'image image.

Si la couleur n'existe pas dans la palette de l'image, imagecolorexactalpha() retourne -1.

Voir aussi imagecolorclosestalpha().

Précédent | Sommaire | Suivant
imagecolorexact | Niveau supérieur | imagecolormatch


imagecolormatch

(PHP 4 >= 4.3.0)

imagecolormatch -- Fait correspondre un peu plus les couleurs de la version palette d'une image aux couleurs de sa version truecolor

Description

bool imagecolormatch ( resource image1, resource image2)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

image1 doit être Truecolor, image2 doit être Palette, et image1 et image2 doivent avoir la même taille.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi imagecreatetruecolor().

Précédent | Sommaire | Suivant
imagecolorexactalpha | Niveau supérieur | imagecolorresolve


imagecolorresolve

(PHP 3>= 3.0.2, PHP 4 )

imagecolorresolve -- Retourne l'index de la couleur donnée, ou la plus proche possible.

Description

int imagecolorresolve ( resource image, int red, int green, int blue)

imagecolorresolve() retourne un index de couleur à tous les coups. Soit il arrive à trouver la couleur demandée dans la palette, soit il recherche la couleur la plus proche.

Voir aussi imagecolorclosest().

Précédent | Sommaire | Suivant
imagecolormatch | Niveau supérieur | imagecolorresolvealpha


imagecolorresolvealpha

(PHP 4 >= 4.0.6)

imagecolorresolvealpha -- Retourne un index de couleur ou son alternative la plus proche, y compris le canal alpha

Description

int imagecolorresolvealpha ( resource image, int red, int green, int blue, int alpha)

imagecolorresolvealpha() retourne toujours un index de couleur, disponible dans la palette de l'image image : soit c'est la couleur exacte, soit c'est la meilleure approximation.

Voir aussi imagecolorclosestalpha().

Note : imagecolorresolvealpha() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagecolorresolve | Niveau supérieur | imagecolorset


imagecolorset

(PHP 3, PHP 4 )

imagecolorset -- Change la couleur dans une palette à l'index donné.

Description

bool imagecolorset ( resource image, int index, int red, int green, int blue)

imagecolorset() permet d'attribuer à un index d'une palette une couleur spécifique. C'est une fonction très pratique pour effectuer du remplissage de couleur sans le faire réellement.

Voir aussi imagecolorat().

Précédent | Sommaire | Suivant
imagecolorresolvealpha | Niveau supérieur | imagecolorsforindex


imagecolorsforindex

(PHP 3, PHP 4 )

imagecolorsforindex -- Retourne la couleur associée à un index

Description

array imagecolorsforindex ( resource image, int index)

imagecolorsforindex() retourne un tableau associatif avec les couleurs rouge (red) , vert (green), bleu (blue) qui contiennent les valeurs de la couleur correspondante.

Voir aussi imagecolorat() et imagecolorexact().

Précédent | Sommaire | Suivant
imagecolorset | Niveau supérieur | imagecolorstotal


imagecolorstotal

(PHP 3, PHP 4 )

imagecolorstotal -- Calcule le nombre de couleurs d'une palette

Description

int imagecolorstotal ( resource image)

imagecolorstotal() retourne le nombre de couleurs de la palette pour l'image image.

Voir aussi imagecolorat() et imagecolorsforindex().

Précédent | Sommaire | Suivant
imagecolorsforindex | Niveau supérieur | imagecolortransparent


imagecolortransparent

(PHP 3, PHP 4 )

imagecolortransparent -- Définit la couleur transparente

Description

int imagecolortransparent ( resource image [, int color])

imagecolortransparent() permet de choisir la couleur transparente d'une image, et de lui donner la valeur de color. image est un identifiant d'image, retourné par imagecreate() et color est un identifiant de couleur retourné par imagecolorallocate().

L'identifiant de la nouvelle (ou courante) couleur transparente est retourné.

Précédent | Sommaire | Suivant
imagecolorstotal | Niveau supérieur | imagecopy


imagecopy

(PHP 3>= 3.0.6, PHP 4 )

imagecopy -- Copie une partie d'une image

Description

int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)

Copie une partie de l'image src_im sur l'image de destination dst_im, en commençant aux coordonnées src_x, src_y et sur la largeur de src_w et la hauteur de src_h. La portion ainsi définie sera copiée et placée aux coordonnées dst_x et dst_y.

Précédent | Sommaire | Suivant
imagecolortransparent | Niveau supérieur | imagecopymerge


imagecopymerge

(PHP 4 >= 4.0.1)

imagecopymerge -- Copie et fusionne une partie d'une image

Description

int imagecopymerge ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)

imagecopymerge() copie une partie de l'image src_im dans l'image de destination dst_im en commençant aux coordonnées (src_x, src_y), avec la largeur src_w et la hauteur src_h. La zone de l'image ainsi définie sera copiée aux coordonnées (dst_x, dst_y), dans l'image de destination. Les deux images seront fusionnées suivant le paramètre pct, qui peut valoir de 0 à 100. Si pct = 0, aucune action n'est faite, alors que si pct = 100, imagecopymerge() se comporte exactement comme imagecopy().

Note : imagecopymerge() a été ajoutée en PHP 4.0.6.

Précédent | Sommaire | Suivant
imagecopy | Niveau supérieur | imagecopymergegray


imagecopymergegray

(PHP 4 >= 4.0.6)

imagecopymergegray -- Copie et fusionne une partie d'une image en niveaux de gris

Description

int imagecopymergegray ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)

imagecopymergegray() copie une partie de l'image src_im dans l'image de destination dst_im commençant aux coordonnées (src_x, src_y), avec la largeur src_w et la hauteur src_h. La zone de l'image ainsi définie sera copiée aux coordonnées (dst_x, dst_y), dans l'image de destination. Les deux images seront fusionnées suivant le paramètre pct, qui peut valoir de 0 à 100. Si pct = 0, aucune action n'est faite, alors que si pct = 100, imagecopymerge() se comporte exactement comme imagecopy().

imagecopymergegray() est identique à la fonction imagecopymerge(), hormis le fait que lors de la fusion, le "hue" de l'image sera conservé grâce à la conversion de la zone dans l'image de destination en gris, avant l'opération de copie.

Note : imagecopymergegray() a été ajoutée en PHP 4.0.6.

Précédent | Sommaire | Suivant
imagecopymerge | Niveau supérieur | imagecopyresampled


imagecopyresampled

(PHP 4 >= 4.0.6)

imagecopyresampled -- Copie, redimensionne, rééchantillonne une image

Description

bool imagecopyresampled ( resource dst_im, resource src_im, int dstx, int dsty, int srcx, int srcy, int dstw, int dsth, int srcw, int srch)

imagecopyresampled() copie une zone rectangulaire de l'image src_im vers l'image dst_im. Durant la copie, la zone est rééchantillonnée de manière à conserver la clarté de l'image durant une réduction. dst_im est l'image de destination, src_im est l'image source. Si les hauteurs et largeur des source et destination diffèrent, l'image copiée sera étirée de manière appropriée. Les coordonnées sont celles du coin supérieur gauche. imagecopyresampled() peut servir à copier des zones d'une image vers elle-même, mais si les régions se chevauchent, les résultats sont imprévisibles.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Il y a un problème du aux limitations de la taille de la palette (255 + 1 couleurs différentes). Filtrer ou rééchantillonner une image demande plus de 255 couleurs, une approximation est alors utilisée pour calculer le nouveau nombre de couleurs. Avec une palette, si une nouvelle couleur ne peut être alloueé, la couleur la plus proche (en théorie) est utilisée. Ce n'est pas toujours la couleur la plus proche visuellement. Cela peut générer des problèmes étranges, comme des images blanches. Pour éviter ce problème, passez en image true color, comme celles générée par la fonction imagecreatetruecolor().

Note : imagecopyresampled() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Voir aussi imagecopyresized().

Précédent | Sommaire | Suivant
imagecopymergegray | Niveau supérieur | imagecopyresized


imagecopyresized

(PHP 3, PHP 4 )

imagecopyresized -- Copie et redimensionne une partie d'une image

Description

int imagecopyresized ( resource dst_im, resource src_im, int dstx, int dsty, int srcx, int srcy, int dstw, int dsth, int srcw, int srch)

imagecopyresized() copie une partie rectangulaire d'une image dans une autre image de destination. dst_im est l'image de destination, src_im est l'image source. Si les dimensions de la source et de la destination ne sont pas égales, un étirement adéquat est effectué pour faire correspondre les deux. Les coordonnées fournies sont définies par rapport au coin supérieur gauche. Cette fonction peut être utilisée pour recopier des régions à l'intérieur d'une même image, si dst_im et src_im sont identiques : mais si les régions se chevauchent, le résultat risque d'être incohérent.

Note : Il y a un problème du aux limitations de la taille de la palette (255 + 1 couleurs différentes). Filtrer ou rééchantillonner une image demande plus de 255 couleurs, une approximation est alors utilisée pour calculer le nouveau nombre de couleurs. Avec une palette, si une nouvelle couleur ne peut être alloueé, la couleur la plus proche (en théorie) est utilisée. Ce n'est pas toujours la couleur la plus proche visuellement. Cela peut générer des problèmes étranges, comme des images blanches. Pour éviter ce problème, passez en image true color, comme celles générée par la fonction imagecreatetruecolor().

Voir aussi imagecopyresampled().

Précédent | Sommaire | Suivant
imagecopyresampled | Niveau supérieur | imagecreate


imagecreate

(PHP 3, PHP 4 )

imagecreate -- Crée une nouvelle image à palette

Description

resource imagecreate ( int x_size, int y_size)

imagecreate() retourne un identifiant d'image représentant une image vide, de largeur x_size et longueur y_size.

Nous recommandons l'utilisation de imagecreatetruecolor() à la place de imagecreate().

Exemple 1. Création d'une image GD et affichage de cette image

<?php
  header ("Content-type: image/png");
  $im = @imagecreate (50, 100)
    or die ("Impossible d'initialiser la librairie GD");
  $background_color = imagecolorallocate ($im, 255, 255, 255);
  $text_color = imagecolorallocate ($im, 233, 14, 91);
  imagestring ($im, 1, 5, 5,  "A Simple Text String", $text_color);
  imagepng ($im);
?>

Voir aussi imagecreatetruecolor().

Précédent | Sommaire | Suivant
imagecopyresized | Niveau supérieur | imagecreatefromgd2


imagecreatefromgd2

(PHP 4 >= 4.1.0)

imagecreatefromgd2 -- Crée une nouvelle image à partir d'un fichier GD2 ou d'une URL

Description

resource imagecreatefromgd2 ( string filename)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreate | Niveau supérieur | imagecreatefromgd2part


imagecreatefromgd2part

(PHP 4 >= 4.1.0)

imagecreatefromgd2part -- Crée une nouvelle image à partir d'une partie de fichier GD2 ou d'une URL

Description

resource imagecreatefromgd2part ( string filename, int srcx, int srcy, int width, int height)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromgd2 | Niveau supérieur | imagecreatefromgd


imagecreatefromgd

(PHP 4 >= 4.1.0)

imagecreatefromgd -- Crée une nouvelle image à partir d'un fichier GD ou d'une URL

Description

resource imagecreatefromgd ( string filename)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromgd2part | Niveau supérieur | imagecreatefromgif


imagecreatefromgif

(PHP 3, PHP 4 )

imagecreatefromgif -- Crée une nouvelle image à partir d'un fichier ou d'une URL.

Description

resource imagecreatefromgif ( string filename)

imagecreatefromgif() retourne un identifiant d'image qui représente l'image obtenue à partir du fichier dont le nom est donné.

imagecreatefromgif() retourne une chaîne vide en cas d'échec. Il va aussi retourner une erreur qui va afficher un lien brisé dans un navigateur. Pour simplifier le débuggage, utilisez le code suivant, qui retourne une erreur GIF :

Exemple 1. Exemple de gestion des erreurs durant la création d'image (gracieusement offert par vic@zymsys.com )

<?php
function LoadGif ($imgname) {
    $im = @imagecreatefromgif ($imgname); /* Tentative d'ouverture */
    if (!$im) { /* Test d'&eacute;chec */
        $im = imagecreate (150, 30); /* Cr&eacute;ation d'une image vide */
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc = imagecolorallocate ($im, 0, 0, 0);
        imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);
        /* Affichage d'un message d'erreur */
        imagestring ($im, 1, 5, 5, "Erreur au chargement de l'image $imgname", $tc);
    }
    return $im;
}
?>

Note : Etant donné que toutes les fonctions de gestion des GIF ont été supprimées de la bibliothèque GD version 1.6, cette fonction n'est pas disponible si vous utilisez cette version de la librairie.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromgd | Niveau supérieur | imagecreatefromjpeg


imagecreatefromjpeg

(PHP 3>= 3.0.16, PHP 4 )

imagecreatefromjpeg -- Crée une nouvelle image JPEG à partir d'un fichier ou d'une URL

Description

resource imagecreatefromjpeg ( string filename)

imagecreatefromjpeg() retourne un identifiant d'image représentant une image obtenue à partir du fichier filename.

imagecreatefromjpeg() retourne une chaîne vide en cas d'échec. Elle affiche aussi un message d'erreur, qui s'affiche comme un lien brisé dans un navigateur web. Pour faciliter le débuggage, voici une erreur JPEG:

Exemple 1. Exemple de gestion d'erreur lors de la création d'image (gracieusement offert par vic@zymsys.com )

<?php
function loadjpeg($imgname) {
  $im = @imagecreatefromjpeg($imgname); /* Tentative d'ouverture */
  if (!$im) { /* V&eacute;rification */
    $im = imagecreate(150, 30); /* Cr&eacute;ation d'une image blanche */
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc  = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
// Affichage d'un message d'erreur
    imagestring($im, 1, 5, 5, "Erreur de chargement de l'image $imgname", $tc);
  }
  return $im;
}
?>

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromgif | Niveau supérieur | imagecreatefrompng


imagecreatefrompng

(PHP 3>= 3.0.13, PHP 4 )

imagecreatefrompng -- Crée une nouvelle image PNG à partir d'un fichier ou d'une URL

Description

resource imagecreatefrompng ( string filename)

imagecreatefrompng() retourne un identifiant d'image représentant une image obtenue à partir du fichier filename.

imagecreatefromjpeg() retourne une chaîne vide en cas d'échec. Elle affiche aussi un message d'erreur, qui s'affiche comme un lien brisé dans un navigateur web. Pour faciliter le débuggage, voici une erreur PNG:

Exemple 1. Exemple de gestion d'erreur lors de la création d'image (gracieusement offert par vic@zymsys.com )

<?php
function LoadPNG($imgname) {
  $im = @imagecreatefrompng($imgname); /* Tentative d'ouverture */
  if (!$im) { /* V&eacute;rification */
    $im = imagecreate(150, 30); /* Cr&eacute;ation d'une image blanche */
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
        /* Affichage d'un message d'erreur */
        imagestring($im, 1, 5, 5, "Erreur de chargement de l'image $imgname", $tc);
    }
    return $im;
}
?>

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromjpeg | Niveau supérieur | imagecreatefromstring


imagecreatefromstring

(PHP 4 >= 4.0.4)

imagecreatefromstring -- Crée une image à partir d'une chaîne

Description

resource imagecreatefromstring ( string image)

imagecreatefromstring() retourne un identifiant d'image représentant la chaîne image.

Précédent | Sommaire | Suivant
imagecreatefrompng | Niveau supérieur | imagecreatefromwbmp


imagecreatefromwbmp

(PHP 4 >= 4.0.1)

imagecreatefromwbmp -- Crée une image depuis un fichier WBMP

Description

resource imagecreatefromwbmp ( string filename)

imagecreatefromwbmp() retourne une ressource d'image PHP, représentant l'image filename.

imagecreatefromwbmp() retourne une chaîne vide en cas d'erreur. Il retourne aussi un message d'erreur qui s'affiche comme un lien mort dans un navigateur. Pour aider au débuggage, l'exemple suivant va produire une erreur WBMP:

Exemple 1. Exemple de gestion des erreurs durant la création d'une image WBMP (gracieusement proposé par vic@zymsys.com)

<?php
function loadwbmp($imgname) {
  $im = @imagecreatefromwbmp($imgname); /* Tentative d'ouverture */
  if (!$im) { /* V&eacute;rification que cela s'est bien pass&eacute; */
    $im  = imagecreate(20, 20); /* Cr&eacute;e une image blanche */
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc  = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 10, 10, $bgc);
// Affiche le message d'erreur
    imagestring($im, 1, 5, 5, "Erreur de chargement de $imgname", $tc);
  }
  return $im;
}
?>

Note : Le support WBMP n'est disponible qu'avec GD-1.8 ou plus récent.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromstring | Niveau supérieur | imagecreatefromxbm


imagecreatefromxbm

(PHP 4 >= 4.0.1)

imagecreatefromxbm -- Crée une image à partir d'un fichier XBM

Description

resource imagecreatefromxbm ( string filename)

imagecreatefromxbm() retourne un identifiant d'image représentant l'image obtenue à partir du fichier XBM filename.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromwbmp | Niveau supérieur | imagecreatefromxpm


imagecreatefromxpm

(PHP 4 >= 4.0.1)

imagecreatefromxpm -- Crée une image à partir d'un fichier XPM

Description

resource imagecreatefromxpm ( string filename)

imagecreatefromxpm() retourne un identifiant d'image représentant l'image obtenue à partir du fichier XPM filename.

Tuyau : Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si l'option des "fopen wrappers" a été activée. Voyez fopen() pour plus de détails.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Précédent | Sommaire | Suivant
imagecreatefromxbm | Niveau supérieur | imagecreatetruecolor


imagecreatetruecolor

(PHP 4 >= 4.0.6)

imagecreatetruecolor -- Crée une nouvelle image en vraies couleurs

Description

resource imagecreatetruecolor ( int x_size, int y_size)

imagecreatetruecolor() retourne une ressource représentant une image noire de largeur x_size, et de hauteur y_size.

Note : imagecreatetruecolor() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagecreatefromxpm | Niveau supérieur | imagedashedline


imagedashedline

(PHP 3, PHP 4 )

imagedashedline -- Dessine une ligne pointillée

Description

int imagedashedline ( resource image, int x1, int y1, int x2, int y2, int color)

imagedashedline() est obsolète. UTilisez plutôt
une combinaison des fonctions imagesetstyle() et
imageline() à la place.

Précédent | Sommaire | Suivant
imagecreatetruecolor | Niveau supérieur | imagedestroy


imagedestroy

(PHP 3, PHP 4 )

imagedestroy -- détruit une image

Description

int imagedestroy ( resource image)

imagedestroy() libère toute la mémoire associée à l'image image. image est un identifiant d'image valide retourné par imagecreate().

Précédent | Sommaire | Suivant
imagedashedline | Niveau supérieur | imageellipse


imageellipse

(PHP 4 >= 4.0.6)

imageellipse -- Dessine une ellipse

Description

int imageellipse ( resource image, int cx, int cy, int w, int h, int color)

imageellipse() dessine une ellipse centrée sur le point (cx, cy). Le coin supérieur gauche est aux coordonnées (0,0). L'image de dessin est image. w et h spécifient respectivement la largeur et la hauteur de l'ellipse. La couleur de dessin de l'ellipse est color.

Exemple 1. Exemple avec imageellipse()

<?php

// nouvelle image
$image = imagecreate(400,300);

// remplissage du fond
$bg = imagecolorallocate($image,0,0,0);

// couleur de l'ellipse
$col_ellipse = imagecolorallocate($image,255,255,255);

// on dessine l'ellipse
imageellipse($image, 200, 150, 300, 200, $col_ellipse);

// on affiche l'image
header("Content-type: image/png");
imagepng($image);

?>

Note : imageellipse() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Voir aussi imagefilledellipse() et imagearc().

Précédent | Sommaire | Suivant
imagedestroy | Niveau supérieur | imagefill


imagefill

(PHP 3, PHP 4 )

imagefill -- Remplit

Description

int imagefill ( resource image, int x, int y, int color)

imagefill() effectue un remplissage avec la couleur color, dans l'image image, à partir du point de coordonnées (x, y) (le coin supérieur gauche est l'origine (0,0)).

Précédent | Sommaire | Suivant
imageellipse | Niveau supérieur | imagefilledarc


imagefilledarc

(PHP 4 >= 4.0.6)

imagefilledarc -- Dessine une ellipse partielle et la remplit

Description

bool imagefilledarc ( resource image, int cx, int cy, int w, int h, int s, int e, int color, int style)

imagefilledarc() dessine une ellipse partielle, centrée sur le point (cx, cy). Le coin supérieur gauche est (0, 0), dans l'image image. w et h spécifient respectivement la largeur et la hauteur de l'ellipse, tandis que les points de début et de fin sont représentés par s et e, en degrés. L'argument style est un champ de bits, combiné avec l'opérateur OR :

  1. IMG_ARC_PIE

  2. IMG_ARC_CHORD

  3. IMG_ARC_NOFILL

  4. IMG_ARC_EDGED

IMG_ARC_PIE et IMG_ARC_CHORD sont mutellemement exclusives; IMG_ARC_CHORD ne fait que connecter les angles de début et de fin avec une ligne droite, tandis que IMG_ARC_PIE produit une ligne courbe. IMG_ARC_NOFILL indique que l'arc (ou corde) doit être dessiné mais pas rempli. IMG_ARC_EDGED, utilisé conjointement avec IMG_ARC_NOFILL, indique que les angles de début et de fin doivent être connectés au centre. Cette fonction est recommandée pour faire les graphiques de type camembert.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : imagefilledarc() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagefill | Niveau supérieur | imagefilledellipse


imagefilledellipse

(PHP 4 >= 4.0.6)

imagefilledellipse -- Dessine une ellipse pleine

Description

bool imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color)

imagefilledellipse() dessine une ellipse centrée sur le point (cx, cy). Le coin supérieur gauche est aux coordonnées (0,0). L'image de dessin est image. w et h spécifient respectivement la largeur et la hauteur de l'ellipse. La couleur de remplissage de l'ellipse est color.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec imagefilledellipse()

<?php

// nouvelle image
$image = imagecreate(400,300);

// couleur de fond
$bg = imagecolorallocate($image,0,0,0);

// couleur de remplissage de l'ellipse
$col_ellipse = imagecolorallocate($image,255,255,255);

// on dessine l'ellipse blanche
imagefilledellipse($image, 200, 150, 300, 200, $col_ellipse);

// on affiche l'image
header("Content-type: image/png");
imagepng($image);

?>

Note : imagefilledellipse() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Voir aussi imagefilledarc().

Précédent | Sommaire | Suivant
imagefilledarc | Niveau supérieur | imagefilledpolygon


imagefilledpolygon

(PHP 3, PHP 4 )

imagefilledpolygon -- Dessine un polygone rempli

Description

int imagefilledpolygon ( resource image, array points, int num_points, int color)

imagefilledpolygon() dessine un polygone rempli dans l'image image. points est un tableau PHP qui contient les sommets des polygones sous la forme :. points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points est le nombre total de sommets.

Précédent | Sommaire | Suivant
imagefilledellipse | Niveau supérieur | imagefilledrectangle


imagefilledrectangle

(PHP 3, PHP 4 )

imagefilledrectangle -- Dessine un rectangle rempli

Description

int imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int color)

imagefilledrectangle() dessine un rectangle de couleur color dans l'image image, en commençant par le sommet supérieur gauche (x1, y1) et finissant au sommet inférieur droit (x2, y2). Le coin supérieur gauche est l'origine (0, 0).

Précédent | Sommaire | Suivant
imagefilledpolygon | Niveau supérieur | imagefilltoborder


imagefilltoborder

(PHP 3, PHP 4 )

imagefilltoborder -- Remplit avec une région avec une couleur spécifique

Description

int imagefilltoborder ( resource image, int x, int y, int border, int color)

imagefilltoborder() remplit avec la couleur color toute la région à l'intérieur de la région limitée par la couleur border. Le point de départ est (x,y) (le coin supérieur gauche est l'origine (0,0)).

Précédent | Sommaire | Suivant
imagefilledrectangle | Niveau supérieur | imagefontheight


imagefontheight

(PHP 3, PHP 4 )

imagefontheight -- Retourne la hauteur de la police

Description

int imagefontheight ( int font)

imagefontheight() retourne la hauteur de la police font en pixels.

Voir aussi imagefontwidth() et imageloadfont().

Précédent | Sommaire | Suivant
imagefilltoborder | Niveau supérieur | imagefontwidth


imagefontwidth

(PHP 3, PHP 4 )

imagefontwidth -- Retourne la largeur de la police

Description

int imagefontwidth ( int font)

imagefontwidth() retourne la largeur de la police font en pixels.

Voir aussi imagefontheight() et imageloadfont().

Précédent | Sommaire | Suivant
imagefontheight | Niveau supérieur | imageftbbox


imageftbbox

(PHP 4 >= 4.1.0)

imageftbbox -- Calcule le rectangle d'encadrement pour un texte, en utilisant la police courante et freetype2

Description

array imageftbbox ( int size, int angle, string font_file, string text [, array extrainfo])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imagefontwidth | Niveau supérieur | imagefttext


imagefttext

(PHP 4 >= 4.1.0)

imagefttext -- Ecrit du texte dans une image avec la police courante et FreeType 2

Description

array imagefttext ( resource image, int size, int angle, int x, int y, int col, string font_file, string text [, array extrainfo])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imageftbbox | Niveau supérieur | imagegammacorrect


imagegammacorrect

(PHP 3>= 3.0.13, PHP 4 )

imagegammacorrect -- Applique une correction gamma à l'image

Description

int imagegammacorrect ( resource image, float inputgamma, float outputgamma)

imagegammacorrect() applique une correction gamma à l'image GD image. Le facteur d'entrée est inputgamma, et le facteur de sortie est outputgamma.

Précédent | Sommaire | Suivant
imagefttext | Niveau supérieur | imagegd2


imagegd2

(PHP 4 >= 4.1.0)

imagegd2 -- Génère une image au format GD2, vers le navigateur ou un fichier

Description

int imagegd2 ( resource image [, string filename [, int chunk_size [, int type]]])

imagegd2() génère une image au format GD2, vers le navigateur ou un fichier.

Le paramètre optionnel type vaut soit raw (brut) soit compressed (compressé).

Note : Les paramètres optionnels chunk_size et type ont été ajouté en PHP 4.3.1.

Précédent | Sommaire | Suivant
imagegammacorrect | Niveau supérieur | imagegd


imagegd

(PHP 4 >= 4.1.0)

imagegd -- Génère une image au format GD, vers le navigateur ou un fichier

Description

int imagegd ( resource image [, string filename])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imagegd2 | Niveau supérieur | imagegif


imagegif

(PHP 3, PHP 4 )

imagegif -- Envoie une image GIF vers un navigateur ou un fichier

Description

int imagegif ( resource image [, string filename])

imagegif() crée un fichier image GIF avec le nom filename d'après l'image image. L'argument image est un identifiant valide retourné par la fonction imagecreate().

Le format de l'image sera GIF87a, à moins que l'image n'ait une couleur transparente (mise en place grâce à la fonction imagecolortransparent())), ce qui fera qu'elle sera au format GIF89a.

Le nom du fichier est optionnel, et dans ce cas, l'image sera transmise directement à la sortie standard. En envoyant une en-tête de type image/gifcontent-type , (grâce à la fonction header()), vous pouvez créer des images avec des scripts PHP.

Note : Etant donné que toutes les fonctions GIF ont été supprimées de la bibliothèque GD version 1.6, cette fonction ne sera pas accessible si vous avez cette version de la librairie.

Le code suivant vous permet d'écrire des scripts PHP plus portables : le type de GD est automatiquement détecté. Il remplace la séquence Header("Content-type: image/gif"); ImageGif($im); par un code plus souple :

<?php
  if (function_exists("imagegif")) {
    header("Content-type: image/gif");
    imagegif($im);
  }
  elseif (function_exists("imagejpeg")) {
    header("Content-type: image/jpeg");
    imagejpeg($im, "", 0.5);
  }
  elseif (function_exists("imagepng")) {
    header("Content-type: image/png");
    imagepng($im);
  } elseif (function_exists("imagewbmp")) {
    header("Content-type: image/vnd.wap.wbmp");
    imagewbmp($im);
  }  else {
    die("Pas de support graphique avec PHP sur ce serveur");
  }
?>

Note : Depuis les versions 3.0.18 et 4.0.2, vous pouvez utiliser la fonction imagetypes() au lieu de function_exists() pour vérifier la présence des différents formats d'images supportés.

if (imagetypes() & IMG_GIF) {
    header ("Content-type: image/gif");
    imagegif ($im);
}
elseif (imagetypes() & IMG_JPG) {
        ... etc.

Voir aussi
imagepng(),
imagewbmp(),
imagejpeg() et
imagetypes().

Précédent | Sommaire | Suivant
imagegd | Niveau supérieur | imageinterlace


imageinterlace

(PHP 3, PHP 4 )

imageinterlace -- Active ou désactive l'entrelacement

Description

int imageinterlace ( resource image [, int interlace])

imageinterlace() active ou désactive le bit d'entrelacement.

Si l'entrelacement est à 1, l'image image sera interlacée, et sinon, elle ne le sera pas. Si le format d'affichage de l'image est JPEG, l'image créée sera un JPEG progressif.

imageinterlace() retourne l'état courant d'entrelacement de l'image.

Précédent | Sommaire | Suivant
imagegif | Niveau supérieur | imageistruecolor


imageistruecolor

(PHP 4 >= 4.3.2)

imageistruecolor -- Détermine si une image est une image truecolor.

Description

bool imageistruecolor ( resource image)

imageistruecolor()détermine si l'image image est une image truecolor.

Voir aussi imagecreatetruecolor().

Précédent | Sommaire | Suivant
imageinterlace | Niveau supérieur | imagejpeg


imagejpeg

(PHP 3>= 3.0.16, PHP 4 )

imagejpeg -- Envoie une image JPEG vers un navigateur ou un fichier.

Description

int imagejpeg ( resource image [, string filename [, int quality]])

imagejpeg() envoie l'image GD (image) au format JPEG sur la sortie standard (typiquement, le navigateur web), ou si filename est fourni, l'envoie dans un fichier. image a été créé par imagecreate().

Le nom du fichier est optionnel, et dans ce cas, l'image sera transmise directement à la sortie standard. En envoyant une image de type image/jpeg content-type (grâce à la fonction header()), vous pouvez créer des images JPEG avec des scripts PHP.

Note : Le support JPEG n'est disponible que si PHP est compilé avec GD-1.8 ou plus récent.

quality est optionnel, et prend des valeurs entières de 0 (pire qualité, petit fichier) et 100 (meilleure qualité, gros fichier). Par défaut, la valeur est à 100.

Si vous voulez générer des images JPEG progressive, vous devez choisir l'entrelacement à l'aide de la fonction imageinterlace().

Voir aussi
imagepng(),
imagewbmp(),
imagegif(),
imageinterlace(),
imagegif() et
imagetypes().

Précédent | Sommaire | Suivant
imageistruecolor | Niveau supérieur | imageline


imageline

(PHP 3, PHP 4 )

imageline -- Dessine une ligne

Description

int imageline ( resource image, int x1, int y1, int x2, int y2, int color)

imageline() dessine une ligne depuis le point (x1,y1) jusqu'au point (x2,y2) (le coin supérieur gauche est l'origine (0,0)) dans l'image image et avec la couleur color.

Voir aussi imagecreate() et imagecolorallocate().

Précédent | Sommaire | Suivant
imagejpeg | Niveau supérieur | imageloadfont


imageloadfont

(PHP 3, PHP 4 )

imageloadfont -- Charge une nouvelle police

Description

int imageloadfont ( string file)

imageloadfont() charge une nouvelle police utilisateur et retourne un identifiant sur cette police. Cet identifiant sera toujours supérieur à 5, pour éviter les conflits avec les polices standard PHP.

Le format des polices dépend actuellement du système d'exploitation. Ce qui signifie qu'il vous faut générer des fichiers de polices pour la machine qui fait tourner PHP.

Tableau 1. Format de fichier de police.

Position | Type de données C | Description
Octets 0-3 | int | Nombre de caractères de la police
Octets 4-7 | int | Valeur du premier caractère de la police (souvent 32 pour espace)
Octets 8-11 | int | Largeur en pixels des caractères
Octets 12-15 | int | Hauteur en pixels des caractères
Octets 16- | char | Tableau avec les données des caractères, un octet par pixel pour chaque caractère, avec un total de (nombre_caractères*largeur*hauteur) octets.

Voir aussi imagefontwidth() et imagefontheight().

Précédent | Sommaire | Suivant
imageline | Niveau supérieur | imagepalettecopy


imagepalettecopy

(PHP 4 >= 4.0.1)

imagepalettecopy -- Copie la palette d'une image à l'autre

Description

int imagepalettecopy ( resource destination, resource source)

imagepalettecopy() copie la palette de l'image source dans l'image destination.

Précédent | Sommaire | Suivant
imageloadfont | Niveau supérieur | imagepng


imagepng

(PHP 3>= 3.0.13, PHP 4 )

imagepng -- Envoie une image PNG vers un navigateur ou un fichier.

Description

int imagepng ( resource image [, string filename])

imagepng() envoie l'image GD (image) au format PNG sur la sortie standard (typiquement, le navigateur web), ou si filename est fourni, l'envoie dans un fichier.

Exemple 1. Exemple avec imagepng()

<?php
  $im = imagecreatefrompng("test.png");
  imagepng($im);
?>

Le nom du fichier est optionnel, et dans ce cas, l'image sera transmise directement à la sortie standard. En envoyant une image de type image/png content-type (grâce à la fonction header()), vous pouvez créer des images PNG avec des scripts PHP.

Voir aussi
imagegif(),
imagewbmp(),
imagejpeg() et
imagetypes().

Précédent | Sommaire | Suivant
imagepalettecopy | Niveau supérieur | imagepolygon


imagepolygon

(PHP 3, PHP 4 )

imagepolygon -- Dessine un polygone

Description

int imagepolygon ( resource image, array points, int num_points, int color)

imagepolygon() dessine un polygone dans l'image image. points est un tableau PHP qui contient les sommets du polygone sous la forme : points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points est le nombre de sommets.

Exemple 1. Exemple avec imagepolygon()

<?php
// nouvelle image
$image = imagecreate(400,300);

// couleur de fond
$bg = imagecolorallocate($image,0,0,0);

// couleur pour les bords du polygone
$col_poly = imagecolorallocate($image,255,255,255);

// on dessine le polygone
imagepolygon($image,
             array (
                    0, 0,
                    100, 200,
                    300, 200
             ),
             3,
             $col_poly);

// on affiche l'image
header("Content-type: image/png");
imagepng($image);

?>

Voir aussi imagecreate() et imagecreatetruecolor().

Précédent | Sommaire | Suivant
imagepng | Niveau supérieur | imagepsbbox


imagepsbbox

(PHP 3>= 3.0.9, PHP 4 )

imagepsbbox -- Retourne le rectangle entourant un texte et dessiné avec une police PostScript Type1.

Description

array imagepsbbox ( string text, int font, int size [, int space [, int tightness [, float angle]]])

size est exprimé en pixels.

space permet de changer la valeur par défaut du charactère espace. Cette valeur est ajoutée lors des dessins, et donc, peut être négative.

tightness permet de contrôler la quantité d'espace entre les caractères. Cette quantité est ajoutée lors des dessins, et peut donc être négative.

angle est en degrés.

Les paramètres space et tightness sont exprimés en unité d'espacement de caractères, avec 1 unité vaut 1/1000 d'un em carré (un em : Unité de mesure représentée par un carré dont la dimension horizontale est la même que le corps du caractère).

Les paramètres space, tightness et angle sont optionnels.

Le rectangle entourant est calculé en utilisant les informations disponibles sur les tailles de caractères, et, malheureusement, il a tendance à être légèrement différent du résultat réel final. Si l'angle est de 0 degré, vous pouvez-vous attendre à avoir besoin d'un rectangle d'au moins un pixel plus grand dans toutes les directions.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

imagepsbbox() retourne un tableau contenant les éléments suivants :

0 | Abscisse inférieure gauche
1 | Ordonnée inférieure gauche
2 | Abscisse supérieure droite
3 | Ordonnée supérieure droite

Voir aussi imagepstext().

Précédent | Sommaire | Suivant
imagepolygon | Niveau supérieur | imagepscopyfont


imagepscopyfont

(PHP 3>= 3.0.9, PHP 4 )

imagepscopyfont -- Fait une copie d'une police chargée pour modification ultérieure.

Description

int imagepscopyfont ( int fontindex)

Utilisez cette fonction si vous devez faire des modifications dans une polie, comme par exemple l'extension ou la condensation, ou encore, modifier son vecteur d'encodage, tout en conservant l'original. Notez que la police que vous copiez doit être obtenue par imagepsloadfont(), et non pas une police qui a elle-même été copiée. Vous pouvez aussi faire des modifications avant de la copier.

Si vous utilisez cette fonction, vous DEVEZ libérer les polices obtenues vous même, et dans l'ordre inverse. Sinon, votre script sera suspendu.

Si tout a bien été fait, un index valide de police sera retourné, et pourra être utilisé ultérieurement. Sinon, la fonction retournera FALSE, et affichera un message décrivant l'erreur.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Voir aussi imagepsloadfont().

Précédent | Sommaire | Suivant
imagepsbbox | Niveau supérieur | imagepsencodefont


imagepsencodefont

(PHP 3>= 3.0.9, PHP 4 )

imagepsencodefont -- Change le codage vectoriel d'un caractère dans une police

Description

int imagepsencodefont ( int font_index, string encodingfile)

imagepsencodefont() charge le codage vectoriel d'un caractère depuis un fichier et change le codage vectoriel de la police correspondante. Etant donné que les polices PostScript ne disposent pas des caractères au-delà de 127, vous aurez sûrement besoin de les changer si vous utilisez une autre langue que l'anglais. Le format exact est décrit dans la documentation T1libs. T1lib est disponible en deux formes : IsoLatin1.enc et IsoLatin2.enc.

Si vous commencez à utiliser cette fonction régulièrement, une meilleure solution est de définir un encodage, et de l'utiliser avec ps.default_encoding dans le fichier de configuration pour utiliser par défaut l'encodage correct.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Précédent | Sommaire | Suivant
imagepscopyfont | Niveau supérieur | imagepsextendfont


imagepsextendfont

(PHP 3>= 3.0.9, PHP 4 )

imagepsextendfont -- Etend ou condense une police de caractères

Description

bool imagepsextendfont ( int font_index, float extend)

imagepsextendfont() étend ou condense la police de caractères font. Si la valeur de extend est inférieure à 1, ce sera une condensation.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Précédent | Sommaire | Suivant
imagepsencodefont | Niveau supérieur | imagepsfreefont


imagepsfreefont

(PHP 3>= 3.0.9, PHP 4 )

imagepsfreefont -- Libère la mémoire occupée par une police PostScript Type 1

Description

void imagepsfreefont ( int fontindex)

imagepsfreefont() libère la mémoire occupée par une police PostScript Type 1.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Voir aussi imagepsloadfont().

Précédent | Sommaire | Suivant
imagepsextendfont | Niveau supérieur | imagepsloadfont


imagepsloadfont

(PHP 3>= 3.0.9, PHP 4 )

imagepsloadfont -- Charge une police PostScript Type 1 depuis un fichier

Description

int imagepsloadfont ( string filename)

En cas de succès, imagepsloadfont() retourne un index de police, qui pourra être utilisé pour des opérations ultérieures. Sinon, imagepsloadfont() retourne FALSEet affiche un message décrivant ce qui est arrivé.

Exemple 1. Exemple avec imagepsloadfont()

<?php
header ("Content-type: image/jpeg");
$im = imagecreate (350, 45);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
$font = imagepsloadfont ("bchbi.pfb"); // ou bien situez un de vos fichiers .pfb
imagepstext ($im, "Test ... Ca marche!", $font, 32, $white, $black, 32, 32);
imagepsfreefont ($font);
imagejpeg ($im, "", 100); //Meilleure qualit&eacute;...
imagedestroy ($im);
?>

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Voir aussi imagepsfreefont().

Précédent | Sommaire | Suivant
imagepsfreefont | Niveau supérieur | imagepsslantfont


imagepsslantfont

(PHP 3>= 3.0.9, PHP 4 )

imagepsslantfont -- Incline une police de caractères PostScript

Description

bool imagepsslantfont ( int font_index, float slant)

imagepsslantfont() met en italique la police de caractères font avec le coefficient slant.

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Précédent | Sommaire | Suivant
imagepsloadfont | Niveau supérieur | imagepstext


imagepstext

(PHP 3>= 3.0.9, PHP 4 )

imagepstext -- Dessine un texte sur une image avec une police PostScript Type1

Description

array imagepstext ( resource image, string text, int font, int size, int foreground, int background, int x, int y [, int space [, int tightness [, float angle [, int antialias_steps]]]])

foreground est la couleur dans laquelle le texte va être dessiné. background est la couleur d'anti aliasing. Aucun pixel avec la couleur background n'est dessiné, ce qui fait que l'arrière-plan n'a pas besoin d'être dans une couleur fixe.

Les coordonnées données (x, y) définissent l'origine du premier caractère (grossièrement, le coin inférieur gauche du caractère). Ceci est différent de la fonction imagestring(), où (x, y) définissait le coin supérieur gauche du premier caractère. Reportez-vous à la documentation PostScript pour avoir des détails à propos des polices et de leurs tailles.

space permet de changer la taille par défaut du caractère d'espacement. Cette valeur peut être négative.

tightness permet de contrôler la quantité d'espace entre deux caractères. Cette valeur peut être négative.

angle est en degrés.

size est exprimé en pixels.

antialias_steps permet de contrôler le nombre de couleurs du texte anti-aliasé. Les valeurs autorisées sont 4 et 16. 16 est recommandé pour les polices de moins de 20 pixels, car l'effet est alors visible. Avec les tailles plus grandes, utilisez de préférence 4, qui est moins gourmande en ressources.

Les paramètres space et tightness sont exprimés en unité d'espaces caractère, ce qui vaut 1/1000ème d'un em-carré (un em : Unité de mesure représentée par un carré dont la dimension horizontale est la même que le corps du caractère).

Les paramètres space, tightness, angle et antialias sont optionnels.

imagepstext() retourne un tableau contenant les éléments suivants :

0 | Abscisse inférieure gauche
1 | Ordonnée inférieure gauche
2 | Abscisse supérieure droite
3 | Ordonnée supérieure droite

Note : Cette fonction n'est disponible que si PHP est compilé en utilisant --enable-t1lib.

Voir aussi imagepsbbox().

Précédent | Sommaire | Suivant
imagepsslantfont | Niveau supérieur | imagerectangle


imagerectangle

(PHP 3, PHP 4 )

imagerectangle -- Dessine un rectangle

Description

int imagerectangle ( resource image, int x1, int y1, int x2, int y2, int col)

imagerectangle() dessine un rectangle dans la couleur color, dans l'image image, et en commençant au point supérieur gauche (x1, y1), et en finissant au point inférieur droit (x2,y2). Le coin supérieur gauche est l'origine (0,0).

Précédent | Sommaire | Suivant
imagepstext | Niveau supérieur | imagerotate


imagerotate

(PHP 4 >= 4.3.0)

imagerotate -- Fait tourner une image d'un angle

Description

ressource imagerotate ( resource src_im, float angle, int bgd_color)

imagerotate() fait tourner l'image src_im d'un angle de angle degrés bgd_color spécifie la couleur des zones qui seront découvertes après la rotation.

Précédent | Sommaire | Suivant
imagerectangle | Niveau supérieur | imagesavealpha


imagesavealpha

(PHP 4 >= 4.3.2)

imagesavealpha -- Définit l'option pour enregistrer les informations complètes du canal alpha lors de la sauvegarde d'images PNG.

Description

bool imagesavealpha ( resource image, bool saveflag)

imagesavealpha() définit l'option pour essayer de sauvegarder toutes les informations du canal alpha (en opposition à la transparence à couleur unique) lors de la sauvegarde d'images PNG.

Vous devez désactiver le alphablending (imagealphablending()($im, FALSE)) pour l'utiliser.

Le canal alpha n'est pas supporté par tous les naviguateurs, si vous avez des problèmes avec le votre, essayez de charger le script avec un naviguateur compatible avec les canaux alpha, c'est à dire le dernier Mozilla.

Voir aussi imagealphablending().

Précédent | Sommaire | Suivant
imagerotate | Niveau supérieur | imagesetbrush


imagesetbrush

(PHP 4 >= 4.0.6)

imagesetbrush -- Modifie la brosse pour le dessin des lignes

Description

int imagesetbrush ( resource image, resource brush)

imagesetbrush() remplace la brosse courante pour le dessin des lignes par brush. Cette brosse sera alors utilisée avec les fonctions imageline() et imagepolygon().

Note : Vous n'avez rien à faire lorsque vous en avez terminé avec une brosse, mais si vous détruisez l'image de brosse, vous ne DEVEZ plus utiliser les options IMG_COLOR_BRUSHED et IMG_COLOR_STYLEDBRUSHED des fonctions imageline() et imagepolygon(), avant d'avoir créé une nouvelle brosse.

Note : imagesetbrush() a été ajoutée en PHP 4.0.6.

Précédent | Sommaire | Suivant
imagesavealpha | Niveau supérieur | imagesetpixel


imagesetpixel

(PHP 3, PHP 4 )

imagesetpixel -- Dessine un pixel

Description

int imagesetpixel ( resource image, int x, int y, int color)

imagesetpixel() dessine un pixel au point (x,y) (le coin supérieur gauche est l'origine (0,0)) dans l'image image, et avec la couleur color.

Voir aussi imagecreate() et imagecolorallocate().

Précédent | Sommaire | Suivant
imagesetbrush | Niveau supérieur | imagesetstyle


imagesetstyle

(PHP 4 >= 4.0.6)

imagesetstyle -- Configure le style pour le dessin des lignes

Description

bool imagesetstyle ( resource image, array style)

imagesetstyle() permet de choisir le style à utiliser lors du dessin des lignes (comme avec les fonctions imageline() and imagepolygon()) lors de l'utilisation de la couleur spéciale IMG_COLOR_STYLED ou bien lors du dessin de lignes avec la couleur IMG_COLOR_STYLEDBRUSHED.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le paramètre style est un tableau de pixels. L'exemple suivant dessine une ligne pointillée depuis le coin supérieur gauche vers le coin inférieur droit de l'image :

Exemple 1. Exemple avec imagesetstyle()

<?php
header ("Content-type: image/jpeg");
$im  = imagecreate (100, 100);
$w   = imagecolorallocate ($im, 255, 255, 255);
$red = imagecolorallocate ($im, 255, 0, 0);

/* Dessine une ligne pointill&eacute;e de 5 pixels rouges, 5 pixels blancs */
$style = array ($red,$red,$red,$red,$red,$w,$w,$w,$w,$w);
imagesetstyle ($im, $style);
imageline ($im, 0, 0, 100, 100, IMG_COLOR_STYLED);

/* Dessine une lgine avec des smileys, en utilisant imagesetbrush() et imagesetstyle */
$style = array ($w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$red);
imagesetstyle ($im, $style);

$brush = imagecreatefrompng ("http://www.libpng.org/pub/png/images/smile.happy.png");
$w2 = imagecolorallocate($brush,255,255,255);
imagecolortransparent ($brush, $w2);
imagesetbrush ($im, $brush);
imageline ($im, 100, 0, 0, 100, IMG_COLOR_STYLEDBRUSHED);

imagejpeg ($im);
imagedestroy ($im);
?>

Note : Cette fonction a été ajoutée en PHP 4.0.6.

Voir aussi imagesetbrush() et imageline().

Précédent | Sommaire | Suivant
imagesetpixel | Niveau supérieur | imagesetthickness


imagesetthickness

(PHP 4 >= 4.0.6)

imagesetthickness -- Modifie l'épaisseur d'un trait

Description

bool imagesetthickness ( resource image, int thickness)

imagesetthickness() modifie l'épaisseur du trait des lignes de l'image image. Cette épaisseur intervient dans les dessins de polygones, ellipses, cercles, rectangles, etc... thickness est en pixels.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : imagesetthickness() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagesetstyle | Niveau supérieur | imagesettile


imagesettile

(PHP 4 >= 4.0.6)

imagesettile -- Modifie l'image utilisée pour le carrelage

Description

int imagesettile ( resource image, resource tile)

imagesettile() remplace l'image de pavement courante par l'image tile, à utiliser dans tous les remplissages (comme avec les fonctions imagefill() et imagefilledpolygon()) lors des remplissages avec l'option IMG_COLOR_TILED.

Une image de carrelage est une image utilisée pour remplir une zone, de manière répétitive. N'importe quelle image GD peut servir d'image de remplissage. L'utilisation de la couleur transparente (gérée avec la fonction imagecolortransparent()) permet à certaines zones d'apparaître à travers le carrelage.

Note : Vous n'avez rien à faire lorsque vous en avez terminé avec une brosse, mais si vous détruisez l'image de brosse, vous ne DEVEZ plus utiliser l'option IMG_COLOR_TILED des fonctions imagefill() et imagefilledpolygon(), avant d'avoir créé une nouvelle brosse.

Précédent | Sommaire | Suivant
imagesetthickness | Niveau supérieur | imagestring


imagestring

(PHP 3, PHP 4 )

imagestring -- Dessine une chaîne horizontale

Description

int imagestring ( resource image, int font, int x, int y, string s, int col)

imagestring() dessine une la chaîne sur une ligne horizontale, dans l'image image, aux coordonnées (x,y) (le coin supérieur gauche est l'origine (0,0)) dans la couleur color. Si l'argument de police vaut 1, 2, 3, 4 ou 5, une des polices par défaut sera utilisée).

Exemple 1. Exemple avec imagestring()

<?php

// nouvelle iamge 100*30
$im = imagecreate(100, 30);

// fond blanc et texte bleu
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);

// ajout de la phrase en haut &grave; gauche
imagestring($im, 5, 0, 0, "Hello world!", $textcolor);

// afichage de l'image
header("Content-type: image/jpg");
imagejpeg($im);
?>

Voir aussi imageloadfont().

Précédent | Sommaire | Suivant
imagesettile | Niveau supérieur | imagestringup


imagestringup

(PHP 3, PHP 4 )

imagestringup -- Dessine une chaîne verticale

Description

int imagestringup ( resource image, int font, int x, int y, string s, int col)

imagestringup() dessine une chaîne sur une ligne verticale dans l'image image aux coordonnées (x, y) (l'origine est le coin supérieur gauche (0,0)) dans la couleur color. Si la police utilisée est 1, 2, 3, 4 ou 5, une police par défaut sera utilisée.

Voir aussi imageloadfont().

Précédent | Sommaire | Suivant
imagestring | Niveau supérieur | imagesx


imagesx

(PHP 3, PHP 4 )

imagesx -- Retourne la largeur d'une image

Description

int imagesx ( resource image)

imagesx() retourne la largeur de l'image référencée par image.

Voir aussi imagecreate() et imagesy().

Précédent | Sommaire | Suivant
imagestringup | Niveau supérieur | imagesy


imagesy

(PHP 3, PHP 4 )

imagesy -- Retourne la hauteur de l'image

Description

int imagesy ( resource image)

imagesy() retourne la hauteur de l'image référencée par image.

Voir aussi imagecreate() et imagesx().

Précédent | Sommaire | Suivant
imagesx | Niveau supérieur | imagetruecolortopalette


imagetruecolortopalette

(PHP 4 >= 4.0.6)

imagetruecolortopalette -- Convertit une image en vraies couleurs en image à palette

Description

void imagetruecolortopalette ( resource image, bool dither, int ncolors)

imagetruecolortopalette() convertit l'image en vraies couleurs image en image à palette. Le code de cette fonction est directement tiré de la librairie du "Independent JPEG Group", qui est tout simplement génial. Le code a été modifié pour préserver l'essentiel du canal alph dans la nouvelle palette, en plus de conserver les couleurs du mieux possible. Mais cela ne fonctionne pas toujours comme voulu. Il est alors préférable de générer un résultat en vraies couleurs, ce qui a toujours le meilleur rendu.

Si dither vaut TRUE, cela indique que l'image doit être ditherée : l'image sera un peu plus granuleuse, mais l'approximation des couleurs sera meilleure.

ncolors est le nombre maximal de couleurs dans la palette finale.

Note : imagetruecolortopalette() a été ajoutée en PHP 4.0.6 et nécessite GD 2.0.1.

Précédent | Sommaire | Suivant
imagesy | Niveau supérieur | imagettfbbox


imagettfbbox

(PHP 3>= 3.0.1, PHP 4 )

imagettfbbox -- Retourne le rectangle entourant un texte et dessiné avec une police TrueType.

Description

array imagettfbbox ( int size, int angle, string fontfile, string text)

imagettfbbox() calcule et retourne le rectangle entourant le texte text, écrit avec une police truetype.

text

La chaîne à mesurer.

size

La taille de la police en pixel.

fontfile

Le nom de la police TrueType (peut aussi être une URL.)

angle

Angle en degré dans lequel le texte text va être mesuré.

imagettfbbox() retourne une tableau avec 8 éléments, représentant les 4 sommets du rectangle ainsi défini.

0 | Coin inférieur gauche, abscisse
1 | Coin inférieur gauche, ordonnée
2 | Coin inférieur droit, abscisse
3 | Coin inférieur droit, ordonnée
4 | Coin supérieur droit, abscisse
5 | Coin supérieur droit, ordonnée
6 | Coin supérieur gauche, abscisse
7 | Coin supérieur gauche, ordonnée

Les positions des points sont relatives au texte text, indépendamment de l'angle : coin supérieur gauche faire référence au coin supérieur gauche du texte écrit horizontalement.

imagettfbbox() requiert les bibliothèques GD et Freetype.

Voir aussi imagettftext().

Précédent | Sommaire | Suivant
imagetruecolortopalette | Niveau supérieur | imagettftext


imagettftext

(PHP 3, PHP 4 )

imagettftext -- Dessine un texte avec une police TrueType

Description

array imagettftext ( resource image, int size, int angle, int x, int y, int color, string fontfile, string text)

imagettftext() dessine la chaîne text dans l'image image, en commençant aux coordonnées (x,y) (le coin supérieur gauche est l'origine (0,0)), avec un angle de angle, et dans la couleur color, en utilisant la police TrueType identifiée par fontfile. Suivant la version de GD dont vous disposez, lorsque le paramètre fontfile ne commence pas par un slash '/', l'extension '.ttf' sera ajoutée au nom du fichier et la librairie essaiera de trouver un fichier avec ce nom la, dans les chemins prédéfinies de la librairie pour les polices.

Les coordonnées (x,y) serviront de référence pour le premier caractère (en gros, le coin inférieur gauche du caractère). C'est différent de imagestring(), qui utilise le coin supérieur droit.

angle est donné en degrés, avec degré 0 pour un texte horizontal, et en comptant les angles dans le sens inverse des aiguilles d'une montre (sens direct).

fontfile est le chemin jusqu'à la police TrueType à utiliser.

text est le texte à dessiner, incluant aussi des séquences de caractères UTF-8 (de la forme: &#123; ) pour générer des caractères au-delà de 255.

color est l'index de la couleur dans la palette. Utiliser des index négatifs, revient à supprimer l'anti-aliasing.

imagettftext() retourne un tableau de 8 éléments représentant les 4 points marquants les limites du texte. L'ordre des points est: supérieur gauche, supérieur droit, inférieur droit, inférieur gauche. Les points sont nommés relativement au texte à l'horizontale imagecolorexact().

Cet exemple va générer une image JPEG noire de 400x30 pixels, avec les mots "Test en cours...Oméga: &#937;" en police blanche, type Arial.

Exemple 1. Exemple avec imagettftext()

<?php
  header("Content-type: image/jpeg");
  $im = imagecreate(400,30);
  $white = imagecolorallocate($im, 255,255,255);
  $black = imagecolorallocate($im, 0,0,0);

  // Remplacez path par votre chemin d'acc&egrave;s aux polices
  imagettftext($im, 20, 0, 10, 20, $white, "/path/arial.ttf",
  "Test en cours... Omega: &#937;");
  imagejpeg($im);
  imagedestroy($im);
?>

imagettftext() requiert les bibliothèques GD ainsi que FreeType.

Voir aussi imagettfbbox().

Précédent | Sommaire | Suivant
imagettfbbox | Niveau supérieur | imagetypes


imagetypes

(PHP 3 CVS only, PHP 4 >= 4.0.2)

imagetypes -- Retourne les types d'images supportés par la version courante de PHP

Description

int imagetypes ( void )

imagetypes() retourne un champ de bits correspondant aux formats d'images supportés par la version de GD utilisée. Les valeurs suivantes sont valables : IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP. Pour vous assurer du support PNG, faites ceci :

Exemple 1. Exemple avec imagetypes()

<?php
if (imagetypes() & IMG_PNG) {
    echo "Le type PNG est support&eacute;";
}
?>

Précédent | Sommaire | Suivant
imagettftext | Niveau supérieur | imagewbmp


imagewbmp

(PHP 3>= 3.0.15, PHP 4 >= 4.0.1)

imagewbmp -- Affiche une image WBMP

Description

int imagewbmp ( resource image [, string filename [, int foreground]])

imagewbmp() crée l'image WBMP dans le fichier filename, à partir de l'image image. Le paramètre image a été créé avec la fonction imagecreate().

filename est optionnel, et s'il est omis, l'image sera envoyée directement au client. En plaçant l'en-tête image/vnd.wap.wbmp, dans le champ "content-type", vous pourrez afficher une image WBMP.

Note : Le support WBMP n'est disponible que si PHP a été compilé avec GD-1.8 ou plus récent.

En passant le paramètre optionnel foreground, vous pouvez choisir la couleur de fond. Utilisez l'identifiant retourné par imagecolorallocate() comme valeur de ce paramètre. La couleur de fond par défaut est noir.

Voir aussi
image2wbmp(),
imagepng(),
imagegif(),
imagejpeg() et
imagetypes().

Précédent | Sommaire | Suivant
imagetypes | Niveau supérieur | iptcembed


iptcembed

(PHP 3>= 3.0.7, PHP 4 )

iptcembed -- Intègre des données binaires IPTC dans une image JPEG

Description

array iptcembed ( string iptcdata, string jpeg_file_name [, int spool])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imagewbmp | Niveau supérieur | iptcparse


iptcparse

(PHP 3>= 3.0.6, PHP 4 )

iptcparse -- Analyse un bloc binaire IPTC http://www.iptc.org/ et recherche les balises simples.

Description

array iptcparse ( string iptcblock)

iptcparse() analyse un bloc binaire IPTC et recherche les balises simples. iptcparse() retourne un tableau avec les balises comme index et les valeurs de ces balises IPTC dans les valeurs de tableau correspondantes. En cas d'erreur, ou si aucune balise IPTC n'a été trouvée, retourne FALSE.

Voir getimagesize() pour un exemple.

Précédent | Sommaire | Suivant
iptcembed | Niveau supérieur | jpeg2wbmp


jpeg2wbmp

(PHP 4 >= 4.0.5)

jpeg2wbmp -- Convertit une image JPEG en image WBMP

Description

int jpeg2wbmp ( string jpegname, string wbmpname, int d_height, int d_width, int threshold)

jpeg2wbmp() convertit l'image JPEG du fichier jpegname au format WBMP, et la sauve dans le fichier wbmpname. Les paramètres d_height et d_width vous permettent de spécifier la hauteur et la largeur (respectivement) de l'image de destination.

Note : Le support WBMP n'est disponible que si PHP a été compilé avec GD-1.8 ou plus récent.

Voir aussi png2wbmp().

Précédent | Sommaire | Suivant
iptcparse | Niveau supérieur | png2wbmp


png2wbmp

(PHP 4 >= 4.0.5)

png2wbmp -- Convertit une image PNG en image WBMP

Description

int png2wbmp ( string pngname, string wbmpname, int d_height, int d_width, int threshold)

png2wbmp() convertit l'image PNG du fichier pngname au format WBMP, et la sauve dans le fichier wbmpname. Les paramètres d_height et d_width vous permettent de spécifier la hauteur et la largeur (respectivement) de l'image de destination.

Note : Le support WBMP n'est disponible que si PHP a été compilé avec GD-1.8 ou plus récent.

Voir aussi jpeg2wbmp().

Précédent | Sommaire | Suivant
jpeg2wbmp | Niveau supérieur | read_exif_data


read_exif_data

read_exif_data -- Alias de exif_read_data()

Description

read_exif_data() est un alias de exif_read_data().

Précédent | Sommaire | Suivant
png2wbmp | Niveau supérieur | IMAP


IMAP

Manuel PHP
Précédent Suivant

XLII. IMAP

Introduction

These functions are not limited to the IMAP protocol, despite their name. The underlying c-client library also supports NNTP, POP3 and local mailbox access methods.

Pré-requis

Cette extension requiert la librairie C cliente. Téléchargez cette dernière version à ftp://ftp.cac.washington.edu/imap/ et compilez la.

Puis, copiez le fichier c-client/c-client.a dans /usr/local/lib ou n'importe quel autre dossier qui soit dans le chemin de link. Enfin, copiez les fichiers c-client/rfc822.h, mail.h et linkage.h dans /usr/local/include ou n'importe quel autre dossier qui soit dans le chemin d'inclusion.

Note : Assurez vous que c-client.a est bien dans votre chemin de link, sous le nom libc-client.a.

Copiez les fichiers suivants dans le dossier /usr/local/include ou dans n'importe quel dossier qui soit dans votre chemin d'inclusion.

c-client.h
imap4r1.h
rfc822.h
mail.h
linkage.h
env.h
env_unix.h
fs.h
ftl.h
misc.h
nntp.h
nl.h
osdep.h
smtp.h
tcp.h

Note : Le nom de env_unix.h dépend de votre OS. Assurez vous que ces fichiers sont bien copiés avec l'option de suivi des liens. Pour compiler la librairie C cliente avec SSL et/ou avec le support Kerberos, lisez la doc fournie dans la distribution.

Installation

To get these functions to work, you have to compile PHP with --with-imap[=DIR], where DIR is the c-client install prefix. From our example above, you would use --with-imap=/usr/local/imap-2000b. This location depends on where you created this directory according to the description above. Windows users may include the php_imap.dll DLL in php.ini

Note : Depending how the c-client was configured, you might also need to add --with-imap-ssl=/path/to/openssl/ and/or --with-kerberos=/path/to/kerberos into the PHP configure line.

Avertissement

L'extension IMAP ne peut être utilisée simultanément avec l'extension recode ou l'extension YAZ. Ceci est dû au fait que ces deux librairies utilisent un symbole interne commun.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

NIL (integer)

OP_DEBUG (integer)

OP_READONLY (integer)

OP_ANONYMOUS (integer)

OP_SHORTCACHE (integer)

OP_SILENT (integer)

OP_PROTOTYPE (integer)

OP_HALFOPEN (integer)

OP_EXPUNGE (integer)

OP_SECURE (integer)

CL_EXPUNGE (integer)

FT_UID (integer)

FT_PEEK (integer)

FT_NOT (integer)

FT_INTERNAL (integer)

FT_PREFETCHTEXT (integer)

ST_UID (integer)

ST_SILENT (integer)

ST_SET (integer)

CP_UID (integer)

CP_MOVE (integer)

SE_UID (integer)

SE_FREE (integer)

SE_NOPREFETCH (integer)

SO_FREE (integer)

SO_NOSERVER (integer)

SA_MESSAGES (integer)

SA_RECENT (integer)

SA_UNSEEN (integer)

SA_UIDNEXT (integer)

SA_UIDVALIDITY (integer)

SA_ALL (integer)

LATT_NOINFERIORS (integer)

LATT_NOSELECT (integer)

LATT_MARKED (integer)

LATT_UNMARKED (integer)

SORTDATE (integer)

SORTARRIVAL (integer)

SORTFROM (integer)

SORTSUBJECT (integer)

SORTTO (integer)

SORTCC (integer)

SORTSIZE (integer)

TYPETEXT (integer)

TYPEMULTIPART (integer)

TYPEMESSAGE (integer)

TYPEAPPLICATION (integer)

TYPEAUDIO (integer)

TYPEIMAGE (integer)

TYPEVIDEO (integer)

TYPEOTHER (integer)

ENC7BIT (integer)

ENC8BIT (integer)

ENCBINARY (integer)

ENCBASE64 (integer)

ENCQUOTEDPRINTABLE (integer)

ENCOTHER (integer)

Voir aussi

Ce document ne peut entrer dans les détails de toutes les sujets abordés. Plus d'informations sont disponibles avec la documentation de la librairie C (docs/internal.txt) ainsi que les RFC suivantes : documents:

  • RFC821: Simple Mail Transfer Protocol (SMTP).

  • RFC822: Standard for ARPA internet text messages.

  • RFC2060: Internet Message Access Protocol (IMAP) Version 4rev1.

  • RFC1939: Post Office Protocol Version 3 (POP3).

  • RFC977: Network News Transfer Protocol (NNTP).

  • RFC2076: Common Internet Message Headers.

  • RFC2045 , RFC2046 , RFC2047 , RFC2048 & RFC2049: Multipurpose Internet Mail Extensions (MIME).

Une étude approfondie est aussi disponible dans les livres suivants (en anglais): Programming Internet Email par David Wood et Managing IMAP par Dianna Mullet & Kevin Mullet.

Avertissement

Des crashs et des problèmes de démarrage de PHP sont possibles lorsque vous chargez cette extension en même temps que l'extension recode. Voyez l'extension recode pour plus d'informations.

Table des matières
imap_8bit -- Convertit une chaîne à 8 bits en une chaîne à guillemets.
imap_alerts -- Retourne toutes les alertes
imap_append -- Ajoute une chaîne dans une boîte aux lettres.
imap_base64 -- Décode un texte encodé en BASE64
imap_binary -- Convertit une chaîne à 8 bits en une chaîne à base64.
imap_body -- Lit le corps d'un message
imap_bodystruct -- Lit la structure d'une section du corps d'un mail
imap_check -- Vérifie le courrier de la boîte aux lettres courante.
imap_clearflag_full -- Supprime un flag sur un message
imap_close -- Termine un flux IMAP
imap_createmailbox -- Crée une nouvelle boîte aux lettres
imap_delete -- Marque le fichier pour l'effacement, dans la boîte aux lettres courante
imap_deletemailbox -- Efface une boîte aux lettres
imap_errors -- Retourne toutes les erreurs
imap_expunge -- Efface tous les messages marqués pour l'effacement.
imap_fetch_overview -- Lit un sommaire des en-têtes de messages
imap_fetchbody -- Retourne une section extraite du corps d'un message
imap_fetchheader -- Retourne l'en-tête d'un message
imap_fetchstructure -- Lit la structure d'un message.
imap_get_quota -- Lit les quotas des boîtes aux lettres
imap_get_quotaroot -- Lit les quotas de chaque utilisateur
imap_getacl -- Retourne le ACL pour la boîte aux lettres
imap_getmailboxes -- Liste les boîtes aux lettres, et retourne le détail pour chacune.
imap_getsubscribed -- Liste toutes les boîtes aux lettres souscrites
imap_header -- Lit l'en-tête d'un message
imap_headerinfo -- Lit l'en-tête du message
imap_headers -- Retourne les en-têtes de tous les messages d'une boîte aux lettres.
imap_last_error -- Retourne la dernière erreur (si elle existe) qui est survenu lors de la dernière requête.
imap_list -- Lit la liste des boîtes aux lettres
imap_listmailbox -- Liste les boîtes aux lettres
imap_listscan -- Lit la liste des boîtes aux lettres, et y recherche une chaîne
imap_listsubscribed -- Liste les boîtes aux lettres souscrites
imap_lsub -- Liste toutes les boîtes aux lettres enregistrées
imap_mail_compose -- Crée un message MIME
imap_mail_copy -- Copie les messages spécifiés dans une boîte aux lettres.
imap_mail_move -- Déplace des messages dans une boîte aux lettres
imap_mail -- Envoie un message mail
imap_mailboxmsginfo -- Lit les informations à propos de la boîte aux lettres courante.
imap_mime_header_decode -- Décode les éléments MIME d'une en-tête
imap_msgno -- Retourne le numéro de séquence de message pour un UID donné.
imap_num_msg -- Retourne le nombre de message dans la boîte aux lettres courante.
imap_num_recent -- Retourne le nombre de messages récents dans la boîte aux lettres courante.
imap_open -- Ouvre un flux IMAP vers une boîte aux lettres
imap_ping -- Vérifie que le flux IMAP est toujours actif
imap_qprint -- Convertit une chaîne à guillemets en une chaîne à 8 bits.
imap_renamemailbox -- Renomme une boîte aux lettres
imap_reopen -- Ouvre un flux IMAP vers une nouvelle boîte aux lettres.
imap_rfc822_parse_adrlist -- Analyse une adresse email
imap_rfc822_parse_headers -- Analyse un en-tête mail
imap_rfc822_write_address -- Retourne une adresse email formatée correctement
imap_scanmailbox -- Lit la liste des boîtes aux lettres, et y recherche une chaîne
imap_search -- Retourne un tableau de message après recherche.
imap_set_quota -- Modifie le quota d'une boîte aux lettres
imap_setacl -- Modifie le ACL de la boîte aux lettres
imap_setflag_full -- Positionne un flag sur un message
imap_sort -- Trie des messages
imap_status -- Retourne les informations de statut sur une boîte aux lettres autres que la boîte courante.
imap_subscribe -- Souscrit à une boîte aux lettres
imap_thread -- Retourne l'arbre de REFERENCE organisé par thread
imap_timeout -- Configure ou retourne le timeout
imap_uid -- Retourne l'UID d'un message.
imap_undelete -- Enlève la marque d'effacement d'un message
imap_unsubscribe -- Termine la souscription à une boîte aux lettres
imap_utf7_decode -- Décode une chaîne modifiée UTF-7.
imap_utf7_encode -- Convertit des données 8bit en texte UTF-7.
imap_utf8 -- Convertit du texte au format MIME en UTF8

Précédent | Sommaire | Suivant
read_exif_data | Niveau supérieur | imap_8bit


imap_8bit

(PHP 3, PHP 4 )

imap_8bit -- Convertit une chaîne à 8 bits en une chaîne à guillemets.

Description

string imap_8bit ( string string)

imap_8bit() convertit la chaîne à 8 bits en une chaîne à guillemets (selon la RFC 2045, Section 6.7).

imap_8bit() retourne une chaîne à guillemets.

Voir aussi imap_qprint().

Précédent | Sommaire | Suivant
IMAP | Niveau supérieur | imap_alerts


imap_alerts

(PHP 3>= 3.0.12, PHP 4 )

imap_alerts -- Retourne toutes les alertes

Description

array imap_alerts ( void )

imap_alerts() retourne tous les messages d'alerte IMAP générés depuis le dernier appel à imap_alerts() ou depuis le début de la page. Lorsque imap_alerts() est appelé, la pile d'alertes est vidée.

Précédent | Sommaire | Suivant
imap_8bit | Niveau supérieur | imap_append


imap_append

(PHP 3, PHP 4 )

imap_append -- Ajoute une chaîne dans une boîte aux lettres.

Description

bool imap_append ( resource imap_stream, string mbox, string message [, string options])

imap_append() ajoute un message dans la boîte aux lettres mbox. Si l'option flags est utilisée, flags sera aussi écrit dans la boîte aux lettres.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Lors des échanges avec le serveur Cyrus IMAP, vous devrez utiliser "\r\n" comme terminaison de ligne, à la place de "\n" ou l'opération échouera.

Exemple 1. Exemple avec imap_append()

<?php
$stream = imap_open("{votre.hote.imap}INBOX.Drafts","username", "password");
$check = imap_check($stream);
print "Nombre de message avant ajout : ". $check->Nmsgs."\n";
imap_append($stream,"{votre.hote.imap}INBOX.Drafts"
                  ,"From: moi@mon.hote\r\n"
                  ."To: toi@ton.hote\r\n"
                  ."Subject: test\r\n"
                  ."\r\n"
                  ."Ceci est un message de test. Ignorez le\r\n"
                  );
$check = imap_check($stream);
print "Nombre de messages apr&egrave;s ajout : ". $check->Nmsgs."\n";
imap_close($stream);
?>

Précédent | Sommaire | Suivant
imap_alerts | Niveau supérieur | imap_base64


imap_base64

(PHP 3, PHP 4 )

imap_base64 -- Décode un texte encodé en BASE64

Description

string imap_base64 ( string text)

imap_base64() décode un texte encodé en BASE64. Le texte décodé est retourné sous la forme d'une chaîne (selon la RFC 2045, Section 6.8).

Voir aussi imap_binary(),
base64_encode() et
base64_decode().

Précédent | Sommaire | Suivant
imap_append | Niveau supérieur | imap_binary


imap_binary

(PHP 3>= 3.0.2, PHP 4 )

imap_binary -- Convertit une chaîne à 8 bits en une chaîne à base64.

Description

string imap_binary ( string string)

imap_binary() convertit la chaîne à 8 bits string en une chaîne à base64 (selon la RFC 2045, Section 6.8).

imap_binary() retourne la chaîne codée.

Voir aussi imap_base64().

Précédent | Sommaire | Suivant
imap_base64 | Niveau supérieur | imap_body


imap_body

(PHP 3, PHP 4 )

imap_body -- Lit le corps d'un message

Description

string imap_body ( resource imap_stream, int msg_number [, int options])

imap_body() retourne le corps du message numéro msg_number de la boîte aux lettres courante. L'option flags est un masque qui peut contenir les valeurs suivantes :

  • FT_UID - msgno est un UID

  • FT_PEEK - Ne pas lever le drapeaux \Seen (Message lu) s'il n'est pas déjà levé.

  • FT_INTERNAL - La chaîne renvoyée est au format interne, et ne va pas canoniser les CRLF.

imap_body() va retourner une copie brute du corps du message. Pour extraire les sous parties MIME du message, utilisez imap_fetchstructure() pour analyser la structure, et imap_fetchbody() pour extraire une copie d'une des sous-partie.

Précédent | Sommaire | Suivant
imap_binary | Niveau supérieur | imap_bodystruct


imap_bodystruct

(PHP 3>= 3.0.4, PHP 4 )

imap_bodystruct -- Lit la structure d'une section du corps d'un mail

Description

object imap_bodystruct ( resource stream_id, int msg_no, int section)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imap_body | Niveau supérieur | imap_check


imap_check

(PHP 3, PHP 4 )

imap_check -- Vérifie le courrier de la boîte aux lettres courante.

Description

object imap_check ( resource imap_stream)

imap_check() retourne les informations à propos de la boîte aux lettres courante. imap_check() retourne FALSE en cas d'échec.

imap_check() vérifie le statut de la boîte aux lettres courante, sur le serveur imap_stream, et retourne les informations dans un objet avec les membres suivants :

  • Date - Date de dernière modification du contenu de la boîte aux lettres

  • Driver - protocole utilisé pour accéder à la boîte aux lettres: POP3, IMAP, NNTP.

  • Mailbox - nom de la boîte aux lettres

  • Nmsgs - nombre de messages de la boîte aux lettres

  • Recent - nombre de messages récents de la boîte aux lettres

Précédent | Sommaire | Suivant
imap_bodystruct | Niveau supérieur | imap_clearflag_full


imap_clearflag_full

(PHP 3>= 3.0.3, PHP 4 )

imap_clearflag_full -- Supprime un flag sur un message

Description

bool imap_clearflag_full ( resource stream, string sequence, string flag, string options)

imap_clearflag_full() efface le flag flag dans les messages de la séquence sequence, du flux imap stream. Les flags flag que vous pouvez effacer sont "\\Seen", "\\Answered", "\\Flagged", "\\Deleted" et "\\Draft" (tels que définis dans la RFC2060).

Les options sont un masque de bit, qui accepte les valeurs suivantes :

Tableau 1. Options IMAP

Constante | Signification
ST_UID | la séquence contient des UIDs au lieu de numéro de séquence.

Précédent | Sommaire | Suivant
imap_check | Niveau supérieur | imap_close


imap_close

(PHP 3, PHP 4 )

imap_close -- Termine un flux IMAP

Description

bool imap_close ( resource imap_stream [, int flag])

imap_close() termine un flux IMAP. imap_close() prend un argument optionnel flag, CL_EXPUNGE, qui va retirer automatiquement de la liste la boîte aux lettres.

Précédent | Sommaire | Suivant
imap_clearflag_full | Niveau supérieur | imap_createmailbox


imap_createmailbox

(PHP 3, PHP 4 )

imap_createmailbox -- Crée une nouvelle boîte aux lettres

Description

bool imap_createmailbox ( resource imap_stream, string mbox)

imap_createmailbox() crée une nouvelle boîte aux lettres nommée mbox. Les noms contenant des caractères spéciaux doivent être encodés.

imap_createmailbox() retourne TRUE en cas de succès, et FALSE en cas d'erreur.

Exemple 1. Exemple avec imap_createmailbox()

<?php
$mbox = imap_open("{your.imap.host}","utilisateur","mot_de_passe",OP_HALFOPEN)
    or die("connexion impossible: ".imap_last_error());
$name1 = "nouvellephpbox";
$name2 = imap_utf7_encode("nouvellephpbox&eacute;x");
$newname = $name1;
echo "Le nouveau nom sera '$name1'<br />\n";
// Nous allons cr&eacute;er maintenant une nouvelle bo&icirc;te aux lettres "phptestbox"
// dans votre dossier inbox, v&eacute;rifier son &eacute;tat et finalement, la supprimer
// pour remettre votre inbox dans son &eacute;tat initial.
if (@imap_createmailbox($mbox,imap_utf7_encode("{your.imap.host}INBOX.$newname"))){
 $status = @imap_status($mbox,"{your.imap.host}INBOX.$newname",SA_ALL);
 if ($status) {
   echo "Votre nouvelle bo&icirc;te '$name1' est dans l'&eacute;tat suivant :<br />\n";
   echo "Messages : "            . $status->messages . "<br />\n";
   echo "R&eacute;cent : "       . $status->recent . "<br />\n";
   echo "Non lus : "             . $status->unseen . "<br />\n";
   echo "UID suivant : "         . $status->uidnext . "<br />\n";
   echo "UID validit&eacute; : " . $status->uidvalidity . "<br />\n";

   if(imap_renamemailbox($mbox,"{your.imap.host}INBOX.$newname","{your.imap.host}INBOX.$name2")) {
     echo "renommage de la bo&icirc;te aux lettres '$name1' en '$name2'<br />\n";
     $newname=$name2;
   } else {
     echo "imap_renamemailbox sur la nouvelle bo&icirc;te aux lettres a &eacute;chou&eacute; : " . imap_last_error() . "<br />\n";
   }
 } else {
   echo "imap_status sur la nouvelle bo&icirc;te aux lettres a &eacute;chou&eacute; : " . imap_last_error() . "<br />\n";
 }
 if(@imap_deletemailbox($mbox,"{your.imap.host}INBOX.$newname")) {
   echo "new mailbox supprim&eacute;e pour remettre tout en &eacute;tat<br />\n";
 } else {
   echo "imap_deletemailbox ur la nouvelle bo&icirc;te aux lettres a &eacute;chou&eacute; : " . implode("<br />\n", imap_errors()) . "<br />\n";
 }
} else {
 print  "Impossible de cr&eacute;er une nouvelle bo&icirc;te aux lettres :  " . implode("<br />\n", imap_errors()) . "<br />\n";
}
imap_close($mbox);
?>

Voir aussi imap_renamemailbox(), imap_deletemailbox() et imap_open() pour connaître le format des noms de mbox.

Précédent | Sommaire | Suivant
imap_close | Niveau supérieur | imap_delete


imap_delete

(PHP 3, PHP 4 )

imap_delete -- Marque le fichier pour l'effacement, dans la boîte aux lettres courante

Description

bool imap_delete ( int imap_stream, int msg_number [, int options])

imap_delete() marque le fichier msg_number pour l'effacement, dans la boîte aux lettres courante. Le paramètre optionnel flags ne prend qu'une seule valeur, ft_uid, qui indique à PHP qu'il faut traiter msg_number comme un uid. L'effacement réel n'interviendra que lors de l'appel de la fonction imap_expunge().

imap_delete() retourne TRUE.

Exemple 1. Exemple avec imap_delete()

<?php
$mbox = imap_open ("{your.imap.host}INBOX", "utilisateur", "mot_de_passe")
   or die ("connexion impossible: " . imap_last_error());
$check = imap_mailboxmsginfo ($mbox);
print "Nombre de messages avant effacement  : " . $check->Nmsgs . "<BR>\n" ;
imap_delete ($mbox, 1);
$check = imap_mailboxmsginfo ($mbox);
print "Nombre de messages apr&egrave;s effacement: " . $check->Nmsgs . "<BR>\n" ;
imap_expunge ($mbox);
$check = imap_mailboxmsginfo ($mbox);
print "Nombre de messages apr&egrave;s imap_expunge: " . $check->Nmsgs . "<BR>\n" ;
imap_close ($mbox);
?>

Précédent | Sommaire | Suivant
imap_createmailbox | Niveau supérieur | imap_deletemailbox


imap_deletemailbox

(PHP 3, PHP 4 )

imap_deletemailbox -- Efface une boîte aux lettres

Description

bool imap_deletemailbox ( resource imap_stream, string mbox)

imap_deletemailbox() efface la boîte aux lettres (voir imap_open() pour connaître le format des noms de mbox).

imap_deletemailbox() retourne TRUE en cas de succès, et FALSE en cas d'erreur.

Voir aussi
imap_createmailbox(),
imap_renamemailbox() et
imap_open() pour le format du paramètre
mbox.

Précédent | Sommaire | Suivant
imap_delete | Niveau supérieur | imap_errors


imap_errors

(PHP 3>= 3.0.12, PHP 4 )

imap_errors -- Retourne toutes les erreurs

Description

array imap_errors ( void )

imap_errors() retourne tous les messages d'erreurs IMAP générés depuis le dernier appel à imap_errors(), ou depuis le début de la page. Lorsque imap_errors() est appelés, la pile d'erreur est vidée.

Précédent | Sommaire | Suivant
imap_deletemailbox | Niveau supérieur | imap_expunge


imap_expunge

(PHP 3, PHP 4 )

imap_expunge -- Efface tous les messages marqués pour l'effacement.

Description

bool imap_expunge ( resource imap_stream)

imap_expunge() efface tous les messages marqués pour l'effacement par imap_delete().

imap_expunge() retourne TRUE.

Précédent | Sommaire | Suivant
imap_errors | Niveau supérieur | imap_fetch_overview


imap_fetch_overview

(PHP 3>= 3.0.4, PHP 4 )

imap_fetch_overview -- Lit un sommaire des en-têtes de messages

Description

array imap_fetch_overview ( resource imap_stream, string sequence [, int options])

imap_fetch_overview() lit les en-têtes des courriers électroniques de la séquence sequence et retourne un sommaire de leur contenu. sequence va contenir une séquence d'indice de message ou d'UIDs, si flags cotient FT_UID. La valeur retournée est un tableau d'objets, un par message d'en-tête décrit :

  • subject - Le sujet du message

  • from - Expéditeur

  • date - Date d'expédition

  • message_id - Identification du message

  • references - est une référence sur l'id de ce message

  • size - taille en octets

  • uid - UID du message dans la boîte aux lettres

  • msgno - numéro de séquence du message dans la boîte

  • recent - Ce message est récent

  • flagged - Ce message est marqué

  • answered - Ce message a donné lieu à une réponse

  • deleted - Ce message est marqué pour l'effacement

  • seen - Ce message est déjà lu

  • draft - Ce message est un brouillon

Exemple 1. Exemple avec imap_fetch_overview()

<?php
$mbox = imap_open("{your.imap.host:143}","username","password")
    or die("connexion impossible : ".imap_last_error());

$overview = imap_fetch_overview($mbox,"2,4:6",0);

if(is_array($overview)) {
        reset($overview);
        while( list($key,$val) = each($overview)) {
                print     $val->msgno
                . " - " . $val->date
                . " - " . $val->subject
                . "\n";
        }
}

imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_expunge | Niveau supérieur | imap_fetchbody


imap_fetchbody

(PHP 3, PHP 4 )

imap_fetchbody -- Retourne une section extraite du corps d'un message

Description

string imap_fetchbody ( resource imap_stream, int msg_number, string part_number [, flags options])

imap_fetchbody() va rechercher une section du corps du message, et la retourne sous la forme d'une chaîne. La section est une chaîne d'entiers, séparés par des virgules, qui servent d'index dans le corps du message, comme spécifié dans la norme IMAP4. Le texte n'est alors pas décodé par imap_fetchbody().

L'option imap_fetchbody() est un masque qui peut contenir les valeurs suivantes :

  • FT_UID - msgono est un UID

  • FT_PEEK - Ne pas lever le drapeau \Seen (Message lu) s'il n'est pas déjà levé.

  • FT_INTERNAL - La chaîne renvoyée est au format interne, et ne va pas canoniser les CRLF.

Voir aussi imap_fetchstructure().

Précédent | Sommaire | Suivant
imap_fetch_overview | Niveau supérieur | imap_fetchheader


imap_fetchheader

(PHP 3>= 3.0.3, PHP 4 )

imap_fetchheader -- Retourne l'en-tête d'un message

Description

string imap_fetchheader ( resource imap_stream, int msgno, int options)

imap_fetchheader() retourne l'en-tête brute et complète RFC2822 du message msgno, et le retourne sous la forme d'une chaîne.

Les options sont :

FT_UID L'argument msgno est un UID
FT_INTERNAL la chaîne renvoyée est au format "internal" ,
c'est-à-dire sans canonisation des CRLF
FT_PREFETCHTEXT RFC822.TEXT doit être pré
téléchargé en même temps que l'en-tête.
Cela réduit le RTT sur une connexion IMAP, si
le message complet est souhaité. (e.g. dans une opération
de sauvegarde dans un fichier).

Précédent | Sommaire | Suivant
imap_fetchbody | Niveau supérieur | imap_fetchstructure


imap_fetchstructure

(PHP 3, PHP 4 )

imap_fetchstructure -- Lit la structure d'un message.

Description

object imap_fetchstructure ( resource imap_stream, int msg_number [, int options])

imap_fetchstructure() la structure du message msg_number. imap_fetchstructure() dispose d'une option [flags], qui une seule valeur, ft_uid, pour indiquer que l'argument msg_number est un uid. imap_fetchstructure() retourne un objet avec des propriétés d'enveloppe, de date interne, de taille, de structure de flags et de corps, ainsi qu'un objet pour chaque attachement. La structure est la suivante :

Tableau 1. Objets retournés par imap_fetchstructure()

type | Type primaire de corps
encoding | Codage de transfert du corps
ifsubtype | TRUE s'il y a une chaîne de sous type
subtype | sous typeMIME
ifdescription | TRUE s'il y au ne chaîne de description
description | Chaîne de description du contenu
ifid | TRUE s'il y a une chaîne d'identification
id | Chaîne d'identification
lines | Nombre de lignes
bytes | Nombre d'octets
ifdisposition | TRUE s'il y a une chaîne de disposition
disposition | Chaîne de disposition
ifdparameters | TRUE s'il y a un tableau de paramètres dparameters
dparameters | tableau de disposition
ifparameters | TRUE si le tableau de paramètres existe
parameters | Tableau de paramètres MIME
parts | Tableau d'objet décrivant chaque partie du message

  1. dparameters est un tableau d'objet où chaque objet à un "attribut" et une "valeur".

  2. parameter est un tableau d'objet où chaque objet à un "attribut" et une "valeur".

  3. parts est un tableau d'objets de même structure que l'objet supérieur, mais qui ne contient pas d'autres objets de même sorte.

Tableau 2. Type primaire de corps

0 | text
1 | multipart
2 | message
3 | application
4 | audio
5 | image
6 | vidéo
7 | autre

Tableau 3. Codage de transfert

0 | 7BIT
1 | 8BIT
2 | BINARY
3 | BASE64
4 | QUOTED-PRINTABLE
5 | OTHER

Voir aussi imap_fetchbody().

Précédent | Sommaire | Suivant
imap_fetchheader | Niveau supérieur | imap_get_quota


imap_get_quota

(PHP 4 >= 4.0.5)

imap_get_quota -- Lit les quotas des boîtes aux lettres

Description

array imap_get_quota ( resource imap_stream, string quota_root)

imap_get_quota() retourne un tableau contenant les valeurs de quota et courante de la boîte aux lettres quota_root. Le quota représente la taille maximale de votre boîte aux lettres. La valeur courante est l'espace actuellement utilisé par votre boîte aux lettres. imap_get_quota() retournera FALSE en cas d'échec.

imap_get_quota() ne fonctionne actuellement qu'avec les librairies c-client2000.

imap_stream doit avoir été créé avec la fonction imap_open(). Ce flux est nécessairement ouvert en tant qu'administrateur du serveur, pour que les droits nécessaires lui soit alloué. quota_root doit être de la forme : "user.nom", où "nom" est le nom de la boîte aux lettres que vous souhaitez analyser.

Exemple 1. Exemple avec imap_get_quota()

<?php
$mbox = imap_open("{votre.hote.imap}","mailadmin","mot de passe",OP_HALFOPEN)
     or die("Connexion impossible : ".imap_last_error());
$quota_value = imap_get_quota($mbox, "user.toto");
if(is_array($quota_value)) {
   print "Utilisation actuelle : " . $quota_value['usage'];
   print "Quota : " . $quota_value['limit'];
}
imap_close($mbox);
?>

Depuis PHP 4.3, la fonction reflète plus fidèlement les fonctionnalités édictée par la RFC 2087. Le tableau retourné a changé pour supporter un nombre illimité de ressources retournées (i.e. messages ou sous-dossiers) avec chaque ressource nommée qui est identifiée par une clé. Chaque clé contient alors un autre tableau avec l'utilisation et le quota. L'exemple ci-dessous montre comment l'utiliser.

Pour des raisons de compatibilité, la méthode d'accès originale est toujours disponible, mais il est recommandé de l'abandonner.

Exemple 2. Exemple avec imap_get_quota() pour PHP 4.3

$mbox = imap_open("{your.imap.host}","mailadmin","password",OP_HALFOPEN)
      or die("Impossible de se connecter : ".imap_last_error());

$quota_values = imap_get_quota($mbox, "user.kalowsky");
if(is_array($quota_values)) {
   $storage = $quota_values['STORAGE'];
   print "Utilisation actuelle de la capacit&eacute; de stockage : " .  $storage['usage'];
   print "Quota actuel de stockage : " .  $storage['limit'];

   $message = $quota_values['MESSAGE'];
   print "Niveau d'utilisation de MESSAGE : " .  $message['usage'];
   print "Quota de MESSAGE : " .  $message['limit'];

   /* ...  */
}

imap_close($mbox);

Voir aussi
imap_open(),
imap_set_quota() et
imap_get_quotaroot().

Précédent | Sommaire | Suivant
imap_fetchstructure | Niveau supérieur | imap_get_quotaroot


imap_get_quotaroot

(PHP 4 >= 4.3.0)

imap_get_quotaroot -- Lit les quotas de chaque utilisateur

Description

array imap_get_quotaroot ( resource imap_stream, string quota_root)

imap_get_quotaroot() retourne un tableau d'entiers, contenant les quotas de la boîte à lettres de l'utilisateur. Toutes les valeurs sont représentées par une clé basée sur le nom de la boîte, et par un tableau représentant le niveau d'utilisation et les limites.

La valeur limite représente l'espace maximal alloué à l'utilisateur. Le niveau d'utilisation représente l'occupation actuelle de la boîte. Cette fonction retournera FALSE si une erreur est survenue, et un tableau de données si la réponse du serveur n'a pu être comprise.

Cette fonction est uniquement accessible aux utilisateurs de la librairie c-client2000 ou plus récent.

imap_stream est une ressource de connexion, obtenue grâce à imap_open(). Cette connexion doit être ouverte avec l 'identité de l'utilisateur que l'on étudie. quota_root doit être un nom de boîte aux lettres (i.e. INBOX).

Exemple 1. Exemple avec imap_get_quotaroot()

$mbox = imap_open("{your.imap.host}","kalowsky","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$quota = imap_get_quotaroot($mbox, "INBOX");
if(is_array($quota)) {
   $storage = $quota_values['STORAGE'];
   print "STORAGE usage level is: " .  $storage['usage'];
   print "STORAGE limit level is: " .  $storage['limit'];

   $message = $quota_values['MESSAGE'];
   print "MESSAGE niveau d'utilisation : " .  $message['usage'];
   print "MESSAGE  niveau d'utilisation : " .  $message['limit'];

   /* ...  */

}

imap_close($mbox);

Voir aussi
imap_open(),
imap_set_quota() et
imap_get_quota().

Précédent | Sommaire | Suivant
imap_get_quota | Niveau supérieur | imap_getacl


imap_getacl

(PHP 5 CVS only)

imap_getacl -- Retourne le ACL pour la boîte aux lettres

Description

array imap_getacl ( resource stream_id, string mailbox)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imap_get_quotaroot | Niveau supérieur | imap_getmailboxes


imap_getmailboxes

(PHP 3>= 3.0.12, PHP 4 )

imap_getmailboxes -- Liste les boîtes aux lettres, et retourne le détail pour chacune.

Description

array imap_getmailboxes ( resource imap_stream, string ref, string pattern)

imap_getmailboxes() retourne un tableau d'objets contenant les informations sur les boîtes aux lettres. Chaque objet a les attributs de name, qui contient le nom complet de la boîte aux lettres; delimiter, qui est le délimiteur hiérarchique; et attributes. attributes est un masque de bits, qui contient :

  • LATT_NOINFERIORS - Cette boîte aux lettres n'a pas d'"enfants" (il n'y a plus de boîtes aux lettres en dessous de celle-ci).

  • LATT_NOSELECT - Ceci est juste un container, pas une boîte aux lettres (vous ne pouvez pas l'ouvrir).

  • LATT_MARKED - Cette boîte aux lettres est marquée. Utilisé uniquement avec UW-IMAPD.

  • LATT_UNMARKED - Cette boîte aux lettres n'est pas marquée. Utilisé uniquement avec UW-IMAPD.

ref ne devrait être que le serveur IMAP sous la forme {imap_server:imap_port}, et pattern spécifie la position dans la hiérarchie des boîtes aux lettres, où il faut commencer à charcher. Si vous voulez passer en revue toute la hiérarchier, passez '*' comme pattern.

Il y a deux caractères spéciaux que vous pouvez utiliser dans pattern : '*' et '%'. '*' signifie : toutes les boîtes aux lettres. Si vous passez pattern comme '*', vous obtiendrez la liste complète des boîtes aux lettres de la hiérarchie. '%' signifie qu'on ne s'interesse qu'au niveau courant. '%' passé à pattern ne retournera que les boîtes aux lettres de niveau supérieur; '~/mail/%'.Sous UW_IMAPD retournera toutes les boîtes aux lettres du dossier ~/mail directory, mais pas leurs enfants.

Exemple 1. Exemple avec imap_getmailboxes()

<?php
$mbox = imap_open("{your.imap.host}","utilisateur","mot_de_passe",OP_HALFOPEN)
     or die("connexion impossible : ".imap_last_error());
$list = imap_getmailboxes($mbox,"{votre.hote.imap}","*");
if(is_array($list)) {
  reset($list);
  while (list($key, $val) = each($list)) {
   print "($key) ";
   print imap_utf7_decode($val->name).",";
   print "'".$val->delimiter."',";
   print $val->attributes."<BR>\n";
  }
} else {
  print "imap_getmailboxes a &eacute;chou&eacute; : ".imap_last_error()."\n";
}
imap_close($mbox);
?>

Voir aussi imap_getsubscribed().

Précédent | Sommaire | Suivant
imap_getacl | Niveau supérieur | imap_getsubscribed


imap_getsubscribed

(PHP 3>= 3.0.12, PHP 4 )

imap_getsubscribed -- Liste toutes les boîtes aux lettres souscrites

Description

array imap_getsubscribed ( resource imap_stream, string ref, string pattern)

imap_getsubscribed() est identique à imap_getmailboxes(), mais ne retourne que les boîtes aux lettres auxquelles l'utilisateur est inscrit.

Précédent | Sommaire | Suivant
imap_getmailboxes | Niveau supérieur | imap_header


imap_header

(PHP 3, PHP 4 )

imap_header -- Lit l'en-tête d'un message

Description

object imap_header ( resource imap_stream, int msg_number [, int fromlength [, int subjectlength [, string defaulthost]]])

imap_header() est un alias de imap_headerinfo() et lui est identique en tous points.

Précédent | Sommaire | Suivant
imap_getsubscribed | Niveau supérieur | imap_headerinfo


imap_headerinfo

(PHP 3, PHP 4 )

imap_headerinfo -- Lit l'en-tête du message

Description

object imap_headerinfo ( resource imap_stream, int msg_number [, int fromlength [, int subjectlength [, string defaulthost]]])

imap_headerinfo() retourne un objet contenant divers éléments d'en-tête.

remail, date, Date, subject, Subject, in_reply_to, message_id,
newsgroups, followup_to, references
éléments d'en-tête :
Recent - 'R' si récent et lu
'N' si récent et non lu
' ' si non récent
Unseen - 'U' si non lu ET non récent
' ' si lu OU non lu et récent
Answered -'A' si répondu,
' ' si non répondu
Deleted - 'D' si effacé,
' ' si non effacé
Draft - 'X' si brouillon,
' ' si non brouillon
Flagged - 'F' si marqué,
' ' si non marqué
Notez bien que le comportement récent/non lu est un peu particulier :
si vous voulez savor si un message est non lu, vous devez le vérifier
avec
Unseen == 'U' || Recent == 'N'
toaddress (toute la ligne d'en-tête To: jusqu'à 1024 caractères)
to[] (retourne un objet avec tout l'en-tête To, contenant):
personal
adl
mailbox
host
fromaddress (toute la ligne d'en-tête from: jusqu'à 1024 caractères)
from[] (retourne un objet avec tout l'en-tête From, contenant):
personal
adl
mailbox
host
ccaddress (toute la ligne d'en-tête CC: jusqu'à 1024 caractères)
cc[] (retourne un objet avec tout l'en-tête CC, contenant):
personal
adl
mailbox
host
bccaddress (toute la ligne d'en-tête BCC: jusqu'à 1024 caractères)
bcc[] (retourne un objet avec tout l'en-tête BCC, contenant):
personal
adl
mailbox
host
reply_toaddress (oute la ligne d'en-tête Reply_to: jusqu'à 1024 caractères)
reply_to[] (retourne un objet avec tout l'en-tête Reply_to, contenant)
personal
adl
mailbox
host
senderaddress (toute la ligne d'en-tête Sender: jusqu'à 1024 caractères)
sender[] (retourne un objet avec tout l'en-tête Sender, contenant)
personal
adl
mailbox
host
return_path (toute la ligne d'en-tête Return-path: jusqu'à 1024 caractères)
return_path[] (retourne un objet avec tout l'en-tête Return-path, contenant)
personal
adl
mailbox
host
udate (Date du mail, au format UNIX)
fetchfrom (Ligne d'en-tête from formatée pour tenir dans fromlength
caractères)
fetchsubject (Ligne d'en-tête subject formatée pour tenir dans subjectlength caractères)

Précédent | Sommaire | Suivant
imap_header | Niveau supérieur | imap_headers


imap_headers

(PHP 3, PHP 4 )

imap_headers -- Retourne les en-têtes de tous les messages d'une boîte aux lettres.

Description

array imap_headers ( resource imap_stream)

imap_headers() retourne un tableau de chaîne contenant les en-tête des messages. Une chaîne par message.

Précédent | Sommaire | Suivant
imap_headerinfo | Niveau supérieur | imap_last_error


imap_last_error

(PHP 3>= 3.0.12, PHP 4 )

imap_last_error -- Retourne la dernière erreur (si elle existe) qui est survenu lors de la dernière requête.

Description

string imap_last_error ( void )

imap_last_error() retourne le texte complet de la dernière erreur IMAP (si elle existe) qui est survenu lors de la dernière requête. La pile d'erreur n'est pas touchée. Appeler imap_last_error() successivement dans nouvelles erreurs retournera la même erreur.

Précédent | Sommaire | Suivant
imap_headers | Niveau supérieur | imap_list


imap_list

(PHP 3>= 3.0.4, PHP 4 )

imap_list -- Lit la liste des boîtes aux lettres

Description

array imap_list ( resource imap_stream, string ref, string pattern)

imap_list() retourne un tableau contenant la liste des noms des boîtes aux lettres. Voyez imap_getmailboxes() pour une description des paramètres ref et pattern.

Exemple 1. Exemple avec imap_list()

<?php
$mbox = imap_open("{your.imap.host}","username","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$list = imap_list($mbox,"{your.imap.host}","*");
if(is_array($list)) {
  reset($list);
  while (list($key, $val) = each($list))
    print imap_utf7_decode($val)."<br>\n";
} else
  print "imap_list a &eacute;chou&eacute; : ".imap_last_error()."\n";

imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_last_error | Niveau supérieur | imap_listmailbox


imap_listmailbox

(PHP 3, PHP 4 )

imap_listmailbox -- Liste les boîtes aux lettres

Description

array imap_listmailbox ( resource imap_stream, string ref, string pattern)

imap_listmailbox() est un alias de imap_list().

Précédent | Sommaire | Suivant
imap_list | Niveau supérieur | imap_listscan


imap_listscan

(no version information, might be only in CVS)

imap_listscan -- Lit la liste des boîtes aux lettres, et y recherche une chaîne

Description

array imap_listscan ( resource imap_stream, string ref, string pattern, string content)

imap_listscan() retourne un tableau contenant les noms des boîtes aux lettres qui contiennent la chaîne content dans leurs messages. Cette fonction est similaire à imap_listmailbox(), mais va aussi vérifiéer la présence de la chaîne content dans les messages de la boîte aux lettres. Voyez aussi imap_getmailboxes() pour une description des paramètres ref et pattern.

Précédent | Sommaire | Suivant
imap_listmailbox | Niveau supérieur | imap_listsubscribed


imap_listsubscribed

(PHP 3, PHP 4 )

imap_listsubscribed -- Liste les boîtes aux lettres souscrites

Description

array imap_listsubscribed ( resource imap_stream, string ref, string pattern)

imap_listsubscribed() retourne un tableau avec toutes les boîtes aux lettres auxquelles vous avez souscrit. Les arguments ref et pattern indiquent respectivement, le dossier où chercher et le nom des boîtes recherchées, sous la forme d'un masque.

Précédent | Sommaire | Suivant
imap_listscan | Niveau supérieur | imap_lsub


imap_lsub

(PHP 3>= 3.0.4, PHP 4 )

imap_lsub -- Liste toutes les boîtes aux lettres enregistrées

Description

array imap_lsub ( resource imap_stream, string ref, string pattern)

imap_lsub retourne un tableau contenant toutes les boîtes aux lettres que vous avez enregistré. C'est presque le même résultat que imap_listmailbox(), mais cette fonction ne va retourner que des boîtes aux lettres que l'utilisateur avec lequelqe vous vous êtes connecté sur le serveur imap a enregistré.

Précédent | Sommaire | Suivant
imap_listsubscribed | Niveau supérieur | imap_mail_compose


imap_mail_compose

(PHP 3>= 3.0.5, PHP 4 )

imap_mail_compose -- Crée un message MIME

Description

string imap_mail_compose ( array envelope, array body)

Exemple 1. Exemple avec imap_mail_compose()

<?php
    $envelope["from"]="musone@afterfive.com";
    $envelope["to"]="musone@darkstar.com";
    $envelope["cc"]="musone@edgeglobal.com";
    $part1["type"]=TYPEMULTIPART;
    $part1["subtype"]="mixed";
    $filename="/tmp/imap.c.gz";
    $fp=fopen($filename,"r");
    $contents=fread($fp,filesize($filename));
    fclose($fp);
    $part2["type"]=TYPEAPPLICATION;
    $part2["encoding"]=ENCBINARY;
    $part2["subtype"]="octet-stream";
    $part2["description"]=basename($filename);
    $part2["contents.data"]=$contents;
    $part3["type"]=TYPETEXT;
    $part3["subtype"]="plain";
    $part3["description"]="description3";
    $part3["contents.data"]="contents.data3\n\n\n\t";
    $body[1]=$part1;
    $body[2]=$part2;
    $body[3]=$part3;
    echo nl2br(imap_mail_compose($envelope,$body));
?>

Précédent | Sommaire | Suivant
imap_lsub | Niveau supérieur | imap_mail_copy


imap_mail_copy

(PHP 3, PHP 4 )

imap_mail_copy -- Copie les messages spécifiés dans une boîte aux lettres.

Description

bool imap_mail_copy ( resource imap_stream, string msglist, string mbox [, int options])

imap_mail_copy() copie les messages email spécifiés par msglist dans la boîte aux lettres nommée mbox. msglist est un intervalle, et pas seulement une liste numéros de message (comme décrit dans la RFC2060).

imap_mail_copy() retourne TRUE en cas de succès et FALSE en cas d'erreur.

flags est un masque, qui peut contenir une ou plusieurs des valeurs suivantes :

  • CP_UID - la séquence de nombre contient des UIDS

  • CP_MOVE - Efface les messages après copie.

Précédent | Sommaire | Suivant
imap_mail_compose | Niveau supérieur | imap_mail_move


imap_mail_move

(PHP 3, PHP 4 )

imap_mail_move -- Déplace des messages dans une boîte aux lettres

Description

bool imap_mail_move ( resource imap_stream, string msglist, string mbox [, int options])

imap_mail_move() déplace les messages spécifiés par msglist dans la boîte aux lettres mbox. msglist est un intervalle, et pas seulement une liste de messages (comme décrit dans la RFC2060).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

flags est un champ de bit et peut contenir une seule valeur :

  • CP_UID - La séquence de nombres contient UIDS

Précédent | Sommaire | Suivant
imap_mail_copy | Niveau supérieur | imap_mail


imap_mail

(PHP 3>= 3.0.14, PHP 4 )

imap_mail -- Envoie un message mail

Description

string imap_mail ( string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])

imap_mail() est uniquement disponible sous PHP 3.

Précédent | Sommaire | Suivant
imap_mail_move | Niveau supérieur | imap_mailboxmsginfo


imap_mailboxmsginfo

(PHP 3>= 3.0.2, PHP 4 )

imap_mailboxmsginfo -- Lit les informations à propos de la boîte aux lettres courante.

Description

object imap_mailboxmsginfo ( resource imap_stream)

imap_mailboxmsginfo() retourne les informations à propos de la boîte aux lettres courante. imap_mailboxmsginfo() retourne FALSE en cas d'échec.

imap_mailboxmsginfo() vérifie le statut courant de la boîte aux lettres sur le serveur, et retourne un objet avec les propriétés suivantes :

Tableau 1. Propriétés de boîte aux lettres

Date | Date de dernière modification du contenu de la boîte aux lettres
Driver | Pilote
Mailbox | Nom de la boîte aux lettres
Nmsgs | Nombre de messages
Recent | Nombre de messages récents
Unread | Nombre de messages non lus
Deleted | Nombre de messages effacés
Size | Taille de la boîte aux lettres

Exemple 1. Exemple avec imap_mailboxmsginfo()

<?php
$mbox = imap_open("{your.imap.host}INBOX","utilisateur", "mot_de_passe")
     or die("conexion impossible: ".imap_last_error());
$check = imap_mailboxmsginfo($mbox);
if($check) {
   print "Date: "    . $check->Date    ."<BR>\n" ;
   print "Pilote: "  . $check->Driver  ."<BR>\n" ;
   print "Mailbox: " . $check->Mailbox ."<BR>\n" ;
   print "Messages: ". $check->Nmsgs   ."<BR>\n" ;
   print "R&eacute;cent: "  . $check->Recent  ."<BR>\n" ;
   print "Non lus: "  . $check->Unread  ."<BR>\n" ;
   print "Effac&eacute;s: " . $check->Deleted ."<BR>\n" ;
   print "Taille: "    . $check->Size    ."<BR>\n" ;
} else {
   print "imap_check() a &eacute;chou&eacute;: ".imap_last_error(). "<BR>\n";
}
imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_mail | Niveau supérieur | imap_mime_header_decode


imap_mime_header_decode

(PHP 3>= 3.0.17, PHP 4 )

imap_mime_header_decode -- Décode les éléments MIME d'une en-tête

Description

array imap_mime_header_decode ( string text)

imap_mime_header_decode() décode un message MIME qui contient des données non ASCII (Voir RFC2047) Les éléments décodés sont retournés dans un tableau d'objets. Chacun de ces objets a deux propriétés : "charset" & "text". Si l'élément n'a pas été encodé, ou, en d'autres termes, sil il est en clair (plain US_ASCII), la propriété "charset" est mise à "default".

Exemple 1. Exemple imap_mime_header_decode()

<?php
$text="=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>";
$elements=imap_mime_header_decode($text);
for($i=0;$i<count($elements);$i++) {
   echo "Charset: {$elements[$i]->charset}\n";
   echo "Texte: {$elements[$i]->text}\n\n";
}
?>

Dans l'exemple ci-dessus, on trouve deux éléments : le premier a été encodé en ISO-8859-1, et le second est en clair.

Précédent | Sommaire | Suivant
imap_mailboxmsginfo | Niveau supérieur | imap_msgno


imap_msgno

(PHP 3>= 3.0.3, PHP 4 )

imap_msgno -- Retourne le numéro de séquence de message pour un UID donné.

Description

int imap_msgno ( resource imap_stream, int uid)

imap_msgno() retourne le numéro de séquence de message pour l'UID uid. C'est la fonction contraire de imap_uid().

Précédent | Sommaire | Suivant
imap_mime_header_decode | Niveau supérieur | imap_num_msg


imap_num_msg

(PHP 3, PHP 4 )

imap_num_msg -- Retourne le nombre de message dans la boîte aux lettres courante.

Description

int imap_num_msg ( resource imap_stream)

imap_num_msg() retourne le nombre de message dans la boîte aux lettres courante.

Voir aussi imap_num_recent() et imap_status().

Précédent | Sommaire | Suivant
imap_msgno | Niveau supérieur | imap_num_recent


imap_num_recent

(PHP 3, PHP 4 )

imap_num_recent -- Retourne le nombre de messages récents dans la boîte aux lettres courante.

Description

int imap_num_recent ( resource imap_stream)

imap_num_recent() retourne le nombre de message récents dans la boîte aux lettres courante.

Voir aussi imap_num_msg() et imap_status().

Précédent | Sommaire | Suivant
imap_num_msg | Niveau supérieur | imap_open


imap_open

(PHP 3, PHP 4 )

imap_open -- Ouvre un flux IMAP vers une boîte aux lettres

Description

resource imap_open ( string mailbox, string username, string password [, int options])

imap_open() retourne un flux IMAP en cas de succès, et FALSE en cas d'erreur. imap_open() peut aussi être utilisée pour ouvrir des flots sur des serveurs POP3 et NNTP.

Un nom de boîte aux lettres est constitué d'une adresse de serveur, et d'une adresse de boîte sur ce serveur. Le mot réservé INBOX représente la boîte aux lettres de l'utilisateur courant. L'adresse du serveur, mise entre accolades '{' et '}', est constitué du nom du serveur ou de son adresse IP, d'une spécification de protocole (commençant par '/') et d'un port optionnel (spécifié avec ':'). Cette partie est obligatoire dans les paramètres de la boîte aux lettres. Les noms de boîtes aux lettres qui contiennent des caractères spéciaux (en dehors de l'espace ASCII) doivent être encodés avec imap_utf7_encode().

Les options sont un masque de bit, qui peut prendre une ou plusieurs des valeurs suivantes :

  • OP_READONLY - Ouvre une boîte aux lettres en lecture seule

  • OP_ANONYMOUS - Ne pas utiliser, ou modifier le fichier .newsrc pour les news.

  • OP_HALFOPEN - Pour les noms IMAP et NNTP, ouvre une connexion mais n'ouvre pas une boîte aux lettres.

  • CL_EXPUNGE - Supprime automatiquement la boîte aux lettres de la liste, lors de la terminaison du flux.

Pour se connecter à un serveur IMAP, on peut utiliser la commande suivante :

Exemple 1. Connexion à un serveur IMAP avec imap_open()

<?php
$mbox  = imap_open("{localhost:143}INBOX","user_id","password");
?>
Pour se connecter à un serveur POP3 qui fonctionne sur le port 110 de la machine locale on peut utiliser la commande suivante :

Exemple 2. Connexion à un serveur POP3 avec imap_open()

<?php
$mbox = imap_open("{localhost:110/pop3}INBOX","user_id","password");
?>
Pour se connecter à un serveur IMAP SSL ou POP3 SSL, ajoutez /ssl après le protocole :

Exemple 3. Connexion à un serveur IMAP SSL ou POP3 SSL avec imap_open()

<?php
$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");
?>
Pour se connecter à un serveur SSL IMAP ou POP3 avec un certificat ajoutez /ssl/novalidate-cert après le protocole :

Exemple 4. Connexion à un serveur IMAP SSL ou POP3 SSL avec imap_open() et un certificat

<?php
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");
?>
Pour se connecter à un serveur NNTP qui fonctionne sur le port 119 de la machine locale on peut utiliser la commande:

Exemple 5. Connexion à un serveur NNTP avec imap_open()

<?php
$nntp = imap_open("{localhost:119/nntp}comp.test","","");
?>
Pour se connecter à un serveur distant, remplacez "localhost" par le nom ou l'adresse IP de la machine.

Exemple 6. Exemple avec imap_open()

<?php
$mbox = imap_open ("{votre.hote.imap:143}", "nom_utilisateur", "mot de passe");
echo "<p><h1>Mailboxes</h1>\n";
$folders = imap_listmailbox ($mbox, "{votre.hote.imap:143}", "*");
if ($folders == &false;) {
   echo "Appel &eacute;chou&eacute;<BR>\n";
} else {
   while (list ($key, $val) = each ($folders)) {
       echo $val."<BR>\n";
   }
}
echo "<p><h1>en-t&ecirc;tes dans INBOX</h1>\n";
$headers = imap_headers ($mbox);
if ($headers == &false;) {
   echo "Appel &eacute;chou&eacute;<BR>\n";
} else {
   while (list ($key,$val) = each ($headers)) {
       echo $val."<BR>\n";
   }
}
imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_num_recent | Niveau supérieur | imap_ping


imap_ping

(PHP 3, PHP 4 )

imap_ping -- Vérifie que le flux IMAP est toujours actif

Description

bool imap_ping ( resource imap_stream)

imap_ping() retourne TRUE si le flux imap_stream existe toujours, et FALSE sinon.

imap_ping() vérifie que le flux IMAP est toujours actif, en lui envoyant un ping. Cette fonction permet de se rendre compte que du mail est arrivé : c'est même la méthode préconisée pour des tests périodiques de vérification du courrier. Cette fonction peut aussi servir à garder une connexion ouverte, avec les serveurs dotés d'un délai d'expiration.

Précédent | Sommaire | Suivant
imap_open | Niveau supérieur | imap_qprint


imap_qprint

(PHP 3, PHP 4 )

imap_qprint -- Convertit une chaîne à guillemets en une chaîne à 8 bits.

Description

string imap_qprint ( string string)

imap_qprint() convertit la chaîne à guillemets string en une chaîne à 8 bits (selon la RFC2045, section 6.7).

imap_qprint() retourne une chaîne 8 bits (binaire).

Voir aussi imap_8bit().

Précédent | Sommaire | Suivant
imap_ping | Niveau supérieur | imap_renamemailbox


imap_renamemailbox

(PHP 3, PHP 4 )

imap_renamemailbox -- Renomme une boîte aux lettres

Description

bool imap_renamemailbox ( resource imap_stream, string old_mbox, string new_mbox)

imap_renamemailbox() renomme la boîte aux lettres old_mbox en new_mbox.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
imap_createmailbox(),
imap_deletemailbox() et
imap_open() pour le format de mbox.

Précédent | Sommaire | Suivant
imap_qprint | Niveau supérieur | imap_reopen


imap_reopen

(PHP 3, PHP 4 )

imap_reopen -- Ouvre un flux IMAP vers une nouvelle boîte aux lettres.

Description

bool imap_reopen ( resource imap_stream, string mailbox [, string options])

imap_reopen() réouvre la connexion spécifiée au serveur IMAP ou NNTP, avec une nouvelle boîtes aux lettres.

Les options sont des masques de bit, qui peuvent contenir les valeurs suivantes :

  • OP_READONLY - Ouvre une boîte aux lettres en lecture seule

  • OP_ANONYMOUS - Ne pas utiliser, ou modifier le fichier .newsrc pour les news

  • OP_HALFOPEN - Pour les noms IMAP et NNTP, ouvre une connexion mais n'ouvre pas une boîte aux lettres.

  • CL_EXPUNGE - Supprime automatiquement la boîte aux lettres de la liste, lors de la terminaison du flux. (voir imap_delete() et imap_expunge()).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
imap_renamemailbox | Niveau supérieur | imap_rfc822_parse_adrlist


imap_rfc822_parse_adrlist

(PHP 3>= 3.0.2, PHP 4 )

imap_rfc822_parse_adrlist -- Analyse une adresse email

Description

array imap_rfc822_parse_adrlist ( string address, string default_host)

imap_rfc822_parse_adrlist analyse la chaîne address, tel que définie dans la RFC2822 et essaie, pour chaque adresse, de retourner un tableau d'objets. Les 4 membres de ces objets sont :

  • mailbox - Le nom de la boîte aux lettres

  • host - le nom de l'hôte

  • personal - Le nom personnel

  • adl - at domain source route (NDT : ???).

Exemple 1. Exemple avec imap_rfc822_parse_adrlist()

<?php
  $address_string = "Hartmut Holzgraefe <hartmut@cvs.php.net>, postmaster@somedomain.net, root";
  $address_array  = imap_rfc822_parse_adrlist($address_string,"somedomain.net");
  if(! is_array($address_array)) die("Erreur!\n");

  reset($address_array);
  while(list($key,$val)=each($address_array)){
    print "bo&icirc;te    : ".$val->mailbox."<br>\n";
    print "h&ocirc;te     : ".$val->host."<br>\n";
    print "nom      : ".$val->personal."<br>\n";
    print "adl      : ".$val->adl."<p>\n";
  }
?>

Précédent | Sommaire | Suivant
imap_reopen | Niveau supérieur | imap_rfc822_parse_headers


imap_rfc822_parse_headers

(PHP 4 )

imap_rfc822_parse_headers -- Analyse un en-tête mail

Description

object imap_rfc822_parse_headers ( string headers [, string defaulthost])

imap_rfc822_parse_headers() analyse la chaîne headers, et retourne un objet contenant differents éléments, similaires à la fonction imap_header(), hormis les flags, et autres éléments liés au serveur IMAP.

Précédent | Sommaire | Suivant
imap_rfc822_parse_adrlist | Niveau supérieur | imap_rfc822_write_address


imap_rfc822_write_address

(PHP 3>= 3.0.2, PHP 4 )

imap_rfc822_write_address -- Retourne une adresse email formatée correctement

Description

string imap_rfc822_write_address ( string mailbox, string host, string personal)

mailbox retourne une adresse email formatée correctement selon la RFC2822, à partir du nom de la boîte aux lettres de l'hôte host, et des informations personnelles personal.

Exemple 1. Exemple avec imap_rfc822_write_address()

<?php
  print imap_rfc822_write_address("hartmut","cvs.php.net","Hartmut Holzgraefe")."\n";
?>

Précédent | Sommaire | Suivant
imap_rfc822_parse_headers | Niveau supérieur | imap_scanmailbox


imap_scanmailbox

(PHP 3, PHP 4 )

imap_scanmailbox -- Lit la liste des boîtes aux lettres, et y recherche une chaîne

Description

array imap_scanmailbox ( resource imap_stream, string ref, string pattern, string content)

imap_scanmailbox() est un alias de imap_listscan().

Précédent | Sommaire | Suivant
imap_rfc822_write_address | Niveau supérieur | imap_search


imap_search

(PHP 3>= 3.0.12, PHP 4 )

imap_search -- Retourne un tableau de message après recherche.

Description

array imap_search ( resource imap_stream, string criteria, int options)

imap_search() effectue une recherche dans la boîte aux lettres courante, sur le flux IMAP courant. criteria est une chaîne, délimitée par des espaces, dans laquelle les mots-clés suivants sont acceptés. Tous les arguments multi-mots doivent être entre guillemets :

  • ALL - retourne tous les message qui vérifie le reste du critère.

  • ANSWERED - tous les messages avec le flag \\ANSWERED

  • BCC "string" - tous les messages avec la chaîne "string" dans le champ Bcc :

  • BEFORE "date" - tous les messages avec Date : avant "date"

  • BODY "string" - tous les messages avec "string" dans le corps

  • CC "string" - tous les messages avec "string" dans le champ Cc :

  • DELETED - tous les messages effacés

  • FLAGGED - tous les messages avec le flag \\FLAGGED (parfois interprété comme Important ou Urgent)

  • FROM "string" - tous les messages avec la chaîne "string" dans le champ From :

  • KEYWORD "string" - tous les messags avec la chaîne "string" comme mot clé

  • NEW - tous les nouveaux messages

  • OLD - tous les anciens messages

  • ON "date" - tous les messages avec la date "date" comme champ Date :

  • RECENT - tous les messages avec le flag \\RECENT

  • SEEN - tous les messages lus (avec le flag\\SEEN flag)

  • SINCE "date" - tous les messages avec la date Date: après "date"

  • SUBJECT "string" - tous les messages avec la chaîne "string" dans le champ Subject :

  • TEXT "string" - tous les messages avec le texte "string"

  • TO "string" - tous les messages avec la chaîne "string" dans le champ To :

  • UNANSWERED - tous les messages non répondus

  • UNDELETED - tous les messages non effacés

  • UNFLAGGED - tous les messages non flaggés

  • UNKEYWORD "string" - tous les messages dans le mot clés "string"

  • UNSEEN - tous les messages non lus

Par exemple, pour rechercher les messages non répondus, envoyés par maman, vous pouvez utiliser : "UNANSWERED FROM maman". Les recherches semblent insensibles à la casse. Cette liste de critères est issue du code d'un client C UW et peut être incomplète ou inprécise. (voir aussi RFC2060, section 6.4.4).

Les valeurs pour les flags sont SE_UID, qui fait que le tableau réponse contient les UIDs plutôt que les numéros de séquence.

Précédent | Sommaire | Suivant
imap_scanmailbox | Niveau supérieur | imap_set_quota


imap_set_quota

(PHP 4 >= 4.0.5)

imap_set_quota -- Modifie le quota d'une boîte aux lettres

Description

bool imap_set_quota ( resource imap_stream, string quota_root, int quota_limit)

imap_set_quota() modifie le quota de la boîte aux lettres quota_root, en la fixant à quota_limit. imap_set_quota() requiert que imap_stream ait été ouvert avec un compte d'administrateur, pour avoir les droits nécessaires : elle ne fonctionnera avec aucun autre utilisateur.

imap_get_quota() ne fonctionne actuellement qu'avec les librairies c-client2000.

imap_stream doit avoir été créé avec la fonction imap_open(). Ce flux est nécessairement ouvert en tant qu'administrateur du serveur, pour que les droits nécessaires lui soit alloué. quota_root doit être de la forme : "user.nom", où "nom" est le nom de la boîte aux lettres que vous souhaitez analyser. quota_limit est la nouvelle taille maximum (en ko) de la boîte quota_root.

imap_set_quota() retourne TRUE en cas de succès, et FALSE sinon.

Exemple 1. Exemple avec imap_set_quota()

<?php
$mbox = imap_open ("{your.imap.host:143}", "mailadmin", "password");

if(!imap_set_quota($mbox, "user.kalowsky", 3000)) {
    print "Error in setting quota\n";
    return;
}

imap_close($mbox);
?>

Voir aussi imap_open() et imap_set_quota().

Précédent | Sommaire | Suivant
imap_search | Niveau supérieur | imap_setacl


imap_setacl

(PHP 4 >= 4.1.0)

imap_setacl -- Modifie le ACL de la boîte aux lettres

Description

bool imap_setacl ( resource stream_id, string mailbox, string id, string rights)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imap_set_quota | Niveau supérieur | imap_setflag_full


imap_setflag_full

(PHP 3>= 3.0.3, PHP 4 )

imap_setflag_full -- Positionne un flag sur un message

Description

bool imap_setflag_full ( resource stream, string sequence, string flag, string options)

imap_setflag_full() affecte le flag spécifié aux messages de la sequence donné.

Les flags que vous pouvez modifier sont "\\Seen", "\\Answered", "\\Flagged", "\\Deleted", "\\Draft" et "\\Recent" (comme défini dans la RFC2060).

Les options sont un masque de bits, et peuvent contenir les valeurs suivantes :

Tableau 1. Options IMAP

Constante | Signification
ST_UID | la séquence contient des UIDs au lieu de numéro de séquence.

Exemple 1. Exemple avec imap_setflag_full()

<?php
$mbox = imap_open("{your.imap.host:143}","username","password")
     or die("can't connect: ".imap_last_error());

$status = imap_setflag_full($mbox,"2,5","\\Seen \\Flagged");

print gettype($status)."\n";
print $status."\n";

imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_setacl | Niveau supérieur | imap_sort


imap_sort

(PHP 3>= 3.0.3, PHP 4 )

imap_sort -- Trie des messages

Description

array imap_sort ( resource stream, int criteria, int reverse [, int options [, string search_criteria]])

imap_sort() retourne un tableau de nombre de message, triés suivant les paramètres suivants :

reverse vaut 1 pour signifier : tri inverse.

Les critères peuvent être un (et un seul) parmi les suivants :

SORTDATE Date du message
SORTARRIVAL Date d'arrivée
SORTFROM Nom de la première boîte aux lettres de l'adresse d'origine (From address)
SORTSUBJECT Sujet du message
SORTTO Nom de la première boîte aux lettres de destination (To address)
SORTCC Nom de la boîte aux lettres de copie cachée (cc address)
SORTSIZE Taille du message en octets

Les flags dont des masques de bits, d'un ou plusieurs des éléments suivants :

SE_UID Retourne l'UIDs à la place d'une séquence
de nombres.
SE_NOPREFETCH Ne pas pré-télécharger les messages
trouvés.

Précédent | Sommaire | Suivant
imap_setflag_full | Niveau supérieur | imap_status


imap_status

(PHP 3>= 3.0.4, PHP 4 )

imap_status -- Retourne les informations de statut sur une boîte aux lettres autres que la boîte courante.

Description

object imap_status ( resource imap_stream, string mailbox, int options)

imap_status() retourne un objet contenant les informations de statut. Les options valables sont :

  • SA_MESSAGES - met la valeur de status->messages au nombre de messages dans la boîtes aux lettres.

  • SA_RECENT - met la valeur destatus->recent au nombre de messages récents dans la boîte aux lettres.

  • SA_UNSEEN - met la valeur de status->unseen au nombre de messages non lus dans la boîte aux lettres.

  • SA_UIDNEXT - met la valeur de status->uidnext à la prochaine valeur d'uid qui sera utilisée.

  • SA_UIDVALIDITY - met la valeur de status->uidvalidity à une constante, qui change lorsque l'uid de la boîte aux lettres n'est plus valide.

  • SA_ALL - fixe les valeurs de de toutes les précédents.

status->flags est aussi fixé : c'est un masque de bit qui peut contenir tous les flags ci-dessus.

Exemple 1. Exemple imap_status()

<?php
  $mbox = imap_open("{your.imap.host}","utilisateur","mot_de_passe",OP_HALFOPEN)
     or die("can't connect: ".imap_last_error());
  $status = imap_status($mbox,"{your.imap.host}INBOX",SA_ALL);
  if($status) {
    echo"Messages:   ". $status->messages    . "<br />\n";
    echo "R&eacute;cents:     ". $status->recent      . "<br />\n";
    echo "Non lus:     ". $status->unseen      . "<br />\n";
    echo "UIDnext:    ". $status->uidnext     . "<br />\n";
    echo "UIDvalidit&eacute;:". $status->uidvalidity . "<br />\n";
  } else {
    echo "imap_status a &eacute;chou&eacute; : " . imap_last_error() . "\n";
  }
  imap_close($mbox);
?>

Précédent | Sommaire | Suivant
imap_sort | Niveau supérieur | imap_subscribe


imap_subscribe

(PHP 3, PHP 4 )

imap_subscribe -- Souscrit à une boîte aux lettres

Description

bool imap_subscribe ( resource imap_stream, string mbox)

imap_subscribe() souscrit à la boîte aux lettres mbox.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
imap_status | Niveau supérieur | imap_thread


imap_thread

(PHP 4 >= 4.1.0)

imap_thread -- Retourne l'arbre de REFERENCE organisé par thread

Description

array imap_thread ( resource stream_id [, int options])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imap_subscribe | Niveau supérieur | imap_timeout


imap_timeout

(no version information, might be only in CVS)

imap_timeout -- Configure ou retourne le timeout

Description

mixed imap_timeout ( int timeout_type [, int timeout])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
imap_thread | Niveau supérieur | imap_uid


imap_uid

(PHP 3>= 3.0.3, PHP 4 )

imap_uid -- Retourne l'UID d'un message.

Description

int imap_uid ( resource imap_stream, int msgno)

imap_uid() retourne l'UID pour le message msgno. Un UID est un identifant unique que ne change jamais, alors que le numéro du message dans la lsite des messages peut changer à toute modification de la boîte aux lettres. C'est la fonction contraire de imap_msgno().

Note : Cette fonctionnalité n'est pas supportées par les boîtes aux lettres POP3.

Précédent | Sommaire | Suivant
imap_timeout | Niveau supérieur | imap_undelete


imap_undelete

(PHP 3, PHP 4 )

imap_undelete -- Enlève la marque d'effacement d'un message

Description

bool imap_undelete ( resource imap_stream, int msg_number)

imap_undelete() enlève la marque d'effacement du message msg_number, placée avec imap_delete().

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
imap_uid | Niveau supérieur | imap_unsubscribe


imap_unsubscribe

(PHP 3, PHP 4 )

imap_unsubscribe -- Termine la souscription à une boîte aux lettres

Description

bool imap_unsubscribe ( string imap_stream, string mbox)

imap_unsubscribe() termine la souscription à la boîte aux lettres mbox.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
imap_undelete | Niveau supérieur | imap_utf7_decode


imap_utf7_decode

(PHP 3>= 3.0.15, PHP 4 )

imap_utf7_decode -- Décode une chaîne modifiée UTF-7.

Description

string imap_utf7_decode ( string text)

imap_utf7_decode() décode la chaîne UTF-7 text en données 8 bits.

imap_utf7_decode() retourne les données 8bits décodées, ou FALSE si la chaîne text n'est pas au format UTF-7. Cette fonction sert à décoder des noms de boîtes aux lettres qui contiennent des caractères internationaux hors de l'espace ASCII. Le standard UTF-7 est défini dans la RFC 2060, section 5.1.3 (l'original UTF-7 a été défini dans RFC1642).

Précédent | Sommaire | Suivant
imap_unsubscribe | Niveau supérieur | imap_utf7_encode


imap_utf7_encode

(PHP 3>= 3.0.15, PHP 4 )

imap_utf7_encode -- Convertit des données 8bit en texte UTF-7.

Description

string imap_utf7_encode ( string data)

imap_utf7_encode() retourne les données data 8bits encodées, ou FALSE si une erreur est survenue. Cette fonction sert à encoder des noms de boîtes aux lettres qui contiennent des caractères internationaux hors de l'espace ASCII. Le standard UTF-7 est défini dans la RFC 2060, section 5.1.3 (l'original UTF-7 a été défini dans RFC1642).

imap_utf7_encode() retourne un texte UTF-7.

Précédent | Sommaire | Suivant
imap_utf7_decode | Niveau supérieur | imap_utf8


imap_utf8

(PHP 3>= 3.0.13, PHP 4 )

imap_utf8 -- Convertit du texte au format MIME en UTF8

Description

string imap_utf8 ( string mime_encoded_text)

imap_utf8() convertit le texte mime_encoded_text en UTF8. Les spécifications de MIME et UTF8 sont décrites dans les RFC2047 et RFC2044.

Précédent | Sommaire | Suivant
imap_utf7_encode | Niveau supérieur | Informix


Informix

Manuel PHP
Précédent Suivant

XLIII. Informix

Les pilotes d'accès à Informix pour Online (ODS) 7.x, SE 7.x, Universal Server (IUS) 9.x et IDS 2000 sont implémentés dans "functions/ifx.ec" et "functions/php3_ifx.h". Le support ODS 7.x est plutôt complet, et accepte les colonnes de type BYTE et TEXT. Le support IUS 9.x est partiellement fini, de nouveaux types sont disponibles, mais SLOB et CLOB sont toujours en cours de développement.

Notes de configuration : Vous avez besoin d'une version de ESQL/C pour compiler le pilote PHP d'Informix. Les versions ESQL/C 7.2x sont utilisables. ESQL/C fait partie du SDK Informix Client.

Avant que vous ne lanciez le script "configure", assurez-vous que la variable d'environnement "INFORMIXDIR" a été correctement paramétrée, et que $INFORMIXDIR/bin est dans votre PATH.

Le script de configuration va détecter automatiquement les librairies disponibles, et inclure les dossiers si vous lancer le script avec l'option --with-informix=yes. Vous pouvez ignorer cette détection en spécifiant "IFX_LIBDIR", "IFX_LIBS" et "IFX_INCDIR" dans votre environnement. Le script de configuration va aussi essayer de détecter la version de votre serveur Informix. Il modifiera alors la condition de compilation "HAVE_IFX_IUS" si votre serveur Informix est d'une version plus récente que 9.00.

Notes d'exécutions : Assurez-vous que les variables d'environnement INFORMIXDIR et INFORMIXSERVER sont accessibles au pilote PHP, et que le dossier bin INFORMIX est aussi dans la variable PATH. Vous pouvez le voir en lançant un script qui contient un appel à phpinfo() avant que vous ne commenciez à tester. La fonction phpinfo() affiche une liste des variables d'environnement. Cela fonctionne aussi bien en mode mod_php, qu'en mode CGI. Il vous faudra fixer les valeurs dans le script de démarrage d'Apache.

Les "Informix shared libraries" doivent aussi être accessibles au chargement (vérifiez LD_LINBRARY_PATH ou ld.so.conf/ldconfig).

Notes sur l'utilisation des BLOBs (TEXT et BYTE) : Les objets de type BLOBs sont normalement gérés par des identifiants de BLOB. Les requêtes de sélection retournent un identifiant de BLOB pour chaque colonne de type BYTE et TEXT. Vous pouvez en lire le contenu, avec des commandes de types "string_var = ifx_get_blob($BLOB_id);" ; si vous souhaitez ramener le BLOB en mémoire (avec: "ifx_blobinfile_mode(0);"). Si vous préférez recevoir le contenu d'une colonne BLOB dans un fichier, utilisez ifx_blobinfile_mode(), et ifx_get_blob($BLOB_id) vous retournera le nom du fichier. Utilisez les fonctions habituelles d'accès aux fichiers pour lire son contenu.

Pour les requêtes INSERT/UPDATE, vous devez créer les identifiants de BLOB par vous même, avec la fonction ifx_create_blob(). Puis, vous placez l'identifiant de BLOB dans un tableau, et remplacez la colonne par un point d'interrogation. Pour les UPDATE/INSERT, vous êtes responsable du contenu du BLOB, avec la fonction ifx_update_blob().

Le comportement par défaut des colonnes de type BLOB peut être modifié en affectant de nouvelles valeurs aux variables de configuration (même à la volée) :

Variable de configuration : ifx.textasvarchar

Variable de configuration : ifx.byteasvarchar

Fonctions à utiliser lors de l'exécution :

ifx_textasvarchar(0) : Utilise l'identifiant de BLOB avec des colonnes de type TEXT, dans les requêtes SELECT

ifx_byteasvarchar(0) : Utilise l'identifiant de BLOB avec des colonnes de type BYTE, dans les requêtes SELECT

ifx_textasvarchar(1) : Retourne les colonnes de type TEXT sous la forme de VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.

ifx_byteasvarchar(1) : Retourne les colonnes de type BYTE sous la forme de VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.

Variable de configuration : ifx.BLOBinfile

Fonctions à utiliser lors de l'exécution :

ifx_blobinfile_mode(0) : Retourne les colonnes de type BYTE en mémoire, l'identifiant de BLOB vous donnera accès au contenu.

ifx_blobinfile_mode(1) : Retourne les colonnes de type BYTE dans un fichier, l'identifiant de BLOB vous donnera accès au nom de ce fichier.

En affectant la valeur de 1 à ifx_text/byteasvarchar, vous pouvez utiliser les colonnes de type TEXT et BYTE dans les requêtes SELECT comme des champs VARCHAR (mais plus long). Etant donné la gestion des chaînes par PHP, cette technique conserve les données binaires. Les données retournées peuvent contenir n'importe quoi, et vous êtes responsable de la bonne manipulation de ces valeurs.

En affectant la valeur de 1 à ifx_blobinfile_mode(), utilisez le nom de fichier retourné par ifx_get_blob() pour accéder au contenu du BLOB. Notez bien que vous êtes tenu responsable de l'effacement des fichiers temporaires, créés par Informix. Chaque nouvelle ligne lue sur le serveur va créer un nouveau fichier temporaire, pour chaque colonne de type BYTE.

L'emplacement des fichiers temporaire peut être modifié, grâce à la variable "blobdir", (par défaut, ".", c'est-à-dire, le dossier courant). Une valeur telle que BLOBdir="tmpBLOB" simplifiera le nettoyage des fichiers temporaires, accidentellement oubliés (les noms commencent tous par "blb").

Suppression automatique des espaces (SQLCHAR et SQLNCHAR) : Elle peut être mise en place avec la variable de configuration.

ifx.charasvarchar : avec la valeur 1, les espaces de fin de champs seront automatiquement supprimés.

NULL values : Lorsque la variable de configuration ifx.nullformat (ou que la fonction ifx_nullformat()) est à un, les colonnes contenant la valeur NULL retourneront la chaîne "NULL", et sinon, retourneront une chaîne vide. Cela vous permet de faire la différence entre les colonnes vides et celles qui contiennent la valeur NULL.

Table des matières
ifx_affected_rows -- Retourne le nombre de lignes affectées par une requête.
ifx_blobinfile_mode -- Choisit le mode par défaut des objets BLOB pour toutes les requêtes SELECT.
ifx_byteasvarchar -- Choisit le mode par défaut des objets BYTE.
ifx_close -- Ferme une connexion à un serveur Informix.
ifx_connect -- Ouvre une connexion à un serveur Informix.
ifx_copy_blob -- Duplique un objet BLOB.
ifx_create_blob -- Crée un objet BLOB.
ifx_create_char -- Crée un objet char.
ifx_do -- Exécute une requête SQL déjà préparée.
ifx_error -- Retourne le code d'erreur de la dernière requête Informix.
ifx_errormsg -- Retourne le message d'erreur de la dernière requête Informix.
ifx_fetch_row -- Retourne une ligne sous la forme d'un tableau énuméré.
ifx_fieldproperties -- Liste les propriétés des champs SQL.
ifx_fieldtypes -- Liste les champs Informix SQL.
ifx_free_blob -- Supprime un objet BLOB.
ifx_free_char -- Supprime un objet char.
ifx_free_result -- Libère les ressources prises par un résultat.
ifx_get_blob -- Retourne le contenu d'un objet BLOB.
ifx_get_char -- Retourne le contenu d'un objet char.
ifx_getsqlca -- Retourne le contenu de la variable sqlca.sqlerrd[0..5] après une requête.
ifx_htmltbl_result -- Lit toutes les lignes d'un tableau, et la met sous la forme d'un tableau HTML.
ifx_nullformat -- Modifie le mode par défaut de lecture des valeurs.
ifx_num_fields -- Retourne le nombre de colonnes dans une requête.
ifx_num_rows -- Compte le nombre de ligne déjà lues dans un résultat.
ifx_pconnect -- Ouvre une connexion persistante à un serveur Informix.
ifx_prepare -- Prépare une requête SQL pour l'exécution.
ifx_query -- Envoie une requête Informix.
ifx_textasvarchar -- Choisit le mode par défaut des objets text.
ifx_update_blob -- Modifie le contenu d'un objet BLOB.
ifx_update_char -- Modifie le contenu d'un objet char.
ifxus_close_slob -- Ferme un objet SLOB.
ifxus_create_slob -- Crée un objet SLOB et l'ouvre.
ifx_free_slob -- Supprime un objet SLOB.
ifxus_open_slob -- Ouvre un objet SLOB.
ifxus_read_slob -- Lit n bytes d'un objet SLOB.
ifxus_seek_slob -- Fixe le fichier courant, ou la position courante.
ifxus_tell_slob -- Retourne le fichier courant, ou la position courante.
ifxus_write_slob -- Ecrit une chaîne dans un objet SLOB.

Précédent | Sommaire | Suivant
imap_utf8 | Niveau supérieur | ifx_affected_rows


ifx_affected_rows

(PHP 3>= 3.0.3, PHP 4 )

ifx_affected_rows -- Retourne le nombre de lignes affectées par une requête.

Description

int ifx_affected_rows ( int result_id)

ifx_affected_rows() retourne le nombre de lignes affectées par la requête associée à result_id.

result_id est un identifiant valide de résultat retourné par ifx_query() ou ifx_prepare().

Pour les INSERT, UPDATE et DELETE, ce nombre est le nombre exact de lignes affectées (sqlerrd[2]). Pour les SELECT, ce n'est qu'une estimation (sqlerrd[0]). Ne vous y fiez pas.

ifx_affected_rows() est très pratique après ifx_prepare() pour limiter la taille des résultats.

Voir aussi ifx_num_rows().

Exemple 1. Nombre de lignes affectées

<?php
$rid = ifx_prepare ("select * from emp
                     where name like " . $name, $connid);
if (! $rid) {
   //... erreur ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
    printf ("Trop de lignes trouvées (%d)\n<br>", $rowcount);
    die ("Ressayez avec une autre requête. <br>\n");
}
?>

Précédent | Sommaire | Suivant
Informix | Niveau supérieur | ifx_blobinfile_mode


ifx_blobinfile_mode

(PHP 3>= 3.0.4, PHP 4 )

ifx_blobinfile_mode -- Choisit le mode par défaut des objets BLOB pour toutes les requêtes SELECT.

Description

void ifx_blobinfile_mode ( int mode)

ifx_blobinfile_mode() modifie le mode par défaut des objets BLOB pour toutes les requêtes SELECT. Mode "0" chargera les BLOB de type Byte en mémoire ; Mode "1" sauvera les BLOB de type Byte dans un fichier.

Précédent | Sommaire | Suivant
ifx_affected_rows | Niveau supérieur | ifx_byteasvarchar


ifx_byteasvarchar

(PHP 3>= 3.0.4, PHP 4 )

ifx_byteasvarchar -- Choisit le mode par défaut des objets BYTE.

Description

void ifx_byteasvarchar ( int mode)

ifx_byteasvarchar() modifie le mode par défaut des objets BYTE. Le mode "0" retournera l'identifiant de BLOB, et le mode "1" retourenra le contenu du TEXT sous la forme d'un VARCHAR.

Précédent | Sommaire | Suivant
ifx_blobinfile_mode | Niveau supérieur | ifx_close


ifx_close

(PHP 3>= 3.0.3, PHP 4 )

ifx_close -- Ferme une connexion à un serveur Informix.

Description

int ifx_close ( [int link_identifier])

ifx_close() retourne toujours TRUE.

ifx_close() ferme le lien au serveur de données Informix associé à l'identifant de connexion link_identifier. Si l'identifiant du lien n'est pas spécifié, la dernière connexion est utilisée.

Notez qu'il n'est généralement pas besoin d'appeler cette fonction, car les connexions non persistantes seront automatiquement fermées.

ifx_close() ne peut pas fermer une connexion ouverte avec ifx_pconnect().

Voir aussi ifx_connect() et ifx_pconnect().

Exemple 1. Fermer une connexion Informix

<?php
$conn_id = ifx_connect ("mydb@ol_srv", "coucou", "cestmoi");
//... quelques requêtes diverses et variées ...
ifx_close($conn_id);
?>

Précédent | Sommaire | Suivant
ifx_byteasvarchar | Niveau supérieur | ifx_connect


ifx_connect

(PHP 3>= 3.0.3, PHP 4 )

ifx_connect -- Ouvre une connexion à un serveur Informix.

Description

int ifx_connect ( [string database [, string userid [, string password]]])

ifx_connect() retourne un identifiant de connexion, en cas de succès, et FALSE sinon.

ifx_connect() établit une connexion à un serveur Informix. Tous les arguments sont optionnels, et, s'ils viennent à manquer, les valeurs par défaut seront prises dans le fichier de configuration . (ifx.default_host pour l'hôte par défaut) (Les librairies Informix utiliseront la variable d'environnement $INFORMIXSERVER si ifx.default_host n'est pas définie). ifx.default_user pour l'utilisateur, et ifx.default_password comme mot de passe (si aucun n'a été défini).

Si un deuxième appel à ifx_connect() est fait avec les mêmes arguments, l'identifiant de connexion déjà ouvert sera retourné.

Le lien avec le serveur sera fermé dès que le script se termine, ce qui fait qu'il n'est pas nécessaire de terminer les connexions avec ifx_close().

Voir aussi ifx_pconnect() et ifx_close().

Exemple 1. Connection à un serveur Informix

<?php
$conn_id = ifx_pconnect ("mydb@ol_srv1", "imyself", "mypassword");
?>

Précédent | Sommaire | Suivant
ifx_close | Niveau supérieur | ifx_copy_blob


ifx_copy_blob

(PHP 3>= 3.0.4, PHP 4 )

ifx_copy_blob -- Duplique un objet BLOB.

Description

int ifx_copy_blob ( int bid)

ifx_copy_blob() retourne FALSE en cas d'erreur, et sinon, l'identifiant du nouvel objet.

Précédent | Sommaire | Suivant
ifx_connect | Niveau supérieur | ifx_create_blob


ifx_create_blob

(PHP 3>= 3.0.4, PHP 4 )

ifx_create_blob -- Crée un objet BLOB.

Description

int ifx_create_blob ( int type, int mode, string param)

ifx_create_blob() crée un objet BLOB.

type: 1 = TEXT, 0 = BYTE

mode: 0 = L'objet BLOB place le contenu en mémoire ; 1 = L'objet BLOB place le contenu dans un fichier.

param: Si mode = 0: pointeur du contenu, si mode = 1: pointeur vers un fichier.

ifx_create_blob() retourne FALSE en cas d'erreur, et sinon, un identifiant de BLOB.

Précédent | Sommaire | Suivant
ifx_copy_blob | Niveau supérieur | ifx_create_char


ifx_create_char

(PHP 3>= 3.0.6, PHP 4 )

ifx_create_char -- Crée un objet char.

Description

int ifx_create_char ( string param)

ifx_create_char() crée un objet char. param sera le contenu de l'objet.

Précédent | Sommaire | Suivant
ifx_create_blob | Niveau supérieur | ifx_do


ifx_do

(PHP 3>= 3.0.4, PHP 4 )

ifx_do -- Exécute une requête SQL déjà préparée.

Description

int ifx_do ( int result_id)

ifx_do() retourne TRUE en cas de succès, FALSE en cas d'erreur.

Exécute une requête qui a déjà été préparée, ou crée un pointeur pour cela.

Ne libère pas result_id en cas d'erreur.

De plus, elle fixe la valeur de result_id pour accès ultérieur par ifx_affected_rows().

Voir aussi ifx_prepare() (Pour un exemple).

Précédent | Sommaire | Suivant
ifx_create_char | Niveau supérieur | ifx_error


ifx_error

(PHP 3>= 3.0.3, PHP 4 )

ifx_error -- Retourne le code d'erreur de la dernière requête Informix.

Description

string ifx_error ( void )

ifx_error() retourne le code d'erreur de la dernière requête Informix. Les codes d'erreur Informix (SQLSTATE et SQLCODE) formaté comme suit :

x [SQLSTATE = aa bbb SQLCODE=cccc]

avec x = space : aucune erreur

E : erreur

N : il n'y a plus d'informations

W : Alerte

? : Indéfinie

Si le caractère vaut autre chose qu'un espace, SQLSTATE et SQLCODE décrit l'erreur avec plus de détails.

Reportez-vous au manuel Informix pour trouver la description de SQLSTATE et SQLCODE

ifx_error() retourne une chaîne avec un caractères, décrivant le résultat général de la commande, et aussi SQLSTATE et SQLCODE associé à la plus récente requête SQL exécutée. Le format de la chaîne est "(char) [SQLSTATE=(deux chiffres) (trois chiffres) SQLCODE=(un chiffre)]". Le premier caractère peut être ' ' (espace) (succès), 'W' (Alerte), 'E' (une erreur est survenue durant le traitement ) ou 'N' (aucune donnée de retour).

Voir aussi ifx_errormsg().

Précédent | Sommaire | Suivant
ifx_do | Niveau supérieur | ifx_errormsg


ifx_errormsg

(PHP 3>= 3.0.4, PHP 4 )

ifx_errormsg -- Retourne le message d'erreur de la dernière requête Informix.

Description

string ifx_errormsg ( [int errorcode])

ifx_errormsg() retourne le plus récent message d'erreur ou, lorsque l'option errorcode est présent, le message d'erreur associé à errorcode.

Voir aussi ifx_error().

printf("%s\n<br>", ifx_errormsg(-201));

Précédent | Sommaire | Suivant
ifx_error | Niveau supérieur | ifx_fetch_row


ifx_fetch_row

(PHP 3>= 3.0.3, PHP 4 )

ifx_fetch_row -- Retourne une ligne sous la forme d'un tableau énuméré.

Description

array ifx_fetch_row ( int result_id [, mixed position])

ifx_fetch_row() retourne un tableau associatif qui contient la ligne retournée, ou FALSE s'il ne reste plus de lignes à lire, ou s'il a eu une erreur.

Les colonnes de types BLOB sont retournées sous la forme d'un identifiant à utiliser avec ifx_get_blob() à moins que vous n'ayez utilisé la fonction ifx_textasvarchar() ou ifx_byteasvarchar(), et dans ce cas, les BLOBs seront retournés sous forme de chaîne. ifx_fetch_row() retourne FALSE en cas d'erreur.

result_id est un identifiant valide de résultat, retourné par ifx_query() ou ifx_prepare() (Requêtes SELECT seulement !).

position est un paramètre optionnel, pour une opération de lecture d'informations sur un pointeur de type "scroll": "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" ou encore un nombre. Si vous spécifiez un nombre, la ligne d'index absolu sera retournée. Ce paramètre est optionnel, et ne fonctionne qu'avec les pointeurs de type "scroll".

ifx_fetch_row() retourne une ligne de données d'un résultat associé à l'identifiant de résultat result_id. La ligne est retournée sous la forme d'un tableau associatif.

Les appels ultérieurs à ifx_fetch_row() retourneront la ligne suivante, ou FALSE s'il n'y a plus de ligne.

Exemple 1. Exemple avec ifx_fetch_row()

<?php
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
//    ... erreur ...
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
    printf ("Trop de lignes dans le résultats. (%d)\n<br>", $rowcount);
    die ("Recommencez votre requête. <br>\n");
}
if (! ifx_do ($rid)) {
//   ... erreur ...
}
$row = ifx_fetch_row ($rid, "NEXT");
while (is_array($row)) {
    for(reset($row); $fieldname=key($row); next($row)) {
        $fieldvalue = $row[$fieldname];
        printf ("%s = %s,", $fieldname, $fieldvalue);
    }
    printf("\n<br>");
    $row = ifx_fetch_row ($rid, "NEXT");
}
ifx_free_result ($rid);
?>

Précédent | Sommaire | Suivant
ifx_errormsg | Niveau supérieur | ifx_fieldproperties


ifx_fieldproperties

(PHP 3>= 3.0.3, PHP 4 )

ifx_fieldproperties -- Liste les propriétés des champs SQL.

Description

array ifx_fieldproperties ( int result_id)

ifx_fieldproperties() retourne un tableau associatif avec les nom des champs comme clé, et les données de propriétés des champs comme valeur. ifx_fieldproperties() retourne FALSE en cas d'erreur.

ifx_fieldproperties() retourne les propriétés Informix SQL pour tous les champs d'une requête, sous la forme d'un tableau associatif. Les propriétés sont présentées sous la forme : "SQLTYPE;longueur ;précision;échelle;ISNULLABLE" avec SQLTYPE qui représente le type de données Informix tel que "SQLVCHAR" et ISNULLABLE = "Y" ou "N" (le champ peut contenir NULL ou pas : Oui ou Non).

Exemple 1. Exemple avec ifx_fieldproperties()

<?php
$properties = ifx_fieldtypes ($resultid);
if (! isset($properties)) {
//  ... erreur ...
}
for ($i = 0; $i < count($properties); $i++) {
    $fname = key ($properties);
    printf ("%s:\t type =  %s\n", $fname, $properties[$fname]);
    next ($properties);
}
?>

Précédent | Sommaire | Suivant
ifx_fetch_row | Niveau supérieur | ifx_fieldtypes


ifx_fieldtypes

(PHP 3>= 3.0.3, PHP 4 )

ifx_fieldtypes -- Liste les champs Informix SQL.

Description

array ifx_fieldtypes ( int result_id)

ifx_fieldtypes() retourne un tableau associatif avec les noms des champs comme clés, et les types SQL comme valeur. En cas d'erreur, retourne FALSE.

Exemple 1. Nom de champs et type SQL.

<?php
$types = ifx_fieldtypes ($resultid);
if (! isset ($types)) {
//  ... erreur ...
}
for ($i = 0; $i < count($types); $i++) {
    $fname = key($types);
    printf("%s :\t type =  %s\n", $fname, $types[$fname]);
    next($types);
}
?>

Précédent | Sommaire | Suivant
ifx_fieldproperties | Niveau supérieur | ifx_free_blob


ifx_free_blob

(PHP 3>= 3.0.4, PHP 4 )

ifx_free_blob -- Supprime un objet BLOB.

Description

int ifx_free_blob ( int bid)

ifx_free_blob() supprime l'objet BLOB bid. ifx_free_blob() retourne FALSE en cas d'erreur, et sinon TRUE.

Précédent | Sommaire | Suivant
ifx_fieldtypes | Niveau supérieur | ifx_free_char


ifx_free_char

(PHP 3>= 3.0.6, PHP 4 )

ifx_free_char -- Supprime un objet char.

Description

int ifx_free_char ( int bid)

ifx_free_char() supprime l'objet char bid. ifx_free_char() retourne FALSE en cas d'erreur, et sinon TRUE.

Précédent | Sommaire | Suivant
ifx_free_blob | Niveau supérieur | ifx_free_result


ifx_free_result

(PHP 3>= 3.0.3, PHP 4 )

ifx_free_result -- Libère les ressources prises par un résultat.

Description

int ifx_free_result ( int result_id)

ifx_free_result() libère les ressources prises par le résultat result_id. ifx_free_result() retourne FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
ifx_free_char | Niveau supérieur | ifx_get_blob


ifx_get_blob

(PHP 3>= 3.0.4, PHP 4 )

ifx_get_blob -- Retourne le contenu d'un objet BLOB.

Description

int ifx_get_blob ( int bid)

ifx_get_blob() retourne le contenu de l'objet BLOB associé à bid.

Précédent | Sommaire | Suivant
ifx_free_result | Niveau supérieur | ifx_get_char


ifx_get_char

(PHP 3>= 3.0.6, PHP 4 )

ifx_get_char -- Retourne le contenu d'un objet char.

Description

int ifx_get_char ( int bid)

ifx_get_char() retourne le contenu de l'objet associé à l'identifiant bid.

Précédent | Sommaire | Suivant
ifx_get_blob | Niveau supérieur | ifx_getsqlca


ifx_getsqlca

(PHP 3>= 3.0.8, PHP 4 )

ifx_getsqlca -- Retourne le contenu de la variable sqlca.sqlerrd[0..5] après une requête.

Description

array ifx_getsqlca ( int result_id)

ifx_getsqlca() retourne une pseudo-ligne (tableau associatif) avec sqlca.sqlerrd[0] à sqlca.sqlerrd[5] après la requête associée result_id.

result_id est un identifiant valide de résultat retourné par ifx_query() ou ifx_prepare().

Pour les requêtes INSERT, UPDATE et DELETE, les valeurs retournées sont celles fixées par le serveur après avoir exécuté la requête. Cela donne accès au nombre de ligne affectées, ainsi qu'au numéro de série d'insertion. Pour les requêtes de type SELECT, les valeurs retournées sont celles qui ont été préparées. Utiliser cette fonction économise l'exécution d'une requête "select dbinfo('sqlca.sqlerrdx')", étant donné qu'elle retourne les valeurs qui ont été sauvées par le pilote ifx au moment approprié.

Exemple 1. Lire les valeurs de sqlca.sqlerrd[x]

<?php
/* On suppose que la première colonne d'une table 'quelconque' est un numéro de série */
$qid = ifx_query("insert into sometable values(0, '2nd column', 'another column' ", $connid);
if (! $qid) {
//    ... erreur ...
}
$sqlca = ifx_getsqlca ($qid);
$serial_value = $sqlca["sqlerrd1"];
echo "Le numéro de série de la valeur insérée est : " . $serial_value . "<br>\n";
?>

Précédent | Sommaire | Suivant
ifx_get_char | Niveau supérieur | ifx_htmltbl_result


ifx_htmltbl_result

(PHP 3>= 3.0.3, PHP 4 )

ifx_htmltbl_result -- Lit toutes les lignes d'un tableau, et la met sous la forme d'un tableau HTML.

Description

int ifx_htmltbl_result ( int result_id [, string html_table_options])

ifx_htmltbl_result() lit toutes les lignes d'un tableau, et la met sous la forme d'un tableau HTML, ou FALSE en cas d'erreur.

Affiche les lignes avec des balises HTML. Le second argument permet de modifier les options de table.

Exemple 1. Affichage sous la forme d'une table HTML

<?php
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
//   ... erreur ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
    printf ("Trop de lignes dans le résultat : (%d)\n<br>", $rowcount);
    die ("Recommencez votre requête <br>\n");
}
if (! ifx_do($rid) {
//  ... erreur ...
}
ifx_htmltbl_result ($rid, "border=\"2\"");
ifx_free_result($rid);
?>

Précédent | Sommaire | Suivant
ifx_getsqlca | Niveau supérieur | ifx_nullformat


ifx_nullformat

(PHP 3>= 3.0.4, PHP 4 )

ifx_nullformat -- Modifie le mode par défaut de lecture des valeurs.

Description

void ifx_nullformat ( int mode)

ifx_nullformat() modifie le mode par défaut de lecture des valeurs. Le mode "0" retourne "", et le mode "1" retourne "NULL".

Précédent | Sommaire | Suivant
ifx_htmltbl_result | Niveau supérieur | ifx_num_fields


ifx_num_fields

(PHP 3>= 3.0.3, PHP 4 )

ifx_num_fields -- Retourne le nombre de colonnes dans une requête.

Description

int ifx_num_fields ( int result_id)

ifx_num_fields() retourne le nombre de colonnes dans la requête result_id ou FALSE en cas d'erreur.

Après avoir préparé ou exécuté une requête, cette fonction retourne le nombre de colonne dans la requête.

Précédent | Sommaire | Suivant
ifx_nullformat | Niveau supérieur | ifx_num_rows


ifx_num_rows

(PHP 3>= 3.0.3, PHP 4 )

ifx_num_rows -- Compte le nombre de ligne déjà lues dans un résultat.

Description

int ifx_num_rows ( int result_id)

ifx_num_rows() compte le nombre de ligne déjà lues dans le résultat result_id après ifx_query() ou ifx_do().

Précédent | Sommaire | Suivant
ifx_num_fields | Niveau supérieur | ifx_pconnect


ifx_pconnect

(PHP 3>= 3.0.3, PHP 4 )

ifx_pconnect -- Ouvre une connexion persistante à un serveur Informix.

Description

int ifx_pconnect ( [string database [, string userid [, string password]]])

ifx_pconnect() retourne un identifiant positif de connexion Informix, ou FALSE, en cas d'erreur.

ifx_pconnect() se comporte de manière très similaire à ifx_connect() avec deux différences importantes :

ifx_pconnect() se comporte exactement comme ifx_connect() lorsque PHP n'est pas un module Apache. Lors de la connexion, la fonction va chercher une connexion déjà ouverte avec le même hôte, le même nom d'utilisateur, et le même mot de passe. Si elle en trouve une, elle retournera un identifiant de cette connexion, au lieu d'en ouvrir une nouvelle.

Deuxièmement, la connexion au serveur SQL ne sera pas automatiquement refermée à la fin de l'exécution du script. Au contraire, le lien va rester ouvert (ifx_close() ne fermera pas les connexions établies avec ifx_pconnect()).

Ainsi, ce type de lien est appelé 'persistant'.

Voir aussi ifx_connect().

Précédent | Sommaire | Suivant
ifx_num_rows | Niveau supérieur | ifx_prepare


ifx_prepare

(PHP 3>= 3.0.4, PHP 4 )

ifx_prepare -- Prépare une requête SQL pour l'exécution.

Description

int ifx_prepare ( string query, int conn_id [, int cursor_def, mixed blobidarray])

ifx_prepare() retourne un entier identifiant de résultat result_id à utiliser avec ifx_do(). Modifie la valeur de affected_rows, pour accès ultérieur avec ifx_affected_rows().

ifx_prepare() prépare la requête query sur la connexion conn_id. Pour les requêtes de type "select-type" un pointeur de résultat est déclaré et ouvert. L'option cursor_type permet de choisir le type de pointeur : "scroll" et/ou "hold". Les valeurs peuvent être combinées ensemble (IFX_SCROLL, IFX_HOLD).

Le nombre de ligne affectées (estimé ou exact) est enregistré, pour être lu avec la fonction ifx_affected_rows().

Si vous avez une colonne de type BLOB (BYTE ou TEXT) dans une requête de modification, vous pouvez passer un paramètre BLOBidarray qui contiendra les identifiants des BLOB à modifier, et vous devrez remplacer cette colonne par un point d'interrogation (?) dans la requête.

Si le contenu d'une colonne de type TEXT (ou BYTE) vous pouvez aussi utiliser les fonctions ifx_textasvarchar() et ifx_byteasvarchar(). Cela vous permettra d'utiliser les colonnes TEXT (ou BYTE) comme des colonnes de type VARCHAR (mais plus long, tout de même), et vous n'aurez pas besoin de l'identifiant de BLOB.

Avec les fonctions ifx_textasvarchar() et ifx_byteasvarchar() (valeurs par défaut), les requêtes SELECT retourneront des identifiants de BLOB. Cet identifiant peut être une chaîne ou un fichier, suivant la configuration (voir plus loin).

Voir aussi ifx_do().

Précédent | Sommaire | Suivant
ifx_pconnect | Niveau supérieur | ifx_query


ifx_query

(PHP 3>= 3.0.3, PHP 4 )

ifx_query -- Envoie une requête Informix.

Description

int ifx_query ( string query [, int link_identifier [, int cursor_type [, mixed blobidarray]]])

ifx_query() retourne un identifiant positif de résultat Informix en cas de succès, et FALSE en cas d'erreur.

L'entier de type "identifiant de résultat" est utilisé par4 d'autres fonctions pour lire les résultats. Pour un exemple, reportez-vous à ifx_affected_rows() pour connaître le nombre de lignes affectées.

ifx_query() envoie une requête au serveur actif courant, associé à l'identifiant de connexion link_identifier. Si link_identifier n'est pas fourni, la dernière connexion ouverte sera utilisée. Si aucune connexion n'a été ouverte, ifx_query() va essayer d'en créer une, en appelant ifx_connect().

Exécute la requête query sur la connexion conn_id. Pour les requêtes de type SELECT, un pointeur est déclaré, et ouvert. L'option cursor_type permet de choisir le type de pointeur, "scroll" et/ou "hold". cursor_type accepte les deux valeurs séparées, et leur combinaison. Les requêtes d'autre type sont à exécution immédiate.

Le nombre de lignes affectées (estimé ou exact) est enregistré pour être lu avec ifx_affected_rows().

Si vous avez une colonne de type BLOB (BYTE ou TEXT) dans une requête de modification, vous pouvez passer un paramètre BLOBidarray qui contiendra les identifiants des BLOB à modifier, et vous devrez remplacer cette colonne par un point d'interrogation (?) dans la requête.

Si le contenu d'une colonne de type TEXT (ou BYTE) vous pouvez aussi utiliser les fonctions ifx_textasvarchar() et ifx_byteasvarchar(). Cela vous permettra d'utiliser les colonnes TEXT ( ou BYTE ) comme des colonnes de type VARCHAR (mais plus long, tout de même), et vous n'aurez pas besoin de l'identifiant de BLOB.

Avec les fonctions ifx_textasvarchar() et ifx_byteasvarchar() (valeurs par défaut), les requêtes SELECT retourneront des identifiants de BLOB. Cet identifiant peut être une chaîne ou un fichier, suivant la configuration (voir plus loin).

Voir aussi ifx_connect().

Exemple 1. Afficher toutes les lignes de la table "ordres" sous la forme html

ifx_textasvarchar(1);      // Utilisation du mode "text mode" pour les BLOBs
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
    printf("Impossible de sélectionner des lignes dans : %s\n<br>%s<br>\n", ifx_error());
    ifx_errormsg();
    die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);

Exemple 2. Insertion de valeurs dans la table "catalogue"

<?php
// créer un identifiant de BLOB pour une colonne de type BYTE et une de type TEXT
$textid = ifx_create_blob(0, 0, "Colonne Text en mémoire");
$byteid = ifx_create_blob(1, 0, "Colonne Byte en mémoire");
// Stocke l'identifiant du BLOB dans le tableau BLOBid
$BLOBidarray[] = $textid;
$BLOBidarray[] = $byteid;
// exécute la requête
$query = "insert into catalog (stock_num, manu_code, " .
         "cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $BLOBidarray);
if (! $res_id) {
//  ... erreur ...
}
// libération du résultat
ifx_free_result($res_id);
?>

Précédent | Sommaire | Suivant
ifx_prepare | Niveau supérieur | ifx_textasvarchar


ifx_textasvarchar

(PHP 3>= 3.0.4, PHP 4 )

ifx_textasvarchar -- Choisit le mode par défaut des objets text.

Description

void ifx_textasvarchar ( int mode)

ifx_textasvarchar() modifie le mode par défaut des objets TEXT. Le mode "0" retournera un identifiant de BLOB et le mode "1" retourne le BLOB sous la forme d'un (gros) varchar.

Précédent | Sommaire | Suivant
ifx_query | Niveau supérieur | ifx_update_blob


ifx_update_blob

(PHP 3>= 3.0.4, PHP 4 )

ifx_update_blob -- Modifie le contenu d'un objet BLOB.

Description

boolean ifx_update_blob ( int bid, string content)

ifx_update_blob() modifie le contenu de l'objet BLOB repéré par sont identifiant bid. content est une chaîne contenant les nouvelles données. ifx_update_blob() retourne FALSE en cas d'erreur, et sinon, TRUE.

Précédent | Sommaire | Suivant
ifx_textasvarchar | Niveau supérieur | ifx_update_char


ifx_update_char

(PHP 3>= 3.0.6, PHP 4 )

ifx_update_char -- Modifie le contenu d'un objet char.

Description

int ifx_update_char ( int bid, string content)

ifx_update_char() modifie le contenu de l'objet char repéré par son identifiantbid. content est une chaîne avec les nouvelles données. ifx_update_char() retourne FALSE en cas d'erreur, et sinon, TRUE.

Précédent | Sommaire | Suivant
ifx_update_blob | Niveau supérieur | ifxus_close_slob


ifxus_close_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_close_slob -- Ferme un objet SLOB.

Description

int ifxus_close_slob ( int bid)

ifxus_close_slob() ferme l'objet SLOB représenté par son identifiant bid. ifxus_close_slob() retourne FALSE en cas d'erreur, et sinon, TRUE.

Précédent | Sommaire | Suivant
ifx_update_char | Niveau supérieur | ifxus_create_slob


ifxus_create_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_create_slob -- Crée un objet SLOB et l'ouvre.

Description

int ifxus_create_slob ( int mode)

ifxus_create_slob() crée un objet SLOB et l'ouvre. Les modes valides sont : 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> ou une combinaison des précédents. Vous pouvez aussi utiliser les constantes suivantes : IFX_LO_RDONLY, IFX_LO_WRONLY etc. ifxus_create_slob() retourne FALSE en cas d'erreur, et sinon, l'identifiant de l'objet SLOB.

Précédent | Sommaire | Suivant
ifxus_close_slob | Niveau supérieur | ifx_free_slob


ifx_free_slob

(no version information, might be only in CVS)

ifx_free_slob -- Supprime un objet SLOB.

Description

int ifxus_free_slob ( int bid)

ifxus_free_slob() supprime un objet SLOB. bid est l'identifiant de l'objet SLOB. ifxus_free_slob() retourne FALSE en cas d'erreur, et sinon TRUE.

Précédent | Sommaire | Suivant
ifxus_create_slob | Niveau supérieur | ifxus_open_slob


ifxus_open_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_open_slob -- Ouvre un objet SLOB.

Description

int ifxus_open_slob ( long bid, int mode)

ifxus_open_slob() ouvre un objet SLOB. bid est un identifiant d'objet SLOB. Les modes valides sont : 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> ou une combinaison des valeurs précédentes. ifxus_open_slob() retourne FALSE en cas d'erreur, et sinon, l'identifiant du nouvel objet.

Précédent | Sommaire | Suivant
ifx_free_slob | Niveau supérieur | ifxus_read_slob


ifxus_read_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_read_slob -- Lit n bytes d'un objet SLOB.

Description

int ifxus_read_slob ( long bid, long nbytes)

ifxus_read_slob() lit nbytes octets de l'objet SLOB bid. bid est un identifiant d'objet SLOB existant, et nbytes est le nombre d'octets à lire. ifxus_read_slob() retourne FALSE en cas d'erreur, et sinon, une chaîne de caractères.

Précédent | Sommaire | Suivant
ifxus_open_slob | Niveau supérieur | ifxus_seek_slob


ifxus_seek_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_seek_slob -- Fixe le fichier courant, ou la position courante.

Description

int ifxus_seek_slob ( long bid, int mode, long offset)

ifxus_seek_slob() modifie le fichier courant, ou la position du pointeur de fichier, pour un objet SLOB ouvert. bid est un identifiant d'objet SLOB. Les modes valides sont : 0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END et offset est un octet d'offset. ifxus_seek_slob() retourne FALSE en cas d'erreur, et sinon, la position du pointeur de fichier.

Précédent | Sommaire | Suivant
ifxus_read_slob | Niveau supérieur | ifxus_tell_slob


ifxus_tell_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_tell_slob -- Retourne le fichier courant, ou la position courante.

Description

int ifxus_tell_slob ( long bid)

ifxus_tell_slob() retourne le fichier courant, ou la position courante d'un objet SLOB ouvert. bid est un identifiant d'objet SLOB. ifxus_tell_slob() retourne FALSE en cas d'erreur, et sinon, la position du pointeur de fichier.

Précédent | Sommaire | Suivant
ifxus_seek_slob | Niveau supérieur | ifxus_write_slob


ifxus_write_slob

(PHP 3>= 3.0.4, PHP 4 )

ifxus_write_slob -- Ecrit une chaîne dans un objet SLOB.

Description

int ifxus_write_slob ( long bid, string content)

ifxus_write_slob() écrit une chaîne dans un objet SLOB. bid est un identifiant d'objet SLOB et content sont les données à écrire. ifxus_write_slob() retourne FALSE en cas d'erreur, et sinon, le nombre d'octets écrits.

Précédent | Sommaire | Suivant
ifxus_tell_slob | Niveau supérieur | InterBase


InterBase

Manuel PHP
Précédent Suivant

XLIV. InterBase

Introduction

Interbase est une base de données populaire, créée par Borland/Inprise. Pour plus d'informations sur Interbase, allez à http://www.interbase.com/. Par ailleurs, Interbase vient de rejoindre le mouvement Open Source!

Note : Le support intégral de InterBase 6 a été ajouté à PHP 4.0.

Cette base de données utilise les guillemets simples (') pour échapper les caractères, un peu comme le fait Sybase. Ajoutez à votre fichier php.ini la directive suivante :

Exemple 1. Configuration InterBase

magic_quotes_sybase = On

Pré-requis

Installation

To enable InterBase support configure PHP --with-interbase[=DIR], where DIR is the InterBase base install directory, which defaults to /usr/interbase.

Note to Win32 Users : In order to enable this module on a Windows environment, you must copy gds32.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). In case you installed the InterBase database server on the same machine PHP is running on, you will have this DLL already. Therefore you don't need to copy gds32.dll from the DLL folder.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. InterBase configuration options

Name | Default | Changeable
ibase.allow_persistent | "1" | PHP_INI_SYSTEM
ibase.max_persistent | "-1" | PHP_INI_SYSTEM
ibase.max_links | "-1" | PHP_INI_SYSTEM
ibase.default_user | NULL | PHP_INI_ALL
ibase.default_password | NULL | PHP_INI_ALL
ibase.timestampformat | "%m/%d/%Y%H:%M:%S" | PHP_INI_ALL
ibase.dateformat | "%m/%d/%Y" | PHP_INI_ALL
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL
For further details and definition of the PHP_INI_* constants see ini_set().

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

IBASE_DEFAULT (integer)

IBASE_TEXT (integer)

IBASE_UNIXTIME (integer)

IBASE_WRITE (integer)

Access mode

IBASE_READ (integer)

Access mode

IBASE_COMMITTED (integer)

Isolation level

IBASE_CONSISTENCY (integer)

Isolation level

IBASE_CONCURRENCY (integer)

Isolation level (default)

IBASE_REC_VERSION (integer)

IBASE_REC_NO_VERSION (integer)

IBASE_NOWAIT (integer)

Lock resolution

IBASE_WAIT (integer)

Lock resolution (default)

IBASE_TIMESTAMP (integer)

IBASE_DATE (integer)

IBASE_TIME (integer)

Table des matières
ibase_add_user -- Ajoute un utilisateur à une base de données de sécurité (uniquement pour IB6 ou plus récent)
ibase_affected_rows -- Retourne le nombre de lignes affectées par la dernière requête iBase
ibase_blob_add -- Ajoute des données dans un BLOB iBase fraîchement crée
ibase_blob_cancel -- Annule la création d'un BLOB iBase
ibase_blob_close -- Ferme un BLOB ibase
ibase_blob_create -- Crée un BLOB iBase pour ajouter des données
ibase_blob_echo -- Affiche le contenu d'un BLOB iBase au navigateur
ibase_blob_get -- Lit len octets de données dans un BLOB iBase ouvert
ibase_blob_import -- Créé un BLOB iBase, y copie un fichier et le referme
ibase_blob_info -- Retourne la taille d'un BLOB iBase et d'autres informations utiles
ibase_blob_open -- Ouvre un BLOB iBase pour récupérer des parties de données
ibase_close -- Ferme une connexion à une base de données Interbase
ibase_commit_ret -- Valide une transaction iBase sans la refermer
ibase_commit -- Valide une transaction iBase
ibase_connect -- Ouvre une connexion à une base de données InterBase.
ibase_delete_user -- Efface un utilisateur d'une base de données de sécurité (uniquement pour IB6 ou plus récent)
ibase_drop_db -- Supprime une base de données iBase
ibase_errcode -- Retourne le code d'erreur iBase
ibase_errmsg -- Retourne un message d'erreur
ibase_execute -- Exécute une requête iBase préparée
ibase_fetch_assoc -- Récupère une ligne du résultat d'une requête dans un tableau associatif
ibase_fetch_object -- Lit une ligne dans une base Interbase dans un objet
ibase_fetch_row -- Lit une ligne dans une base Interbase
ibase_field_info -- Lit les informations sur un champ iBase
ibase_free_event_handler -- Libère un gestionnaire d'événements iBase
ibase_free_query -- Libère la mémoire réservée par une requête préparée
ibase_free_result -- Libère un résultat iBase
ibase_gen_id -- Incrémente le générateur donné et retourne sa nouvelle valeur
ibase_modify_user -- Modifie un utilisateur dans une base de données de sécurité (uniquement pour InterBase6 ou plus récent)
ibase_name_result -- Assigne un nom à un jeu de résultats iBase
ibase_num_fields -- Retourne le nombre de colonnes dans un résultat iBase
ibase_num_params -- Retourne le nombre de paramètres dans une requête préparée iBase
ibase_param_info -- Retourne des informations à propos d'un paramètre dans une requête préparée iBase
ibase_pconnect -- Ouvre une connexion persistante à une base de données InterBase.
ibase_prepare -- Prépare une requête iBase pour lier les paramètres et l'exécuter ultérieurement
ibase_query -- Exécute une requête sur une base iBase
ibase_rollback_ret -- Annule une transaction sans la refermer
ibase_rollback -- Annule une transaction iBase
ibase_set_event_handler -- Enregistre une fonction de callback sur événement iBase
ibase_timefmt -- Fixe le format de date pour les prochaines requêtes.
ibase_trans -- Prépare une transaction iBase
ibase_wait_event -- Attend un événement iBase

Précédent | Sommaire | Suivant
ifxus_write_slob | Niveau supérieur | ibase_add_user


ibase_add_user

(PHP 4 >= 4.2.0)

ibase_add_user -- Ajoute un utilisateur à une base de données de sécurité (uniquement pour IB6 ou plus récent)

Description

bool ibase_add_user ( string server, string dba_user_name, string dba_user_password, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi ibase_modify_user() et ibase_delete_user().

Précédent | Sommaire | Suivant
InterBase | Niveau supérieur | ibase_affected_rows


ibase_affected_rows

(no version information, might be only in CVS)

ibase_affected_rows -- Retourne le nombre de lignes affectées par la dernière requête iBase

Description

int ibase_affected_rows ( resource link_identifier)

ibase_affected_rows() retourne le nombre de lignes qui ont été affectées par la dernière requête qui a été exécuté dans le contexte de transaction spécifié par link_identifier. Si link_identifier est une ressource de connexion, sa transaction par défaut est utilisée.

Voir aussi ibase_query() et ibase_execute().

Précédent | Sommaire | Suivant
ibase_add_user | Niveau supérieur | ibase_blob_add


ibase_blob_add

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_add -- Ajoute des données dans un BLOB iBase fraîchement crée

Description

bool ibase_blob_add ( resource blob_handle, string data)

ibase_blob_add() ajoute les données data dans le BLOB blob_handle, créé avec ibase_blob_create(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ibase_blob_cancel(),
ibase_blob_close(),
ibase_blob_create() et
ibase_blob_import().

Précédent | Sommaire | Suivant
ibase_affected_rows | Niveau supérieur | ibase_blob_cancel


ibase_blob_cancel

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_cancel -- Annule la création d'un BLOB iBase

Description

bool ibase_blob_cancel ( resource blob_handle)

ibase_blob_cancel() annule la création du BLOB blob_handle, créé par ibase_create_blob() si il n'a pas encore été fermé avec ibase_blob_close(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ibase_blob_close(),
ibase_blob_create() et
ibase_blob_import().

Précédent | Sommaire | Suivant
ibase_blob_add | Niveau supérieur | ibase_blob_close


ibase_blob_close

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_close -- Ferme un BLOB ibase

Description

mixed ibase_blob_close ( resource blob_handle)

ibase_blob_close() ferme le BLOB blob_handle, ouvert en lecture avec ibase_open_blob() ou en écriture avec ibase_create_blob(). Si le BLOB était lu, ibase_blob_close() retourne TRUE en cas de succès, s'il était en cours de modification, ibase_blob_close() retourne une chaîne de caractères contenant l'identifiant du BLOB qui lui a été assigné par la base de données. En cas d'échec, cette fonction retournera FALSE.

Voir aussi ibase_blob_cancel() et ibase_blob_open().

Précédent | Sommaire | Suivant
ibase_blob_cancel | Niveau supérieur | ibase_blob_create


ibase_blob_create

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_create -- Crée un BLOB iBase pour ajouter des données

Description

resource ibase_blob_create ( [resource link_identifier])

ibase_blob_create() créé un nouveau BLOB à remplir avec des données, sur la connexion InterBase link_identifier. Elle retourne un identifiant de BLOB à utiliser avec ibase_blob_add() ou FALSE en cas d'échec.

Voir aussi
ibase_blob_add(),
ibase_blob_cancel(),
ibase_blob_close() et
ibase_blob_import().

Précédent | Sommaire | Suivant
ibase_blob_close | Niveau supérieur | ibase_blob_echo


ibase_blob_echo

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_echo -- Affiche le contenu d'un BLOB iBase au navigateur

Description

bool ibase_blob_echo ( string blob_id)

ibase_blob_echo() ouvre le BLOB blob_id en lecture et envoie son contenu directement vers la sortie standard (le navigateur dans la plupart des cas). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
ibase_blob_open(),
ibase_blob_close() et
ibase_blob_get().

Précédent | Sommaire | Suivant
ibase_blob_create | Niveau supérieur | ibase_blob_get


ibase_blob_get

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_get -- Lit len octets de données dans un BLOB iBase ouvert

Description

string ibase_blob_get ( resource blob_handle, int len)

ibase_blob_get() retourne au plus len octets du BLOB blob_handle qui a été ouvert en lecture par ibase_blob_open(). Cette fonction retourne FALSE en cas d'échec.

Exemple 1. Exemple avec ibase_blob_get()

<?php
    $sql       = "SELECT blob_value FROM matable";
    $result    = ibase_query( $sql );
    $data      = ibase_fetch_object( $result );
    $blob_data = ibase_blob_info( $data->BLOB_VALUE );
    $blob_hndl = ibase_blob_open( $data->BLOB_VALUE );
    print        ibase_blob_get( $blob_hndl, $blob_data[0] );
?>
Cette exemple ne fait pas plus qu'un ibase_blob_echo( $data->BLOB_VALUE ), mais il montre comment récupérer les informations dans une $variable pour les manipuler comme vous le voulez.

Note : Il n'est pas possible de lire dans un BLOB ouvert en écriture par ibase_blob_create().

Voir aussi
ibase_blob_open(),
ibase_blob_close() et
ibase_blob_echo().

Précédent | Sommaire | Suivant
ibase_blob_echo | Niveau supérieur | ibase_blob_import


ibase_blob_import

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_import -- Créé un BLOB iBase, y copie un fichier et le referme

Description

string ibase_blob_import ( [resource link_identifier, resource file_handle])

ibase_blob_import() créé un nouveau BLOB sur la connexion iBase link_identifier, y copie le fichier file_handle en entier, le referme et en retourne l'identifiant assigné. Le pointeur de fichier est une ressource retournée par fopen(). Cette fonction retourne FALSE en cas d'échec.

Voir aussi
ibase_blob_add(),
ibase_blob_cancel(),
ibase_blob_close() et
ibase_blob_create().

Précédent | Sommaire | Suivant
ibase_blob_get | Niveau supérieur | ibase_blob_info


ibase_blob_info

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_info -- Retourne la taille d'un BLOB iBase et d'autres informations utiles

Description

array ibase_blob_info ( string blob_id)

ibase_blob_info() un tableau contenant des informations à propos du BLOB blob_id. Les informations sont la taille du BLOB, le nombre de segments qu'il contient, la taille du segment le plus large, et indiquent s'il s'agit d'un BLOB stream ou segmenté.

Précédent | Sommaire | Suivant
ibase_blob_import | Niveau supérieur | ibase_blob_open


ibase_blob_open

(PHP 3>= 3.0.7, PHP 4 )

ibase_blob_open -- Ouvre un BLOB iBase pour récupérer des parties de données

Description

resource ibase_blob_open ( string blob_id)

ibase_blob_open() ouvre le BLOB blob_id en lecture. Elle retourne une ressource BLOB à utiliser avec ibase_blob_get() ou FALSE en cas d'échec.

Voir aussi
ibase_blob_close(),
ibase_blob_echo() et
ibase_blob_get().

Précédent | Sommaire | Suivant
ibase_blob_info | Niveau supérieur | ibase_close


ibase_close

(PHP 3>= 3.0.6, PHP 4 )

ibase_close -- Ferme une connexion à une base de données Interbase

Description

bool ibase_close ( [resource connection_id])

ibase_close() ferme une connexion à une base de données Interbase. Cette fonction prend comme argument l'identifiant de connexion connection_id retourné par ibase_connect(). Si connection_id est omis, la dernière connexion ibase est fermée. Les transactions par défaut sont validées et les autres sont annulées. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ibase_connect() et ibase_pconnect().

Précédent | Sommaire | Suivant
ibase_blob_open | Niveau supérieur | ibase_commit_ret


ibase_commit_ret

(no version information, might be only in CVS)

ibase_commit_ret -- Valide une transaction iBase sans la refermer

Description

bool ibase_commit_ret ( [resource link_identifier])

Si ibase_commit_ret() est appelée sans argument, elle valide la transaction par défaut de la connexion par défaut. Si l'argument link_identifier est un identifiant de connexion, sa transaction par défaut est validée. Si l'argument link_identifier est un identifiant de transaction, celle-ci sera validée. Le contexte de transaction sera retenu, et donc, les requêtes exécutées dans cette transaction ne seront pas invalidées. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_close | Niveau supérieur | ibase_commit


ibase_commit

(PHP 3>= 3.0.7, PHP 4 )

ibase_commit -- Valide une transaction iBase

Description

bool ibase_commit ( [resource link_identifier, int trans_number])

ibase_commit() valide la transaction trans_number, qui a été préparée avec ibase_trans(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_commit_ret | Niveau supérieur | ibase_connect


ibase_connect

(PHP 3>= 3.0.6, PHP 4 )

ibase_connect -- Ouvre une connexion à une base de données InterBase.

Description

resource ibase_connect ( string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])

ibase_connect() établit une connexion avec un serveur InterBase. database doit être un chemin valide jusqu'à un fichier de base de donnés sur le serveur sur lequel il résde. Si le serveur est distant, il faut le préfixer avec un nom d'hôte 'hostname:' (TCP/IP), '//hostname/' (NetBEUI) ou 'hostname@' (IPX/SPX), en fonction du protocole de communication utilisé. username et password peuvent être spécifié dans les directives de configuration du PHP ibase.default_user et ibase.default_password. charset est le jeu de caractère par défaut de la base. buffers est le nombre de buffer de base à allouer pour le cache serveur. S'il est passé à 0 ou omis, le serveur choisira de lui-même. dialect sélectionne le dialecte SQL pour les requêtes exécutées avec cette connexion, et par défaut, il utilise le meilleur dialecte disponible.

Si un deuxième appel est fait avec ibase_connect(), en passant les mêmes arguments, une nouvelle connexion ne sera pas ouverte, mais la connexion déjà ouverte sera retournée. La connexion sera fermée dès que le script se termine, à moins qu'elle ne soit fermée explicitement avec ibase_close(), durant le script.

Exemple 1. Exemple ibase_connect()

<?php
    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query($dbh, $stmt);
    while ($row = ibase_fetch_object($sth)) {
        print $row->email . "\n";
    }
    ibase_close($dbh);
?>

Note : buffers a été ajouté en PHP 4.0.0-RC2.

Note : dialect a été ajouté en PHP 4.0.0-RC2. Il n'est opérationnel qu'avec les versions InterBase 6 et plus récentes.

Note : role a été ajouté en PHP 4.0.0-RC2. Il n'est opérationnel qu'avec les versions InterBase 5 et plus récentes.

Voir aussi ibase_pconnect() et ibase_close().

Précédent | Sommaire | Suivant
ibase_commit | Niveau supérieur | ibase_delete_user


ibase_delete_user

(PHP 4 >= 4.2.0)

ibase_delete_user -- Efface un utilisateur d'une base de données de sécurité (uniquement pour IB6 ou plus récent)

Description

bool ibase_delete_user ( string server, string dba_user_name, string dba_user_password, string user_name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi ibase_add_user() et ibase_modify_user().

Précédent | Sommaire | Suivant
ibase_connect | Niveau supérieur | ibase_drop_db


ibase_drop_db

(no version information, might be only in CVS)

ibase_drop_db -- Supprime une base de données iBase

Description

bool ibase_drop_db ( resource connection)

ibase_drop_db() supprime une base de données qui a été ouverte par ibase_connect() ou ibase_pconnect(). La base de données est refermée et supprimée du serveur. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ibase_connect() et ibase_pconnect().

Précédent | Sommaire | Suivant
ibase_delete_user | Niveau supérieur | ibase_errcode


ibase_errcode

(no version information, might be only in CVS)

ibase_errcode -- Retourne le code d'erreur iBase

Description

int ibase_errcode ( void )

ibase_errcode() retourne le code erreur résultant de l'appel le plus récent à une fonction InterBase. ibase_errcode() retourne FALSE si aucune erreur n'est survenue.

Voir aussi ibase_errmsg().

Précédent | Sommaire | Suivant
ibase_drop_db | Niveau supérieur | ibase_errmsg


ibase_errmsg

(PHP 3>= 3.0.7, PHP 4 )

ibase_errmsg -- Retourne un message d'erreur

Description

string ibase_errmsg ( void )

ibase_errmsg() retourne une chaîne contenant les messages d'erreurs.

Précédent | Sommaire | Suivant
ibase_errcode | Niveau supérieur | ibase_execute


ibase_execute

(PHP 3>= 3.0.6, PHP 4 )

ibase_execute -- Exécute une requête iBase préparée

Description

resource ibase_execute ( resource query [, int bind_args])

ibase_execute() exécute une requête préparée (et éventuellement liée) par ibase_prepare(). ibase_execute() est beaucoup plus efficace que ibase_query(), si vous effectuez plusieurs fois la même requête, en ne changeant que quelques paramètres.

Exemple 1. Exemple avec ibase_execute()

<?php
    $updates = array(
        1 => 'Eric',
        5 => 'Filip',
        7 => 'Larry'
    );
    $query = ibase_prepare("UPDATE FOO SET BAR = ? WHERE BAZ = ?");
    while (list($baz, $bar) = each($updates)) {
        ibase_execute($query, $bar, $baz);
    }
?>

Précédent | Sommaire | Suivant
ibase_errmsg | Niveau supérieur | ibase_fetch_assoc


ibase_fetch_assoc

(PHP 4 >= 4.3.0)

ibase_fetch_assoc -- Récupère une ligne du résultat d'une requête dans un tableau associatif

Description

array ibase_fetch_assoc ( resource result [, int blob_flag])

ibase_fetch_assoc() retourne un tableau associatif qui correspond à la ligne récupérée. Les appels suivants renvoient la ligne suivante dans le jeu de résultats, ou FALSE si il n'y a plus de lignes.

ibase_fetch_assoc() récupère une ligne de données à partir de result. Si deux ou plus colonnes ont le même nom de champ, la dernière colonne prendra précédence. Pour accéder aux autres colonnes du même nom, vous devez soit les accéder avec leurs indices numériques en utilisant ibase_fetch_row() ou en utilisant des alias dans votre requête.

Voir aussi
ibase_query(),
ibase_fetch_row(), et
ibase_fetch_object().

Précédent | Sommaire | Suivant
ibase_execute | Niveau supérieur | ibase_fetch_object


ibase_fetch_object

(PHP 3>= 3.0.7, PHP 4 )

ibase_fetch_object -- Lit une ligne dans une base Interbase dans un objet

Description

object ibase_fetch_object ( resource result_id [, int blob_flag])

ibase_fetch_object() lit une ligne dans une base Interbase et la place dans un pseudo objet. ibase_fetch_object() prend comme argument l'identifiant de résultat result_id obtenu de ibase_query() ou ibase_execute().

Exemple 1. Exemple avec ibase_fetch_object()

<php
    $dbh = ibase_connect ($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query ($dbh, $stmt);
    while ($row = ibase_fetch_object ($sth)) {
        print $row->email . "\n";
    }
    ibase_close ($dbh);
?>

Voir aussi ibase_fetch_row() et ibase_fetch_assoc().

Précédent | Sommaire | Suivant
ibase_fetch_assoc | Niveau supérieur | ibase_fetch_row


ibase_fetch_row

(PHP 3>= 3.0.6, PHP 4 )

ibase_fetch_row -- Lit une ligne dans une base Interbase

Description

array ibase_fetch_row ( resource result_identifier [, int blob_flag])

ibase_fetch_row() retourne la prochaine ligne spécifiée dans le résultat obtenu de ibase_query(), ou FALSE si il n'y a plus de lignes.

ibase_fetch_row() lit une ligne de données dans le résultat, sous la forme d'un tableau numérique. Chaque colonne est stockée avec un offset différent, commençant à 0.

Les appels suivants à ibase_fetch_row() vont retourner la prochaine ligne dans le résultat, ou bien FALSE si il n'y a plus de ligne.

Voir aussi ibase_fetch_assoc() et ibase_fetch_row().

Précédent | Sommaire | Suivant
ibase_fetch_object | Niveau supérieur | ibase_field_info


ibase_field_info

(PHP 3>= 3.0.7, PHP 4 )

ibase_field_info -- Lit les informations sur un champ iBase

Description

array ibase_field_info ( resource result, int field_number)

ibase_field_info() retourne un tableau contenant les informations sur le champ numéro field_number après une requête de SELECT. Le tableau contient les index name (nom), alias, relation, length (taille), type.

Exemple 1. Exemple avec ibase_field_info()

<para>
    <example>
     <programlisting role="php">
<?php
    $rs = ibase_query("Select * from matable");
    $coln = ibase_num_fields($rs);
    for ($i=0 ; $i < $coln ; $i++) {
        $col_info = ibase_field_info($rs, $i);
        echo "Nom : " . $col_info['name'] . "\n";
        echo "Alias : " . $col_info['alias'] . "\n";
        echo "Relation : " . $col_info['relation'] . "\n";
        echo "Taille : " . $col_info['length'] . "\n";
        echo "Type : " . $col_info['type'] . "\n";
    }
?>

Voir aussi ibase_num_fields().

Précédent | Sommaire | Suivant
ibase_fetch_row | Niveau supérieur | ibase_free_event_handler


ibase_free_event_handler

(no version information, might be only in CVS)

ibase_free_event_handler -- Libère un gestionnaire d'événements iBase

Description

bool ibase_free_event_handler ( resource event)

ibase_free_event_handler() annule le gestionnaire d'événements enregistré, spécifié par event. La fonction de callback ne sera plus exécutée pour les événements qu'elle devait prendre en charge. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ibase_set_event_handler().

Précédent | Sommaire | Suivant
ibase_field_info | Niveau supérieur | ibase_free_query


ibase_free_query

(PHP 3>= 3.0.6, PHP 4 )

ibase_free_query -- Libère la mémoire réservée par une requête préparée

Description

bool ibase_free_query ( resource query)

ibase_free_query() libère la mémoire réservée par une requête préparée par ibase_prepare(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_free_event_handler | Niveau supérieur | ibase_free_result


ibase_free_result

(PHP 3>= 3.0.6, PHP 4 )

ibase_free_result -- Libère un résultat iBase

Description

bool ibase_free_result ( resource result_identifier)

ibase_free_result() libère les ressources liées au résultat result_identifier. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_free_query | Niveau supérieur | ibase_gen_id


ibase_gen_id

(no version information, might be only in CVS)

ibase_gen_id -- Incrémente le générateur donné et retourne sa nouvelle valeur

Description

int ibase_gen_id ( [resource link_identifier [, string generator [, int increment]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ibase_free_result | Niveau supérieur | ibase_modify_user


ibase_modify_user

(PHP 4 >= 4.2.0)

ibase_modify_user -- Modifie un utilisateur dans une base de données de sécurité (uniquement pour InterBase6 ou plus récent)

Description

bool ibase_modify_user ( string server, string dba_user_name, string dba_user_password, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi ibase_add_user() et ibase_delete_user().

Précédent | Sommaire | Suivant
ibase_gen_id | Niveau supérieur | ibase_name_result


ibase_name_result

(no version information, might be only in CVS)

ibase_name_result -- Assigne un nom à un jeu de résultats iBase

Description

bool ibase_name_result ( resource result, string name)

ibase_name_result() assigne un nom à un jeu de résultats. Ce nom peut être utilisé plus tard dans les requêtes de type UPDATE|DELETE ... WHERE CURRENT OF name. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ibase_name_result()

<?php
    $result = ibase_query( "SELECT field1,field2 FROM table FOR UPDATE" );
    ibase_name_result($result,"my_cursor");

    $updateqry = ibase_prepare("UPDATE table SET field2 = ? WHERE CURRENT OF my_cursor");

    for ($i = 0; ibase_fetch_row($result); ++$i) {
        ibase_execute($updateqry,$i);
    }
?>

Voir aussi ibase_prepare() et ibase_execute().

Précédent | Sommaire | Suivant
ibase_modify_user | Niveau supérieur | ibase_num_fields


ibase_num_fields

(PHP 3>= 3.0.7, PHP 4 )

ibase_num_fields -- Retourne le nombre de colonnes dans un résultat iBase

Description

int ibase_num_fields ( resource result_id)

ibase_num_fields() retourne le nombre de colonnes dans le résultat iBase result_id.

Exemple 1. Exemple avec ibase_num_fields()

<?php
    $rs = ibase_query("SELECT * FROM matable");
    $coln = ibase_num_fields($rs);
    for ($i = 0; $i < $coln; $i++) {
        $col_info = ibase_field_info($rs, $i);
        echo "Nom : " . $col_info['name'] . "\n";
        echo "Alias : " . $col_info['alias'] . "\n";
        echo "Relation : " . $col_info['relation'] . "\n";
        echo "Taille : " . $col_info['length'] . "\n";
        echo "Type : " . $col_info['type'] . "\n";
    }
?>

Voir aussi ibase_field_info().

Précédent | Sommaire | Suivant
ibase_name_result | Niveau supérieur | ibase_num_params


ibase_num_params

(no version information, might be only in CVS)

ibase_num_params -- Retourne le nombre de paramètres dans une requête préparée iBase

Description

int ibase_num_params ( resource query)

ibase_num_params() retourne le nombre de paramètres dans la requête spécifiée par query. C'est le nombre d'arguments de substitution qui doivent être présents lors de l'appel de ibase_execute().

Voir aussi ibase_prepare() et ibase_param_info().

Précédent | Sommaire | Suivant
ibase_num_fields | Niveau supérieur | ibase_param_info


ibase_param_info

(no version information, might be only in CVS)

ibase_param_info -- Retourne des informations à propos d'un paramètre dans une requête préparée iBase

Description

array ibase_param_info ( resource query, int param_number)

ibase_param_info() retourne un tableau avec des informations à propos d'un paramètre après qu'une requête n'ait été préparée. Le tableau contient les entrées name, alias, relation, length, type (nom, alias, relation, taille, type).

Voir aussi ibase_field_info() et ibase_num_params().

Précédent | Sommaire | Suivant
ibase_num_params | Niveau supérieur | ibase_pconnect


ibase_pconnect

(PHP 3>= 3.0.6, PHP 4 )

ibase_pconnect -- Ouvre une connexion persistante à une base de données InterBase.

Description

resource ibase_pconnect ( string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])

ibase_pconnect() se comporte similairement à ibase_connect(), avec deux différences majeures : la première est que, lors de la connexion, la fonction va essayer de trouver une connexion (persistante) déjà ouverte. Si elle la trouve, cette dernière sera retournée, plutôt qu'une nouvelle connexion. Sinon, une nouvelle connexion sera ouverte. La deuxième est que la connexion ne sera pas fermée à la fin du script, mais restera ouverte pour utilisation ultérieure. (ibase_close() ne fermera pas une connexion ouverte avec ibase_pconnect()). Ce type de lien est alors dit 'persistant'.

Note : buffers a été ajouté en PHP 4.0.0-RC2.

Note : dialect a été ajouté en PHP 4-RC2. Il n'est opérationnel qu'avec les versions InterBase 6 et plus récentes.

Note : role a été ajouté en PHP 4-RC2. Il n'est opérationnel qu'avec les versions InterBase 5 et plus récentes.

Voir aussi ibase_close() et ibase_connect() pour plus de détails sur les arguments de cette fonction.

Précédent | Sommaire | Suivant
ibase_param_info | Niveau supérieur | ibase_prepare


ibase_prepare

(PHP 3>= 3.0.6, PHP 4 )

ibase_prepare -- Prépare une requête iBase pour lier les paramètres et l'exécuter ultérieurement

Description

resource ibase_prepare ( [resource link_identifier, string query])

ibase_prepare() prépare une requête pour l'exécuter

Précédent | Sommaire | Suivant
ibase_pconnect | Niveau supérieur | ibase_query


ibase_query

(PHP 3>= 3.0.6, PHP 4 )

ibase_query -- Exécute une requête sur une base iBase

Description

resource ibase_query ( [resource link_identifier, string query [, int bind_args]])

ibase_query() exécute la requête query
sur une base Interbase, et retourne un identifiant de résultat,
à utiliser avec ibase_fetch_row(),
ibase_free_result() et/ou ibase_free_query().
ibase_query() retourne FALSE si la requête
échoue.

Exemple 1. Exemple avec ibase_query()

<?php

    $host = 'localhost:/path/to/your.gdb';

    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';

    $sth = ibase_query($dbh, $stmt) or die(ibase_errmsg());

?>

Note : Si vous recevez une erreur du type "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (ceci survient lorsque vous essayez d'utiliser des caractères accentués) avec la fonction ibase_query(), c'est que vous devez choisir un jeu de caractères (i.e. ISO8859_1 ou votre jeu courant).

Voir aussi
ibase_errmsg(),
ibase_fetch_row(),
ibase_fetch_object() et
ibase_free_result().

Précédent | Sommaire | Suivant
ibase_prepare | Niveau supérieur | ibase_rollback_ret


ibase_rollback_ret

(no version information, might be only in CVS)

ibase_rollback_ret -- Annule une transaction sans la refermer

Description

bool ibase_rollback_ret ( [resource link_identifier])

Si ibase_rollback_ret() est appelée sans argument, elle annule la transaction par défaut du lien par défaut. Si l'argument link_identifier est un identifiant de connexion, la transaction par défaut de cette connexion sera annulée. Si l'argument link_identifier est un identifiant de transaction, celle-ci sera annulée. Le contexte de transaction sera retenu, et donc, les requêtes exécutées dans cette transaction ne seront pas invalidées. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_query | Niveau supérieur | ibase_rollback


ibase_rollback

(PHP 3>= 3.0.7, PHP 4 )

ibase_rollback -- Annule une transaction iBase

Description

int ibase_rollback ( [int link_identifier, int trans_number])

ibase_rollback() annule la transaction trans_number qui a été préparée avec ibase_trans(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ibase_rollback_ret | Niveau supérieur | ibase_set_event_handler


ibase_set_event_handler

(no version information, might be only in CVS)

ibase_set_event_handler -- Enregistre une fonction de callback sur événement iBase

Description

resource ibase_set_event_handler ( [resource connection, callback event_handler, string event_name1 [, string event_name2 [, string ...]]])

ibase_set_event_handler() enregistre la fonction utilisateur PHP event_handler en tant que gestionnaire d'événements pour les événements spécifiés par event_name1, event_name2... La fonction event_handler callback est appelée avec le nom de l'événement et la ressource de connexion en tant qu'arguments dès qu'un événement spécifié est posté dans la base de données. La fonction callback doit retourner FALSE si le gestionnaire doit être annulé. Toute autre valeur de retour est ignorée.

Exemple 1. Exemple avec ibase_set_event_handler()

<?php

    function event_handler($event_name, $link)
    {
        if ($event_name=="NEW ORDER") {
            // Traitement du nouvel ordre
            ibase_query($link, "UPDATE orders SET status='handled'");
        } else if ($event_name=="DB_SHUTDOWN") {
            // Lib&eacute;ration du gestionnaire
            return false;
        }
    }

    ibase_set_event_handler($link,"event_handler","NEW_ORDER","DB_SHUTDOWN");
?>

La valeur retournée est une ressource d'événement. Elle peut être utilisée pour libérer le gestionnaire d'événements en utilisant ibase_free_event_handler().

Voir aussi ibase_free_event_handler() et ibase_wait_event().

Précédent | Sommaire | Suivant
ibase_rollback | Niveau supérieur | ibase_timefmt


ibase_timefmt

(PHP 3>= 3.0.6, PHP 4 )

ibase_timefmt -- Fixe le format de date pour les prochaines requêtes.

Description

int ibase_timefmt ( string format [, int columntype])

ibase_timefmt() fixe le format des colonnes de type dates, heure et timestamp, retournées par les requêtes. En interne, les colonnes sont formatées par la fonction C strftime() : reportez-vous à sa documentation pour connaître la structure de la chaîne de format. columntype est une des constantes suivantes : IBASE_TIMESTAMP, IBASE_DATE ou IBASE_TIME. Si elle est omise, la valeur par défaut est IBASE_TIMESTAMP, pour compatibilité ascendante.

Exemple 1. Exemple avec ibase_timefmt()

<?php
    // Les colonnes TIME de InterBase 6 seront retourn&eacute;es avec
    // la forme '05 heures 37 minutes'.
    ibase_timefmt("%H heures %M minutes", IBASE_TIME);
?>

Vous pouvez aussi modifier les formats par défaut avec les directives PHP ibase.timestampformat, ibase.dateformat et ibase.timeformat.

Note : columntype a été ajouté en PHP 4.0. Il n'a aucun sens jusqu'à InterBase version 6 et plus récent.

Note : Une modification incompatible avec l'existant est apparue en PHP 4.0 lorsque la directive PHP ibase.timeformat a été renommée en ibase.timestampformat et les directives ibase.dateformat et ibase.timeformat ont été ajoutée, de manière à les adapter à leur fonction.

Précédent | Sommaire | Suivant
ibase_set_event_handler | Niveau supérieur | ibase_trans


ibase_trans

(PHP 3>= 3.0.7, PHP 4 )

ibase_trans -- Prépare une transaction iBase

Description

resource ibase_trans ( [int trans_args [, resource link_identifier]])

ibase_trans() prépare une transaction sur la connexion InterBase link_identifier.

trans_args peut être une combinaison des constantes suivantes : IBASE_READ, IBASE_WRITE, IBASE_COMMITED, IBASE_CONSISTENCY, IBASE_CONCURRENCY, IBASE_REC_VERSION, IBASE_REC_NO_VERSION, IBASE_WAIT et IBASE_NOWAIT.

Précédent | Sommaire | Suivant
ibase_timefmt | Niveau supérieur | ibase_wait_event


ibase_wait_event

(no version information, might be only in CVS)

ibase_wait_event -- Attend un événement iBase

Description

string ibase_wait_event ( [resource connection, string event_name1 [, string event_name2 [, string ...]]])

ibase_wait_event() suspend l'exécution du script jusqu'à ce que l'un des événements spécifiés par event_name1, event_name2, ... soit posté par la base de données. Le nom de l'événement qui a été posté est alors retourné. Cette fonction accepte jusqu'à 15 arguments événements.

Voir aussi ibase_set_event_handler() et ibase_free_event_handler().

Précédent | Sommaire | Suivant
ibase_trans | Niveau supérieur | Ingres II


Ingres II

Manuel PHP
Précédent Suivant

XLV. Ingres II

Ces fonctions permettent l'accès à un serveur de base de données Ingres II.

Pour pouvoir utiliser ces fonctions, vous devez compiler PHP avec le support Ingres, en utilisant l'option --with-ingres. Ceci nécessite les fichiers de bibliothèque de l'en-tête d'Open API qui sont inclus dans Ingres II. Si la variable d'environnement II_SYSTEM n'est pas correctement initialisée, vous devrez utiliser --with-ingres=REP pour spécifier le répertoire où a été installé Ingres.

Lorsque cette extension est utilisée avec Apache, si Apache ne démarre pas et émet l'erreur "PHP Fatal error: Unable to start ingres_ii module in Unknown on line 0", assurez-vous que la variable d'environnement II_SYSTEM est correctement initialisée. Il suffit souvent d'ajouter "export II_SYSTEM="/home/ingres/II" dans le script qui démarre Apache, juste avant le lancement de httpd.

Note : Si vous avez déjà utilisé des extensions PHP permettant l'accès à d'autres serveurs de bases de données, notez qu'Ingres n'accepte pas de requêtes et/ou de transactions concurrentes sur la même connexion, et donc vous ne trouverez aucun identifiant de résultat ou de transaction dans cette extension. Le résultat d'une requête doit être traité avant d'envoyer une autre requête, et une transaction doit être validée ("commit") ou annulée ("roll back") avant de pouvoir en ouvrir une nouvelle (l'ouverture de transaction est fait automatiquement à l'envoi de la première requête).

Table des matières
ingres_autocommit -- Active ou désactive le mode autocommit.
ingres_close -- Ferme une connexion à un serveur Ingres.
ingres_commit -- Valide une transaction.
ingres_connect -- Ouvre une connexion à un serveur Ingres.
ingres_fetch_array -- Récupère une ligne de résultat dans un tableau.
ingres_fetch_object -- Récupère une ligne de résultat dans un objet.
ingres_fetch_row -- Récupère une ligne de résultat dans un tableau énuméré.
ingres_field_length -- Retourne la taille d'un champ.
ingres_field_name -- Retourne le nom d'un champ dans le résultat d'une requête.
ingres_field_nullable -- Teste si un champ est annulable.
ingres_field_precision -- Retourne la précision d'un champ.
ingres_field_scale -- Retourne l'échelle d'un champ.
ingres_field_type -- Retourne le type d'un champ dans le résultat d'une requête.
ingres_num_fields -- Retourne le nombre de champs renvoyés par la dernière requête.
ingres_num_rows -- Retourne le nombre de lignes affectées ou retournées par la dernière requête.
ingres_pconnect -- Ouvre une connexion persistante à un serveur Ingres.
ingres_query -- Envoie une requête SQL à un serveur Ingres II.
ingres_rollback -- Annule une transaction.

Précédent | Sommaire | Suivant
ibase_wait_event | Niveau supérieur | ingres_autocommit


ingres_autocommit

(PHP 4 >= 4.0.2)

ingres_autocommit -- Active ou désactive le mode autocommit.

Description

boolean ingres_autocommit ( [resource link])

ingres_autocommit() est appelée juste avant l'ouverture d'une transaction (avant le premier appel à ingres_query() ou juste après un appel à ingres_rollback() ou ingres_commit()) pour changer l'état du mode "autocommit" (ce mode fonctionne comme une bascule). Lorsque le script débute le mode autocommit est toujours désactivé.

Lorsque le mode autocommit est activé, chaque requête est automatiquement commise (validée) par le serveur, comme si ingres_commit() était appelée après chaque appel à ingres_query().

Voir aussi
ingres_query(),
ingres_rollback() et
ingres_commit().

Précédent | Sommaire | Suivant
Ingres II | Niveau supérieur | ingres_close


ingres_close

(PHP 4 >= 4.0.2)

ingres_close -- Ferme une connexion à un serveur Ingres.

Description

boolean ingres_close ( [resource link])

ingres_close() retourne TRUE en cas de succès, et FALSE sinon.

ingres_close() ferme la connexion au serveur Ingres associée au lien spécifié. Si le paramètre link n'est pas spécifié, le dernier lien ouvert est utilisé.

Habituellement l'appel à ingres_close() n'est pas nécessaire, car il ne ferme pas les connexions persistantes, et toutes les connexions non-persistantes sont automatiquement fermées à la fin du script.

Voir aussi ingres_connect() et ingres_pconnect().

Précédent | Sommaire | Suivant
ingres_autocommit | Niveau supérieur | ingres_commit


ingres_commit

(PHP 4 >= 4.0.2)

ingres_commit -- Valide une transaction.

Description

boolean ingres_commit ( [resource link])

ingres_commit() valide la transaction ouverte, ce qui rend permanentes toutes les modifications faites sur la base de données au cours de cette transaction

Ceci ferme la transaction. Une nouvelle transaction peut être ouverte en envoyant une requête à l'aide de ingres_query().

Vous pouvez aussi faire en sorte que le serveur valide automatiquement les changements après chaque requête en appelant ingres_autocommit() avant l'ouverture d'une transaction.

Voir aussi
ingres_query(),
ingres_rollback() et
ingres_autocommit().

Précédent | Sommaire | Suivant
ingres_close | Niveau supérieur | ingres_connect


ingres_connect

(PHP 4 >= 4.0.2)

ingres_connect -- Ouvre une connexion à un serveur Ingres.

Description

resource ingres_connect ( [string database [, string username [, string password]]])

ingres_connect() retourne une ressource représentant un lien Ingres II en cas de succès, et FALSE sinon.

ingres_connect() établit une connexion avec la base de données Ingres désignée par database, qui suit la syntaxe [node_id::]dbname[/svr_class].

Si certains paramétres sont manquants, ingres_connect() utilise les valeurs de ingres.default_database, ingres.default_user et ingres.default_password indiquées dans php.ini.

La connexion est fermée lorsque le script se termine ou en cas d'appel à ingres_close().

Toutes les autres fonctions Ingres utilisent le dernier lien ouvert comme lien par défaut, il n'est donc nécessaire de conserver la valeur de retour qu'en cas d'utilisation de plus d'un lien en même temps.

Exemple 1. Exemple pour ingres_connect()

<?php
    $link = ingres_connect("mydb", "user", "pass")
        or die("Erreur de connexion");
    print("Connexion réussie");
    ingres_close($link);
?>

Exemple 2. Exemple pour ingres_connect() utilisant le lien par défaut

<?php
    ingres_connect("madb", "user", "pass")
        or die("Erreur de connexion");
    print("Connexion réussie");
    ingres_close();
?>

Voir aussi ingres_pconnect() et ingres_close().

Précédent | Sommaire | Suivant
ingres_commit | Niveau supérieur | ingres_fetch_array


ingres_fetch_array

(PHP 4 >= 4.0.2)

ingres_fetch_array -- Récupère une ligne de résultat dans un tableau.

Description

array ingres_fetch_array ( [int result_type [, resource link]])

ingres_fetch_array() renvoie un tableau correspondant à la ligne récupérée, ou FALSE s'il n'y a plus de ligne à récupérer.

Cette fonction est une version améliorée de ingres_fetch_row(). En plus de stocker les données dans un tableau à indices numériques, elle peut aussi les enregistrer dans un tableau associatif, en utilisant les noms des champs comme indices.

Si plusieurs colonnes ont le même nom, la dernière colonne aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser l'index numérique, ou faire un alias pour chaque colonne.

<?php
ingres_query(select t1.f1 as foo t2.f1 as bar from t1, t2);
$result = ingres_fetch_array();
$foo = $result["foo"];
$bar = $result["bar"];
?>

result_type peut valoir II_NUM pour un tableau à indices numériques, II_ASSOC pour un tableau associatif, ou II_BOTH (défaut) pour un tableau mixte (accessible selon les 2 méthodes).

Du point de vue de la rapidité, cette fonction est identique à ingres_fetch_object(), et presque aussi rapide que ingres_fetch_row() (la différence est insignifiante).

Exemple 1. Exemple pour ingres_fetch_array()

<?php
  ingres_connect($database, $user, $password);
  ingres_query("select * from table");
  while ($row = ingres_fetch_array()) {
    echo $row["user_id"]; // utilisation du tableau associatif
    echo $row["fullname"];
    echo $row[1];         // utilisation du tableau à indices numériques
    echo $row[2];
  }
?>

Voir aussi
ingres_query(),
ingres_num_fields(),
ingres_field_name(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_connect | Niveau supérieur | ingres_fetch_object


ingres_fetch_object

(PHP 4 >= 4.0.2)

ingres_fetch_object -- Récupère une ligne de résultat dans un objet.

Description

object ingres_fetch_object ( [int result_type [, resource link]])

ingres_fetch_object() renvoie un objet correspondant à la ligne (tuple) récupérée, ou FALSE s'il n'y a plus de ligne à récupérer.

ingres_fetch_object() est similaire à ingres_fetch_array(), avec une différence : la valeur de retour est un objet et non un tableau. Indirectement, cela signifie qu'il n'est possible d'accéder aux données qu'avec les noms des champs, et pas avec leur numéro (les nombres ne sont pas des noms valides de propriété).

Le paramètre optionnel result_type est une constante qui peut prendre les valeurs II_ASSOC, II_NUM, et II_BOTH (par défaut).

Du point de vue de la rapidité, cette fonction est identique à ingres_fetch_array(), et presque aussi rapide que ingres_fetch_row() (la différence est insignifiante).

Exemple 1. Exemple pour ingres_fetch_object()

<?php
ingres_connect($database, $user, $password);
ingres_query("select * from table");
while ($row = ingres_fetch_object()) {
    echo $row->user_id;
    echo $row->fullname;
}
?>

Voir aussi
ingres_query(),
ingres_num_fields(),
ingres_field_name(),
ingres_fetch_array() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_fetch_array | Niveau supérieur | ingres_fetch_row


ingres_fetch_row

(PHP 4 >= 4.0.2)

ingres_fetch_row -- Récupère une ligne de résultat dans un tableau énuméré.

Description

array ingres_fetch_row ( [resource link])

ingres_fetch_row() renvoie un tableau correspondant à la ligne récupérée, ou FALSE s'il n'y a plus de ligne à récupérer. La ligne est stockée dans un tableau à indices numériques, le premier champs étant à l'indice 1.

Les appels successifs à ingres_fetch_row() retournent les lignes suivantes du résultat, ou FALSE s'il n'y a plus de lignes.

Exemple 1. Exemple pour ingres_fetch_row()

<?php
ingres_connect($database, $user, $password);
ingres_query ("select * from table");
while ($row = ingres_fetch_row()) {
    echo $row[1];
    echo $row[2];
}
?>

Voir aussi
ingres_num_fields(),
ingres_query(),
ingres_fetch_array() et
ingres_fetch_object().

Précédent | Sommaire | Suivant
ingres_fetch_object | Niveau supérieur | ingres_field_length


ingres_field_length

(PHP 4 >= 4.0.2)

ingres_field_length -- Retourne la taille d'un champ.

Description

int ingres_field_length ( int index [, resource link])

ingres_field_length() retourne la taille d'un champ. Il s'agit du nombre d'octets utilisés par le serveur pour stocker ce champ. Pour plus d'informations, voir le Guide de l'utilisateur d'Ingres/OpenAPI - Annexe C.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_fetch_row | Niveau supérieur | ingres_field_name


ingres_field_name

(PHP 4 >= 4.0.2)

ingres_field_name -- Retourne le nom d'un champ dans le résultat d'une requête.

Description

string ingres_field_name ( int index [, resource link])

ingres_field_name() retourne le nom d'un champ dans le résultat d'une requête, ou FALSE en cas d'échec.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_length | Niveau supérieur | ingres_field_nullable


ingres_field_nullable

(PHP 4 >= 4.0.2)

ingres_field_nullable -- Teste si un champ est annulable.

Description

boolean ingres_field_nullable ( int index [, resource link])

ingres_field_nullable() retourne TRUE si le champ peut recevoir la valeur NULL et FALSE dans le cas contraire.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_name | Niveau supérieur | ingres_field_precision


ingres_field_precision

(PHP 4 >= 4.0.2)

ingres_field_precision -- Retourne la précision d'un champ.

Description

int ingres_field_precision ( int index [, resource link])

ingres_field_precision() retourne la précision d'un champ. Cette valeur est utilisée uniquement pour les types de données SQL décimal, float et money. Pour plus d'informations, voir le Guide de l'utilisateur d'Ingres/OpenAPI - Annexe C.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_nullable | Niveau supérieur | ingres_field_scale


ingres_field_scale

(PHP 4 >= 4.0.2)

ingres_field_scale -- Retourne l'échelle d'un champ.

Description

int ingres_field_scale ( int index [, resource link])

ingres_field_scale() retourne l'échelle (scale) d'un champ. Cette valeur n'est utilisée que pour le type de données SQL décimal. Pour plus d'informations, voir le Guide de l'utilisateur d'Ingres/OpenAPI - Annexe C.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_precision | Niveau supérieur | ingres_field_type


ingres_field_type

(PHP 4 >= 4.0.2)

ingres_field_type -- Retourne le type d'un champ dans le résultat d'une requête.

Description

string ingres_field_type ( int index [, resource link])

ingres_field_type() retourne le type d'un champ dans le résultat d'une requête, ou FALSE en cas d'échec. Exemples de types renvoyés par cette fonction : "IIAPI_BYTE_TYPE", "IIAPI_CHA_TYPE", "IIAPI_DTE_TYPE", "IIAPI_FLT_TYPE", "IIAPI_INT_TYPE", "IIAPI_VCH_TYPE". Certains de ces types correspondent à plus d'un type SQL, selon la taille du champ (voir ingres_field_length()). Par exemple "IIAPI_FLT_TYPE" peut être un float4 ou un float8. Pour plus d'informations, voir le Guide de l'utilisateur d'Ingres/OpenAPI - Annexe C.

index est le numéro du champ et doit être compris entre 1 et la valeur donnée par ingres_num_fields().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_scale | Niveau supérieur | ingres_num_fields


ingres_num_fields

(PHP 4 >= 4.0.2)

ingres_num_fields -- Retourne le nombre de champs renvoyés par la dernière requête.

Description

int ingres_num_fields ( [resource link])

ingres_num_fields() retourne le nombre de champs du résultat renvoyé par le serveur Ingres après un appel à ingres_query().

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_field_type | Niveau supérieur | ingres_num_rows


ingres_num_rows

(PHP 4 >= 4.0.2)

ingres_num_rows -- Retourne le nombre de lignes affectées ou retournées par la dernière requête.

Description

int ingres_num_rows ( [resource link])

Pour les requêtes DELETE, INSERT, UPDATE ingres_num_rows() retourne le nombre de lignes (tuples) affectées par la requête. Pour les autres requêtes, ingres_num_rows() retourne le nombre de lignes du résultat de la requête.

Note : Cette fonction est conçue principalement pour obtenir le nombre de tuples modifiés dans la base de données. Si cette fonction est appelée avant d'utiliser ingres_fetch_array(), ingres_fetch_object() ou ingres_fetch_row(), le serveur efface les données du résultat et le script ne pourra plus les obtenir.

Il faut dans ce cas récupérer les données du résultat en utilisant une de ces 3 fonctions dans une boucle jusqu'à ce qu'elle renvoie FALSE, ce qui indique qu'il n'y a plus de résultats à récupérer.

Voir aussi
ingres_query(),
ingres_fetch_array(),
ingres_fetch_object() et
ingres_fetch_row().

Précédent | Sommaire | Suivant
ingres_num_fields | Niveau supérieur | ingres_pconnect


ingres_pconnect

(PHP 4 >= 4.0.2)

ingres_pconnect -- Ouvre une connexion persistante à un serveur Ingres.

Description

resource ingres_pconnect ( [string database [, string username [, string password]]])

ingres_pconnect() retourne une ressource représentant un lien (link) Ingres II en cas de succès, et FALSE sinon.

Voir ingres_connect() pour le détail des paramètres et des exemples. Il n'y a que 2 différences entre ingres_pconnect() et ingres_connect() : Tout d'abord, à la connexion, la fonction cherche un lien persistant déjà ouvert avec les mêmes paramètres. Si un tel lien est trouvé, un identificateur pour ce lien est retourné au lieu d'établir une nouvelle connexion. Ensuite, la connexion vers le serveur Ingres n'est pas fermée lorsque le script se termine. En fait, le lien reste ouvert pour pouvoir être réutilisé (ingres_close() ne ferme pas les liens établis avec ingres_pconnect()). C'est pourquoi ce type de lien est dit 'persistant'.

Voir aussi ingres_connect() et ingres_close().

Précédent | Sommaire | Suivant
ingres_num_rows | Niveau supérieur | ingres_query


ingres_query

(PHP 4 >= 4.0.2)

ingres_query -- Envoie une requête SQL à un serveur Ingres II.

Description

boolean ingres_query ( string query [, resource link])

ingres_query() retourne TRUE en cas de succès, et FALSE sinon.

ingres_query() envoie la requête query au serveur Ingres. La requête doit être valide (voir le guide de référence SQL pour Ingres).

La requête s'ajoute à la transaction en cours. S'il n'y a pas de transaction ouverte, ingres_query() en ouvre une nouvelle. Pour fermer une transaction, vous pouvez soit appeler ingres_commit() pour valider les changements effectués sur la base de données ou ingres_rollback() pour les annuler. Lorsque le script se termine, toute transaction ouverte est annulée (par appel à ingres_rollback()). Vous pouvez aussi utiliser ingres_autocommit() avant d'ouvrir une transaction pour que chaque requête SQL soit validée immédiatement et automatiquement.

Certains types de requêtes SQL ne peuvent pas être envoyés par ingres_query() :

  • CLOSE (voir ingres_close()).

  • COMMIT (voir ingres_commit()).

  • CONNECT (voir ingres_connect()).

  • DISCONNECT (voir ingres_close()).

  • get dbevent

  • PREPARE TO COMMIT

  • ROLLBACK (voir ingres_rollback()).

  • savepoint

  • SET AUTOCOMMIT (voir ingres_autocommit()).

  • Les requêtes relatives aux curseurs ne sont pas supportées.

Exemple 1. Exemple pour ingres_query()

<?php
ingres_connect($database, $user, $password);
ingres_query("select * from table");
while ($row = ingres_fetch_row()) {
    echo $row[1];
    echo $row[2];
}
?>

Voir aussi
ingres_fetch_array(),
ingres_fetch_object(),
ingres_fetch_row(),
ingres_commit(),
ingres_rollback() et
ingres_autocommit().

Précédent | Sommaire | Suivant
ingres_pconnect | Niveau supérieur | ingres_rollback


ingres_rollback

(PHP 4 >= 4.0.2)

ingres_rollback -- Annule une transaction.

Description

boolean ingres_rollback ( [resource link])

ingres_rollback() annule (roll back) la transaction ouverte, ce qui annule les modifications faites sur la base de données au cours de cette transaction.

Ceci ferme la transaction. Une nouvelle transaction peut être ouverte en envoyant une requête à l'aide de ingres_query().

Voir aussi
ingres_query(),
ingres_commit() et
ingres_autocommit().

Précédent | Sommaire | Suivant
ingres_query | Niveau supérieur | IRC


IRC

Manuel PHP
Précédent Suivant

XLVI. IRC

Client pour IRC : Internet Relay Chat

Basé sur IRCG, de Sascha Schumann.

Table des matières
ircg_channel_mode -- Modifie les flags du canal
ircg_disconnect -- Ferme la connexion avec un serveur
ircg_fetch_error_msg -- Retourne l'erreur rencontrée par la dernière opération IRCG
ircg_get_username -- Retourne le nom d'utilisateur pour la connexion
ircg_html_encode -- Prépare l'affichage pour le HTML
ircg_ignore_add -- Ajoute un utilisateur sur la liste des utilisateurs indésirables
ircg_ignore_del -- Supprime un utilisateur de la liste des utilisateurs indésirables
ircg_is_conn_alive -- Vérifie l'état de la connexion
ircg_join -- Rejoint un canal IRC
ircg_kick -- Expulse un utilisateur d'un canal
ircg_lookup_format_messages -- Sélectionne un format d'affichage pour les messages IRC
ircg_msg -- Envoie un message à un canal ou un utilisateur
ircg_nick -- Change de nom sur le serveur
ircg_nickname_escape -- Encode les caractères spéciaux dans un pseudo pour être compatible avec IRC
ircg_nickname_unescape -- Décode un pseudo encodé
ircg_notice -- Envoie une note (notice) à un utilisateur
ircg_part -- Quitte le canal
ircg_pconnect -- Connecte à un serveur IRC
ircg_register_format_messages -- Enregistre un nouveau format d'affichage des messages IRC
ircg_set_current -- Prépare la connexion courante pour l'affichage
ircg_set_file -- Configure le journal de connexion
ircg_set_on_die -- Configure une action à exécuter lorsque la connexion se termine
ircg_topic -- Modifie le sujet (topic) d'un canal
ircg_whois -- Requiert les informations sur un utilisateur

Précédent | Sommaire | Suivant
ingres_rollback | Niveau supérieur | ircg_channel_mode


ircg_channel_mode

(PHP 4 >= 4.0.5)

ircg_channel_mode -- Modifie les flags du canal

Description

boolean ircg_channel_mode ( resource connection, string channel, string mode_spec, string nick)

ircg_channel_mode() modifie les flags du canal channel, sur le serveur channel. Les nouveaux flags sont passés dans le paramètre mode_spec et sont appliqués à l'utilisateur nick.

Les flags sont activés ou désactivés en spécifiant un caractère de mode et en le préfixant par un caractère plus (+) ou un caractère moins (-). Par exemple, le mode opérateur est donné à un utilisateur avec la syntaxe '+o' et retiré au même utilisateur avec la syntaxe '-o', passé dans le paramètre mode_spec.

Précédent | Sommaire | Suivant
IRC | Niveau supérieur | ircg_disconnect


ircg_disconnect

(PHP 4 >= 4.0.4)

ircg_disconnect -- Ferme la connexion avec un serveur

Description

boolean ircg_disconnect ( resource connection, string reason)

ircg_disconnect() ferme la connexion ouverter précédemment avec un serveur grâce à la fonction ircg-pconnect(), et représentée par connection.

Voir aussi ircg_pconnect().

Précédent | Sommaire | Suivant
ircg_channel_mode | Niveau supérieur | ircg_fetch_error_msg


ircg_fetch_error_msg

(PHP 4 >= 4.1.0)

ircg_fetch_error_msg -- Retourne l'erreur rencontrée par la dernière opération IRCG

Description

array ircg_fetch_error_msg ( resource connection)

ircg_fetch_error_msg() retourne l'erreur rencontrée par la dernière opération sur la connexion connection.

Note : Le code erreur est stocké dans le premier élément du tableau et le message d'erreur dans le second. Le code erreur est équivalent aux codes d'erreurs définis par la RFC 2812.

Exemple 1. Exemple avec ircg_fetch_error_msg()

<?php
if (!ircg_join ($id, "#php")) {
    $error = ircg_fetch_error_msg($id);
    print ("Can't join channel #php. Error code:
            $error[0] Description: $error[1]");
}
?>

Précédent | Sommaire | Suivant
ircg_disconnect | Niveau supérieur | ircg_get_username


ircg_get_username

(PHP 4 >= 4.1.0)

ircg_get_username -- Retourne le nom d'utilisateur pour la connexion

Description

string ircg_get_username ( resource connection)

ircg_get_username() retourne le nom d'utilisateur pour la connexion connection. Retourne FALSE si la connexion connection est terminée ou est invalide.

Précédent | Sommaire | Suivant
ircg_fetch_error_msg | Niveau supérieur | ircg_html_encode


ircg_html_encode

(PHP 4 >= 4.0.5)

ircg_html_encode -- Prépare l'affichage pour le HTML

Description

boolean ircg_html_encode ( string html_string)

...

Voir aussi

Précédent | Sommaire | Suivant
ircg_get_username | Niveau supérieur | ircg_ignore_add


ircg_ignore_add

(PHP 4 >= 4.0.5)

ircg_ignore_add -- Ajoute un utilisateur sur la liste des utilisateurs indésirables

Description

boolean ircg_ignore_add ( resource connection, string nick)

ircg_ignore_add() ajoute l'utilisateur nick dans votre liste d'utilisateurs indésirables, sur le serveur connection. Tous les messages qui vous sont envoyés par cet utilisateur seront ignorés.

Voir aussi ircg_ignore_del().

Précédent | Sommaire | Suivant
ircg_html_encode | Niveau supérieur | ircg_ignore_del


ircg_ignore_del

(PHP 4 >= 4.0.5)

ircg_ignore_del -- Supprime un utilisateur de la liste des utilisateurs indésirables

Description

boolean ircg_ignore_del ( resource connection, string nick)

ircg_ignore_del() supprime l'utilisateur nick de la liste des utilisateurs indésirables, sur le serveur connection.

Voir aussi ircg_ignore_add().

Précédent | Sommaire | Suivant
ircg_ignore_add | Niveau supérieur | ircg_is_conn_alive


ircg_is_conn_alive

(PHP 4 >= 4.0.5)

ircg_is_conn_alive -- Vérifie l'état de la connexion

Description

boolean ircg_is_conn_alive ( resource connection)

ircg_is_conn_alive() retourne TRUE si la connexion connection est toujours active et fonctionnelle, et FALSE si la connexion n'est plus disponible.

Précédent | Sommaire | Suivant
ircg_ignore_del | Niveau supérieur | ircg_join


ircg_join

(PHP 4 >= 4.0.4)

ircg_join -- Rejoint un canal IRC

Description

boolean ircg_join ( resource connection, string channel)

ircg_join() rejoint le canal channel sur le serveur sur le serveur représenté par connection.

Précédent | Sommaire | Suivant
ircg_is_conn_alive | Niveau supérieur | ircg_kick


ircg_kick

(PHP 4 >= 4.0.5)

ircg_kick -- Expulse un utilisateur d'un canal

Description

boolean ircg_kick ( resource connection, string channel, string nick, string reason)

ircg_kick() expulse l'utilisateur nick du canal channel sur le serveur connection. Le paramètre reason doit contenir une brève explication de la raison de cette expulsion.

Précédent | Sommaire | Suivant
ircg_join | Niveau supérieur | ircg_lookup_format_messages


ircg_lookup_format_messages

(PHP 4 >= 4.0.5)

ircg_lookup_format_messages -- Sélectionne un format d'affichage pour les messages IRC

Description

boolean ircg_lookup_format_messages ( string name)

ircg_lookup_format_messages() sélectionne un format d'affichage pour les messages et les événements. Les formats peuvent être prédéfinis avec la fonction ircg_register_format_messages(). Un format par défaut, appelé ircg est toujours disponible.

Voir aussi ircg_register_format_messages().

Précédent | Sommaire | Suivant
ircg_kick | Niveau supérieur | ircg_msg


ircg_msg

(PHP 4 >= 4.0.4)

ircg_msg -- Envoie un message à un canal ou un utilisateur

Description

boolean ircg_msg ( resource connection, string recipient, string message [, boolean suppress])

ircg_msg() envoie le message message à l'utilisateur ou au canal recipient, sur le serveur connection. Un destinataire recipient commençant par # ou & représente un canal IRC, et sinon, un utilisateur.

En donnant la valeur TRUE au paramètre suppress, vous éviterez que vos propres messages soient affichés sur votre connexion connection.

Précédent | Sommaire | Suivant
ircg_lookup_format_messages | Niveau supérieur | ircg_nick


ircg_nick

(PHP 4 >= 4.0.5)

ircg_nick -- Change de nom sur le serveur

Description

boolean ircg_nick ( resource connection, string nick)

ircg_nick() change le nom (nick) que vous portez sur la connexion connection, si ce nom n'est pas pris.

ircg_nick() retourne TRUE en cas de succès, et FALSE

Précédent | Sommaire | Suivant
ircg_msg | Niveau supérieur | ircg_nickname_escape


ircg_nickname_escape

(PHP 4 >= 4.0.6)

ircg_nickname_escape -- Encode les caractères spéciaux dans un pseudo pour être compatible avec IRC

Description

string ircg_nickname_escape ( string nick)

ircg_nickname_escape() retourne le pseudo nick après l'avoir encodé pour le rendre compatible avec IRC.

Voir aussi ircg_nickname_unescape().

Précédent | Sommaire | Suivant
ircg_nick | Niveau supérieur | ircg_nickname_unescape


ircg_nickname_unescape

(PHP 4 >= 4.0.6)

ircg_nickname_unescape -- Décode un pseudo encodé

Description

string ircg_nickname_unescape ( string nick)

ircg_nickname_unescape() retourne le pseudo nick après l'avoir décodé.

Voir aussi ircg_nickname_escape().

Précédent | Sommaire | Suivant
ircg_nickname_escape | Niveau supérieur | ircg_notice


ircg_notice

(PHP 4 >= 4.0.5)

ircg_notice -- Envoie une note (notice) à un utilisateur

Description

boolean ircg_notice ( resource connection, string , string message)

ircg_notice() envoie le message message à l'utilisateur nick sur le serveur connection. Consultez votre documentation IRC pour connaître la différence exacte entre un message MSG et une note NOTICE.

Précédent | Sommaire | Suivant
ircg_nickname_unescape | Niveau supérieur | ircg_part


ircg_part

(PHP 4 >= 4.0.4)

ircg_part -- Quitte le canal

Description

boolean ircg_part ( resource connection, string channel)

ircg_part() quitte le canal channel sur le serveur sur le serveur représenté par connection.

Précédent | Sommaire | Suivant
ircg_notice | Niveau supérieur | ircg_pconnect


ircg_pconnect

(PHP 4 >= 4.0.4)

ircg_pconnect -- Connecte à un serveur IRC

Description

resource ircg_pconnect ( string username [, string server_ip [, int server_port [, string msg_format [, array ctcp_messages [, array user_settings]]]]])

ircg_pconnect() essaie d'établir une connexion avec le serveur IRC server_ip, et retourne une ressource de connexion pour utilisation ultérieure.

Le seul paramètre obligatoire est username, qui représente le nick (nom d'utilisateur en IRC) initial. server_ip et server_port sont optionnels, et par défaut, valent respectivement 127.0.0.1 (hôte local) et 6667.

Note : Actuellement, le paramètre server_ip n'effectue aucune résolution de nom, et n'accepte que les IP au format numérique.

Vous pouvez personnaliser l'affichage des messages IRC et les événements qui s'y rattachent avec les formats de messages, générés par la fonction ircg_register_format_messages(), en spécifiant le format dans msg_format.

ctcp_messages

user_settings

Voir aussi
ircg_disconnect(),
ircg_is_conn_alive() et
ircg_register_format_messages().

Précédent | Sommaire | Suivant
ircg_part | Niveau supérieur | ircg_register_format_messages


ircg_register_format_messages

(PHP 4 >= 4.0.5)

ircg_register_format_messages -- Enregistre un nouveau format d'affichage des messages IRC

Description

boolean ircg_register_format_messages ( string name, array messages)

ircg_register_format_messages() vous permet de personnaliser l'affichage de vos messages IRC. Vous pouvez même enregistrer plusieurs formats et passer de l'un à l'autre à la volée avec ircg_lookup_format_messages().

  • Message public brut

  • Message privé reçu

  • Message privé envoyé

  • Un utilisateur quitte le canal

  • Un utilisateur rejoint le canal

  • Un utilisateur est expulsé du canal

  • Le sujet du canal est modifié

  • Erreur

  • Erreur fatale

  • Rejoint la fin de la liste (??? : Join list end)

  • Se quitte soi-même (??? : Self part)

  • Un utilisateur s'expulse lui-même

  • Un utilisateur quitte sa connexion

  • Début de regroupement en masse

  • Elément de regroupement en masse

  • Fin de regroupement en masse

  • Whois utilisateur

  • Whois serveur

  • Whois inactif

  • Whois canal

  • Fin de whois

  • Changement de statut Voice pour un utilisateur

  • Changement de statu d'opérateur pour un utilisateur

  • Liste d'utilisateurs indésirables

  • Fin de liste d'utilisateurs indésirables

  • %f - origine

  • %t - destination

  • %c - canal

  • %r - message brut

  • %m - message encodé

  • %j - message encodé js

  • 1 - encodage mod

  • 2 - nickname decode

Voir aussi ircg_lookup_format_messages().

Précédent | Sommaire | Suivant
ircg_pconnect | Niveau supérieur | ircg_set_current


ircg_set_current

(PHP 4 >= 4.0.4)

ircg_set_current -- Prépare la connexion courante pour l'affichage

Description

boolean ircg_set_current ( resource connection)

ircg_set_current() sélectionne la connexion courante pour l'affichage dans le contexte d'exécution courant. Tous les messages envoyés par le serveur représenté par connection seront recopiés et envoyés à la sortie standard, avec le format standard, ou bien la chaîne de format spécifiée par la fonction ircg_register_format_messages() et créée par ircg_lookup_format_messages().

Voir aussi ircg_register_format_messages() et ircg_lookup_format_messages().

Précédent | Sommaire | Suivant
ircg_register_format_messages | Niveau supérieur | ircg_set_file


ircg_set_file

(PHP 4 >= 4.2.0)

ircg_set_file -- Configure le journal de connexion

Description

bool ircg_set_file ( resource connection, string path)

ircg_set_file() spécifie un journal path dans lequel toutes les sorties de la connexion connection seront écrites. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ircg_set_current | Niveau supérieur | ircg_set_on_die


ircg_set_on_die

(PHP 4 >= 4.2.0)

ircg_set_on_die -- Configure une action à exécuter lorsque la connexion se termine

Description

bool ircg_set_on_die ( resource connection, string host, int port, string data)

Au cas où la connexion connection se termine, IRCG se connextera à host sur le port port (Note: host doit être une adresse IPv4, car IRCG ne résoud pas les noms d'hôtes), envoie data à la nouvelle connexion et attendra que la connexion distante soit fermée par le serveur. Cela peut être utile pour appeler un script.

Cette fonctionnalité requière IRCG 3.

Précédent | Sommaire | Suivant
ircg_set_file | Niveau supérieur | ircg_topic


ircg_topic

(PHP 4 >= 4.0.5)

ircg_topic -- Modifie le sujet (topic) d'un canal

Description

boolean ircg_topic ( resource connection, string channel, string new_topic)

ircg_topic() change le sujet du canal de channel en new_topic, sur le serveur connection.

Précédent | Sommaire | Suivant
ircg_set_on_die | Niveau supérieur | ircg_whois


ircg_whois

(PHP 4 >= 4.0.5)

ircg_whois -- Requiert les informations sur un utilisateur

Description

boolean ircg_whois ( resource connection, string nick)

Voir aussi

Précédent | Sommaire | Suivant
ircg_topic | Niveau supérieur | Java


Java

Manuel PHP
Précédent Suivant

XLVII. Java

Il y a deux moyens de connecter PHP et Java : soit en intégrant Java directement dans PHP, ce qui est la solution la plus stable et la plus efficace, ou en intégrant PHP dans un environnement de Servlet Java. La première solution est fournie par cette extension Java, et la dernière par le module SAPI qui s'interface avec un serveur de Servlet.

PHP 4 ext/java fournit un moyen simple mais efficace pour invoquer et créer des objets Java, depuis PHP. Une machine virtuelle est créée via JNI, et le tout fonctionne avec des processus fils. Les instructions d'installation pour cette extension sont sont disponibles dans le fichier : php4/ext/java/README.

Exemple 1. Exemple avec Java

<?php
  // crée une instance de Java class java.lang.System en PHP
  $system = new Java("java.lang.System");
  // accède aux propriétés
  print "Java version=".$system->getProperty("java.version")." <br>";
  print "Java vendor=" .$system->getProperty("java.vendor")."  <br>";
  print "OS=".$system->getProperty("os.name")." ".
              $system->getProperty("os.version")." on ".
              $system->getProperty("os.arch")." <br>";
  // Exemple avec java.util.Date
  $formatter = new Java("java.text.SimpleDateFormat",
                        "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
  print $formatter->format(new Java("java.util.Date"));
?>

Exemple 2. Exemple AWT

<?php
  // Cet exemple ne fonctionne qu'en mode CGI.
  $frame  = new Java("java.awt.Frame", "Zend");
  $button = new Java("java.awt.Button", "Bonjour au monde Java!");
  $frame->add("Nord", $button);
  $frame->validate();
  $frame->pack();
  $frame->visible = true;
  $thread = new Java("java.lang.Thread");
  $thread->sleep(10000);
  $frame->dispose();
?>
Notes:

  • new Java() crée une nouvelle instance d'une classe, si un constructeur valable est disponible. Si aucun paramètre n'est passé, et le constructeur par défaut est utile pour accéder à ces classes telles que "java.lang.System", qui fournissent leur fonctionnalités via des méthodes statiques.

  • Lors de l'accès aux membres d'une instance, PHP commencera par rechercher les membres Bean, puis les champs publics. En d'autres termes, "print $date.time" sera d'abord résolu par "$date.getTime()", puis par "$date.time";

  • Les membres statiques et d'instance sont accessibles avec la même syntaxe. De plus, si un objet est de type "java.lang.Class", les membres statiques de la classe (champs et méthodes) sont accessibles.

  • Les exceptions sont transformées en alertes PHP, et résultat NULL. Les alertes peuvent être supprimées en préfixant l'appel par l'opérateur >. Les fonctions suivantes peuvent être utilisées pour lire et effacer la dernière erreur remontée :

    • java_last_exception_get()

    • java_last_exception_clear()

  • Les surchargements de fonctions sont des problèmes épineux, étant donné les différences de type de valeurs entre les deux langages. L'extension Java de PHP utilise une métrique simple mais efficace pour déterminer la meilleur fonction à utiliser.

    De plus, les noms de méthodes ne sont pas sensibles à la casse en PHP, ce qui augmente le nombre de conflits potentiels.

    Une fois qu'une méthode est sélectionnée, les paramètres sont transtypés, avec une perte d'information potentielle non négligeable (par exemple, les nombres à virgules flottante en double précisions seront convertis en booléen).

  • Traditionnellement en PHP, les tableaux et les tables de hashage peuvent être interchangées, et fonctionnent de la même façon. Notez que les tables de hashage de PHP ne peuvent être indexées qu'avec des entiers ou des chaînes, et que le type primitif de tableau de Java ne peut comporter de trous dans les index. Notez aussi que les valeurs sont passées par valeur, ce qui peut être coûteux en mémoire et en temps.

L'interface PHP4 sapi/servlet est construite sur un mécanisme défini par l'extension Java, qui permet à PHP d'être exécuté comme une servlet. L'avantage immédiat d'un point de vue PHP est que les serveurs web qui supportent les servlets gèrent rigoureusement les machines virtuelles. Les instructions d'installation du module Servlet SAPI sont disponibles dans le fichier php4/sapi/README. Notes:

  • Bien que ce code soit prévu pour fonctionner sur n'importe quel serveur à Servlet, il n'a été testé qu'avec le module Apache Jakarta/tomcat (jusqu'à aujourd'hui). Les remontées de bugs, les réussites et les patches nécessaires pour faire fonctionner ce code sur d'autres serveurs sont fortement encouragés!

  • PHP a l'habitude de changer le dossier de travail. Le serveur SAPI/Servlet le changera à nouveau, mais tant que PHP fonctionnera, le moteur de servlet ne pourra pas charger de classes dans le CLASSPATH, si le dossier est spécifié avec un chemin relatif, ou ne pourra pas trouver le dossier d'administration et de compilation des tâches JSP.

Table des matières
java_last_exception_clear -- Efface la dernière exception Java
java_last_exception_get -- Lit la dernière exception Java

Précédent | Sommaire | Suivant
ircg_whois | Niveau supérieur | java_last_exception_clear


java_last_exception_clear

(PHP 4 >= 4.0.2)

java_last_exception_clear -- Efface la dernière exception Java

Description

void java_last_exception_clear ( void )

Précédent | Sommaire | Suivant
Java | Niveau supérieur | java_last_exception_get


java_last_exception_get

(PHP 4 >= 4.0.2)

java_last_exception_get -- Lit la dernière exception Java

Description

exception java_last_exception_get ( void )

L'exemple ci-dessous montre l'utilisation du gestionnaire d'exceptions java :

Exemple 1. Gestionnaire d'exception Java

<?php
  $stack = new Java("java.util.Stack");
  $stack->push(1);
  // Cela doit marcher
  $result = $stack->pop();
  $ex = java_last_exception_get();
  if (!$ex) print "$result\n";
  // Cela doit échouer (le rapport d'erreurs est supprimé par >)
  $result = @$stack->pop();
  $ex = java_last_exception_get();
  if ($ex) print $ex->toString();
  // Efface la dernière exception
  java_last_exception_clear();
?>

Précédent | Sommaire | Suivant
java_last_exception_clear | Niveau supérieur | LDAP


LDAP

Manuel PHP
Précédent Suivant

XLVIII. LDAP

Introduction

LDAP siginifie : Lightweight Directory Access Protocol (Protocole léger d'accès aux annuaires). C'est un protocole utilisé pour accéder aux "serveurs de dossiers". Ces serveurs sont des bases de données particulières, qui stockent les informations sous forme d'arborescence.

Le concept d'arborescence est similaire à celui de la structure de votre système de fichier, hormis le fait que dans ce contexte, la racine s'appelle "le monde", et que le premier niveau de sous-dossier s'appelle "pays". Les niveaux encore en dessous sont des "compagnies" "organisation" ou "places", et encore plus bas, vous trouverez des "personnes" et même, des "équipements" et "documents".

Pour identifier un fichier dans votre disque, vous utilisez un chemin tel que

/usr/local/mon_application/documents

Le slash indique une division dans la référence, et la séquence est lue de gauche à droite.

l'équivalent d'une référence globale en LDAP s'appelle un "nom distingué" ("distinguished name"), aussi appelé "dn". Un exemple de dn serait :

cn=Jean Dupond,ou=Comptabilité,o=Ma Compagnie,c=FR

La virgule marque la séparation de chaque division comme référence, et la séquence est lue de droite à gauche. Il faut donc lire :

country = FR
organization = Ma Compagnie
organizationalUnit = Comptabilité
commonName = Jean Dupond

De la même façon qu'il n'y a pas de règle obligatoire sur comment organiser les fichiers sur un disque dur, un responsable de serveur de dossiers peut organiser le serveur comme cela lui semble le plus pratique. Cependant, il y a des conventions à utiliser. Le principe est que vous ne pouvez pas écrire accéder à un serveur de dossier à moins que vous ne connaissiez sa structure, de même que vous ne pouvez une base de données sans en connaître les tables et les bases.

Bien plus d'informations sont disponibles aux URL suivantes (en anglais) :

  • Netscape

  • University of Michigan

  • OpenLDAP Project

  • LDAP World

Le SDK Netscape contient un guide du programmeur très utile, au format HTML (et en anglais).

Pré-requis

Vous devez télécharger et compiler les librairies clients LDAP, soit celles de University of Michigan ldap-3.3, soit le Netscape Directory SDK 3.0.

Installation

Le support LDAP de PHP n'est pas activé par défaut. Vous devez utiliser l'option de configuration --with-ldap lorsque vous compilez PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. LDAP configuration options

Name | Default | Changeable
ldap.max_links | "-1" | PHP_INI_SYSTEM
For further details and definition of the PHP_INI_* constants see ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

LDAP_DEREF_NEVER (integer)

LDAP_DEREF_SEARCHING (integer)

LDAP_DEREF_FINDING (integer)

LDAP_DEREF_ALWAYS (integer)

LDAP_OPT_DEREF (integer)

LDAP_OPT_SIZELIMIT (integer)

LDAP_OPT_TIMELIMIT (integer)

LDAP_OPT_PROTOCOL_VERSION (integer)

LDAP_OPT_ERROR_NUMBER (integer)

LDAP_OPT_REFERRALS (integer)

LDAP_OPT_RESTART (integer)

LDAP_OPT_HOST_NAME (integer)

LDAP_OPT_ERROR_STRING (integer)

LDAP_OPT_MATCHED_DN (integer)

LDAP_OPT_SERVER_CONTROLS (integer)

LDAP_OPT_CLIENT_CONTROLS (integer)

LDAP_OPT_DEBUG_LEVEL (integer)

GSLC_SSL_NO_AUTH (integer)

GSLC_SSL_ONEWAY_AUTH (integer)

GSLC_SSL_TWOWAY_AUTH (integer)

Exemple complet de code LDAP

Lit les informations sur toutes les entrées dont le nom commence par "S" sur le serveur de dossier, puis affiche le nom et l'adresse email.

Exemple 1. Recherche avec LDAP

<?php
// La s&eacute;quence de base avec LDAP est
// connexion, liaison, recherche, interpr&eacute;tation du r&eacute;sultat
// d&eacute;connexion

echo "<h3>requ&ecirc;te de test de LDAP</h3>";
echo "Connexion ...";
$ds=ldap_connect("localhost");  // doit &ecirc;tre un serveur LDAP valide!
echo "Le r&eacute;sultat de connexion est ".$ds."<p>";

if ($ds) {
    echo "Liaison ...";
    $r=ldap_bind($ds);     // this is an "anonymous" bind, typically
                           // read-only access
    echo "Le r&eacute;sultat de connexion est ".$r."<p>";

    echo "Recherchons (sn=S*) ...";
    // Recherche par nom
    $sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");
    echo "Le r&eacute;sultat de la recherche est ".$sr."<p>";

    echo "Le nombre d'entr&eacute;es retourn&eacute;es est ".ldap_count_entries($ds,$sr)."<p>";

    echo "Lecture des entr&eacute;es ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Donn&eacute;es pour ".$info["count"]." entr&eacute;es:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn est : ". $info[$i]["dn"] ."<br>";
        echo "premiere entree cn : ". $info[$i]["cn"][0] ."<br>";
        echo "premier email : ". $info[$i]["mail"][0] ."<p>";
    }

    echo "Fermeture de la connexion";
    ldap_close($ds);

} else {
    echo "<h4>Impossible de se connecter au serveur LDAP.</h4>";
}
?>

Utiliser les fonctions LDAP de PHP

Avant d'utiliser les fonctions LDAP, vous devez connaître

  • Le nom ou l'adresse du serveur de dossiers que vous voudrez utiliser

  • Le "base dn" du serveur (la partie du dossier monde qui est disponible sur ce serveur, ce qui peut être "o=Ma Compagnie,c=FR")

  • Le mot de passe éventuel d'accès au serveur (de nombreux serveurs fournissent un accès anonyme en lecture, mais requièrent des mots de passe pour tout le reste.

La séquence LDAP typique que vous exécuterez sera la suivante :

ldap_connect() // établit une connexion au serveur
|
ldap_bind() // connexion anonyme ou identifiée
|
réalisation de commadnes comme des recherches ou des
modifications, puis affichage du résultat.
|
ldap_close() // déconnexion

Table des matières
ldap_8859_to_t61 -- Convertit les caractères 8859 en caractères t61
ldap_add -- Ajoute une entrée dans un dossier LDAP
ldap_bind -- Bind to LDAP directory
ldap_close -- Ferme une connexion au serveur LDAP
ldap_compare -- Compare une entrée avec des valeurs d'attributs
ldap_connect -- Se connecte à un serveur LDAP
ldap_count_entries -- Compte le nombre d'entrées après une recherche
ldap_delete -- Efface une entrée dans un dossier
ldap_dn2ufn -- Convert it un DN en format UFN (User Friendly Naming)
ldap_err2str -- Convertit un numéro d'erreur LDAP en message d'erreur
ldap_errno -- Retourne le numéro d'erreur LDAP de la dernière commande exécutée.
ldap_error -- Retourne le message LDAP de la dernière commande LDAP.
ldap_explode_dn -- Sépare les différents composants d'un DN
ldap_first_attribute -- Return first attribute
ldap_first_entry -- Retourne la première entrée
ldap_first_reference -- Return first reference
ldap_free_result -- Free result memory
ldap_get_attributes -- Lit les attributs d'une entrée
ldap_get_dn -- Lit le DN d'une entrée
ldap_get_entries -- Lit toutes les entrées du résultat
ldap_get_option -- Lit/écrit la valeur courante d'une option
ldap_get_values_len -- Lit toutes les valeurs binaires d'une entrée
ldap_get_values -- Lit toutes les valeurs d'une entrée
ldap_list -- Recherche dans un niveau
ldap_mod_add -- Ajoute un attribut à l'entrée courante
ldap_mod_del -- Efface un attribut à l'entrée courante
ldap_mod_replace -- Remplace un attribut dans l'entrée courante
ldap_modify -- Modifie une entrée LDAP
ldap_next_attribute -- Lit l'attribut suivant
ldap_next_entry -- Lit la prochaine entrée
ldap_next_reference -- Lit la référence suivante
ldap_parse_reference -- Extrait les informations d'une référence d'entrée
ldap_parse_result -- Extrait des informations d'un résultat
ldap_read -- Lit une entrée
ldap_rename -- Modifie le nom d'une entrée
ldap_search -- Recherche sur le serveur LDAP
ldap_set_option -- Modifie la valeur d'une option LDAP
ldap_set_rebind_proc -- Configure une fonction de callback pour refaire des liaisons, lors de recherche de référants.
ldap_sort -- Trie les entrées d'un résultat LDAP
ldap_start_tls -- Démarre TLS
ldap_t61_to_8859 -- Convertit les caractères t6 en caractères 8859
ldap_unbind -- Déconnecte d'un serveur LDAP

Précédent | Sommaire | Suivant
java_last_exception_get | Niveau supérieur | ldap_8859_to_t61


ldap_8859_to_t61

(PHP 4 >= 4.0.2)

ldap_8859_to_t61 -- Convertit les caractères 8859 en caractères t61

Description

string ldap_8859_to_t61 ( string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
LDAP | Niveau supérieur | ldap_add


ldap_add

(PHP 3, PHP 4 )

ldap_add -- Ajoute une entrée dans un dossier LDAP

Description

bool ldap_add ( resource link_identifier, string dn, array entry)

ldap_add() sert à ajouter une entrée dans un dossier LDAP. dn est l'identification complète de l'entrée qui sera ajoutée, et entry est un tableau avec les informations sur la nouvelle entrée. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Ces valeurs sont indexées individuellement. En cas de valeurs multiples pour un attribut, elle sont indexées numériquement, à partir de 0.

<?php
    $entree["attribut1"] = "valeur";
    $entree["attribut2"][0] = "valeur1";
    $entree["attribut2"][1] = "valeur2";
?>

Exemple 1. Exemple complet avec identification

<?php
$ds=ldap_connect("localhost");  // on suppose que le serveur LDAP est sur le serveur local

if ($ds) {
    // Connexion avec une identit&eacute;e qui permet les modifications
    $r=ldap_bind($ds,"cn=root, o=Ma Compagnie, c=FR", "secret");

    // prepare les donn&eacute;es
    $info["cn"]="Jean Dupont";
    $info["sn"]="Jean";
    $info["mail"]="jeand@serveur.mail.com";
    $info["objectclass"]="personne";

    // Ajoute les donn&eacute;es au dossier
    $r=ldap_add($ds, "cn=Jean Dupont, o=Ma Compagnie, c=FR", $info);

    ldap_close($ds);
} else {
    echo "Impossible de se connecter au serveur LDAP";
}
?>

Précédent | Sommaire | Suivant
ldap_8859_to_t61 | Niveau supérieur | ldap_bind


ldap_bind

(PHP 3, PHP 4 )

ldap_bind -- Bind to LDAP directory

Description

bool ldap_bind ( resource link_identifier [, string bind_rdn [, string bind_password]])

ldap_bind() s'autentifie auprès du serveur LDAP link_identifier, avec le nom d'utilisateur bind_rdn et le mot de passe bind_password. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_bind() effecute une opération de bind avec le serveur. bind_rdn et bind_password sont optionnels. Si ils sont omis, une tentative de connexion anonyme est tentée.

Précédent | Sommaire | Suivant
ldap_add | Niveau supérieur | ldap_close


ldap_close

(PHP 3, PHP 4 )

ldap_close -- Ferme une connexion au serveur LDAP

Description

bool ldap_close ( resource link_identifier)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_close() ferme la connexion au serveur LDAP, représentée par link_identifier.

Cet appel est identique, en interne, à
ldap_unbind(). L'API LDAP utilise l'appel à
ldap_unbind(), alors peut être, devriez vous
l'utiliser au lieu de ldap_close().

Note : ldap_close() est un alias de ldap_unbind().

Précédent | Sommaire | Suivant
ldap_bind | Niveau supérieur | ldap_compare


ldap_compare

(PHP 4 >= 4.0.2)

ldap_compare -- Compare une entrée avec des valeurs d'attributs

Description

bool ldap_compare ( resource link_identifier, string dn, string attribute, string value)

ldap_compare() retourne TRUE si value correspond, et sinon, FALSE. ldap_compare() retourne -1 en cas d'erreur.

ldap_compare() sert à comparer la valeur value de l'attribut attribute à la valeur du même attribut de l'entrée dn.

L'exemple suivant montre comment vérifier que deux mots de passe correspondent, dont l'un est celui d'une entré du serveur LDAP.

Exemple 1. Exemple complet de vérification de mot de passe avec lDAP

<?php

$ds=ldap_connect("localhost");  // doit &ecirc;tre un serveur LDAP valide!

if ($ds) {

    // identification
    if(ldap_bind($ds)) {

        // preparation des donn&eacute;es
        $dn = "cn=Matti Meikku, ou=Mon Service, o=Ma Compagnie, c=FR";
        $value = "secretpassword";
        $attr = "password";

        // comparaison des valeurs
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Erreur : ".ldap_error($ds);
        } elseif ($r === TRUE) {
            echo "Mot de passe correct.";
        } elseif ($r === FALSE) {
            echo "Mal choisi! Mot de passe incorrect!";
        }

    } else {
        echo "Impossible de se connecter au serveur LDAP.";
    }

    ldap_close($ds);

} else {
    echo "Impossible de se connecter au serveur LDAP.";
}
?>

Avertissement

ldap_compare() ne peut PAS être utilisé pour comparer des valeurs binaires!

Note : ldap_compare() a été ajoutée en 4.0.2.

Précédent | Sommaire | Suivant
ldap_close | Niveau supérieur | ldap_connect


ldap_connect

(PHP 3, PHP 4 )

ldap_connect -- Se connecte à un serveur LDAP

Description

resource ldap_connect ( [string hostname [, int port]])

ldap_connect() retourne un identifiant positif de serveur LDAP en cas de succès, ou bien FALSE en cas d'erreur.

ldap_connect() établit une connexion avec un serveur. Le serveur LDAP situé sur l'hôte hostname et port. Les deux arguments sont optionnels. Sans argument, l'identifiant de la dernière connexion ouverte sera retournée. Si seul hostname est spécifié, le port par défaut est 389.

Si vous utilisez OpenLDAP 2.x.x, vous pouvez spécifier une URL au lieu d'un nom d'hôte. Pour utiliser LDAP avec SSL, compilez OpenLDAP 2.x.x avec le support SSL, configurez PHP avec SSL, et utilisez ldaps://hostname/ comme nom d'hôte. Le paramètre de port port n'est pas utile lorsqu'utilisé avec des URL. Le support des URL et SSL a été ajouté en PHP 4.0.4.

Précédent | Sommaire | Suivant
ldap_compare | Niveau supérieur | ldap_count_entries


ldap_count_entries

(PHP 3, PHP 4 )

ldap_count_entries -- Compte le nombre d'entrées après une recherche

Description

int ldap_count_entries ( resource link_identifier, resource result_identifier)

ldap_count_entries retourne le nombre d'entrées trouvées dans le résultat result_identifier, sur la connexion link_identifier, ou FALSE en cas d'erreur.

ldap_count_entries() retourne le nombre d'entrées stockées dans le résultat de la recherche précédente. result_identifier représente un résultat interne LDAP.

Précédent | Sommaire | Suivant
ldap_connect | Niveau supérieur | ldap_delete


ldap_delete

(PHP 3, PHP 4 )

ldap_delete -- Efface une entrée dans un dossier

Description

bool ldap_delete ( resource link_identifier, string dn)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_delete() efface l'entrée identifiée par son dn sur le serveur identifié par link_identifier.

Précédent | Sommaire | Suivant
ldap_count_entries | Niveau supérieur | ldap_dn2ufn


ldap_dn2ufn

(PHP 3, PHP 4 )

ldap_dn2ufn -- Convert it un DN en format UFN (User Friendly Naming)

Description

string ldap_dn2ufn ( string dn)

ldap_dn2ufn() convertit le DN dn dans un format plus lisible humainement, en supprimant les types des noms.

Précédent | Sommaire | Suivant
ldap_delete | Niveau supérieur | ldap_err2str


ldap_err2str

(PHP 3>= 3.0.13, PHP 4 )

ldap_err2str -- Convertit un numéro d'erreur LDAP en message d'erreur

Description

string ldap_err2str ( int errno)

ldap_err2str() retourne un message d'erreur

ldap_err2str() retourne le message lisible expliquant l'erreur dont le numéro est errno. Bien que les numéros d'erreur LDAP soient standardisés, différentes librairies retournent des messages différents ou même des textes d'erreurs localisés. N'utilisez jamais les messages d'erreur pour identifier une erreur, mais bien les numéros.

Exemple 1. Enumerer tous les messages d'erreur LDAP

<?php
  for($i=0; $i<100; $i++) {
    printf("Erreur num&eacute;ro $i : %s<br>\n", ldap_err2str($i));
  }
?>

Voir aussi ldap_errno() et ldap_error().

Précédent | Sommaire | Suivant
ldap_dn2ufn | Niveau supérieur | ldap_errno


ldap_errno

(PHP 3>= 3.0.12, PHP 4 )

ldap_errno -- Retourne le numéro d'erreur LDAP de la dernière commande exécutée.

Description

int ldap_errno ( resource link_id)

ldap_errno() retourne le numéro d'erreur LDAP généré par la dernière commande.

ldap_errno() retourne le numéro d'erreur standard, généré par la dernière commande LDAP, pour la connexion link_id. Ce numéro peut être converti en message textuel avec ldap_err2str().

A moins que vous n'abaissiez suffisamment le niveau d'erreur dans php.ini (ou php3.ini), ou que vous ne préfixiez vos commandes LDAP avec @ (at) pour supprimer les affichages, les erreurs LDAP s'afficheront aussi dans le code PHP.

Exemple 1. Genérer et intercepter une erreur

<?php
// Cet exemple contient une erreur, que nous allons intercepter.
  $ld = ldap_connect("localhost");
  $bind = ldap_bind($ld);
// Erreur de syntaxe dans l'expression du filtre (errno 87),
// ce doit être "objectclass=*"
  $res =  @ldap_search($ld, "o=Myorg, c=DE", "objectclass");
  if (!$res) {
    printf("LDAP-Errno: %s<br>\n", ldap_errno($ld));
    printf("LDAP-Error: %s<br>\n", ldap_error($ld));
    die("Argh!<br>\n");
  }
  $info = ldap_get_entries($ld, $res);
  printf("%d entrées trouvées.<br>\n", $info["count"]);
?>

Voir aussi ldap_err2str() et ldap_error().

Précédent | Sommaire | Suivant
ldap_err2str | Niveau supérieur | ldap_error


ldap_error

(PHP 3>= 3.0.12, PHP 4 )

ldap_error -- Retourne le message LDAP de la dernière commande LDAP.

Description

string ldap_error ( resource link_id)

ldap_error() retourne un message d'erreur.

ldap_error() retourne le message d'erreur lié à la connexion link_id. Même si les numéros d'erreur LDAP sont standardisés, différentes librairies retournent différents messages, ou parfois, des messages en langue locale. Ne vous fiez pas au message d'erreur, mais bien au numéro d'erreur.

A moins que vous n'abaissiez suffisamment le niveau d'erreur dans php.ini (ou php3.ini), ou que vous ne préfixiez vos commandes LDAP avec @ pour supprimer les affichages, les erreurs LDAP s'afficheront aussi dans le code PHP.

Voir aussi ldap_err2str() et ldap_errno().

Précédent | Sommaire | Suivant
ldap_errno | Niveau supérieur | ldap_explode_dn


ldap_explode_dn

(PHP 3, PHP 4 )

ldap_explode_dn -- Sépare les différents composants d'un DN

Description

array ldap_explode_dn ( string dn, int with_attrib)

ldap_explode_dn() sert à extraire les différents composants du DN dn. Chaque composant s'appelle un Nom Distingué Relatif (Relative Distinguished Name ou encore RDN). ldap_explode_dn() retourne un tableau de tous ces composants. L'argument with_attrib sert à préciser si les RDN sont retournés seuls, ou bien avec leurs attributs. Pour obtenir les attributs en même temps que les RDN (au format attribut=valeur), donnez à with_attrib la valeur de 0 et sinon, donnez lui la valeur de 1.

Précédent | Sommaire | Suivant
ldap_error | Niveau supérieur | ldap_first_attribute


ldap_first_attribute

(PHP 3, PHP 4 )

ldap_first_attribute -- Return first attribute

Description

string ldap_first_attribute ( resource link_identifier, resource result_entry_identifier, int ber_identifier)

ldap_first_attribute() retourne le premier attribut de l'entrée result_entry_identifier, sur le serveur link_identifier, ou FALSE en cas d'erreur.

Similairement à la lecture des entrées, les attributs sont lis les uns après les auters, pour une entrée. ldap_first_attribute() retourne le premier attribut de l'entrée représentée par result_entry_identifier. Les autres attributs sont lus grâce à la fonction ldap_next_attribute(), appelée aussi souvent que nécessaire. Le paramètre ber_identifier est l'identifiant de pointeur en mémoire locale. Il est passé par référence. Le même paramètre ber_identifier est passé à la fonction ldap_next_attribute(), qui modifiera ce pointeur.

Voir aussi ldap_get_attributes().

Précédent | Sommaire | Suivant
ldap_explode_dn | Niveau supérieur | ldap_first_entry


ldap_first_entry

(PHP 3, PHP 4 )

ldap_first_entry -- Retourne la première entrée

Description

resource ldap_first_entry ( resource link_identifier, resource result_identifier)

ldap_first_entry() retourne la première entrée du résultat result_identifier, pour la connexion link_identifier, ou FALSE en cas d'erreur.

Les entrées d'un résultat LDAP sont lues séquentiellement avec les fonctions ldap_first_entry() et ldap_next_entry(). ldap_first_entry() retourne la première entrée. Les entrées suivantes seront lues grâce à la fonction lap_next_entry(), en appelant cette fonction aussi souvent que nécessaire.

Voir aussi ldap_get_entries().

Précédent | Sommaire | Suivant
ldap_first_attribute | Niveau supérieur | ldap_first_reference


ldap_first_reference

(PHP 4 >= 4.0.5)

ldap_first_reference -- Return first reference

Description

resource ldap_first_reference ( resource link, resource result)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_first_entry | Niveau supérieur | ldap_free_result


ldap_free_result

(PHP 3, PHP 4 )

ldap_free_result -- Free result memory

Description

bool ldap_free_result ( resource result_identifier)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_free_result() libère toute la mémoire allouée en interne pour stocker le résultat result_identifier. Si l'appel de cette fonction est omis, toute la mémoire sera libérée automatiquement à la fin du script.

Typqieuemtn, toute la mémoire allouée pour le résultat LDAP est libérée à la fin du script. Si le script effectue des recherches intensives, qui retournent des résultats de grandes taille, ldap_free_result() peut être utilisée pour réduire la consommation de mémoire.

Précédent | Sommaire | Suivant
ldap_first_reference | Niveau supérieur | ldap_get_attributes


ldap_get_attributes

(PHP 3, PHP 4 )

ldap_get_attributes -- Lit les attributs d'une entrée

Description

array ldap_get_attributes ( resource link_identifier, resource result_entry_identifier)

ldap_get_attributes retourne le détail des informations d'une entrée sous la forme d'un tableau multidimensionnel ou FALSE en cas d'erreur.

ldap_get_attributes() sert à simplifier la lecture des attributs et de leur valeur pour une entrée dans un résultat de recherche. La valeur retournée est un tableau multidimensionnel, avec les noms des attributs et leurs valeurs.

Une fois que vous avez repéré une entrée dans un dossier, vous pouvez obtenir plus d'informations sur cette entrée avec cette fonction. Elle pourrait être utilisée dans le cadre d'une application qui cartographie les dossiers et les entrées. Dans de nombreuses applications, vous recherchez des entrées ayant un attribut précis, sans vous soucier des autres attributs.

return_value["count"] = nombre d'attributs dans l'entrée
return_value[0] = premier attribut
return_value[n] = n-ième attribut

return_value["attribute"]["count"] = nombre de valeur de l'attribut
return_value["attribute"][0] = première valeur de l'attribut
return_value["attribute"][i] = (i+1)-ème valeur de l'attribut

Exemple 1. Affiche la lsite des attributs d'une entrée

<?php
// $ds is the link identifier for the directory

// $sr is a valid search result from a prior call to
// one of the ldap directory search calls

  $entry = ldap_first_entry($ds, $sr);

  $attrs = ldap_get_attributes($ds, $entry);

  echo $attrs["count"]." attributs d&eacute;finissent cette entr&eacute;e : <P>";

  for ($i=0; $i<$attrs["count"]; $i++){
    echo $attrs[$i]."<br>";
  }
?>

Voir aussi ldap_first_attribute() et ldap_next_attribute().

Précédent | Sommaire | Suivant
ldap_free_result | Niveau supérieur | ldap_get_dn


ldap_get_dn

(PHP 3, PHP 4 )

ldap_get_dn -- Lit le DN d'une entrée

Description

string ldap_get_dn ( resource link_identifier, resource result_entry_identifier)

ldap_get_dn() lit le DN de l'entrée courante dans le résultat de recherche LDAP result_entry_identifier, ou FALSE, en cas d'erreur.

ldap_get_dn() sert à lire le DN dans un résultat de recherche.

Précédent | Sommaire | Suivant
ldap_get_attributes | Niveau supérieur | ldap_get_entries


ldap_get_entries

(PHP 3, PHP 4 )

ldap_get_entries -- Lit toutes les entrées du résultat

Description

array ldap_get_entries ( resource link_identifier, resource result_identifier)

ldap_get_entries() retourne toutes les entrées du résulat result_identifier, sous la forme d'un tableau multi-dimensionnel, ou FALSE en casd d'erreur.

ldap_get_entries() sert à simplifier la lecture des entrées dans un résultat, ainsi que celle des attributs correspondants. La structure du tableau retourné la suivante :

L'index d'attribut est converti en minuscules (les attributs sont sensibles à la casse pour les serveurs de dossiers, mais ne le sont pas lorsqu'ils sont utilisés comme index de tableaux.

return_value["count"] = nombre d'entrées dans le résultat
return_value[0] : se réfère au détails de la première entrée

return_value[n]["dn"] = DN de la n-ième entrée du résultat

return_value[n]["count"] = nombre d'attributs de la n-ième entrée
return_value[n][m] = m-ième attribut de la i-ème entrée

return_value[n]["attribute"]["count"] = nombre de valeur des attributs de la i-ième entrée
return_value[n]["attribute"][m] = m-ième valeur de la n-ième entrée

Voir aussi ldap_first_entry() et ldap_next_entry().

Précédent | Sommaire | Suivant
ldap_get_dn | Niveau supérieur | ldap_get_option


ldap_get_option

(PHP 4 >= 4.0.4)

ldap_get_option -- Lit/écrit la valeur courante d'une option

Description

bool ldap_get_option ( resource link_identifier, int option, mixed retval)

ldap_get_option() modifie la valeur de l'option option à la valeur retval pour la connexion link_identifier. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Le paramètre option peut prendre l'une des valeurs suivantes : LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN. Elles sont décrites dans draft-ietf-ldapext-ldap-c-api-xx.txt

Note : ldap_get_option() n'est disponible qu'avec OpenLDAP 2.x.x OU Netscape Directory SDK x.x, et a été ajoutée en PHP 4.0.4.

Exemple 1. Vérification de la version du protocole avec ldap_get_option()

// $ds doit &ecirc;tre une ressource de connexion valide
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version))
    echo "Nous utilisons le protocole version $version";
else
    echo "Impossible de d&eacute;terminer la version du protocole.";

Voir aussi ldap_set_option().

Précédent | Sommaire | Suivant
ldap_get_entries | Niveau supérieur | ldap_get_values_len


ldap_get_values_len

(PHP 3>= 3.0.13, PHP 4 )

ldap_get_values_len -- Lit toutes les valeurs binaires d'une entrée

Description

array ldap_get_values_len ( resource link_identifier, resource result_entry_identifier, string attribute)

ldap_get_values_len() retourne un tableau de valeurs pour l'attribut attribute en cas de succès, et FALSE en cas d'erreur.

ldap_get_values_len() sert à lire toutes les valeurs de l'attribut attribute dans le résultat result_entry_identifier. L'entré utilisée et l'entrée courante du résultat de recherche LDAP result_entry_identifier. Le nombre de valeurs retournées est disponibles à l'index 'count' du tableau retourné. Les valeurs sont accessibles individuellement, avec les index numérique du tableau. L'indexation commence à 0.

Cette fonction d'utilise exactement comme ldap_get_values(), hormis le fait qu'elle gère les données binaires, et non pas les chaînes de caractères.

Note : Cette fonction a été ajoutée en PHP 4.0.

Précédent | Sommaire | Suivant
ldap_get_option | Niveau supérieur | ldap_get_values


ldap_get_values

(PHP 3, PHP 4 )

ldap_get_values -- Lit toutes les valeurs d'une entrée

Description

array ldap_get_values ( resource link_identifier, resource result_entry_identifier, string attribute)

ldap_get_values() retourne un tableau de valeurs pour l'attribut attribute, ou FALSE en cas d'erreur.

ldap_get_values() sert à lire toutes les valeurs de l'attibut attribute, dans l'entrée courante du résultat de recherche result_entry_identifier, pour la connexion link_identifier. Le nombre de valeurs retournées est disponibles à l'index 'count' du tableau retourné. Les valeurs sont accessibles individuellement, avec les index numérique du tableau. L'indexation commence à 0.

L'utilisation de la fonction result_entry_identifier requiert un résultat de recherche, et doit donc être précédé d'une recherche LDAP, et de l'une des fonctions permettant d'accéder à une entrée.

Votre application doit contenir des informations permettant de lire certains attributs (comme "nom" ou "mail"), ou bien vous devrez utiliser la fonction ldap_get_attributes() pour savoir quels sont les attributs qui existent pour une entrée donnée.

LDAP permet plus d'une entrée par attribut, ce qui permet de stocker plusieurs addresse emails par personne, tout en n'utilisant qu'une étiquette "mail" :

return_value["count"] = nombre de valeur de l'attribut
return_value[0] = première valeur de l'attribut
return_value[i] = n-ième valeur de l'attribut

Exemple 1. Liste toutes les valeurs de l'attribut "mail" d'une entrée

// $ds doit &ecirc;tre une ressource de connexion valide

// $sr doit &ecirc;tre une ressource de r&eacute;sultat valide, obtenue avec une des fonctions de
//     recherche LDAP.

// $entry est une entr&eacute;e LDAP valide, obtenue avec une des fonctions
//        LDAP qui retourne une entr&eacute;e

$values = ldap_get_values($ds, $entry,"mail");

echo $values["count"]." adresses email pour cette entr&eacute;e.<p>";

for ($i=0; $i < $values["count"]; $i++)
    echo $values[$i]."<br>";

Précédent | Sommaire | Suivant
ldap_get_values_len | Niveau supérieur | ldap_list


ldap_list

(PHP 3, PHP 4 )

ldap_list -- Recherche dans un niveau

Description

resource ldap_list ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

ldap_list() retourne un identfiant de résultat ou bien FALSE en cas d'erreur.

ldap_list() effectue une recherche avec le filtre filter dans le dossier base_dn avec l'option LDAP_SCOPE_ONELEVEL.

LDAP_SCOPE_ONELEVEL signifie que la recherche ne peut retourner des entrées que dans le niveau qui est immédiatement sous le niveau base_dn (c'est l'équivalent de la commande "ls", pour obtenir la liste des fichiers et dossiers du dossier courant.

ldap_list() prend 5 paramtères optionnels. Voir ldap_search() pour connaître le détails de leur utilisation.

Note : Ces paramètres optionnels ont été ajoutés en 4.0.2 : attrsonly, sizelimit, timelimit et deref.

Exemple 1. Produit une liste de tous les services d'une société avec ldap_list()

<?php
// $ds doit &ecirc;tre une ressource de connexion valide

  $basedn = "o=Ma Compagnie, c=FR";
  $justthese = array("ou");

  $sr=ldap_list($ds, $basedn, "ou=*", $justthese);

  $info = ldap_get_entries($ds, $sr);

  for ($i=0; $i<$info["count"]; $i++){
    echo $info[$i]["ou"][0] ;
  }
?>

Note : Depuis PHP 4.0.5, il est aussi possible de faire des recherches paralleles. Reportez vous à ldap_search() pour plus de détails.

Précédent | Sommaire | Suivant
ldap_get_values | Niveau supérieur | ldap_mod_add


ldap_mod_add

(PHP 3>= 3.0.8, PHP 4 )

ldap_mod_add -- Ajoute un attribut à l'entrée courante

Description

bool ldap_mod_add ( resource link_identifier, string dn, array entry)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_mod_add() ajoute l'attribut entry à l'entrée dn. Elle effectue la modification au niveau attribut, par opposition au niveau objet. Les additions au niveau objet sont réalisées par ldap_add().

Précédent | Sommaire | Suivant
ldap_list | Niveau supérieur | ldap_mod_del


ldap_mod_del

(PHP 3>= 3.0.8, PHP 4 )

ldap_mod_del -- Efface un attribut à l'entrée courante

Description

bool ldap_mod_del ( resource link_identifier, string dn, array entry)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_mod_del() efface l'attribut entry de l'entrée dn. Elle effectue la modification au niveau attribut, par opposition au niveau objet. Les additions au niveau objet sont réalisées par ldap_delete().

Précédent | Sommaire | Suivant
ldap_mod_add | Niveau supérieur | ldap_mod_replace


ldap_mod_replace

(PHP 3>= 3.0.8, PHP 4 )

ldap_mod_replace -- Remplace un attribut dans l'entrée courante

Description

bool ldap_mod_replace ( resource link_identifier, string dn, array entry)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_mod_replace() remplace l'attribut entry de l'entrée dn. Elle effectue le remplacement au niveau attribut, par opposition au niveau objet. Les additions au niveau objet sont réalisées par ldap_modify().

Précédent | Sommaire | Suivant
ldap_mod_del | Niveau supérieur | ldap_modify


ldap_modify

(PHP 3, PHP 4 )

ldap_modify -- Modifie une entrée LDAP

Description

bool ldap_modify ( resource link_identifier, string dn, array entry)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_modify() modifie l'entrée identifiée par dn, avec les valeurs fournies dans entry. La structure de entry est la même que détaillées dans ldap_add().

Précédent | Sommaire | Suivant
ldap_mod_replace | Niveau supérieur | ldap_next_attribute


ldap_next_attribute

(PHP 3, PHP 4 )

ldap_next_attribute -- Lit l'attribut suivant

Description

string ldap_next_attribute ( resource link_identifier, resource result_entry_identifier, int ber_identifier)

ldap_next_attribute() retourne l'attribut suivant en cas de succès, et sinon, une erreur.

ldap_next_attribute() sert à lire tous les attributs d'une entrée. Le pointeur interne est géré par ber_identifier. Il est passé par référence à la fonction. Le premier appel à ldap_next_attribute() est fait avec le result_entry_identifier retourné par ldap_first_attribute().

Voir aussi ldap_get_attributes().

Précédent | Sommaire | Suivant
ldap_modify | Niveau supérieur | ldap_next_entry


ldap_next_entry

(PHP 3, PHP 4 )

ldap_next_entry -- Lit la prochaine entrée

Description

resource ldap_next_entry ( resource link_identifier, resource result_entry_identifier)

ldap_next_entry() retourne un identifiant d'entrée, pour la prochaine entrée dans le résultat result_entry_identifier. La première entrée a été lue avec la fonction ldap_first_entry(). Si il n'y a plus d'entrées dans le résultat, ldap_next_entry() retourne FALSE.

ldap_next_entry() sert à lire successivement les entrées stockées dans le résultat result_entry_identifier. Des appels répétés à ldap_next_entry() retourneront toutes les entrées jusqu'à ce qu'il n'y en ait plus. Le premier appel doit être fait avec la fonction ldap_first_entry(). Le paramètre result_entry_identifier est celui qui a été retourné par la fonction ldap_first_entry().

Voir aussi ldap_get_entries().

Précédent | Sommaire | Suivant
ldap_next_attribute | Niveau supérieur | ldap_next_reference


ldap_next_reference

(PHP 4 >= 4.0.5)

ldap_next_reference -- Lit la référence suivante

Description

resource ldap_next_reference ( resource link, resource entry)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_next_entry | Niveau supérieur | ldap_parse_reference


ldap_parse_reference

(PHP 4 >= 4.0.5)

ldap_parse_reference -- Extrait les informations d'une référence d'entrée

Description

bool ldap_parse_reference ( resource link, resource entry, array referrals)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_next_reference | Niveau supérieur | ldap_parse_result


ldap_parse_result

(PHP 4 >= 4.0.5)

ldap_parse_result -- Extrait des informations d'un résultat

Description

bool ldap_parse_result ( resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_parse_reference | Niveau supérieur | ldap_read


ldap_read

(PHP 3, PHP 4 )

ldap_read -- Lit une entrée

Description

resource ldap_read ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

ldap_read() retourne un identifiant de ressource, ou FALSE en cas d'erreur.

ldap_read() effectue une recherche avec le filtre filter dans le dossier base_dn avec la configuration LDAP_SCOPE_BASE. C'est équivalent à lire une entrée dans un dossier.

Un filtre ne peut être vide. Si vous voulez lire toutes les informations d'une entrée, utilisez le filtre "objectClass=*". Si vous savez quels sont les types qui sont utilisés dans le serveur de dossiers, vous pouvez aussi utiliser un filtre approprié, comme par exemple "objectClass=inetOrgPerson".

ldap_read() prend 5 paramètres optionnels. Reportez vous à ldap_search() pour plus de détails.

Note : Ces paramètres optionnels ont été ajoutés en PHP 4.0.2 : attrsonly, sizelimit, timelimit et deref.

Depuis PHP 4.0.5, il est aussi possible d'effectuer des recherches paralelles. Voyez ldap_search() poour plus de détails.

Précédent | Sommaire | Suivant
ldap_parse_result | Niveau supérieur | ldap_rename


ldap_rename

(PHP 4 >= 4.0.5)

ldap_rename -- Modifie le nom d'une entrée

Description

bool ldap_rename ( resource link_identifier, string dn, string newrdn, string newparent, bool deleteoldrdn)

ldap_rename() modifie l'entrée dn, autant pour son nom que pour sa localisation. Le nouveau RDN est spécifié avec newrdn et le nouveau père est spécifié avec newparent. Si le paramètre deleteoldrdn vaut TRUE, l'ancienne valeur RDN est supprimée. Sinon l'ancienne valeur RDN est conservée comme une valeur non distinguée. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : ldap_rename() ne fonctionne actuellement qu'avec LDAPv3. Vous pouvez être obligé d'utiliser ldap_set_option() avant de vous lier pour pouvoir utiliser LDAPv3. Cette fonction est uniquement disponible lorsque vous utilisez OpenLDAP 2.x.x OU Netscape Directory SDK x.x. Elle a été ajoutée en PHP 4.0.5.

Précédent | Sommaire | Suivant
ldap_read | Niveau supérieur | ldap_search


ldap_search

(PHP 3, PHP 4 )

ldap_search -- Recherche sur le serveur LDAP

Description

resource ldap_search ( resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

ldap_search retourne un identifiant de résultat, ou bien FALSE en cas d'erreur.

ldap_search() effectue une recherche avec le filtre filter dans le dossier base_dn avec le paramétrage LDAP_SCOPE_SUBTREE. C'est l'équivalent d'une recherche dans le dossier. base_dn spécifie le DN de base du dossier.

Il y a un quatrième paramètre optionnel, qui peut être fourni pour restreindre les attributs et valeurs retournées par le serveur, afin de les adapter à vos besoins. C'est bien plus efficace que le comportement par défaut (qui retourne tous les attributs et leurs valeurs associées). L'utilisation de ce quatrième est donc vivement recommandé.

Le quatrième paramtère est un tableau de chaînes PHP avec les attributs demandé, comme par exemple : array("mail","sn","cn"). Notez que le "dn" est toujours retourné, indépendamment des attributs demandés.

Notez aussi que certains serveurs de dossiers sont configurés pour retourner un nombre limité d'entrées. Si cette situation survient, le serveur indiquera qu'il a retourné un résultat partiel. C'est aussi le cas si le sixième paramètre sizelimit a été utilisé pour limiter le nombre d'entrées retournées.

Le cinquième paramètre attrsonly doit être mis à 1 si seul les types d'attributs sont désirés. Si ce paramètre est mis à 0, les types d'attributs et leurs valeurs seront retournées : c'est le comportement par défaut.

Avec le sixième paramètre sizelimit, il est possible de limiter le nombre d'entrées lues dans le résultat. En utilisant 0, on indique qu'il n'y a pas de limite. NOTE : ce paramètre NE peut PAS remplacer la configuration du serveur. Vous pouvez au mieux baisser encore cette limite.

Le septième paramètre timelimit permet de spécifier le nombre de secondes de duréee de la recherche. En utilisant la valeur 0, la recherche pourra durée indéfiniment. NOTE : ce paramètre NE peut PAS remplacer la configuration du serveur. Vous pouvez au mieux baisser encore cette limite.

Le huitième paramètre deref spécifie comment les alias doivent être géré durant la rechercheé. Ce paramètre peut prendre l'une des valeurs suivantes :

  • LDAP_DEREF_NEVER - (par défaut) les alias ne sont jamais déréférencés.

  • LDAP_DEREF_SEARCHING - les alias sont déréférencés durant la recherche, mais pas durant la localisation du dossier de recherche.

  • LDAP_DEREF_FINDING - les alias sont déréférencés durant la localisation du dossier de recherche, mais pas durant la recherche.

  • LDAP_DEREF_ALWAYS - les alias sont toujours déréférencés.

Note : Ces paramètres optionnels ont été ajoutés en 4.0.2 : attrsonly, sizelimit, timelimit et deref.

Le filtre de recherche peut être simple ou avancé, et utiliser ces opérateurs booléen au format décrit dans la documentation LDAP (reportez vous à Netscape Directory SDK pour plus d'informations sur les filtres).

L'exemple ci-dessous lit le nom du service, le nom, le prénom et le email des employés de la société "Ma Compagnie", dont le nom ou le prénom contient la sous chaîne : $person. Cet exemple illustre l'utilisation de filtres pour indiquer au serveur de faire une recherche sur deux attributs.

Exemple 1. Recherche LDAP

<?php
// $ds doit &ecirc;tre une ressource de connexion valide

// $person est un nom ou une partie de nom (par exemple, "Jean")

$dn = "o=Ma Compagnie, c=FR";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array( "ou", "sn", "givenname", "mail");

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

print $info["count"]." entr&eacute;es trouv&eacute;es.<p>";
?>

Depuis PHP 4.0.5, il est possible de faire des recherches paralelles. Pour cela, vous devez utiliser un tableau de ressources de connexion comme premier argument, au lieu d'une ressource simple. Si vous ne voulez pas utiliser le même dossier de base DN et le même filtre pour toutes les recherches, vous pouvez aussi utiliser un tableau de DN et de filtres. Ces tableaux doivent alors etre de la même taille que le table de ressources de connexion : la première entrée du tableau de ressources sera utilisé avec le premier DN et le premier filtre, etc... Lorsque vous faite une recherche paralelle, un tableau de résultats est retourné, sauf en cas d'erreur, auquel cas l'entrée contiendra FALSE. C'est très proche du comportement habituel, hormis le fait qu'un résultat est toujours retourné lorsqu'une recherche est faite. Il y a de rares cas où une recherche retourne FALSE, alors qu'une recherche en paralelle retourne un identifiant.

Précédent | Sommaire | Suivant
ldap_rename | Niveau supérieur | ldap_set_option


ldap_set_option

(PHP 4 >= 4.0.4)

ldap_set_option -- Modifie la valeur d'une option LDAP

Description

bool ldap_set_option ( resource link_identifier, int option, mixed newval)

ldap_set_option modifie la valeur de l'option option en remplacant la valeur courante par newval. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Le paramètre option peut prendre l'une des valeurs suivantes : LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN, LDAP_OPT_SERVER_CONTROLS, LDAP_OPT_CLIENT_CONTROLS. Voici une brève description des valeurs ci-dessus, dans le fichier draft-ietf-ldapext-ldap-c-api-xx.txt.

Les options LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION et LDAP_OPT_ERROR_NUMBER doivent être des entiers, LDAP_OPT_REFERRALS et LDAP_OPT_RESTART doivent être des booléens, et LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING et LDAP_OPT_MATCHED_DN doivent être des chaînes. Le premier exemple illustre leur utilisation. Les options LDAP_OPT_SERVER_CONTROLS et LDAP_OPT_CLIENT_CONTROLS requièrent une liste de contrôles, ce qui signifie que la valeur doit être un tableau de contrôles. Un contrôle est constitués d'un oid identifiant le contrôle, une valeur optionnelle value, et un flag optionnel de criticalité (criticality). En PHP, un contrôle est définit sous la forme d'un tableau, donc les clés sont oid avec une chaîne comme valeur, et deux clés optionnelles. Ces clés sont value avec une chaîne comem valeur, et iscritical avec une valeur booléenne. Par défaut, iscritical vaut FALSE. Reportez vous au second exemple pour une illustration.

Note : Cette fonction n'est disponible que lorsque vous utilisez OpenLDAP 2.x.x ou Netscape Directory SDK x.x. Elle a été ajoutée en PHP 4.0.4.

Exemple 1. Set protocol version

<?php
// $ds doit &ecirc;tre une ressource de connexion valide
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
    echo "Version LDAPv3";
else
    echo "Impossible de modifier la version du protocole &agrave; 3";
?>

Exemple 2. Set server controls

// $ds doit &ecirc;tre une ressource de connexion valide
// controle sans valeur
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => TRUE);
// iscritical vaut par d&eacute;faut FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// essayez d'utiliser les deux contr&ocirc;les
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2)))
    echo "Impossible de modifier les contr&ocirc;les du serveur";

Voir aussi ldap_get_option().

Précédent | Sommaire | Suivant
ldap_search | Niveau supérieur | ldap_set_rebind_proc


ldap_set_rebind_proc

(PHP 4 >= 4.2.0)

ldap_set_rebind_proc -- Configure une fonction de callback pour refaire des liaisons, lors de recherche de référants.

Description

bool ldap_set_rebind_proc ( resource link, string callback)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_set_option | Niveau supérieur | ldap_sort


ldap_sort

(PHP 4 >= 4.2.0)

ldap_sort -- Trie les entrées d'un résultat LDAP

Description

bool ldap_sort ( resource link, resource result, string sortfilter)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_set_rebind_proc | Niveau supérieur | ldap_start_tls


ldap_start_tls

(PHP 4 >= 4.2.0)

ldap_start_tls -- Démarre TLS

Description

bool ldap_start_tls ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_sort | Niveau supérieur | ldap_t61_to_8859


ldap_t61_to_8859

(PHP 4 >= 4.0.2)

ldap_t61_to_8859 -- Convertit les caractères t6 en caractères 8859

Description

string ldap_t61_to_8859 ( string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ldap_start_tls | Niveau supérieur | ldap_unbind


ldap_unbind

(PHP 3, PHP 4 )

ldap_unbind -- Déconnecte d'un serveur LDAP

Description

bool ldap_unbind ( resource link_identifier)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

ldap_unbind() assure la déconnexion du serveur LDAP.

Précédent | Sommaire | Suivant
ldap_t61_to_8859 | Niveau supérieur | Mail


Mail

Manuel PHP
Précédent Suivant

XLIX. Mail

Introduction

La fonction mail() permet d'envoyer du mail.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
SMTP | "localhost" | PHP_INI_ALL
smtp_port | "25" | PHP_INI_ALL
sendmail_from | NULL | PHP_INI_ALL
sendmail_path | DEFAULT_SENDMAIL_PATH | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

smtp string

Sous Windows seulement : adresse IP ou nom que PHP doit utiliser pour envoyer du mail avec la fonction mail().

smtp int

Sous Windows seulement : numéro de port à utiliser pour se connecter au serveur SMTP lors de l'envoi de mail avec la fonction mail(); par défaut, c'est 25. Uniquement disponible depuis PHP 4.3.0.

sendmail_from string

Sous Windows seulement : valeur du champ "From:" qui doit être utilisée lors de l'envoi de mail.

sendmail_path string

Localisation du programme de sendmail : habituellement /usr/sbin/sendmail ou /usr/lib/sendmail. configure essaye de repérer la présence de sendmail par lui-même, et affecte ce résultat par défaut. En cas de problème de localisation, vous pouvez établir une nouvelle valeur par défaut ici.

Tout système n'utilisant pas sendmail doit établir cette directive à la valeur chemin du programme de substitution qui remplace le serveur de mail, si celui-ci existe, par exemple, Qmail. Dans ce cas là, vous devez mettre: /var/qmail/bin/sendmail.

qmail-inject ne requiert aucune option pour traiter correctement le mail.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
ezmlm_hash -- Calcule la valeur de hash demandée par EZMLM
mail -- Envoie de mail

Précédent | Sommaire | Suivant
ldap_unbind | Niveau supérieur | ezmlm_hash


ezmlm_hash

(PHP 3>= 3.0.17, PHP 4 >= 4.0.2)

ezmlm_hash -- Calcule la valeur de hash demandée par EZMLM

Description

int ezmlm_hash ( string addr)

ezmlm_hash() calcule la valeur de hash, nécessaire lors de la gestion de liste de diffusions EZMLM dans une base de données MySQL.

Exemple 1. Calcul du hash et enregistrement d'un utilisateur de mailing liste

<?php
  $user = "kris@koehntopp.de";
  $hash = ezmlm_hash($user);
  $query = sprintf("INSERT INTO sample VALUES (%s, '%s')", $hash, $user);
  $db->query($query);
// utilisation de l'interface PHPLIB
?>

Précédent | Sommaire | Suivant
Mail | Niveau supérieur | mail


mail

(PHP 3, PHP 4 )

mail -- Envoie de mail

Description

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

mail() poste automatiquement le message message à destination de to. Les destinataires multiples doivent être séparés par des virgules. Les emails avec pièces jointes ou contenus particuliers (comme les emails en HTML, par exemple), peuvent être réalisés avec cette fonction. Il faut respecter l'encodage MIME. Pour plus de détails, voyez http://www.zend.com/zend/spotlight/sendmimeemailpart1.php et les classes PEAR MIME.

Les RFC suivantes peuvent aussi se révéler utiles : RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 et RFC 2049.

mail() retourne TRUE si le mail est envoyé, et FALSEsinon.

Exemple 1. Envoie de courrier électronique (mail)

<?php
  mail("maxou@exemple.com", "Mon Sujet", "Ligne 1\nLigne 2\nLigne 3");
?>

Le quatrième argument passé sera inséré à la fin de l'en-tête. Typiquement, cela permet d'insérer des en-têtes supplémentaires. Les en-têtes multiples doivent être séparées par des virgules.

Note : Sous Windows 32bits, vous devez utiliser \r\n pour séparer les en-têtes. Notez aussi que les en-têtes cc: et bcc: sont sensibles à la casse et doivent être écrits Cc: et Bcc: sous Win32.

Si le cinquième argument additional_parameters est fourni, PHP l'utilisera dans son appel du programme d'envoie de courrier électronique. Ceci est pratique pour passer une valeur correcte à l'en-tête Return-Path, avec sendmail.

Note : Le cinquième paramètre a été ajouté en PHP 4.0.5.

Exemple 2. Envoi de eMail avec des en-têtes supplémentaires.

<?php
mail("personne@exemple.com", "Le sujet", $message,
     "From: webmaster@$SERVER_NAME\r\n"
    ."Reply-To: webmaster@$SERVER_NAME\r\n"
    ."X-Mailer: PHP/" . phpversion());
?>
Avec le cinquième paramètre, vous pouvez ajouter d'autres paramètres de ligne de commande qui seront utilisés par le programme d'envoi de courrier. Dans l'exemple ci-dessous, l'en-tête Return-Path est correctement paramétré. Normalement, sendmail ajoute automatiquement l'en-tête X-Authentication-Warning (paramètre -f), car l'utilisateur "serveur web" n'est probablement pas un de ses utilisateurs de confiance ("trusted users"). Pour supprimer cette alerte, ajoutez l'utilisateur du serveur web dans la configuration de sendmail.

Exemple 3. Envoi de eMail avec des en-têtes supplémentaires et un paramètre de ligne de commande supplémentaire

<?php

mail("personne@exemple.com", "Le sujet", $message,
     "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVER_NAME");
?>
Vous pouvez aussi utiliser des techniques simples de concaténations de chaînes pour construire des messages complexes :

Exemple 4. Envoi de mail complexe.

<?php
/* destinataire */
$to  = "Mary <mary@example.com>" . ", " ; // note the comma
$to .= "Kelly <kelly@example.com>";

/* sujet */
$subject = "Anniversaires &agrave; souhaiter en Ao&ucirc;t";

/* message */
$message = '
<html>
<head>
 <title>Rappel des anniversaires d'Ao&ucirc;t</title>
</head>
<body>
<p>Voici la liste des anniversaires du mois d\'Ao&ucirc;t!</p>
<table>
 <tr>
  <th>Ami</th><th>Jour</th><th>Mois</th><th>Ann&eacute;e</th>
 </tr>
 <tr>
  <td>Guillaume</td><td>3</td><td>Ao&ucirc;t</td><td>1970</td>
 </tr>
 <tr>
  <td>Sandra</td><td>17</td><td>Ao&ucirc;t</td><td>1973</td>
 </tr>
</table>
</body>
</html>
';

/* Pour envoyer du mail au format HTML, vous pouvez configurer le type Content-type. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* D'autres en-t&ecirc;tes : errors, From cc's, bcc's, etc */
$headers .= "From: Birthday Reminder <birthday@example.com>\r\n";

$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";

/* et hop, &agrave; la poste */
mail($to, $subject, $message, $headers);
?>

Note : Assurez-vous qu'il n'y ait aucune nouvelle ligne (ou d'autres espaces ou caractères blancs) dans les paramètres to ou subject, car cela peut avoir des effets secondaires irrationnels.

Note : Le paramètre to ne peut pas être une adresse de la forme "Quelqu'un <quidam@exemple.com>". La commande mail ne comprendra pas ce format.

Voir aussi imap_mail().

Précédent | Sommaire | Suivant
ezmlm_hash | Niveau supérieur | Traitement de email


Traitement de email

Manuel PHP
Précédent Suivant

L. Traitement de email

Introduction

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Cette extension a été retirée de PHP depuis la version 4.2.0 et elle est disponible dans PECL.

Installation

Ces fonctions ne sont disponibles que si PHP a été compilé avec l'option --with-aspell[=DIR].

Table des matières
mailparse_determine_best_xfer_encoding -- Détermine le meilleur encodoage pour un fichier
mailparse_msg_create -- Retourne un analyseur destiné au traitement d'un message
mailparse_msg_extract_part_file -- Extrait et décode une section de message
mailparse_msg_extract_part -- Extrait et décode une section de message. Si la fonction de callback n'est pas spécifiée, le contenu sera envoyé à la sortie standard
mailparse_msg_free -- Détruit un analyseur créé par mailparse_msg_create()
mailparse_msg_get_part_data -- Retourne un tableau associatif avec des informations sur le message
mailparse_msg_get_part -- Retourne une ressource sur une section d'un message MIME
mailparse_msg_get_structure -- Retourne un tableau avec les différentes sections MIME du message
mailparse_msg_parse_file -- Analyse un fichier et retourne une ressource représentant la structure du fichier
mailparse_msg_parse -- Analyse incrémentalement des données dans un buffer
mailparse_rfc822_parse_addresses -- Analyse les adresses et retourne un tableau contenant ces données
mailparse_stream_encode -- Lit les données dans un fichier, applique l'encodage et envoie le résultat à destfp
mailparse_uudecode_all -- Scanne les données du fichier et extrait tous les fichiers encodés qui s'y trouvent. Retourne un tableau contenant la liste des fichiers.

Précédent | Sommaire | Suivant
mail | Niveau supérieur | mailparse_determine_best_xfer_encoding


mailparse_determine_best_xfer_encoding

(4.1.0 - 4.1.2 only)

mailparse_determine_best_xfer_encoding -- Détermine le meilleur encodoage pour un fichier

Description

int mailparse_determine_best_xfer_encoding ( resource fp)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Traitement de email | Niveau supérieur | mailparse_msg_create


mailparse_msg_create

(4.1.0 - 4.1.2 only)

mailparse_msg_create -- Retourne un analyseur destiné au traitement d'un message

Description

int mailparse_msg_create ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_determine_best_xfer_encoding | Niveau supérieur | mailparse_msg_extract_part_file


mailparse_msg_extract_part_file

(4.1.0 - 4.1.2 only)

mailparse_msg_extract_part_file -- Extrait et décode une section de message

Description

string mailparse_msg_extract_part_file ( resource rfc2045, string filename [, string callbackfunc])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_create | Niveau supérieur | mailparse_msg_extract_part


mailparse_msg_extract_part

(4.1.0 - 4.1.2 only)

mailparse_msg_extract_part -- Extrait et décode une section de message. Si la fonction de callback n'est pas spécifiée, le contenu sera envoyé à la sortie standard

Description

void mailparse_msg_extract_part ( resource rfc2045, string msgbody [, string callbackfunc])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_extract_part_file | Niveau supérieur | mailparse_msg_free


mailparse_msg_free

(4.1.0 - 4.1.2 only)

mailparse_msg_free -- Détruit un analyseur créé par mailparse_msg_create()

Description

void mailparse_msg_free ( resource rfc2045buf)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_extract_part | Niveau supérieur | mailparse_msg_get_part_data


mailparse_msg_get_part_data

(4.1.0 - 4.1.2 only)

mailparse_msg_get_part_data -- Retourne un tableau associatif avec des informations sur le message

Description

array mailparse_msg_get_part_data ( resource rfc2045)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_free | Niveau supérieur | mailparse_msg_get_part


mailparse_msg_get_part

(4.1.0 - 4.1.2 only)

mailparse_msg_get_part -- Retourne une ressource sur une section d'un message MIME

Description

int mailparse_msg_get_part ( resource rfc2045, string mimesection)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_get_part_data | Niveau supérieur | mailparse_msg_get_structure


mailparse_msg_get_structure

(4.1.0 - 4.1.2 only)

mailparse_msg_get_structure -- Retourne un tableau avec les différentes sections MIME du message

Description

array mailparse_msg_get_structure ( resource rfc2045)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_get_part | Niveau supérieur | mailparse_msg_parse_file


mailparse_msg_parse_file

(4.1.0 - 4.1.2 only)

mailparse_msg_parse_file -- Analyse un fichier et retourne une ressource représentant la structure du fichier

Description

resource mailparse_msg_parse_file ( string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_get_structure | Niveau supérieur | mailparse_msg_parse


mailparse_msg_parse

(4.1.0 - 4.1.2 only)

mailparse_msg_parse -- Analyse incrémentalement des données dans un buffer

Description

void mailparse_msg_parse ( resource rfc2045buf, string data)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_parse_file | Niveau supérieur | mailparse_rfc822_parse_addresses


mailparse_rfc822_parse_addresses

(4.1.0 - 4.1.2 only)

mailparse_rfc822_parse_addresses -- Analyse les adresses et retourne un tableau contenant ces données

Description

array mailparse_rfc822_parse_addresses ( string addresses)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_msg_parse | Niveau supérieur | mailparse_stream_encode


mailparse_stream_encode

(4.1.0 - 4.1.2 only)

mailparse_stream_encode -- Lit les données dans un fichier, applique l'encodage et envoie le résultat à destfp

Description

bool mailparse_stream_encode ( resource sourcefp, resource destfp, string encoding)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_rfc822_parse_addresses | Niveau supérieur | mailparse_uudecode_all


mailparse_uudecode_all

(no version information, might be only in CVS)

mailparse_uudecode_all -- Scanne les données du fichier et extrait tous les fichiers encodés qui s'y trouvent. Retourne un tableau contenant la liste des fichiers.

Description

array mailparse_uudecode_all ( resource fp)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mailparse_stream_encode | Niveau supérieur | Mathématiques


Mathématiques

Manuel PHP
Précédent Suivant

LI. Mathématiques

Introduction

Ces fonctions ne sont capables de manipuler que des entiers integer, ou nombres à virgule flottante (float). Si vous avez besoin de manipuler des nombres plus grands, reportez-vous aux fonctions mathématiques sur des nombres de grande taille.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Les constantes listées ici sont toujours disponibles dans PHP.

Tableau 1. constantes mathématiques

Constante | Valeur | Description
M_PI | 3.14159265358979323846 | Pi
M_E | 2.7182818284590452354 | e
M_LOG2E | 1.4426950408889634074 | log_2 e
M_LOG10E | 0.43429448190325182765 | log_10 e
M_LN2 | 0.69314718055994530942 | log_e 2
M_LN10 | 2.30258509299404568402 | log_e 10
M_PI_2 | 1.57079632679489661923 | pi/2
M_PI_4 | 0.78539816339744830962 | pi/4
M_1_PI | 0.31830988618379067154 | 1/pi
M_2_PI | 0.63661977236758134308 | 2/pi
M_SQRTPI | 1.77245385090551602729 | sqrt(pi) [4.0.2]
M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(pi)
M_SQRT2 | 1.41421356237309504880 | sqrt(2)
M_SQRT3 | 1.73205080756887729352 | sqrt(3) [4.0.2]
M_SQRT1_2 | 0.70710678118654752440 | 1/sqrt(2)
M_LNPI | 1.14472988584940017414 | log_e(pi) [4.0.2]
M_EULER | 0.57721566490153286061 | Euler constant [4.0.2]
Seule M_PI est disponible dans les verisons de PHP jusqu'à 4.0.0. Toutes les autres constantes on été ajoutés à partir de PHP 4.0.0, et les autres ont été indiquées avec [4.0.2].

Table des matières
abs -- Valeur absolue
acos -- arc cosinus
acosh -- Arc cosinus hyperbolique
asin -- arc sinus
asinh -- Arc sinus hyperbolique
atan2 -- Arc tangent de deux variables
atan -- arc tangent
atanh -- Arc tangeant hyperbolique
base_convert -- Convertit un nombre entre des bases arbitraires
bindec -- Convertit de binaire en décimal
ceil -- Arrondit au nombre supérieur
cos -- cosinus
cosh -- Cosinus hyperbolic
decbin -- Convertit de décimal en binaire
dechex -- Convertit de décimal en hexadécimal
decoct -- Convertit de décimal en octal
deg2rad -- Convertit un nombre de degrés en radians
exp -- Exponentielle
expm1 -- Retourne le résultat de exp(number) - 1, calculé de manière précise, même si val est proche de 0
floor -- Arrondit à l'entier inférieur
fmod -- Retourne le reste de la division
getrandmax -- Plus grande valeur aléatoire possible
hexdec -- Convertit de hexadécimal en décimal
hypot -- Retourne le résultat de sqrt( num1*num1 + num2*num2)
is_finite -- Indique si un nombre est fini
is_infinite --
is_nan -- Indique si une valeur est un nombre
lcg_value -- Générateur de congruence combinée linéaire
log10 -- logarithme en base 10
log1p -- Retourne le résultat de log(1 + number), calculé de manière précise, même si val est proche de zéro.
log -- Logarithme naturel (népérien)
max -- La plus grande valeur
min -- La plus petite valeur
mt_getrandmax -- La plus grand valeur aléatoire possible
mt_rand -- Génère une valeur aléatoire (meilleure méthode)
mt_srand -- Initialise une valeur aléatoire (meilleure méthode)
octdec -- Convertit d'octal en décimal
pi -- Retourne la valeur de pi
pow -- Expression exponentielle
rad2deg -- Convertit de radians en degrés
rand -- Génère une valeur aléatoire
round -- Arrondi
sin -- Sinus
sinh -- Sinyus hyperbolique
sqrt -- Racine carrée
srand -- Initialise le générateur de nombres aléatoires
tan -- Tangente
tanh -- Tangente hyperbolique

Précédent | Sommaire | Suivant
mailparse_uudecode_all | Niveau supérieur | abs


abs

(PHP 3, PHP 4 )

abs -- Valeur absolue

Description

number abs ( mixed number)

abs() retourne la valeur absolue du nombre number. Si le nombre est un nombre à virgule flottante (float), le type retourné est aussi un nombre à virgule flottante (float), sinon, c'est un entier (integer).

Exemple 1. Exemple avec abs()

$abs = abs(-4.2); // $abs = 4.2; (double/float)
$abs2 = abs(5);   // $abs2 = 5; (integer)
$abs3 = abs(-5);  // $abs3 = 5; (integer)

Précédent | Sommaire | Suivant
Mathématiques | Niveau supérieur | acos


acos

(PHP 3, PHP 4 )

acos -- arc cosinus

Description

float acos ( float arg)

acos() retourne l'arc cosinus de arg (arg en radians). acos() est la fonction inverse de cos(), ce qui signifie que a==cos(acos(a)) pour toute valeur qui soit dans l'intervalle de validité de acos()'.

Voir aussi
acosh(),
asin() et
atan().

Précédent | Sommaire | Suivant
abs | Niveau supérieur | acosh


acosh

(PHP 4 >= 4.1.0)

acosh -- Arc cosinus hyperbolique

Description

float acosh ( float arg)

acosh() retourne l'arc cosinus hyperbolique de arg, c'est à dire la valeur dont le cosinus hyperbolique est arg.

Note : Cette fonction n'est pas implémentée sous Windows.

Voir aussi
acos(),
asinh() et
atanh().

Précédent | Sommaire | Suivant
acos | Niveau supérieur | asin


asin

(PHP 3, PHP 4 )

asin -- arc sinus

Description

float asin ( float arg)

asin() retourne l'arc sinus de arg (arg en radians). asin() est la fonction inverse de sin(), ce qui signifie que a==sin(asin(a)) pour toute valeur qui soit dans l'intervalle de validité de asin().

Voir aussi
asinh(),
acos() et
atan().

Précédent | Sommaire | Suivant
acosh | Niveau supérieur | asinh


asinh

(PHP 4 >= 4.1.0)

asinh -- Arc sinus hyperbolique

Description

float asinh ( float arg)

asinh() retourne l'arc sinus hyperbolique de arg, c'est à dire la valeur dont le sinus hyperbolique est arg.

Note : Cette fonction n'est pas implémentée sous Windows.

Voir aussi
asin(),
acosh() et
atanh().

Précédent | Sommaire | Suivant
asin | Niveau supérieur | atan2


atan2

(PHP 3>= 3.0.5, PHP 4 )

atan2 -- Arc tangent de deux variables

Description

float atan2 ( float y, float x)

atan2() retourne l'arc tangent de deux variables x et y. La formule est : " arc tangent (y / x) ", et les signes des arguments sont utilisés pour déterminer le quadrant du résultat.

atan2() retourne un résultat en radians, entre -PI et PI (inclus).

Voir aussi acos() et atan().

Précédent | Sommaire | Suivant
asinh | Niveau supérieur | atan


atan

(PHP 3, PHP 4 )

atan -- arc tangent

Description

float atan ( float arg)

atan() retourne l'arc tangent de arg (arg en radians). atan() est la fonction inverse de tan(), ce qui signifie que a==tan(atan(a)) pour toute valeur qui soit dans l'intervalle de validité de atan().

Voir aussi
atanh(),
asin() et
acos().

Précédent | Sommaire | Suivant
atan2 | Niveau supérieur | atanh


atanh

(PHP 4 >= 4.1.0)

atanh -- Arc tangeant hyperbolique

Description

float atanh ( float arg)

atanh() retourne l'arc tangente hyperbolique de arg, c'est à dire la valeur dont la tangente hyperbolique est arg.

Note : Cette fonction n'est pas implémentée sous Windows.

Voir aussi
atan(),
asinh() et
acosh().

Précédent | Sommaire | Suivant
atan | Niveau supérieur | base_convert


base_convert

(PHP 3>= 3.0.6, PHP 4 )

base_convert -- Convertit un nombre entre des bases arbitraires

Description

string base_convert ( string number, int frombase, int tobase)

base_convert() retourne une chaîne contenant l'argument number représenté dans la base tobase. La base de représentation de number est donnée par frombase. frombase et tobase doivent être compris entre 2 et 36 inclus. Les chiffres supérieurs à 10 des bases supérieures à 10 seront représentés par les lettres de A à Z, avec A = 10 et Z = 36.

Exemple 1. Exemple avec base_convert()

<?php
  $binary = base_convert($hexadecimal, 16, 2);
?>

Précédent | Sommaire | Suivant
atanh | Niveau supérieur | bindec


bindec

(PHP 3, PHP 4 )

bindec -- Convertit de binaire en décimal

Description

int bindec ( string binary_string)

bindec() retourne la conversion d'un nombre binaire représenté par la chaîne binary_string en décimal.

bindec() convertit un nombre binaire en décimal. Le plus grand nombre convertible a 31 bits à 1, soit 2147483647 en décimal.

Voir aussi
decbin(),
octdec(),
hexdec() et
base_convert().

Précédent | Sommaire | Suivant
base_convert | Niveau supérieur | ceil


ceil

(PHP 3, PHP 4 )

ceil -- Arrondit au nombre supérieur

Description

float ceil ( float value)

ceil() retourne l'entier supérieur du nombre value. Utiliser ceil() sur un entier ne sert à rien. La valeur retournée est un nombre à virgule flottante (float), car ces nombres peuvent être plus grands que les entiers.

<?php
  echo ceil(4.3);    // 5
  echo ceil(9.999);  // 10
?>

Voir aussi floor() et round().

Précédent | Sommaire | Suivant
bindec | Niveau supérieur | cos


cos

(PHP 3, PHP 4 )

cos -- cosinus

Description

float cos ( float arg)

cos() retourne le cosinus de arg (arg en radians).

Voir aussi
acos(),
sin()
tan() et
deg2rad().

Précédent | Sommaire | Suivant
ceil | Niveau supérieur | cosh


cosh

(PHP 4 >= 4.1.0)

cosh -- Cosinus hyperbolic

Description

float cosh ( float arg)

cosh() retourne le cosinus hyperbolique de arg, définit comme (exp(arg) + exp(-arg))/2.

Voir aussi
cos(),
acosh(),
sin() et
tan().

Précédent | Sommaire | Suivant
cos | Niveau supérieur | decbin


decbin

(PHP 3, PHP 4 )

decbin -- Convertit de décimal en binaire

Description

string decbin ( int number)

decbin() retourne une chaîne contenant la représentation binaire de l'entier donné en argument. Le plus grand nombre pouvant être converti est 2147483647 en décimal, ce qui donne une série de 31 uns (1).

Voir aussi
bindec(),
decoct(),
dechex() et
base_convert().

Précédent | Sommaire | Suivant
cosh | Niveau supérieur | dechex


dechex

(PHP 3, PHP 4 )

dechex -- Convertit de décimal en hexadécimal

Description

string dechex ( int number)

dechex() retourne une chaîne contenant la représentation hexadécimale du nombre number. Le nombre le plus grand qui puisse être converti est 2147483647 en décimal, ce qui donnera "7fffffff".

Voir aussi
hexdec(),
decbin(),
decoct() et
base_convert().

Précédent | Sommaire | Suivant
decbin | Niveau supérieur | decoct


decoct

(PHP 3, PHP 4 )

decoct -- Convertit de décimal en octal

Description

string decoct ( int number)

decoct() retourne une chaîne contenant la représentation octale du nombre donné number. Le nombre le plus grand qui puisse être converti est 2147483647 en décimal, ce qui donnera "17777777777".

Voir aussi
octdec(),
decbin(),
dechex() et
base_convert().

Précédent | Sommaire | Suivant
dechex | Niveau supérieur | deg2rad


deg2rad

(PHP 3>= 3.0.4, PHP 4 )

deg2rad -- Convertit un nombre de degrés en radians

Description

float deg2rad ( float number)

deg2rad() convertit number de degrés en radians.

Voir aussi rad2deg().

Précédent | Sommaire | Suivant
decoct | Niveau supérieur | exp


exp

(PHP 3, PHP 4 )

exp -- Exponentielle

Description

float exp ( float arg)

exp() retourne l'exponentielle de arg, c'est-à-dire e élevé à la puissance arg.

Voir aussi pow() et log().

Précédent | Sommaire | Suivant
deg2rad | Niveau supérieur | expm1


expm1

(PHP 4 >= 4.1.0)

expm1 -- Retourne le résultat de exp(number) - 1, calculé de manière précise, même si val est proche de 0

Description

float expm1 ( float number)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
exp | Niveau supérieur | floor


floor

(PHP 3, PHP 4 )

floor -- Arrondit à l'entier inférieur

Description

float floor ( float value)

floor() retourne l'entier inférieur du nombre value. La valeur retournée est un nombre à virgule flottante, (float) car ces nombres peuvent être plus grands que les entiers.

Exemple 1. Exemple avec floor()

<?php
  echo floor(4.3);   // 4
  echo floor(9.999); // 9
?>

Voir aussi ceil() et round().

Précédent | Sommaire | Suivant
expm1 | Niveau supérieur | fmod


fmod

(PHP 4 >= 4.2.0)

fmod -- Retourne le reste de la division

Description

float fmod ( float x, float y)

fmod retourne le reste de la division de (x) par (y). Ce reste est un nombre à virgule flottante. Le reste est défini par : x = i * y + r, pour un entier i. Si y n'est pas nul, r a le même signe que x est une taille inférieure à y.

Exemple 1. Exemple avec fmod()

$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
// $r &eacute;gale 0.5, car 4 * 1.3 + 0.5 = 5.7

Précédent | Sommaire | Suivant
floor | Niveau supérieur | getrandmax


getrandmax

(PHP 3, PHP 4 )

getrandmax -- Plus grande valeur aléatoire possible

Description

int getrandmax ( void )

getrandmax() retourne la plus grande valeur aléatoire possible retournée par rand().

Voir aussi
rand(),
srand()
mt_rand(),
mt_srand() et
mt_getrandmax().

Précédent | Sommaire | Suivant
fmod | Niveau supérieur | hexdec


hexdec

(PHP 3, PHP 4 )

hexdec -- Convertit de hexadécimal en décimal

Description

int hexdec ( string hex_string)

hexdec() retourne une chaîne contenant la représentation décimale du nombre hex_string. Le nombre le plus grand qui puisse être converti est 7fffffff en décimal, ce qui donne "2147483647".

hexdec() remplace tous les caractères non-hexadécimaux par des 0. Et si les zéros de gauche sont ignorés, ceux de droite prennent le propre valeur.

Exemple 1. Exemple avec hexdec()

<?php
  var_dump(hexdec("Hop comme ceci"));
  var_dump(hexdec("0000c000e0cec0"));
  var_dump(hexdec("c000e0cec0"));
// les deux affichent "int(14732992)"
  var_dump(hexdec("aussi"));
  var_dump(hexdec("a0000"));
// les deux affichent "int(655360)"
?>

Voir aussi
dechex(),
bindec(),
octdec() et
base_convert().

Précédent | Sommaire | Suivant
getrandmax | Niveau supérieur | hypot


hypot

(PHP 4 >= 4.1.0)

hypot -- Retourne le résultat de sqrt( num1*num1 + num2*num2)

Description

float hypot ( float num1, float num2)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
hexdec | Niveau supérieur | is_finite


is_finite

(PHP 4 >= 4.2.0)

is_finite -- Indique si un nombre est fini

Description

bool is_finite ( float val)

is_finite() retourne TRUE si val est une valeur finie, c'est à dire une valeur qui peut être représentée par un nombre à virgule flottante sur cette plate-forme.

Voir aussi is_infinite() et is_nan().

Précédent | Sommaire | Suivant
hypot | Niveau supérieur | is_infinite


is_infinite

(PHP 4 >= 4.2.0)

is_infinite --

Description

bool is_infinite ( float val)

is_infinite TRUE si val est infini (positif ou négatif), comme par exemple le résultat de log(0) ou une valeur qui est trop grande pour être représenté par un nombre à virgule flottante sur cette plate-forme.

Voir aussi is_finite() et is_nan().

Précédent | Sommaire | Suivant
is_finite | Niveau supérieur | is_nan


is_nan

(PHP 4 >= 4.2.0)

is_nan -- Indique si une valeur est un nombre

Description

bool is_nan ( float val)

is_nan() retourne TRUE si val n'est pas un nombre, comme par exemple, le résultat de acos(1.01).

Voir aussi is_finite() et is_infinite().

Précédent | Sommaire | Suivant
is_infinite | Niveau supérieur | lcg_value


lcg_value

(PHP 4 )

lcg_value -- Générateur de congruence combinée linéaire

Description

float lcg_value ( void )

lcg_value() retourne un nombre pseudo-aléatoire, compris entre 0 et 1. lcg_value() combine deux générateurs de congruence, de périodes respectives 2^31 - 85 et 2^31 - 249. La période de cette fonction est le produit de ces deux nombres premiers (soit (2^31 - 85)*(2^31 - 249)).

Précédent | Sommaire | Suivant
is_nan | Niveau supérieur | log10


log10

(PHP 3, PHP 4 )

log10 -- logarithme en base 10

Description

float log10 ( float arg)

log10() retourne le logarithme en base 10 de arg.

Précédent | Sommaire | Suivant
lcg_value | Niveau supérieur | log1p


log1p

(PHP 4 >= 4.1.0)

log1p -- Retourne le résultat de log(1 + number), calculé de manière précise, même si val est proche de zéro.

Description

float log1p ( float number)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
log10 | Niveau supérieur | log


log

(PHP 3, PHP 4 )

log -- Logarithme naturel (népérien)

Description

float log ( float arg [, float base])

log() retourne le logarithme naturel (ou népérien) de arg. Si le paramètre optionnel base est spécifié, log() retourn alors le logarithme en base base.

Note : Le paramètre base a été ajouté en PHP version 4.3.0.

Vous pouvez toujours calculer le logarithme en base b d'un nombre n, en utilisant la formule ; logb(n) = log(n)/log(b), où log est le logarithme naturel ou népérien.

Voir aussi exp().

Précédent | Sommaire | Suivant
log1p | Niveau supérieur | max


max

(PHP 3, PHP 4 )

max -- La plus grande valeur

Description

number max ( mixed arg1, mixed arg2, mixed argn)

max() retourne la plus grande valeur numérique parmi les valeurs passées en paramètre.

Si le premier paramètre est un tableau, max() retourne la plus grande valeur de ce tableau. Si le premier paramètre est un entier, une chaîne ou un nombre à virgule flottante (float), max() requiert au moins deux paramètres, et retournera alors le plus grand d'entre eux. Le nombre d'arguments est alors illimité.

Si au moins une valeur est un nombre à virgule flottante, elles seront toutes traitées comme des nombres à virgule flottante, et un nombre à virgule flottante sera retourné. Si aucune valeur n'est un nombre à virgule flottante, elles seront traitées comme des entiers, et un entier sera retourné.

Voir aussi min().

Précédent | Sommaire | Suivant
log | Niveau supérieur | min


min

(PHP 3, PHP 4 )

min -- La plus petite valeur

Description

number min ( number arg1, number arg2 [, ...])

number min ( array numbers)

min() retourne la plus petite valeur numérique parmi les valeurs passées en paramètres.

Dans la première syntaxe, vous devez fournir au moins deux paramètres à la fonction min(), qui vous retournera la plus petite de deux valeurs. Vous pouvez comparer un nombre illimité de valeurs. Si l'une d'entre elle est indéfinie, min() échouera.

Dans la seconde variante, min() retourne la plus petite valeur trouvée dans le tableau numbers.

Si au moins une valeur est un nombre à virgule flottante, elles seront toutes traitées comme des nombres à virgule flottante, et un nombre à virgule flottante sera retourné. Si aucune valeur n'est un nombre à virgule flottante, elles seront traitées comme des entiers, et un entier sera retourné.

Exemple 1. Exemple avec min()

<?php
$a = 4;
$b = 9;
$c = 3;
$arr = array(99, 34, 11);

// Vous pouvez impl&eacute;menter votre propre gestion d'erreur
// en cas d'&eacute;chec (une variable peut ne pas exister)
if (!$min_value = @min($a, $b, $c)) {
    echo "Impossible de trouver la valeur minimale, essayez &agrave; nouveau!.";
} else {
    echo "La valeur minimale est $min_value";
}

print min($arr);  // 11

?>

Voir aussi max().

Précédent | Sommaire | Suivant
max | Niveau supérieur | mt_getrandmax


mt_getrandmax

(PHP 3>= 3.0.6, PHP 4 )

mt_getrandmax -- La plus grand valeur aléatoire possible

Description

int mt_getrandmax ( void )

mt_getrandmax() retourne la plus grand valeur aléatoire possible que peut retourner mt_rand().

Voir aussi
mt_rand(),
mt_srand()
rand(),
srand() et
getrandmax().

Précédent | Sommaire | Suivant
min | Niveau supérieur | mt_rand


mt_rand

(PHP 3>= 3.0.6, PHP 4 )

mt_rand -- Génère une valeur aléatoire (meilleure méthode)

Description

int mt_rand ( [int min, int max])

De nombreux générateurs de nombres aléatoires provenant de vieilles bibliothèques libcs ont des comportement douteux et sont très lents. Par défaut, PHP utilise le générateur de nombres aléatoires de libc avec la fonction rand(). mt_rand() est une fonction de remplacement, pour cette dernière. Elle utilise un générateur de nombres aléatoire de caractéristique connue, le " Mersenne Twister ", qui va produire des nombres utilisables en cryptographie, et qui est 4 fois plus rapide que la fonction standard libc. La "Homepage of the Mersenne Twister " est http://www.math.keio.ac.jp/~matumoto/emt.html.

Appelée sans les arguments optionnels min et max, mt_rand() retourne un nombre pseudo-aléatoire, entre 0 et RAND_MAX. Pour obtenir un nombre entre 5 et 15 inclus, il faut utiliser mt_rand(5,15).

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Note : Dans les versions antérieures à la 3.0.7, la signification du paramètre max était "longueur". Pour avoir le même résultat, il faut utiliser mt_rand (5, 11) pour obtenir un nombre aléatoire entre 5 et 15.

Voir aussi
mt_srand(),
mt_getrandmax() et
rand().

Précédent | Sommaire | Suivant
mt_getrandmax | Niveau supérieur | mt_srand


mt_srand

(PHP 3>= 3.0.6, PHP 4 )

mt_srand -- Initialise une valeur aléatoire (meilleure méthode)

Description

void mt_srand ( [int seed])

mt_srand() initialise une meilleure valeur aléatoire avec seed. Depuis PHP 4.2.0, le paramètre seed est devenu optionnel et est généré par PHP si il n'est pas renseigné.

Exemple 1. Exemple avec mt_srand()

// initialisation avec des microsecondes
function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Voir aussi
mt_rand(),
mt_getrandmax() et
srand().

Précédent | Sommaire | Suivant
mt_rand | Niveau supérieur | octdec


octdec

(PHP 3, PHP 4 )

octdec -- Convertit d'octal en décimal

Description

int octdec ( string octal_string)

octdec() retourne une chaîne contenant la représentation décimale du nombre octal_tring. Le nombre le plus grand qui puisse être converti est 17777777777 en décimal, ce qui donnera "2147483647".

Voir aussi
decoct(),
bindec(),
hexdec() et
base_convert().

Précédent | Sommaire | Suivant
mt_srand | Niveau supérieur | pi


pi

(PHP 3, PHP 4 )

pi -- Retourne la valeur de pi

Description

float pi ( void )

pi() retourne la valeur de pi. La valeur retournée est de type float, et est à la précision indiquée par la directive precision, indiquée dans le fichier php.ini, qui vaut par défaut 14. De plus, vous pouvez utiliser la constante M_PI, qui retourne un résultat identique à la fonction pi().

Exemple 1. Exemple avec pi()

<?php
  echo pi(); // 3.1415926535898
  echo M_PI; // 3.1415926535898
?>

Précédent | Sommaire | Suivant
octdec | Niveau supérieur | pow


pow

(PHP 3, PHP 4 )

pow -- Expression exponentielle

Description

number pow ( number base, number exp)

pow() retourne base élevé à la puissance exp. Si possible, pow() retourne un integer.

Si le calcul ne peut être fait, une alerte sera affichée et pow() retournera FALSE.

Exemple 1. Quelques exemples avec pow()

<?php

var_dump( pow(2,8) ); // int(256)
echo pow(-1,20); // 1
echo pow(0, 0); // 1

echo pow(-1, 5.5); // error

?>

Avertissement

En PHP 4.0.6 plus ancien, pow() retournait toujours un nombre à virgule flottante (float), et n'affichait pas d'alerte. Si le calcul est impossible (racine d'un nombre négatif, par exemple), pow() retournait NAN.

Voir aussi exp() et sqrt().

Précédent | Sommaire | Suivant
pi | Niveau supérieur | rad2deg


rad2deg

(PHP 3>= 3.0.4, PHP 4 )

rad2deg -- Convertit de radians en degrés

Description

float rad2deg ( float number)

rad2deg() convertit number (supposé en radians) en degrés.

Voir aussi deg2rad().

Précédent | Sommaire | Suivant
pow | Niveau supérieur | rand


rand

(PHP 3, PHP 4 )

rand -- Génère une valeur aléatoire

Description

int rand ( [int min, int max])

Appelée sans les options min et max, rand() retourne un nombre pseudo-aléatoire entre 0 et RAND_MAX. Si vous voulez un nombre aléatoire entre 5 et 15 (inclus), par exemple, utilisez rand (5, 15).

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Note : Dans les versions antérieures à la 3.0.7 la signification du paramètre max était longueur. Pour avoir le même résultat, il faut utiliser mt_rand (5, 11) pour obtenir un nombre aléatoire entre 5 et 15.

Voir aussi
srand(),
mt_rand() et
getrandmax().

Précédent | Sommaire | Suivant
rad2deg | Niveau supérieur | round


round

(PHP 3, PHP 4 )

round -- Arrondi

Description

float round ( float val [, int precision])

round() retourne la valeur arrondie de val à la précision precision (nombre de chiffres après la virgule). Le paramètre precision peut être négatif ou null (sa valeur par défaut).

Attention

PHP ne gère par correctement les chaînes telles que "12 300,2", par défaut. Reportez-vous à la conversion de chaînes.

Exemple 1. Exemple avec round()

<?php
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
?>

Note : Le paramètre precision est disponible uniquement en PHP 4.

Voir aussi ceil() et floor().

Précédent | Sommaire | Suivant
rand | Niveau supérieur | sin


sin

(PHP 3, PHP 4 )

sin -- Sinus

Description

float sin ( float arg)

sin() retourne le sinus de arg (arg in radians).

Exemple 1. Exemple avec sin()

<?php

// La pr&eacute;cision d&eacute;pend de la directive precision
print sin(deg2rad(60));  //  0.866025403 ...
print sin(60);           // -0.304810621 ...

?>

Voir aussi
asin(),
cos(),
tan() et
deg2rad().

Précédent | Sommaire | Suivant
round | Niveau supérieur | sinh


sinh

(PHP 4 >= 4.1.0)

sinh -- Sinyus hyperbolique

Description

float sinh ( float arg)

sinh() retourne le sinus hyperbolique de arg, défini comme (exp(arg) - exp(-arg))/2.

Voir aussi
sin(),
asinh(),
cos() et
tan().

Précédent | Sommaire | Suivant
sin | Niveau supérieur | sqrt


sqrt

(PHP 3, PHP 4 )

sqrt -- Racine carrée

Description

float sqrt ( float arg)

sqrt() retourne la racine carrée de arg.

Exemple 1. Exemple avec sqrt()

<?php
  // La pr&eacute;cision d&eacute;pend de votre directive precision
  echo sqrt(9); // 3
  echo sqrt(10); // 3.16227766 ...
?>

Voir aussi pow().

Précédent | Sommaire | Suivant
sinh | Niveau supérieur | srand


srand

(PHP 3, PHP 4 )

srand -- Initialise le générateur de nombres aléatoires

Description

void srand ( [int seed])

srand() initialise le générateur de nombres aléatoires avec seed. Depuis PHP 4.2.0, le paramètre seed est devenu optionnel et est généré par PHP si il n'est pas renseigné.

Exemple 1. Exemple avec srand()

// initialise avec les microsecondes
function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();

Note : Depuis PHP 4.2.0, il n'est plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.

Voir aussi
rand(),
getrandmax(),
mt_rand(),
mt_srand() et
mt_getrandmax().

Précédent | Sommaire | Suivant
sqrt | Niveau supérieur | tan


tan

(PHP 3, PHP 4 )

tan -- Tangente

Description

float tan ( float arg)

tan() retourne la tangente de arg (arg en radians).

Voir aussi
atan(),
sin(),
cos() et
deg2rad().

Précédent | Sommaire | Suivant
srand | Niveau supérieur | tanh


tanh

(PHP 4 >= 4.1.0)

tanh -- Tangente hyperbolique

Description

float tanh ( float arg)

tanh() retourne la tangeante hyperbolique de arg, définie comme sinh(arg)/cosh(arg).

Voir aussi
tan(),
atanh(),
sin() et
cos().

Précédent | Sommaire | Suivant
tan | Niveau supérieur | Chaînes de caractères multi-octets


Chaînes de caractères multi-octets

Manuel PHP
Précédent Suivant

LII. Chaînes de caractères multi-octets

Introduction

De nombreuses langues dont les signes ne peuvent pas être exprimés sur un seul octet. Des codes multi-octets sont utilisés pour pallier à cette insuffisance. mbstring est développé pour supporter les caractères japonais. Cependant, de nombreuses fonctions mbstring peuvent supporter d'autres jeux de caractères.

Les jeux de caractères multi-octets représentent les caractères sur plusieurs octets consécutifs (d'où leur nom). Certains systèmes d'encodages ont des caractères d'échappement dédiés, pour démarrer/finir une séquence de caractères multi-octets. De ce fait, certains caractères peuvent être détruit lorsqu'une chaîne est coupée en plusieurs morceaux, ou bien conduire à des résultats erronnés lorsque le nombre de caractère est compté. Il faut utiliser des fonctions qui supportent ces encodages. Les fonctions mbstring supportent les jeux de caractères multi-octets, ainsi que les conversions.

Etant donné que PHP supporte essentiellement le jeu de caractères ISO-8859-1, certains jeux de caractères ne fonctionnent pas bien avec PHP. Par conséquent, il est important de donner une valeur à l'option de configuration mbstring.internal_encoding qui permettent à PHP de travailler correctement.

Pré-requis PHP 4

  • Encodage par octet

  • Les caractères d'un octet dans l'intervalle 00h-7fh doivent être compatibles avec le code ASCII

  • Jeux de caractères multi-octets, qui n'utilisent pas l'intervalle 00h-7fh.

Voici des exemples d'encodage internes :

Exemple 1. Jeu de caractères qui fonctionnent avec PHP

Jeus de caract&egrave;res qui fonctionnent avec PHP :
ISO-8859-*, EUC-JP, UTF-8

Jeu de caract&egrave;res qui NE fonctionnent PAS avec PHP :
JIS, SJIS

Les jeux de caractères qui ne fonctionnent pas comme encodage interne à PHP, peuvent toutefois être utilisé avec les fonctions de conversion de mbstring.

Note : SJIS ne doit pas être utilisé comme encodage interne, à moins que vous ne soyez familier de l'analyseur/compilateur, et des problèmes liés aux jeux de caractères.

Note : SI vous utilisez une base de données avec PHP, il est recommandé que vous utilisiez le même jeu de caractère pour la base de données et le jeu de caractère interne de PHP, pour améliorer les performances.

Si vous utilisez PostgreSQL, il supporte des jeux de caractères qui peuvent être différents de ceux du client. Reportez vous au manuel de PostgreSQL pour plus de détails.

Installation

mbstring est un module PHP. Vous devez activer le module avec le script de configuration configure. Reportez vous à la section installation pour plus de détails.

Les options de configurations suivantes sont liées au module mbstring.

  • --enable-mbstring : Active les fonctions mbstring. Cette option est nécessaire pour utiliser les fonctions mbstring.

    Note : A partir de PHP 4.3.0, l'option --enable-mbstring sera activée par défaut, et remplacée par --with-mbstring[=LANG] pour supporter le chinois, coréen et russe. Le jeu de caractères japonais est supporté par défaut. Si --with-mbstring=cn est utilisé, le chinois simplifié sera supporté. Si --with-mbstring=tw est utilisé, le chinois traditionnel sera supporté. Si --with-mbstring=kr est utilisé, le coréen sera supporté. Si --with-mbstring=ru est utilisé, le russe sera supporté. Si --with-mbstring=all est utilisé, toutes les langues ci-dessus seront configurée, mais la taille de PHP sera maximisée, à cause des tables de conversions pour l'Unicode. Notez que le chinois, coréen et russe sont expérimentelement supportés en PHP 4.3.0.

  • --enable-mbstr-enc-trans : Active la conversion automatique des données par HTTP, avec le moteur de conversion de mbstring. Si cette option est activée, les données venants du web via HTTP seront converties dans le jeu de caractères mbstring.internal_encoding, automatiquement. automatically.

    Note : Depuis PHP 4.3.0, l'option --enable-mbstr-enc-trans sera éliminée, et remplacée par mbstring.encoding_translation. La conversion de jeu de caractères d'entrée HTTP sera activée lorsque cette option sera à On (Par défaut, cette option vautOff).

  • --enable-mbregex : Active les fonctions d'expressions régulières, compatibles avec les caractères multi-octets.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
mbstring.language | NULL | PHP_INI_ALL
mbstring.detect_order | NULL | PHP_INI_ALL
mbstring.http_input | NULL | PHP_INI_ALL
mbstring.http_output | NULL | PHP_INI_ALL
mbstring.internal_encoding | NULL | PHP_INI_ALL
mbstring.script_encoding | NULL | PHP_INI_ALL
mbstring.substitute_character | NULL | PHP_INI_ALL
mbstring.func_overload | "0" | PHP_INI_SYSTEM
mbstring.encoding_translation | "0" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

mbstring.language string

Définit le langage utilisé par mbstring. Notez que cette option définit mbstring.internal_encoding mbstring.internal_encoding doit être placé après mbstring.language dans le fichier php.ini

mbstring.encoding_translation string

Active la détection et la traduction des données d'entrées HTTP vers le codage interne mbstring.

mbstring.internal_encoding string

Définit l'encodage interne par défaut.

mbstring.http_input string

Définit l'encodage de reception HTTP par défaut.

mbstring.http_output string

Définit l'encodage d'affichage HTTP par défaut.

mbstring.detect_order string

Définit l'ordre de détection des encodages par défaut. Voir aussi mb_detect_order().

mbstring.substitute_character string

Définit l'encodage de substitution par défaut : il est utilisé pour les caractères invalides.

mbstring.func_overload string

Remplace les fonctions de traitement des chaînes par les fonctions mbstring. mail(), ereg(), etc... sont remplacées par mb_send_mail(), mb_ereg(), etc... Les valeurs possibles sont 0, 1, 2, 4 ou toute combinaison des quatres. Par exemple, 7 remplacera tout : 0: Aucun remplacement, 1: Remplace mail(), 2: Remplace les fonctions str*(), 4: Remplace les fonctions ereg*().

Les navigateurs sont supposés utiliser le même jeu de caractères lorsqu'ils soumettent un formulaire. Mais, tous les navigateurs ne le font pas. Reportez vous à la fonction mb_http_input() pour détecter les jeux de caractères utilisé par les navigateurs.

Si enctype est mis à multipart/form-data dans les formulaires HTML, mbstring ne convertira pas les données de POST. L'utilisateur doit les convertir dans le script, si nécessaire.

En général, les navigateurs sont suffisament intelligent pour détecter les jeux de caractères dans le HTML. Si charset est activé dans les en-têtes, cela donnera de meilleurs résultats. Changez la valeur de default_charset avec la valeur appropriée.

Exemple 2. Configuration de php.ini pour mbstring

; Langage par d&eacute;faut
mbstring.language        = English; Anglais (par d&eacute;faut)
mbstring.language        = Japanese; Japonais

;; Jeu de caract&egrave;re interne
;; Note : Assurez vous que ce jeu fonctionne avec PHP
mbstring.internal_encoding    = UTF-8

;; Activation de la conversion automatique des entr&eacute;es HTTP
mbstring.encoding_translation = On

;; Jeu de caract&egrave;res par d&eacute;faut pour les donn&eacute;es d'entr&eacute;e HTTP
;; Note : Le script ne peux pas changer cette configuration
mbstring.http_input           = pass    ; Aucune conversion.
mbstring.http_input           = auto    ; Utilise auto
                                ; "auto" est remplac&eacute; par "ASCII,JIS,UTF-8,EUC-JP,SJIS"
mbstring.http_input           = SJIS    ; Utilise SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Specifie l'ordre

;;Jeu de caract&egrave;res par d&eacute;faut pour les donn&eacute;es de sortie HTTP
mbstring.http_output          = pass    ; Aucune conversion
mbstring.http_output          = UTF-8   ; Utilise UTF-8

;; Ordre de d&eacute;tection des jeux de caract&egrave;res
mbstring.detect_order         = auto    ; Utilise la d&eacute;tection automatique
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Sp&eacute;cifie l'ordre

;; Set default substitute character
mbstring.substitute_character = 12307   ; Sp&eacute;cifie une valeur Unicode
mbstring.substitute_character = none    ; Ne pas afficher de caract&egrave;res
mbstring.substitute_character = long    ; Exemple complet : U+3000,JIS+7E7E

Exemple 3. Configuration de php.ini pour les utilisateurs de EUC-JP

;; D&eacute;sactive la bufferisation de sortie
output_buffering      = Off

;; Choisi le jeu de caract&egrave;res
default_charset       = EUC-JP

;; Le langage par d&eacute;faut est le japonais
mbstring.language = Japanese

;; Activation de la traduction automatique des donn&eacute;es d'entr&eacute;e HTTP
mbstring.encoding_translation = On

;; Acitvation de la converstion automatique
mbstring.http_input   = auto

;; Convertit les sorties en EUC-JP
mbstring.http_output  = EUC-JP

;; Utilise le jeu de caract&egrave;res interne EUC-JP
mbstring.internal_encoding = EUC-JP

;; Ne pas afficher les caract&egrave;res invalides
mbstring.substitute_character = none

Exemple 4. Configuration de php.ini pour les utilisateurs de SJIS

;; Active la bufferisation de sortie
output_buffering     = On

;; Utilise le gestionnaire mb_output_handler pour la conversion de sortie
output_handler       = mb_output_handler

;; Choisi le jeu de caract&egrave;res
default_charset      = Shift_JIS

;; Le langage par d&eacute;faut est le japonais
mbstring.language = Japanese

;; Activation de la traduction automatique des donn&eacute;es d'entr&eacute;e HTTP
mbstring.http_input  = auto

;; Convertit en SJIS
mbstring.http_output = SJIS

;;Utilise le jeu de caract&egrave;res interne EUC-JP
mbstring.internal_encoding = EUC-JP

;; Ne pas afficher les caract&egrave;res invalides
mbstring.substitute_character = none

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

MB_OVERLOAD_MAIL (entier)

MB_OVERLOAD_STRING (entier)

MB_OVERLOAD_REGEX (entier)

Entrées/Sorties HTTP

La conversion automatiques des entrées/sorties HTTP peuvent aussi convertir des données binaires. Les utilisateurs doivent contrôler les conversions, si des données binaires doivent être utilisées via HTTP.

Si l'option enctype d'un formulaire HTML vaut multipart/form-data, mbstring ne convertira pas les données du POST. Dans ce cas, les chaînes de caractères doivent être convertis manuellement.

  • Entrée HTTP

    Il n'y a pas de moyen de contrôler la conversion des caractères HTTP en entrée, depuis un script PHP. Pour désactiver cette conversion, il faut le faire dès le fichier php.ini.

    Exemple 5. Désactive la conversion HTTP dans le php.ini

    ;; D&eacute;sactive la conversion HTTP
mbstring.http_input = pass
;; D&eacute;sactive la conversion HTTP (PHP 4.3.0 ou plus r&eacute;cent)
mbstring.encoding_translation = Off

    Lorsque vous utilisez PHP comme module Apache, il est possible d'annuler la configuration du php.ini pour chaque Virtual Host dans le fichier httpd.conf ou par dossier avec le fichier .htaccess. Reportez vous à la section de configuration ainsi qu'au manuel Apache.

  • Sorties HTTP

    Il y a plusieurs moyens d'activer la conversion en sortie de script PHP. L'un d'entre eux utilise php.ini, un autre utilise ob_start() avec la fonction mb_output_handler() comme fonction de call-back.

    Note : Pour les utilisateurs PHP3-i18n, le système de conversion de mbstring diffère de celui de PHP3-i18n. Le jeu de caractère est converti avec un buffer de sortie.

Exemple 6. Exemple de configuration de mbstring dans php.ini

;; Active la conversion de sortie pour toute les pages PHP

;; Active la bufferisation de sortie
output_buffering    = On

;; Choisi mb_output_handler pour effectuer la conversion de sortie
output_handler      = mb_output_handler

Exemple 7. Exemple de script avec mbstring

<?php

// Active la conversion de caract&egrave;re uniquement pour cette page

// Choisi le jeu de caract&egrave;res SJIS
mb_http_output('SJIS');

// Commence la bufferisation et sp&eacute;cifie "mb_output_handler"
// comme fonction de callback
ob_start('mb_output_handler');
?>

Jeux de caractères supportés

Actuellement, les jeux de caractères suivants sont supportés par mbstring. L'encodage de caractère peut être spécifié par les paramètres encoding dans les fonctions mbstring.

Les jeux de caractères suivants sont supportés par mbstring :

UCS-4, UCS-4BE, UCS-4LE, UCS-2, UCS-2BE, UCS-2LE, UTF-32, UTF-32BE, UTF-32LE, UCS-2LE, UTF-16, UTF-16BE, UTF-16LE, UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, ISO-2022-JP, JIS, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-13, ISO-8859-14, ISO-8859-15, byte2be, byte2le, byte4be, byte4le, BASE64, 7bit, 8bit et UTF7-IMAP.

Depuis PHP 4.3.0, les jeux de caractèrs suivants sont ajoutés, mais restent expérimentaux : EUC-CN, CP936, HZ, EUC-TW, CP950, BIG-5, EUC-KR, UHC (CP949), ISO-2022-KR, Windows-1251 (CP1251), Windows-1252 (CP1252), CP866 et KOI8-R.

Les entrées du fichiers php.ini, qui acceptent des noms de jeux de caractères, acceptent aussi les valeurs "auto" et "pass". Les fonctions mbstring,qui acceptent des noms de jeux de caractères, acceptent aussi la valeur "auto"/

Si "pass" est utilisée, aucune conversion n'est effectuée.

Si "auto" est utilisée, elle est remplacée par "ASCII,JIS,UTF-8,EUC-JP,SJIS".

Voir aussi mb_detect_order().

Note : Un jeu de caractère supporté n'est pas forcément un bon choix comme jeu de caractères interne.

Exploitation des chaînes multi-octets en PHP

Comme presque tout PHP est écrit pour des langues qui sont simple octets, il y a des difficultés à gérer le japonais. Toutes les fonctions PHP de gestion des chaînes de caractères, comme par exemple substr() ne supportent par les chaînes multi octets.

L'extension Multibyte (multi-octets, alias mbstring) dispose de fonctions de chaînes, qui supportent le multi-octet, comme par exemple mb_substr(), qui est un remplaçant de substr().

mbstring supporte aussi le remplacement de fonction, pour permettre le support des chaînes multi-octets sans modifier les scripts PHP. En utilisant ce système de remplacement de fonctions, certains fonctions PHP seront remplacées par leur équivalent de mbstring. Par exemple mb_substr() remplacera substr(). Ce système de remplacement transparent, permet un portage simple et efficace des applications.

mbstring.func_overload, dans le php.ini, doit être configuré avec une valeur positive : 1 remplace la fonction d'envoi de mail; 2 active les fonction de chaînes; 4 active les fonctions d'expression régulières. Par exemple, avec la valeur 7, toutes les fonctions possibles sont remplacées. Voici la liste complète des fonctions remplacées, avec leur fonction de remplacement.

Tableau 2. Fonctions de remplacement

Valeur de mbstring.func_overload | Fonction originale | Fonction de remplacement
1 | mail() | mb_send_mail()
2 | strlen() | mb_strlen()
2 | strpos() | mb_strpos()
2 | strrpos() | mb_strrpos()
2 | substr() | mb_substr()
4 | ereg() | mb_ereg()
4 | eregi() | mb_eregi()
4 | ereg_replace() | mb_ereg_replace()
4 | eregi_replace() | mb_eregi_replace()
4 | split() | mb_split()

Cas des caractères japonais

La plupart des caractères japonais demandent plus d'un octet pour être représentés. De plus, plusieurs jeux de caractères japonais existent : il y a notamment EUC-JP, Shift_JIS et ISO-2022-JP. Unicode devient de plus en plus populaire, et UTF-8 aussi. Pour développer des applications Web en environnement japonais, il faut savoir que les encodages ci-dessus dépendent de l'application qu'on en fait : entrée/sortie HTTP, bases de données ou courrier électronique.

  • La taille nécessaire à un caractère peut aller jusqu'à 4 octets.

  • Un caractère multi-octets occupe généralement deux octets, à comparer avec les caractères simple-octet traditionnellement utilisé. Les caractères les plus gros sont appelés "zen-kaku" (i.e. grande largeur) et les plus petits sont appelés "han-kaku" (i.e. demi-largeur). Les caractères "zen-kaku" sont généralement de taille constante.

  • Certains encodage de caractères définissent des séquences de début/fin pour les sections multi-octets.

  • Les bases de données allouent des tailles de stockages différentes de celles utilisées par PHP, même si le même encodage de caractère est utilisé (par exemple, PostGreSQL).

  • Le courrier électronique utilise généralement ISO-2022-JP.

  • Les sites web en "i-mode" utilisent Shift_JIS.

Références

Les jeux de caractères multi-octets et leurs techniques sont très complexes. Il n'est pas possible de couvrir tous les aspects en détails ici. Reportez-vous aux URL suivantes, pour d'autres ressouces complémentaires :

  • Unicode/UTF/UCS/etc

    http://www.unicode.org/

  • Japonais/coréen/Chinois

    ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf

Table des matières
mb_convert_case -- Modifie la casse d'une chaîne
mb_convert_encoding -- Conversion d'encodage
mb_convert_kana -- Convertit entre les différents "kana"
mb_convert_variables -- Convertit l'encodage de variables
mb_decode_mimeheader -- Décode une en-tête MIME
mb_decode_numericentity -- Décode les entités HTML en caractères
mb_detect_encoding -- Détecte un encodage
mb_detect_order -- Lit/modifie l'ordre de détection des encodages
mb_encode_mimeheader -- Encode une chaîne pour une en-tête MIME
mb_encode_numericentity -- Encode des entités HTML
mb_ereg_match -- Expression régulière POSIX pour les chaînes multi-octets
mb_ereg_replace -- Remplace des segments de chaînes, avec le support des expressions régulières mutli-octet
mb_ereg_search_getpos -- Retourne l'offset du début du prochain segment repéré par une expression régulière
mb_ereg_search_getregs -- Lit le dernier segment de chaîne multi-octets qui correspond au masque
mb_ereg_search_init -- Configure les chaînes et les expressions régulières pour le support des caractères multi-octets
mb_ereg_search_pos -- Retourne la position et la longueur du segement de chaîne qui vérifie le masque de l'expression régulière
mb_ereg_search_regs -- Retourne le segment de chaîne trouvé par une expression régulière multi-octets
mb_ereg_search_setpos -- Choisit le point de départ de la recherche par expression régulière
mb_ereg_search -- Recherche par expression régulière multi-octets
mb_ereg -- Recherche par expression régulière avec support des caractères multi-octets
mb_eregi_replace -- Expression régulière avec support des caractères multi-octets, sans tenir compte de la casse
mb_eregi -- Regular expression match ignoring case with multibyte support
mb_get_info -- Lit la configuration interne de l'extension mbstring
mb_http_input -- Détecte le type d'encodage d'un caractère HTTP
mb_http_output -- Lit/modifie l'encodage d'affichage
mb_internal_encoding -- Lit/modifie l'encodage interne
mb_language -- Lit/modifie le langage courant
mb_output_handler -- Fonction de traitement des affichages web
mb_parse_str -- Analyse les données HTTP GET/POST/COOKIE et assigne les variables globales
mb_preferred_mime_name -- Détecte l'encodage MIME
mb_regex_encoding -- Retourne le jeu de caractères courant pour les expressions régulières
mb_regex_set_options -- Lit et modifie les options des fonctions d'expression régulières à support de caractères multi-octets
mb_send_mail -- Envoie un mail encodé ISO-2022-JP (mail japonais)
mb_split -- Scinde une chaîne en tableau avec une expression régulière multi-octets
mb_strcut -- Coupe une partie de chaîne
mb_strimwidth -- Tronque une chaîne
mb_strlen -- Retourne la taille d'une chaîne
mb_strpos -- Repère la première occurence d'un caractère dans une chaîne
mb_strrpos -- Repère la dernière occurence d'un caractère dans une chaîne
mb_strtolower -- Met tous les caractères en minuscules
mb_strtoupper -- Met tous les caractères en majuscules
mb_strwidth -- Retourne la largeur d'une chaîne
mb_substitute_character -- Lit/modifie les caractères de substitution
mb_substr_count -- Compte le nombre d'occurrences d'une sous-chaîne
mb_substr -- Lit une sous-chaîne

Précédent | Sommaire | Suivant
tanh | Niveau supérieur | mb_convert_case


mb_convert_case

(PHP 4 >= 4.3.0)

mb_convert_case -- Modifie la casse d'une chaîne

Description

string mb_convert_case ( string str, int mode [, string encoding])

mb_convert_case() retourne la chaîne string après avoir modifié sa casse, suivant le mode mode.

mode peut prendre l'une des valeurs suivantes : MB_CASE_UPPER, MB_CASE_LOWER ou MB_CASE_TITLE.

encoding spécifie le jeu de caractère de la chaîne str; si il est omis, le jeu de caractères interne sera utilisé.

La valeur retournée est la chaîne str dont la casse a été modifiée.

Contrairement aux fonctions standards comme strtolower() et strtoupper(), la modification est réalisée en se basant sur le dictionnaire Unicode. Par conséquent, le comportement de cette fonction n'est pas modifié par des configurations locales, et il peut convertir n'importe quelle caractère qui a des propriétés alphabétiques, comme le i-tréma (Ï/ï).

Pour plus d'informations sur les propriétés de l'Unicode, visitez le site de http://www.unicode.org/unicode/reports/tr21/.

Exemple 1. Exempe avec mb_convert_case()

<?php
$str = "Marie a un petit agneau et elle l'aime tr&egrave;s fort";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
print $str;
// Affiche : MARIE A UN PETIT AGNEAU ET L'AIME TR&eacute;S FORT
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
print $str;
// Affiche : Marie A Un Petit Agneau Et L'Aime Tr&egrave;s Fort
?>

Voir aussi
mb_strtolower(),
mb_strtoupper(),
strtolower() et
strtoupper().

Précédent | Sommaire | Suivant
Chaînes de caractères multi-octets | Niveau supérieur | mb_convert_encoding


mb_convert_encoding

(PHP 4 >= 4.0.6)

mb_convert_encoding -- Conversion d'encodage

Description

string mb_convert_encoding ( string str, string to-encoding [, mixed from-encoding])

mb_convert_encoding() convertit la chaîne str depuis l'encodage from-encoding vers l'encodage to-encoding.

str à convertir.

from-encoding est l'encodage de la chaîne str à l'origine. Il sera détecté parmi plusieurs encodage fournis sous forme d'un tableau, ou d'une liste d'encodages séparés par des virgules.

Exemple 1. Exemple avec mb_convert_encoding()

<?php
/* Convertit l'encodage interne vers SJIS */
$str = mb_convert_encoding($str, "SJIS");
/* Convertit EUC-JP en UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");
/* D&eacute;tecte automatiquement un encodage entre JIS, eucjp-win ou sjis-win,
   Puis convertit en UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");
/* "auto" signifie "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
?>

Voir aussi mb_detect_order().

Précédent | Sommaire | Suivant
mb_convert_case | Niveau supérieur | mb_convert_kana


mb_convert_kana

(PHP 4 >= 4.0.6)

mb_convert_kana -- Convertit entre les différents "kana"

Description

string mb_convert_kana ( string str, string option [, mixed encoding])

mb_convert_kana() effectue une conversion "han-kaku" - "zen-kaku" sur la chaîne str. Elle retourne la chaîne convertie. Cette fonction n'est utile que pour le japonais.

option est l'option de conversion. La valeur par défaut est "KV".

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Spécifiez les conversions en combinant les valeurs suivantes. La valeur par défaut est KV.

Tableau 1. Options de conversions disponibles

Option | Valeur
r | Convertit l'alphabet "zen-kaku" en "han-kaku".
R | Convertit l'alphabet "han-kaku" en "zen-kaku".
n | Convertit les nombres "zen-kaku" en "han-kaku".
N | Convertit les nombres "han-kaku" en "zen-kaku".
a | Convertit les nombres et alphabets "zen-kaku" en "han-kaku".
A | Convertit les nombres et alphabets "zen-kaku" en "han-kaku". (Les caractères inclus dans les options "a", "A" sont U+0021 - U+007E en excluant U+0022, U+0027, U+005C, U+007E)
s | Convertit "zen-kaku" en "han-kaku" (U+3000 -> U+0020)
S | Convertit "han-kaku" en "zen-kaku" (U+0020 -> U+3000)
k | Convertit "zen-kaku kata-kana" en "han-kaku kata-kana"
K | Convertit "han-kaku kata-kana" en "zen-kaku kata-kana".
h | Convertit "zen-kaku hira-gana" en "han-kaku kata-kana".
H | Convertit "han-kaku kata-kana" en "zen-kaku hira-gana".
c | Convertit "zen-kaku kata-kana" en "zen-kaku hira-gana".
C | Convertit "zen-kaku hira-gana" en "zen-kaku kata-kana".
V | Supprime les notations vocales, et les convertit en caractères. A utiliser avec "K","H".

Exemple 1. Exemple avec mb_convert_kana()

<?php
/* Convertit tous les "kana" en "zen-kaku" "kata-kana" */
$str = mb_convert_kana($str, "KVC");
/* Convertit "han-kaku" "kata-kana" en "zen-kaku" "kata-kana"
   et "zen-kaku" alpha-numeric en "han-kaku" */
$str = mb_convert_kana($str, "KVa");
?>

Précédent | Sommaire | Suivant
mb_convert_encoding | Niveau supérieur | mb_convert_variables


mb_convert_variables

(PHP 4 >= 4.0.6)

mb_convert_variables -- Convertit l'encodage de variables

Description

string mb_convert_variables ( string to-encoding, mixed from-encoding, mixed vars)

mb_convert_variables() convertit l'encodage des variables vars depuis l'encodage from-encoding vers l'encodage to-encoding, puis retourne le nom de l'encodage détecté, en cas de succès, ou FALSE en cas d'échec.

from-encoding est une liste d'encodages possibles pour les variables vars, fourni sous forme d'un tableau ou d'une liste d'encodage, séparés par des virgules. Si from-coding est omis, les encodages fournit dans mb_detect_order() sont utilisés.

vars est une référence sur une variables à convertir. Les chaînes, tableaux et objets sont aussi supportés.

Exemple 1. Exemple avec mb_convert_variables()

<?php
/* Convertit les variables $post1, $post2 en encodage interne */
$interenc = mb_internal_encoding();
$inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $post2);
?>

Précédent | Sommaire | Suivant
mb_convert_kana | Niveau supérieur | mb_decode_mimeheader


mb_decode_mimeheader

(PHP 4 >= 4.0.6)

mb_decode_mimeheader -- Décode une en-tête MIME

Description

string mb_decode_mimeheader ( string str)

mb_decode_mimeheader() décode l'en-tête MIME str, obtenue dans un courrier électronique.

mb_decode_mimeheader() retourne la chaîne décodée, encodée au format interne.

Voir aussi mb_encode_mimeheader().

Précédent | Sommaire | Suivant
mb_convert_variables | Niveau supérieur | mb_decode_numericentity


mb_decode_numericentity

(PHP 4 >= 4.0.6)

mb_decode_numericentity -- Décode les entités HTML en caractères

Description

string mb_decode_numericentity ( string str, array convmap [, string encoding])

mb_decode_numericentity() la chaîne d'entités HTML str en chaîne, et retourne cette chaîne.

convmap est un tableau qui spécifie les codes à convertir.

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Exemple 1. Exemple avec le paramètre convmap

$convmap = array (
   int start_code1, int end_code1, int offset1, int mask1,
   int start_code2, int end_code2, int offset2, int mask2,
   ........
   int start_codeN, int end_codeN, int offsetN, int maskN );
// Sp&eacute;cifie les valeurs Unicode de d&eacute;but (start_codeN) et fin (end_codeN)
// Ajoutez offsetN &agrave; la valeur, et faites un ET bit-&agrave;-bit avec maskN, puis
// il convertit la valeur obtenu en entit&eacute; num&eacute;rique

Voir aussi mb_encode_numericentity().

Précédent | Sommaire | Suivant
mb_decode_mimeheader | Niveau supérieur | mb_detect_encoding


mb_detect_encoding

(PHP 4 >= 4.0.6)

mb_detect_encoding -- Détecte un encodage

Description

string mb_detect_encoding ( string str [, mixed encoding-list])

mb_detect_encoding() détecte l'encodage utilisé par la chaîne str. mb_detect_encoding() retourne le nom de l'encodage détecté.

encoding-list est une liste d'encodage, sous forme de tableau, ou bien de chaîne, les valeurs étant séparés par des virgules.

Si encoding_list est omis, l'ordre spécifié par mb_detect_order() est utilisé.

Exemple 1. Exemple avec mb_detect_encoding()

<?php
/* D&eacute;tecte l'encodage avec les valeurs par d&eacute;faut */
echo mb_detect_encoding($str);
/* "auto" signifie "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
echo mb_detect_encoding($str, "auto");
/* Sp&eacute;cifie une liste d'encodages possibles avec une liste &agrave; virgules */
echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");
/* Sp&eacute;cifie une liste d'encodages possibles avec un tableau  */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
echo mb_detect_encoding($str, $ary);
?>

Voir aussi mb_detect_order().

Précédent | Sommaire | Suivant
mb_decode_numericentity | Niveau supérieur | mb_detect_order


mb_detect_order

(PHP 4 >= 4.0.6)

mb_detect_order -- Lit/modifie l'ordre de détection des encodages

Description

array mb_detect_order ( [mixed encoding-list])

mb_detect_order() remplace l'ordre de détection des encodages courant par encoding-list. mb_detect_order() retourne TRUE en cas de succès, et FALSE en cas d'erreur failure.

encoding-list est un tableau, ou une liste d'encodages séparés par une virgule. La valeur "auto" est automatiquement remplacé par "ASCII, JIS, UTF-8, EUC-JP, SJIS".

Si encoding-list est omis, mb_detect_order() retourne l'ordre de détection courant des encodages.

Ce paramétrage affected les fonctions mb_detect_encoding() et mb_send_mail().

Note : Actuellement, mbstring supporte les filtres de détections ci-dessous. Si une séquence d'octets est invalide pour l'un des filtres suivants, la détection échouera.

Note : UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS et ISO-2022-JP

Pour ISO-8859-*, mbstring détecte toujours ISO-8859-*.

Pour UTF-16, UTF-32, UCS2 et UCS4 la détection échouera toujours.

Exemple 1. Exemple d'ordre de détection inutile

; Always detect as ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; Always detect as UTF-8, since ASCII/UTF-7 values are
; valid for UTF-8
detect_order = UTF-8, ASCII, UTF-7

Exemple 2. Exemple avec mb_detect_order()

<?php
/* Remplace l'ordre de d&eacute;tection par une liste &eacute;num&eacute;r&eacute;e */
mb_detect_order("eucjp-win,sjis-win,UTF-8");
/* Remplace l'ordre de d&eacute;tection par un tableau */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);
/* Affiche l'ordre de d&eacute;tection courant */
echo implode(", ", mb_detect_order());
?>

Voir aussi
mb_internal_encoding(),
mb_http_input(),
mb_http_output() et
mb_send_mail()

Précédent | Sommaire | Suivant
mb_detect_encoding | Niveau supérieur | mb_encode_mimeheader


mb_encode_mimeheader

(PHP 4 >= 4.0.6)

mb_encode_mimeheader -- Encode une chaîne pour une en-tête MIME

Description

string mb_encode_mimeheader ( string str [, string charset [, string transfer-encoding [, string linefeed]]])

mb_encode_mimeheader() convertit la chaîne str en en-tête MIME, et retourne la chaîne encodée.

charset est le nom de l'encodage. Par défaut, c'est ISO-2022-JP.

transfer-encoding est l'encodage de transfert. Il peut être "B" (Base64) ou "Q" (Quoted-Printable). Par défaut, c'est "B".

linefeed est le marqueur de fin de ligne. Par défaut, c'est "\r\n" (CRLF).

Exemple 1. Exemple avec mb_convert_kana()

<?php
$name = ""; // kanji
$mbox = "kru";
$doma = "gtinn.mon";
$addr = mb_encode_mimeheader($name, "UTF-7", "Q") . "<" . $mbox . "@" . $doma . ">";
echo $addr;
?>

Voir aussi mb_decode_mimeheader().

Précédent | Sommaire | Suivant
mb_detect_order | Niveau supérieur | mb_encode_numericentity


mb_encode_numericentity

(PHP 4 >= 4.0.6)

mb_encode_numericentity -- Encode des entités HTML

Description

string mb_encode_numericentity ( string str, array convmap [, string encoding])

mb_encode_numericentity() convertit la chaîne str depuis encodage interne en les codes numériques HTML, puis retourne cette chaîne.

convmap est un tableau qui spécifie les codes à convertir.

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Exemple 1. Exemple de paramètre convmap

<?php
$convmap = array (
 int start_code1, int end_code1, int offset1, int mask1,
 int start_code2, int end_code2, int offset2, int mask2,
 ........
 int start_codeN, int end_codeN, int offsetN, int maskN );
// Sp&eacute;cifie les valeurs Unicode de d&eacute;but (start_codeN) et fin (end_codeN)
// Ajoutez offsetN &agrave; la valeur, et faites un ET bit-&agrave;-bit avec maskN, puis
// il convertit la valeur obtenu en entite num&eacute;rique
?>

Exemple 2. Exemple avec mb_encode_numericentity()

<?php
/* Convertit du ISO-8859-1 en entit&eacute;s HTML */
$convmap = array(0x80, 0xff, 0, 0xff);
$str = mb_encode_numericentity($str, $convmap, "ISO-8859-1");
/* Convertit du code SJIS-win (uniquement le bloc 95-104) en entit&eacute;s num&eacute;rique */
$convmap = array(
       0xe000, 0xe03e, 0x1040, 0xffff,
       0xe03f, 0xe0bb, 0x1041, 0xffff,
       0xe0bc, 0xe0fa, 0x1084, 0xffff,
       0xe0fb, 0xe177, 0x1085, 0xffff,
       0xe178, 0xe1b6, 0x10c8, 0xffff,
       0xe1b7, 0xe233, 0x10c9, 0xffff,
       0xe234, 0xe272, 0x110c, 0xffff,
       0xe273, 0xe2ef, 0x110d, 0xffff,
       0xe2f0, 0xe32e, 0x1150, 0xffff,
       0xe32f, 0xe3ab, 0x1151, 0xffff );
$str = mb_encode_numericentity($str, $convmap, "sjis-win");
?>

Voir aussi mb_decode_numericentity().

Précédent | Sommaire | Suivant
mb_encode_mimeheader | Niveau supérieur | mb_ereg_match


mb_ereg_match

(4.2.0 - 4.3.2 only)

mb_ereg_match -- Expression régulière POSIX pour les chaînes multi-octets

Description

bool mb_ereg_match ( string pattern, string string [, string option])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_match() retourne TRUE si string vérifie l'expression régulière pattern, FALSE sinon.

Le jeu de caractère interne ou bien le jeu spécifié par la fonction mb_regex_encoding() sera utilisé comme jeu de caractères.

Note : Cette fonction est supportée par PHP 4.2.0 et plus récent.

Voir aussi mb_regex_encoding() et mb_ereg().

Précédent | Sommaire | Suivant
mb_encode_numericentity | Niveau supérieur | mb_ereg_replace


mb_ereg_replace

(4.2.0 - 4.3.2 only)

mb_ereg_replace -- Remplace des segments de chaînes, avec le support des expressions régulières mutli-octet

Description

string mb_ereg_replace ( string pattern, string replacement, string string [, array option])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_replace() analyse la chaîne string pour trouver des segments de chaînes correspondant au masque pattern, puis, elle les remplace avec le texte de remplacement replacement et retourne le résultat ou bien FALSE en cas d'erreur. Des caractères multi-octets peuvent être utilisé dans le masque pattern.

Des options de recherches peuvent être configurés avec le paramètre option. Si i est spécifié, la casse sera ignorée. Si x est spécifié, les espaces blancs seront ignorés. Si m est spécifié, la recherche se fera en mode multi-ligne, et les nouvelles lignes seront inclues dans le joker .. Si p est spécifié, la recherche se fera en mode POSIX, les nouvelles lignes seront considérées comme des caractères normaux. Si e est spécifiée, replacement sera évaluée comme une expression PHP.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_eregi_replace().

Précédent | Sommaire | Suivant
mb_ereg_match | Niveau supérieur | mb_ereg_search_getpos


mb_ereg_search_getpos

(4.2.0 - 4.3.2 only)

mb_ereg_search_getpos -- Retourne l'offset du début du prochain segment repéré par une expression régulière

Description

array mb_ereg_search_getpos ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_getpos() retourne l'offset du
prochain segment de code qui correspond au masque utilisé dans
mb_ereg_search(),
mb_ereg_search_pos() et
mb_ereg_search_regs(). L'offset est le nombre
de caractères depuis le début de la chaîne.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_search_setpos().

Précédent | Sommaire | Suivant
mb_ereg_replace | Niveau supérieur | mb_ereg_search_getregs


mb_ereg_search_getregs

(4.2.0 - 4.3.2 only)

mb_ereg_search_getregs -- Lit le dernier segment de chaîne multi-octets qui correspond au masque

Description

array mb_ereg_search_getregs ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_getregs() retourne un tableau incluant toutes les sous chaînes qui ont été trouvées par mb_ereg_search(), mb_ereg_search_pos() et mb_ereg_search_regs(). Si il y a une solution qui a été trouvée, le premier élément sera la sous-chaîne trouvée, le second représentera la première parenthèse capturante, le troisième représentera la deuxième parenthèse capturante, etc... Cette fonction retourne FALSE en cas d'erreur.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_search_init().

Précédent | Sommaire | Suivant
mb_ereg_search_getpos | Niveau supérieur | mb_ereg_search_init


mb_ereg_search_init

(4.2.0 - 4.3.2 only)

mb_ereg_search_init -- Configure les chaînes et les expressions régulières pour le support des caractères multi-octets

Description

array mb_ereg_search_init ( string string [, string pattern [, string option]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_init() configure string et pattern pour suporter les expressions régulières multi-octets. Ces valeurs sont utilisées par mb_ereg_search(), mb_ereg_search_pos() et mb_ereg_search_regs(). Cette fonction retourne TRUE en cas de succès, et FALSE en cas d'erreur.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_search_regs().

Précédent | Sommaire | Suivant
mb_ereg_search_getregs | Niveau supérieur | mb_ereg_search_pos


mb_ereg_search_pos

(4.2.0 - 4.3.2 only)

mb_ereg_search_pos -- Retourne la position et la longueur du segement de chaîne qui vérifie le masque de l'expression régulière

Description

array mb_ereg_search_pos ( [string pattern [, string option]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_pos() retourne un tableau contenant la position et la taille du segement repéré grâce à l'expression régulière. Le premier élément du tableau retourné doit être le début du segment, et le second est la taille du segment, exprimée en octets. Cette fonction retourne FALSE en cas d'erreur.

La chaîne à utiliser est spécifiée par mb_ereg_search_init(). Si elle ne l'est pas, la précédente sera utilisée.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_search_init().

Précédent | Sommaire | Suivant
mb_ereg_search_init | Niveau supérieur | mb_ereg_search_regs


mb_ereg_search_regs

(4.2.0 - 4.3.2 only)

mb_ereg_search_regs -- Retourne le segment de chaîne trouvé par une expression régulière multi-octets

Description

array mb_ereg_search_regs ( [string pattern [, string option]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_regs() exécute l'expression régulière pattern, et si un segment de chaîne correspond, elle le retourne dans un tableau, dont le premier élément est le segment de chaîne trouvé, le deuxième élément est le contenu de la première parenthèse capturante, le troisème élément est le contenu de la troisième paranthèse capturante, etc... La fonction retourne FALSE en cas d'erreur.

Le jeu de caractères internet ou bien le jeu de caractères spécifié par mb_regex_encoding() sera utilisé.

Note : Cette fonction est supportée depuis PHP 4.2.0 et plus récent.

Voir aussi mb_regex_encoding() et mb_ereg_search_init().

Précédent | Sommaire | Suivant
mb_ereg_search_pos | Niveau supérieur | mb_ereg_search_setpos


mb_ereg_search_setpos

(4.2.0 - 4.3.2 only)

mb_ereg_search_setpos -- Choisit le point de départ de la recherche par expression régulière

Description

array mb_ereg_search_setpos ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search_setpos() choisit le point de départ de la recherche que va effectuer la fonction mb_ereg_search().

Le jeu de caractères internet ou bien le jeu de caractères spécifié par mb_regex_encoding() sera utilisé.

Note : Cette fonction est supportée depuis PHP 4.2.0 et plus récent.

Voir aussi mb_regex_encoding() et mb_ereg_search_init().

Précédent | Sommaire | Suivant
mb_ereg_search_regs | Niveau supérieur | mb_ereg_search


mb_ereg_search

(4.2.0 - 4.3.2 only)

mb_ereg_search -- Recherche par expression régulière multi-octets

Description

bool mb_ereg_search ( [string pattern [, string option]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_search() retourne TRUE si la chaîne multi-octets correspond au masque d'expression régulière, ou bien FALSE sinon. La chaîne à étudier a été configurée avec la fonction mb_ereg_search_init(). Si le masque pattern n'est pas spécifié, le précédent sera utilisé.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_search_init().

Précédent | Sommaire | Suivant
mb_ereg_search_setpos | Niveau supérieur | mb_ereg


mb_ereg

(4.2.0 - 4.3.2 only)

mb_ereg -- Recherche par expression régulière avec support des caractères multi-octets

Description

int mb_ereg ( string pattern, string string [, array regs])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg() utilise l'expression régulière pattern avec le support des caractères multi-octets sur la chaîne string. mb_ereg() retourne 1 si des segments de chaîne qui vérifient le masque ont été trouvé. Le troisième paramètre est optionnel. S'il est fournit, mb_ereg() retournera la taille du segment de chaîne identifié, regs contient les sous-chaînes. Si rien n'est trouvé, la fonction retourne FALSE.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_eregi()

Précédent | Sommaire | Suivant
mb_ereg_search | Niveau supérieur | mb_eregi_replace


mb_eregi_replace

(4.2.0 - 4.3.2 only)

mb_eregi_replace -- Expression régulière avec support des caractères multi-octets, sans tenir compte de la casse

Description

string mb_eregi_replace ( string pattern, string replace, string string)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_ereg_replace() analyse la chaîne string avec le masque d'expression régulière pattern, puis remplace le texte trouvé par replacement. Enfin, mb_ereg_replace() retourne la nouvelle chaîne ainsi bâtie, ou FALSE en cas d'erreur. Les caractères multi-octets peuvent être utilisés dans la chaîne pattern. La casse sera ignorée.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg_replace().

Précédent | Sommaire | Suivant
mb_ereg | Niveau supérieur | mb_eregi


mb_eregi

(4.2.0 - 4.3.2 only)

mb_eregi -- Regular expression match ignoring case with multibyte support

Description

int mb_eregi ( string pattern, string string [, array regs])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_eregi() utilise l'expression régulière pattern avec le support des caractères multi-octets sur la chaîne string. mb_eregi() ignore la casse dans ses recherches. mb_ereg() retourne 1 si des segments de chaîne qui vérifient le masque ont été trouvé. Le troisième paramètre est optionnel. S'il est fournit, mb_ereg() retournera la taille du segment de chaîne identifié, regs contient les sous-chaînes. Si rien n'est trouvé, la fonction retourne FALSE.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg().

Précédent | Sommaire | Suivant
mb_eregi_replace | Niveau supérieur | mb_get_info


mb_get_info

(PHP 4 >= 4.2.0)

mb_get_info -- Lit la configuration interne de l'extension mbstring

Description

string mb_get_info ( [string type])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_get_info() lit la configuration interne de l'extension mbstring internal setting.

Si type n'est pas spécifié, ou si il vaut "all", un tableau contenant les éléments "internal_encoding", "http_output", "http_input" et "func_overload" sera retourné.

Si type est spécifié, et si il vaut "http_output", "http_input", "internal_encoding" ou "func_overload", la paramètre spécifié sera retourné.

Voir aussi mb_internal_encoding() et mb_http_output().

Précédent | Sommaire | Suivant
mb_eregi | Niveau supérieur | mb_http_input


mb_http_input

(PHP 4 >= 4.0.6)

mb_http_input -- Détecte le type d'encodage d'un caractère HTTP

Description

string mb_http_input ( [string type])

mb_http_input() retourne le type d'encodage utilisé par une requête HTTP.

Le paramètre type spécifie le type d'entrée HTTP. Il peut prendre l'une des valeurs suivantes : "G" pour GET, "P" pour POST, "C" pour COOKIE. Si type est omis, il prend la valeur du dernier type utilisé.

Valeur retournée : nom de l'encodage utilisé. Si mb_http_input() ne peut traiter ce type d'encodage, elle retourne FALSE.

Voir aussi
mb_internal_encoding(),
mb_http_output() et
mb_detect_order()

Précédent | Sommaire | Suivant
mb_get_info | Niveau supérieur | mb_http_output


mb_http_output

(PHP 4 >= 4.0.6)

mb_http_output -- Lit/modifie l'encodage d'affichage

Description

string mb_http_output ( [string encoding])

Si encoding est fourni, mb_http_output() utilisera dorénavant l'encodage encoding pour les affichages HTTP : les caractères qui seront envoyés aux clients web seront convertis dans le jeu de caractères encoding. mb_http_output() retourne TRUE en cas de succès, et FALSE en cas d'échec.

Si encoding est omis, mb_http_output() retourne l'encodage d'affichage courant.

Voir aussi
mb_internal_encoding(),
mb_http_input() et
mb_detect_order()

Précédent | Sommaire | Suivant
mb_http_input | Niveau supérieur | mb_internal_encoding


mb_internal_encoding

(PHP 4 >= 4.0.6)

mb_internal_encoding -- Lit/modifie l'encodage interne

Description

string mb_internal_encoding ( [string encoding])

mb_internal_encoding() modifie l'encodage interne courant en le remplacant par encoding. Si ce paramètre est omis, l'encodage interne courant est retourné.

encoding sert lors des conversions des chaînes en provenance et en direction du web, ainsi que lors de la création de chaînes avec le module mbstring.

encoding: Nom d'encodage.

Valeur retournée : si encoding est fourni, mb_internal_encoding() retourne TRUE en cas de succès, et FALSE sinon. Si encoding est omis, mb_internal_encoding() retourne le nom de l'encodage courant.

Exemple 1. Exemple avec mb_internal_encoding()

<?php
/* Utilise l'encodage interne UTF-8 */
mb_internal_encoding("UTF-8");
/* Affiche l'encodage interne courant */
echo mb_internal_encoding();
?>

Voir aussi
mb_http_input(),
mb_http_output() et
mb_detect_order()

Précédent | Sommaire | Suivant
mb_http_output | Niveau supérieur | mb_language


mb_language

(PHP 4 >= 4.0.6)

mb_language -- Lit/modifie le langage courant

Description

string mb_language ( [string language])

mb_language() remplace le langage courant par language. Si language est omis, mb_language() retourne le langage courant.

Le paramètre language sert à encoder les messages électroniques. Les langages valides sont : "Japanese" (japonais), "ja" (japonais), "English" (anglais), "en" (anglais) and "uni" (UTF-8). mb_send_mail() utilise cette option pour encoder les emails.

Le langage et sa configuration valle ISO-2022-JP/Base64 pour le japonais, UTF-8/Base64 pour l'UTF-8 et ISO-8859-1/quoted printable pour l'anglais.

Si language est fourni et est valide, mb_language() retourne TRUE. Sinon, elle retourne FALSE. Lorsque le paramètre language est omis, mb_language() retourne le nom du langage courant, sous forme de chaîne. Si aucun langage n'avait été configuré, mb_language() retourne FALSE.

Voir aussi mb_send_mail().

Précédent | Sommaire | Suivant
mb_internal_encoding | Niveau supérieur | mb_output_handler


mb_output_handler

(PHP 4 >= 4.0.6)

mb_output_handler -- Fonction de traitement des affichages web

Description

string mb_output_handler ( string contents, int status)

mb_output_handler() est la fonction à fournir à ob_start(). mb_output_handler() convertit les caractères envoyés au client Web, dans l'encodage paramétré avec mb_http_output().

contents : Le contenu à traiter

status : L'état du contenu

mb_output_handler() retourne la chaîne convertie.

Exemple 1. Exemple avec mb_output_handler()

<?php
  mb_http_output("UTF-8");
  ob_start("mb_output_handler");
?>

Note : Si vous souhaitez envoyer des données binaires telles que des images issues d'un script PHP, vous devez spécifier l'encodage spécial "pass", avec la fonction mb_http_output().

Voir aussi ob_start().

Précédent | Sommaire | Suivant
mb_language | Niveau supérieur | mb_parse_str


mb_parse_str

(PHP 4 >= 4.0.6)

mb_parse_str -- Analyse les données HTTP GET/POST/COOKIE et assigne les variables globales

Description

bool mb_parse_str ( string encoded_string [, array result])

mb_parse_str() analyse les données d'entrées HTTP GET/POST/COOKIE et assigne les variables globales. Etant donné que PHP ne fournit pas de valeurs brutes de POST/COOKIE, cette fonction n'est utilisable que sur les données en méthode GET. mb_parse_str() prend les données de l'URL appelante, détecte le jeu de caractères, converti les données en jeu de caractères interne, et affecte les valeurs au tableau de variables globales.

encoded_string: Les données encodées de l'URL.

result: Un tableau contenant les valeurs décodées, et les noms des jeux de caractères.

mb_parse_str() retourne TRUE en cas de succès, et FALSE sinon.

Voir aussi mb_detect_order() et mb_internal_encoding().

Précédent | Sommaire | Suivant
mb_output_handler | Niveau supérieur | mb_preferred_mime_name


mb_preferred_mime_name

(PHP 4 >= 4.0.6)

mb_preferred_mime_name -- Détecte l'encodage MIME

Description

string mb_preferred_mime_name ( string encoding)

mb_preferred_mime_name() retourne le type d'encodage MIME utilisé dans le mail encoding. Le nom de l'encodage est retourné sous forme de chaîne.

Exemple 1. Exemple avec mb_preferred_mime_string()

<?php
  $outputenc = "sjis-win";
  mb_http_output($outputenc);
  ob_start("mb_output_handler");
  header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));
?>

Précédent | Sommaire | Suivant
mb_parse_str | Niveau supérieur | mb_regex_encoding


mb_regex_encoding

(4.2.0 - 4.3.2 only)

mb_regex_encoding -- Retourne le jeu de caractères courant pour les expressions régulières

Description

string mb_regex_encoding ( [string encoding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_regex_encoding() retourne le jeu de caractères courant pour les expressions régulières, sous forme de chaîne.

Si le troisième argument optionnel encoding est fourni, il prendra la valeur du jeu de caractères par défaut pour les expressions régulières. Par défaut, cette option est identique au jeu de caractères interne.

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_internal_encoding() et mb_ereg()

Précédent | Sommaire | Suivant
mb_preferred_mime_name | Niveau supérieur | mb_regex_set_options


mb_regex_set_options

(4.3.0 - 4.3.2 only)

mb_regex_set_options -- Lit et modifie les options des fonctions d'expression régulières à support de caractères multi-octets

Description

string mb_regex_set_options ( [string options])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_regex_set_options() configure les options par défaut avec les nouvelles valeurs contenues dans options, pour les fonctions d'expressions régulières à support de caractères multi-octets.

mb_regex_set_options() retourne la configuration précédente. Si options est omise, la fonction retourne la chaîne qui décrit les options courantes.

Note : Cette fonction est supportée depuis PHP 4.3.0.

Voir aussi
mb_split(),
mb_ereg() et
mb_eregi()

Précédent | Sommaire | Suivant
mb_regex_encoding | Niveau supérieur | mb_send_mail


mb_send_mail

(PHP 4 >= 4.0.6)

mb_send_mail -- Envoie un mail encodé ISO-2022-JP (mail japonais)

Description

bool mb_send_mail ( string to, string subject, string message [, string additional_headers [, string additional_parameter]])

mb_send_mail() envoie un courrier électronique. Les en-têtes et le corps du mesage sont convertis et encodés en ISO-2022-JP. mb_send_mail() est une version adaptée de mail().

to est l'adresse de destination du mail. Les adresses multiples peuvent être spécifiées en les séparant par des virgules.

subject est le sujet du mail.

message est le message du mail.

La chaîne additional_headers est insérée à la fin de l'en-tête mail. Elle sert à ajouter d'autres en-têtes email. N'oubliez pas de les séparer par des nouvelles lignes (\n).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
mail(),
mb_encode_mimeheader() et
mb_language().

Précédent | Sommaire | Suivant
mb_regex_set_options | Niveau supérieur | mb_split


mb_split

(4.2.0 - 4.3.2 only)

mb_split -- Scinde une chaîne en tableau avec une expression régulière multi-octets

Description

array mb_split ( string pattern, string string [, int limit])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

mb_split() scinde la chaîne mutli-octets string en utilisant l'expression régulière pattern puis en retournant le résultat sous forme de tableau.

Si le paramètre optionnel limit est spécifié, la chaîne sera scindée en limit éléments au plus.

Le jeu de caractères interne, ou le jeu de caractères est spécifié par mb_regex_encoding().

Note : Cette fonction est supportée depuis PHP 4.2.0.

Voir aussi mb_regex_encoding() et mb_ereg().

Précédent | Sommaire | Suivant
mb_send_mail | Niveau supérieur | mb_strcut


mb_strcut

(PHP 4 >= 4.0.6)

mb_strcut -- Coupe une partie de chaîne

Description

string mb_strcut ( string str, int start [, int length [, string encoding]])

mb_strcut() retourne la portion de la chaîne str qui commence au caractère start et a la longueur de length caractères.

mb_strcut() effectue une recherche de type strpos(), en tenant compte des caractères multi-octets. La position de needle est comptée à partir du début de la chaîne haystack : les positions commencent à 0.

mb_strcut() soustrait la partie de la chaîne str qui compte length caractères.

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Voir aussi mb_substr() et mb_internal_encoding().

Précédent | Sommaire | Suivant
mb_split | Niveau supérieur | mb_strimwidth


mb_strimwidth

(PHP 4 >= 4.0.6)

mb_strimwidth -- Tronque une chaîne

Description

string mb_strimwidth ( string str, int start, int width, string trimmarker [, string encoding])

mb_strimwidth() tronque la chaîne str à la longueur width. Elle retourne la chaîne tronquée.

SI trimmarker est fourni, trimmarker est ajoutée à la fin de la chaîne retournée.

start est l'offet de départ, en nombre de caractères depuis le début de la chaîne (cela commence à 0).

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Exemple 1. Exemple avec mb_strimwidth()

<?php
  $str = mb_strimwidth($str, 0, 40, "..>");
?>

Voir aussi mb_strwidth() et mb_internal_encoding().

Précédent | Sommaire | Suivant
mb_strcut | Niveau supérieur | mb_strlen


mb_strlen

(PHP 4 >= 4.0.6)

mb_strlen -- Retourne la taille d'une chaîne

Description

string mb_strlen ( string str [, string encoding])

mb_strlen() retourne le nombre de caractères dans la chaîne str, avec l'encodage encoding. Un caractère multi-octets est alors compté pour 1.

Voir aussi mb_internal_encoding(), strlen().

Précédent | Sommaire | Suivant
mb_strimwidth | Niveau supérieur | mb_strpos


mb_strpos

(PHP 4 >= 4.0.6)

mb_strpos -- Repère la première occurence d'un caractère dans une chaîne

Description

int mb_strpos ( string haystack, string needle [, int offset [, string encoding]])

mb_strpos() retourne la position numérique de la première occurence du caractère needle dans la chaîne haystack. Si needle est introuvable, mb_strpos() retourne FALSE.

mb_strpos() effectue une recherche de type strpos(), en tenant compte des caractères multi-octets. La position de needle est comptée à partir du début de la chaîne haystack : les positions commencent à 0.

Si encoding est omis, l'encodage interne par défaut est utilisé. mb_strrpos() accepte des chaînes comme argument needle, alors que strrpos() n'accepte que des caractères.

offset est l'offset de début de recherche. S'il est omis, il sera utilisé à 0 (début de la chaîne).

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Voir aussi
mb_strpos(),
mb_internal_encoding() et
strpos()

Précédent | Sommaire | Suivant
mb_strlen | Niveau supérieur | mb_strrpos


mb_strrpos

(PHP 4 >= 4.0.6)

mb_strrpos -- Repère la dernière occurence d'un caractère dans une chaîne

Description

int mb_strrpos ( string haystack, string needle [, string encoding])

mb_strrpos() retourne la position numérique de la première occurence du caractère needle dans la chaîne haystack. Si needle est introuvable, mb_strrpos() retourne FALSE.

mb_strrpos() effectue une recherche de type strpos(), en tenant compte des caractères multi-octets. La position de needle est comptée à partir du début de la chaîne haystack : les positions commencent à 0.

Si encoding est omis, l'encodage interne par défaut est utilisé. mb_strrpos() accepte des chaînes comme argument needle, alors que strrpos() n'accepte que des caractères.

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Voir aussi
mb_strpos(),
mb_internal_encoding() et
strrpos().

Précédent | Sommaire | Suivant
mb_strpos | Niveau supérieur | mb_strtolower


mb_strtolower

(PHP 4 >= 4.3.0)

mb_strtolower -- Met tous les caractères en minuscules

Description

string mb_strtolower ( string str [, string encoding])

mb_strtolower() retourne la chaîne str après avoir converti tous les caractères alphabétiques en minuscules.

encoding spécifie le jeu de caractères de la chaîne str; si il est omis, le jeu de caractères interne sera utilisé.

Pour plus d'informations sur les propriétés de l'Unicode, voyez http://www.unicode.org/unicode/reports/tr21/.

Contrairement à strtolower(), le concept de caractère 'alphabétique' est déterminé par les propriétés Unicode. De ce fait, le comportement de cette fonction n'est pas modifiée par les configurations locales, et il peut convertir tout les caractères qui sont considéré comme alphabétiques comme le c cédille (Ç).

Exemple 1. Exemple avec mb_strtolower()

$str = "Marie A Un Petit Agneau Et Elle L'Aime BEAUCOUP.";
$str = mb_strtolower($str);
print $str;
// Affiche : marie a un petit agneau et elle l'aime beaucoup

Voir aussi
strtolower(),
mb_strtoupper() et
mb_convert_case().

Précédent | Sommaire | Suivant
mb_strrpos | Niveau supérieur | mb_strtoupper


mb_strtoupper

(PHP 4 >= 4.3.0)

mb_strtoupper -- Met tous les caractères en majuscules

Description

string mb_strtoupper ( string str [, string encoding])

mb_strtoupper() retourne la chaîne str après avoir converti tous les caractères alphabétiques en majuscules.

encoding spécifie le jeu de caractères de la chaîne str; si il est omis, le jeu de caractères interne sera utilisé.

Pour plus d'informations sur les propriétés de l'Unicode, voyez http://www.unicode.org/unicode/reports/tr21/.

Contrairement à strtoupper(), le concept de caractère 'alphabétique' est déterminé par les propriétés Unicode. De ce fait, le comportement de cette fonction n'est pas modifiée par les configurations locales, et il peut convertir tout les caractères qui sont considérés comme alphabétiques comme le c cédille (ç).

Exemple 1. Exemple avec mb_strtoupper()

$str = "Marie A Un Petit Agneau Et Elle L'Aime BEAUCOUP.";
$str = mb_strtoupper($str);
print $str;
// Affiche : MARIE A UN PETIT AGNEAU ET ELLE L'AIME BEAUCOUP.

Voir aussi
strtoupper(),
mb_strtolower() et
mb_convert_case().

Précédent | Sommaire | Suivant
mb_strtolower | Niveau supérieur | mb_strwidth


mb_strwidth

(PHP 4 >= 4.0.6)

mb_strwidth -- Retourne la largeur d'une chaîne

Description

int mb_strwidth ( string str [, string encoding])

mb_strwidth() retourne la largeur de la chaîne str.

Les chaînes à encodage multi-octet sont généralement deux fois plus grandes que les chaînes à simple-octet.

Tableau 1. Largeur des caractères

Caractères | Taille
U+0000 - U+0019 | 0
U+0020 - U+1FFF | 1
U+2000 - U+FF60 | 2
U+FF61 - U+FF9F | 1
U+FFA0 - | 2

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Voir aussi mb_strimwidth() et mb_internal_encoding().

Précédent | Sommaire | Suivant
mb_strtoupper | Niveau supérieur | mb_substitute_character


mb_substitute_character

(PHP 4 >= 4.0.6)

mb_substitute_character -- Lit/modifie les caractères de substitution

Description

mixed mb_substitute_character ( [mixed substrchar])

mb_substitute_character() spécifie le caractère de substitution des caractères invalides, ou des encodages invalides. Les caractères invalides peuvent être remplacés par NULL (pas d'affichage, ils sont supprimés), une chaîne ou un code hexadécimal.

Ce paramétrage affecte mb_detect_encoding() et mb_send_mail().

substchar spécifie une valeur Unicode sous la forme d'un entier, ou bien une chaîne sous ces formes :

  • "none" : pas d'affichage

  • "long" : affiche la valeur hexadécimale (Par exemple : U+3000,JIS+7E7E)

SI substchar est fourni, mb_substitute_character() retourne TRUE en cas de succès, et FALSE en cas d'erreur. Si substchar est omis, mb_substitute_character() retourne une valeur Unicode, ou bien "none"/"long".

Exemple 1. Exemple avec mb_substitute_character()

<?php
/* Configure le caract&egrave;re de substitution avec U+3013 (GETA MARK) */
mb_substitute_character(0x3013);
/* Configure le caract&egrave;re de substitution avec un format hexad&eacute;cimal */
mb_substitute_character("long");
/* Affiche la configuration courante */
echo mb_substitute_character();
?>

Précédent | Sommaire | Suivant
mb_strwidth | Niveau supérieur | mb_substr_count


mb_substr_count

(PHP 4 >= 4.3.0)

mb_substr_count -- Compte le nombre d'occurrences d'une sous-chaîne

Description

int mb_substr_count ( string haystack, string needle [, string encoding])

mb_substr_count() retourne le nombre d'occurrences de la chaîne needle dans la chaîne haystack string.

encoding spécifie le jeu de caractères utilisé pour needle et haystack. Si omis, le jeu de caractères interne est utilisé.

Exemple 1. Exemple avec mb_substr_count()

<?php
print mb_substr_count("Ceci est un test", "es");
// affiche 2
?>

Voir aussi
substr_count(),
mb_strpos() et
mb_substr().

Précédent | Sommaire | Suivant
mb_substitute_character | Niveau supérieur | mb_substr


mb_substr

(PHP 4 >= 4.0.6)

mb_substr -- Lit une sous-chaîne

Description

string mb_substr ( string str, int start [, int length [, string encoding]])

mb_substr() retourne la portion de la chaîne str qui commence au caractère start et a la longueur de length caractères.

mb_substr() effectue une recherche de type strpos(), en tenant compte des caractères multi-octets. La position de needle est comptée à partir du début de la chaîne haystack : les positions commencent à 0.

encoding est un nom d'encodage de caractères. S'il n'est pas spécifié, l'encodage interne est utilisé.

Voir aussi mb_strcut() et mb_internal_encoding().

Précédent | Sommaire | Suivant
mb_substr_count | Niveau supérieur | MCAL


MCAL

Manuel PHP
Précédent Suivant

LIII. MCAL

Introduction

MCAL signifie Modular Calendar Access Library (librairie calendaire modulaire).

Libmcal est une librairie C de calendriers. Elle est écrite pour être très modulaire, et dispose de nombreux modules. MCAL est l'équivalent de IMAP pour les calendriers.

Avec mcal, un calendrier peut être ouvert comme une boîte aux lettres. Les calendriers peuvent être des fichiers locaux, ou bien être sur des serveurs ICAP distants, ou encore tout autre format supporté par la librairie.

Les événements peuvent être lus, sélectionnés et enregistrés. Il y a aussi la possibilité d'ajouter des alarmes, et de placer des événéments récurents.

Avec libmcal, les serveurs centralisés peuvent être accédés et utilisés, et remplacent avantageusement tout développement spécifique de base de données.

La plupart des fonctions utilisent une structure d'événement interne, qui est unique pour chaque connexion. Cela évite d'avoir à passer des objets de grande taille entre les fonctions. Il y a des accesseurs bien pratiques pour créer, initialiser et lire des objets événements.

Note : PHP disposait d'une extension ICAP, mais la librairie originale et l'extension PHP ne sont plus supportées. La solution de remplacement est MCAL.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Pour faire fonctionner cette librairie, vous devez compiler PHP avec l'option --with-mcal. Il vous faudra alors avoir installé la librairie mcal. Téléchargez la dernière version à http://mcal.chek.com/ et compilez-la, puis installez-la.

Installation

Après avoir installé la librairie mcal, vous devez compiler PHP avec l'option --with-mcal[=DIR].

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

MCAL_SUNDAY (entier)

MCAL_MONDAY (entier)

MCAL_TUESDAY (entier)

MCAL_WEDNESDAY (entier)

MCAL_THURSDAY (entier)

MCAL_FRIDAY (entier)

MCAL_SATURDAY (entier)

MCAL_JANUARY (entier)

MCAL_FEBRUARY (entier)

MCAL_MARCH (entier)

MCAL_APRIL (entier)

MCAL_MAY (entier)

MCAL_JUNE (entier)

MCAL_JULY (entier)

MCAL_AUGUST (entier)

MCAL_SEPTEMBER (entier)

MCAL_OCTOBER (entier)

MCAL_NOVEMBER (entier)

MCAL_DECEMBER (entier)

MCAL_RECUR_NONE (entier)

MCAL_RECUR_DAILY (entier)

MCAL_RECUR_WEEKLY (entier)

MCAL_RECUR_MONTHLY_MDAY (entier)

MCAL_RECUR_MONTHLY_WDAY (entier)

MCAL_RECUR_YEARLY (entier)

MCAL_M_SUNDAY (entier)

MCAL_M_MONDAY (entier)

MCAL_M_TUESDAY (entier)

MCAL_M_WEDNESDAY (entier)

MCAL_M_THURSDAY (entier)

MCAL_M_FRIDAY (entier)

MCAL_M_SATURDAY (entier)

MCAL_M_WEEKDAYS (entier)

MCAL_M_WEEKEND (entier)

MCAL_M_ALLDAYS (entier)

Table des matières
mcal_append_event -- Enregistre un nouvel événement dans un calendrier MCAL
mcal_close -- Ferme une connexion MCAL
mcal_create_calendar -- Crée un nouveau calendrier
mcal_date_compare -- Compare deux dates
mcal_date_valid -- Valide une date.
mcal_day_of_week -- Le jour de la semaine.
mcal_day_of_year -- Le jour de l'année.
mcal_days_in_month -- Retourne le nombre de jour dans un mois
mcal_delete_calendar -- Efface un calendrier
mcal_delete_event -- Efface un événement dans un calendrier MCAL.
mcal_event_add_attribute -- Ajoute un attribut et une valeur à la structure globale
mcal_event_init -- Initialise la structure globale d'un flux MCAL
mcal_event_set_alarm -- Fixe l'alarme de la structure globale
mcal_event_set_category -- Fixe la catégorie de la structure globale
mcal_event_set_class -- Fixe la classe de la structure globale
mcal_event_set_description -- Fixe la description de la structure globale
mcal_event_set_end -- Fixe la date de fin de la structure globale.
mcal_event_set_recur_daily -- Fixe la récurrence quotidienne
mcal_event_set_recur_monthly_mday -- Fixe la récurrence
mcal_event_set_recur_monthly_wday -- Fixe la récurrence mensuelle.
mcal_event_set_recur_none -- Supprime la récurrence de la structure globale
mcal_event_set_recur_weekly -- Fixe la récurrence hebdomadaire
mcal_event_set_recur_yearly -- Fixe la récurrence annuelle
mcal_event_set_start -- Fixe la date de début de la structure globale
mcal_event_set_title -- Fixe le titre de la structure globale
mcal_expunge -- Supprime tous les événements marqués pour l'effacement
mcal_fetch_current_stream_event -- Retourne un objet contenant la structure de date
mcal_fetch_event -- Recherche un événement dans le calendrier
mcal_is_leap_year -- Vérifie que l'année est bissextile.
mcal_list_alarms -- Retourne une liste d'événements qui ont une alarme prévue à une date
mcal_list_events -- Retourne une liste d'événement entre deux dates
mcal_next_recurrence -- Retourne la prochaine occurrence d'un événement
mcal_open -- Ouvre une connexion MCAL
mcal_popen -- Ouvre une connexion persistante MCAL
mcal_rename_calendar -- Renomme un calendrier
mcal_reopen -- Réouvre une connexion MCAL
mcal_snooze -- Eteind l'alarme d'un événement
mcal_store_event -- Modifie un événement dans un calendrier MCAL
mcal_time_valid -- Valide une heure.
mcal_week_of_year -- Retourne le numéro de semaine dans l'année pour une date donnée

Précédent | Sommaire | Suivant
mb_substr | Niveau supérieur | mcal_append_event


mcal_append_event

(PHP 4 )

mcal_append_event -- Enregistre un nouvel événement dans un calendrier MCAL

Description

int mcal_append_event ( int mcal_stream)

mcal_append_event() enregistre l'événement global dans le calendrier MCAL mcal_stream.

mcal_append_event() retourne l'id de l'enregistement ainsi inséré.

Précédent | Sommaire | Suivant
MCAL | Niveau supérieur | mcal_close


mcal_close

(PHP 3>= 3.0.13, PHP 4 )

mcal_close -- Ferme une connexion MCAL

Description

int mcal_close ( int mcal_stream, int flags)

mcal_close() ferme la connexion mcal_stream.

Précédent | Sommaire | Suivant
mcal_append_event | Niveau supérieur | mcal_create_calendar


mcal_create_calendar

(PHP 3>= 3.0.13, PHP 4 )

mcal_create_calendar -- Crée un nouveau calendrier

Description

string mcal_create_calendar ( int stream, string calendar)

mcal_create_calendar() crée un nouveau calendrier nommé calendar, sur le serveur MCAL stream.

Précédent | Sommaire | Suivant
mcal_close | Niveau supérieur | mcal_date_compare


mcal_date_compare

(PHP 3>= 3.0.13, PHP 4 )

mcal_date_compare -- Compare deux dates

Description

int mcal_date_compare ( int a_year, int a_month, int a_day, int b_year, int b_month, int b_day)

mcal_date_compare() compares les deux dates données, et retourne <0, 0, > 0 si a<b, a==b, a>b respectivement.

Précédent | Sommaire | Suivant
mcal_create_calendar | Niveau supérieur | mcal_date_valid


mcal_date_valid

(PHP 3>= 3.0.13, PHP 4 )

mcal_date_valid -- Valide une date.

Description

int mcal_date_valid ( int year, int month, int day)

mcal_date_valid() retourne TRUE si la date (constituée par l'année year, le mois month et la date day) est valide, et FALSE sinon.

Précédent | Sommaire | Suivant
mcal_date_compare | Niveau supérieur | mcal_day_of_week


mcal_day_of_week

(PHP 3>= 3.0.13, PHP 4 )

mcal_day_of_week -- Le jour de la semaine.

Description

int mcal_day_of_week ( int year, int month, int day)

mcal_day_of_week() retourne le jour de la semaine, pour la date constituée par l'année year, le mois month et la date day.

Précédent | Sommaire | Suivant
mcal_date_valid | Niveau supérieur | mcal_day_of_year


mcal_day_of_year

(PHP 3>= 3.0.13, PHP 4 )

mcal_day_of_year -- Le jour de l'année.

Description

int mcal_day_of_year ( int year, int month, int day)

mcal_day_of_year() retourne le numéro de jour dans l'année pour la date constituée par l'année year, le mois month et la date day.

Précédent | Sommaire | Suivant
mcal_day_of_week | Niveau supérieur | mcal_days_in_month


mcal_days_in_month

(PHP 3>= 3.0.13, PHP 4 )

mcal_days_in_month -- Retourne le nombre de jour dans un mois

Description

int mcal_days_in_month ( int month, int leap_year)

mcal_days_in_month() retourne le nombre de jour du mois month, et prend en compte le fait que l'année est bissextile avec le paramètre leap_year.

Précédent | Sommaire | Suivant
mcal_day_of_year | Niveau supérieur | mcal_delete_calendar


mcal_delete_calendar

(PHP 3>= 3.0.13, PHP 4 )

mcal_delete_calendar -- Efface un calendrier

Description

string mcal_delete_calendar ( int stream, string calendar)

mcal_delete_calendar() efface le calendrier calendar sur le serveur stream.

Précédent | Sommaire | Suivant
mcal_days_in_month | Niveau supérieur | mcal_delete_event


mcal_delete_event

(PHP 3>= 3.0.13, PHP 4 )

mcal_delete_event -- Efface un événement dans un calendrier MCAL.

Description

int mcal_delete_event ( int mcal_stream [, int event_id])

mcal_delete_event() efface l'événement d'identifiant uid.

mcal_delete_event() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_delete_calendar | Niveau supérieur | mcal_event_add_attribute


mcal_event_add_attribute

(PHP 3>= 3.0.15, PHP 4 )

mcal_event_add_attribute -- Ajoute un attribut et une valeur à la structure globale

Description

void mcal_event_add_attribute ( int stream, string attribute, string value)

mcal_event_add_attribute() ajoute l'attribut attribute à la structure globale, avec la valeur value.

Précédent | Sommaire | Suivant
mcal_delete_event | Niveau supérieur | mcal_event_init


mcal_event_init

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_init -- Initialise la structure globale d'un flux MCAL

Description

int mcal_event_init ( int stream)

mcal_event_init() initialise la structure globale d'un flux mcal. Cela remet tous les éléments de la structure à 0, ou à leur valeur par défaut.

mcal_event_init() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_add_attribute | Niveau supérieur | mcal_event_set_alarm


mcal_event_set_alarm

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_alarm -- Fixe l'alarme de la structure globale

Description

int mcal_event_set_alarm ( int stream, int alarm)

mcal_event_set_alarm() fixe l'alarme de la structure globale,à un nombre de minutes avant déclenchement.

mcal_event_set_alarm() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_init | Niveau supérieur | mcal_event_set_category


mcal_event_set_category

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_category -- Fixe la catégorie de la structure globale

Description

int mcal_event_set_category ( int stream, string category)

mcal_event_set_category() fixe la catégorie de la structure globale à la valeur de category.

mcal_event_set_category() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_alarm | Niveau supérieur | mcal_event_set_class


mcal_event_set_class

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_class -- Fixe la classe de la structure globale

Description

int mcal_event_set_class ( int stream, int class)

mcal_event_set_class() fixe la classe de la structure globale. La classe vaut 0 pour si elle est publique, et 1 si elle est privée.

mcal_event_set_class() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_category | Niveau supérieur | mcal_event_set_description


mcal_event_set_description

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_description -- Fixe la description de la structure globale

Description

int mcal_event_set_description ( int stream, string description)

mcal_event_set_description() fixe la catégorie de la structure globale à la valeur de description.

mcal_event_set_description() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_class | Niveau supérieur | mcal_event_set_end


mcal_event_set_end

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_end -- Fixe la date de fin de la structure globale.

Description

int mcal_event_set_end ( int stream, int year, int month [, int day [, int hour [, int min [, int sec]]]])

mcal_event_set_end() fixe la date de fin de la structure globale.

mcal_event_set_end() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_description | Niveau supérieur | mcal_event_set_recur_daily


mcal_event_set_recur_daily

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_recur_daily -- Fixe la récurrence quotidienne

Description

int mcal_event_set_recur_daily ( int stream, int year, int month, int day, int interval)

mcal_event_set_recur_daily() fixe la récurrence quotidienne de la structure globale, jusqu'à la date passée en paramètre (la date de début est celle de la structure).

Précédent | Sommaire | Suivant
mcal_event_set_end | Niveau supérieur | mcal_event_set_recur_monthly_mday


mcal_event_set_recur_monthly_mday

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_recur_monthly_mday -- Fixe la récurrence

Description

int mcal_event_set_recur_monthly_mday ( int stream, int year, int month, int day, int interval)

mcal_event_set_recur_monthly_mday() fixe la récurrence de la structure globale, jusqu'à la date passée en paramètre (la date de début est celle de la structure).

Précédent | Sommaire | Suivant
mcal_event_set_recur_daily | Niveau supérieur | mcal_event_set_recur_monthly_wday


mcal_event_set_recur_monthly_wday

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_recur_monthly_wday -- Fixe la récurrence mensuelle.

Description

int mcal_event_set_recur_monthly_wday ( int stream, int year, int month, int day, int interval)

mcal_event_set_recur_monthly_wday() fixe la récurrence mensuelle de la structure globale, jusqu'à la date passée en paramètre. (la date de début est celle de la structure).

Précédent | Sommaire | Suivant
mcal_event_set_recur_monthly_mday | Niveau supérieur | mcal_event_set_recur_none


mcal_event_set_recur_none

(PHP 3>= 3.0.15, PHP 4 )

mcal_event_set_recur_none -- Supprime la récurrence de la structure globale

Description

int mcal_event_set_recur_none ( int stream)

mcal_event_set_recur_none() supprime la récurrence de la structure globale (event->recur_type est mis à MCAL_RECUR_NONE).

Précédent | Sommaire | Suivant
mcal_event_set_recur_monthly_wday | Niveau supérieur | mcal_event_set_recur_weekly


mcal_event_set_recur_weekly

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_recur_weekly -- Fixe la récurrence hebdomadaire

Description

int mcal_event_set_recur_weekly ( int stream, int year, int month, int day, int interval, int weekdays)

mcal_event_set_recur_weekly() fixe la récurrence hebdomadaire de la structure globale, jusqu'à la date passée en paramètre. (la date de début est celle de la structure).

Précédent | Sommaire | Suivant
mcal_event_set_recur_none | Niveau supérieur | mcal_event_set_recur_yearly


mcal_event_set_recur_yearly

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_recur_yearly -- Fixe la récurrence annuelle

Description

int mcal_event_set_recur_yearly ( int stream, int year, int month, int day, int interval)

mcal_event_set_recur_yearly() fixe la récurrence annuelle de la structure globale, jusqu'à la date passée en paramètre (la date de début est celle de la structure).

Précédent | Sommaire | Suivant
mcal_event_set_recur_weekly | Niveau supérieur | mcal_event_set_start


mcal_event_set_start

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_start -- Fixe la date de début de la structure globale

Description

int mcal_event_set_start ( int stream, int year, int month [, int day [, int hour [, int min [, int sec]]]])

mcal_event_set_start() fixe la date de début de la structure globale.

mcal_event_set_start() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_recur_yearly | Niveau supérieur | mcal_event_set_title


mcal_event_set_title

(PHP 3>= 3.0.13, PHP 4 )

mcal_event_set_title -- Fixe le titre de la structure globale

Description

int mcal_event_set_title ( int stream, string title)

mcal_event_set_title() fixe le titre de la structure globale à la valeur de title.

mcal_event_set_title() retourne TRUE.

Précédent | Sommaire | Suivant
mcal_event_set_start | Niveau supérieur | mcal_expunge


mcal_expunge

(no version information, might be only in CVS)

mcal_expunge -- Supprime tous les événements marqués pour l'effacement

Description

int mcal_expunge ( int stream)

mcal_expunge() supprime tous les événements marqués pour l'effacement sur la connexion stream.

Précédent | Sommaire | Suivant
mcal_event_set_title | Niveau supérieur | mcal_fetch_current_stream_event


mcal_fetch_current_stream_event

(PHP 3>= 3.0.13, PHP 4 )

mcal_fetch_current_stream_event -- Retourne un objet contenant la structure de date

Description

object mcal_fetch_current_stream_event ( int stream)

mcal_fetch_current_stream_event() retourne la structure de la date du flux courant sous la forme d'un objet, qui contient :

  • int id - ID de l'événement.

  • int public - TRUE si l'événement est public, FALSE si il est privé.

  • string category - Catégorie de l'événement.

  • string title - Titre de l'événement.

  • string description - Description de l'événement.

  • int alarm - Nombre de minutes avant d'envoyer une alerte pour cet événement.

  • object start - Objet contenant une date et une heure.

  • object end - Objet contenant une date et une heure.

  • int recur_type - type de récurrence

  • int recur_interval - intervalle de récurrence

  • datetime recur_endate - date de fin de récurrence

  • int recur_data - données de récurrence

Tous les objets de date et heure sont construits comme suit :

  • int year - année

  • int month - mois

  • int mday - jour du mois

  • int hour - heure

  • int min - minutes

  • int sec - secondes

  • int alarm - nombre de minutes avant de déclencher l'alarme

Les valeurs possibles de recur_type sont :

  • 0 - Indique que l'événement ne se répète jamais

  • 1 - Indique que l'événement se répète tous les jours

  • 2 - Indique que l'événement se répète toutes les semaines

  • 3 - Indique que l'événement se répète tous les mois, à la même date (le 10 du mois)

  • 4 - Indique que l'événement se répète tous les mois, un certain jours (i.e., le troisième samedi du mois)

  • 5 - Indique que l'événement se répète tous les ans

Précédent | Sommaire | Suivant
mcal_expunge | Niveau supérieur | mcal_fetch_event


mcal_fetch_event

(PHP 3>= 3.0.13, PHP 4 )

mcal_fetch_event -- Recherche un événement dans le calendrier

Description

object mcal_fetch_event ( int mcal_stream, int event_id [, int options])

mcal_fetch_event() recherche un évenement dans le calendrier spécifié par id.

mcal_fetch_event() retourne un objet événement dont les attributs sont :

  • int id - ID de l'événement.

  • int public - TRUE si l'événement est public, FALSE si il est privé.

  • string category - Catégorie de l'événement.

  • string title - Titre de l'événement.

  • string description - Description de l'événement.

  • int alarm - Nombre de minutes avant d'envoyer une alerte pour cet événement.

  • object start - Objet contenant une date et une heure.

  • object end - Objet contenant une date et une heure.

  • int recur_type - type de récurrence

  • int recur_interval - intervalle de récurrence

  • datetime recur_endate - date de fin de récurrence

  • int recur_data - données de récurrence

Tous les objets de date et heure sont construits comme suit :

  • int year - année

  • int month - mois

  • int mday - jour du mois

  • int hour - heure

  • int min - minutes

  • int sec - secondes

  • int alarm - nombre de minutes avant de déclencher l'alarme

Les valeurs possibles de recur_type sont :

  • 0 - Indique que l'événement ne se répète jamais

  • 1 - Indique que l'événement se répète tous les jours

  • 2 - Indique que l'événement se répète toutes les semaines

  • 3 - Indique que l'événement se répète tous les mois, à la même date (le 10 du mois)

  • 4 - Indique que l'événement se répète tous les mois, un certain jours (i.e., le troisième samedi du mois)

  • 5 - Indique que l'événement se répète tous les ans

Précédent | Sommaire | Suivant
mcal_fetch_current_stream_event | Niveau supérieur | mcal_is_leap_year


mcal_is_leap_year

(PHP 3>= 3.0.13, PHP 4 )

mcal_is_leap_year -- Vérifie que l'année est bissextile.

Description

int mcal_is_leap_year ( int year)

mcal_is_leap_year() retoune 1 si l'année year est bissextile, et 0 sinon.

Précédent | Sommaire | Suivant
mcal_fetch_event | Niveau supérieur | mcal_list_alarms


mcal_list_alarms

(PHP 3>= 3.0.13, PHP 4 )

mcal_list_alarms -- Retourne une liste d'événements qui ont une alarme prévue à une date

Description

array mcal_list_alarms ( int mcal_stream [, int begin_year [, int begin_month [, int begin_day [, int end_year [, int end_month [, int end_day]]]]]])

mcal_list_events() retourne un tableau d'identifiants d'événements, qui ont une alarme de prévue à la date alarm_date. Si seul le flux MCAL est donné, la date de début et de fin de la structure globale sera utilisée.

mcal_list_events() prend une date, et retourne un tableau d'identifiants.

Précédent | Sommaire | Suivant
mcal_is_leap_year | Niveau supérieur | mcal_list_events


mcal_list_events

(PHP 3>= 3.0.13, PHP 4 )

mcal_list_events -- Retourne une liste d'événement entre deux dates

Description

array mcal_list_events ( int mcal_stream, object begin_date [, object end_date])

mcal_list_events() retourne un tableau d'identifiants d'événéments, compris entre deux dates.

mcal_list_events() prend une date de début et une date de fin. Un tableau d'identifiants est retourné.

Précédent | Sommaire | Suivant
mcal_list_alarms | Niveau supérieur | mcal_next_recurrence


mcal_next_recurrence

(PHP 3>= 3.0.13, PHP 4 )

mcal_next_recurrence -- Retourne la prochaine occurrence d'un événement

Description

int mcal_next_recurrence ( int stream, int weekstart, array next)

mcal_next_recurrence() retourne un objet contenant la prochaine date de l'événement, ou la date de l'événement suivant la date. mcal_next_recurrence() retourne un objet date vide si l'événement n'a pas de réoccurrence, ou si quelquechose est invalide. Utilisez weekstart pour déterminer le premier jour.

Précédent | Sommaire | Suivant
mcal_list_events | Niveau supérieur | mcal_open


mcal_open

(PHP 3>= 3.0.13, PHP 4 )

mcal_open -- Ouvre une connexion MCAL

Description

int mcal_open ( string calendar, string username, string password [, int options])

mcal_open() retourne un flux MCAL en cas de succès, et FALSE en cas d'erreur.

mcal_open() ouvre une connexion MCAL au serveur calendar. Si options est spécifié, passe aussi options à la boîte aux lettres (???). La structure interne du flux MCAL est initialisée à la connexion.

Précédent | Sommaire | Suivant
mcal_next_recurrence | Niveau supérieur | mcal_popen


mcal_popen

(PHP 3>= 3.0.13, PHP 4 )

mcal_popen -- Ouvre une connexion persistante MCAL

Description

int mcal_popen ( string calendar, string username, string password [, int options])

mcal_popen() retourne un flux MCAL en cas de succès, et FALSE sinon.

mcal_popen() ouvre une connexion MCAL au serveur de calendrier calendar. Si les options options sont spécifiées, elles sont aussi passé à cette boîte aux lettres (???). La structure interne du flux est aussi initialisée.

Précédent | Sommaire | Suivant
mcal_open | Niveau supérieur | mcal_rename_calendar


mcal_rename_calendar

(PHP 3>= 3.0.13, PHP 4 )

mcal_rename_calendar -- Renomme un calendrier

Description

string mcal_rename_calendar ( int stream, string old_name, string new_name)

mcal_rename_calendar() renomme le calendrier old_name en new_name.

Précédent | Sommaire | Suivant
mcal_popen | Niveau supérieur | mcal_reopen


mcal_reopen

(PHP 3>= 3.0.13, PHP 4 )

mcal_reopen -- Réouvre une connexion MCAL

Description

int mcal_reopen ( string calendar [, int options])

mcal_reopen() réouvre une connexion MCAL.

mcal_reopen() réouvre une connexion MCAL avec le serveur calendar. Si les options options sont spécifiées, elles sont aussi passé à cette boîte aux lettres.

Précédent | Sommaire | Suivant
mcal_rename_calendar | Niveau supérieur | mcal_snooze


mcal_snooze

(PHP 3>= 3.0.13, PHP 4 )

mcal_snooze -- Eteind l'alarme d'un événement

Description

bool mcal_snooze ( int stream_id, int event_id)

mcal_snooze() éteint l'alarme de l'événement identifié par stream_id et event_id.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
mcal_reopen | Niveau supérieur | mcal_store_event


mcal_store_event

(PHP 3>= 3.0.13, PHP 4 )

mcal_store_event -- Modifie un événement dans un calendrier MCAL

Description

int mcal_store_event ( int mcal_stream)

mcal_store_event() enregistre l'événement global dans le calendrier MCAL mcal_stream.

mcal_store_event() retourne l'identifiant de l'événement modifié en cas de succès, et FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
mcal_snooze | Niveau supérieur | mcal_time_valid


mcal_time_valid

(PHP 3>= 3.0.13, PHP 4 )

mcal_time_valid -- Valide une heure.

Description

int mcal_time_valid ( int hour, int minutes, int seconds)

mcal_time_valid() retourne TRUE si l'heure (constituée par l'heure hour, les minutes minutes et les secondes seconds) est une heure valide, et FALSE sinon.

Précédent | Sommaire | Suivant
mcal_store_event | Niveau supérieur | mcal_week_of_year


mcal_week_of_year

(PHP 4 )

mcal_week_of_year -- Retourne le numéro de semaine dans l'année pour une date donnée

Description

int mcal_week_of_year ( int day, int month, int year)

Précédent | Sommaire | Suivant
mcal_time_valid | Niveau supérieur | Chiffrage mcrypt


Chiffrage mcrypt

Manuel PHP
Précédent Suivant

LIV. Chiffrage mcrypt

Introduction

Ces fonctions permettent d'accéder à la librairie mcrypt, qui dispose d'une grande variété d'algorithmes de chiffrage, tels que DES, TripleDES, Blowfish (par défaut), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 et GOST en modes CBC, OFB, CFB et ECB. De plus, elle accepte aussi RC6 et IDEA qui sont considérés comme "non-libres".

Pré-requis

Ces fonctions utilisent mcrypt. Pour utiliser cette librairie, téléchargez le fichier libmcrypt-x.x.tar.gz sur ce site et suivez les instructions d'installation fournies. Les utilisateurs Windows trouverons toutes librairies nécessaires ici.

Si vous compilez PHP avec la librairie libmcrypt 2.4.x, les algorithmes suivants sont supportés : CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT ainsi que les chiffrements suivants : ENIGMA (chiffrage), PANAMA, RC4 et WAKE. Avec libmcrypt 2.4.x un autre mode de chiffrement est disponible : nOFB.

Installation

Vous devez compiler PHP avec l'option --with-mcrypt pour activer cette extension.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration Mcrypt

Nom | Par défaut | Changeable
mcrypt.algorithms_dir | NULL | PHP_INI_ALL
mcrypt.modes_dir | NULL | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Mcrypt peut opérer en 4 modes de chiffrage (CBC, OFB, CFB, et ECB). Si vous utilisez libmcrypt-2.4.x ou plus récent, les fonctions peuvent aussi opérer en mode nOFB et en mode STREAM. Nous allons présenter la technique d'utilisation de ces modes. Pour plus de références et de détails, reportez-vous au livre suivant : Applied Cryptography by Schneier (ISBN 0-471-11709-9).

  • ECB (electronic codebook) ECB (electronic codebook) est prévu pour des données aléatoires, telles que des clés. Etant donné que les données sont peu nombreuses et aléatoires, les inconvénients de l'ECB ont ici un effet négatif favorable.

  • CBC (cipher block chaining) est spécialement pratique avec les fichiers dont la sécurité ECB n'est pas suffisante.

  • CFB (cipher feedback) est la meilleure méthode pour chiffrer des flots d'octets, quand les octets doivent être encryptés un par un.

  • OFB (output feedback) est comparable à CFB, mais peut être utilisé lorsque des erreurs ne doivent pas être propagées.

  • nOFB (output feedback, in nbit) est comparable à OFB, mais plus sûr, car il opère avec la taille de blocs de l'algorithme.

  • STREAM est un mode supplémentaire, pour permettre l'utilisation d' algorithmes tels que WAKE ou RC4.

Voici quelques autres modes et méthodes de compression :

MCRYPT_ENCRYPT (entier)

MCRYPT_DECRYPT (entier)

MCRYPT_DEV_RANDOM (entier)

MCRYPT_DEV_URANDOM (entier)

MCRYPT_RAND (entier)

Mcrypt ciphers

Voici une liste non exhaustive des modes de chiffrement de l'extension mcrypt. Pour disposer d'une liste complète des chiffrements supportés, voyez les définitions dans le fichier mcrypt.h. La règle générale est avec l'API mcrypt-2.2.x API est que vous pouvez accéder au mode de chiffrement depuis PHP avec la constante MCRYPT_ciphername. Avec la librairie libmcrypt-2.4.x et libmcrypt-2.5.x, ces constantes fonctionnent toujours, mais il est possible de spécifier le nom du chiffrement dans une chaîne, lors de l'appel à mcrypt_module_open().

  • MCRYPT_3DES

  • MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x seulement)

  • MCRYPT_ARCFOUR (libmcrypt > 2.4.x seulement)

  • MCRYPT_BLOWFISH

  • MCRYPT_CAST_128

  • MCRYPT_CAST_256

  • MCRYPT_CRYPT

  • MCRYPT_DES

  • MCRYPT_DES_COMPAT (libmcrypt 2.2.x seulement)

  • MCRYPT_ENIGMA (libmcrypt > 2.4.x seulement, alias de MCRYPT_CRYPT)

  • MCRYPT_GOST

  • MCRYPT_IDEA (non-free)

  • MCRYPT_LOKI97 (libmcrypt > 2.4.x seulement)

  • MCRYPT_MARS (libmcrypt > 2.4.x seulement, non-libre)

  • MCRYPT_PANAMA (libmcrypt > 2.4.x seulement)

  • MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x seulement)

  • MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x seulement)

  • MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x seulement)

  • MCRYPT_RC2

  • MCRYPT_RC4 (libmcrypt 2.2.x seulement)

  • MCRYPT_RC6 (libmcrypt > 2.4.x seulement)

  • MCRYPT_RC6_128 (libmcrypt 2.2.x seulement)

  • MCRYPT_RC6_192 (libmcrypt 2.2.x seulement)

  • MCRYPT_RC6_256 (libmcrypt 2.2.x seulement)

  • MCRYPT_SAFER64

  • MCRYPT_SAFER128

  • MCRYPT_SAFERPLUS (libmcrypt > 2.4.x seulement)

  • MCRYPT_SERPENT(libmcrypt > 2.4.x seulement)

  • MCRYPT_SERPENT_128 (libmcrypt 2.2.x seulement)

  • MCRYPT_SERPENT_192 (libmcrypt 2.2.x seulement)

  • MCRYPT_SERPENT_256 (libmcrypt 2.2.x seulement)

  • MCRYPT_SKIPJACK (libmcrypt > 2.4.x seulement)

  • MCRYPT_TEAN (libmcrypt 2.2.x seulement)

  • MCRYPT_THREEWAY

  • MCRYPT_TRIPLEDES (libmcrypt > 2.4.x seulement)

  • MCRYPT_TWOFISH (pour les vieilles versions mcrypt 2.x, ou mcrypt > 2.4.x )

  • MCRYPT_TWOFISH128 (les TWOFISHxxx sont disponibles dans les nouvelles versions 2.x, mais pas dans les versions 2.4.x)

  • MCRYPT_TWOFISH192

  • MCRYPT_TWOFISH256

  • MCRYPT_WAKE (libmcrypt > 2.4.x seulement)

  • MCRYPT_XTEA (libmcrypt > 2.4.x seulement)

Vous devez (mode OFB et OFB) ou pouvez (mode CBC) fournir un vecteur d'initialisation (IV) pour ces modes de chiffrement. IV doit être unique, et avoir la même valeur au chiffrement et au déchiffrement. Pour des données qui seront enregistrées après chiffrement, vous pouvez prendre le résultat d'une fonction telle que MD5, appliquée sur le nom du fichier. Sinon, vous pouvez envoyer IV avec les données chiffrées, (reportez-vous au chapitre 9.3 de Applied Cryptography by Schneier (ISBN 0-471-11709-9) by Schneier (ISBN 0-471-11709-9) pour plus de détails sur le sujet).

Exemples

Mcrypt permet de chiffrer et de déchiffrer, en utilisant les méthodes mentionnées ci-dessus. Les 4 commandes importantes mcrypt_cfb(), mcrypt_cbc(), mcrypt_ecb() et mcrypt_ofb()) peuvent toutes opérer en mode MCRYPT_ENCRYPT et MCRYPT_DECRYPT.

Exemple 1. Chiffre une valeur avec un TripleDES, en mode ECB.

<?php
  $key = "Cette cle est ultra-secrete";
  $input = "Rencontrons-nous dans notre place secrete a 9 h 00.";
  $encrypted_data = mcrypt_ecb(MCRYPT_TripleDES, $key, $input, MCRYPT_ENCRYPT);
?>
Cet exemple va retourner les données cryptées dans la variable $encrypted_data.

Si vous avez compilé PHP avec libmcrypt 2.4.x, ces fonctions sont toujours disponibles, mais il est vivement conseillé d'utiliser les nouvelles fonctions avancées.

Exemple 2. Encryption d'une valeur avec TripleDES sous 2.4.x en mode ECB

<?php
  $key = "Ceci est une vraie cle secrete";
  $input = "Rendez-vous &agrave; 9 heures, dans notre planque.";
  $td = mcrypt_module_open (MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "");
  $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
  mcrypt_generic_init ($td, $key, $iv);
  $encrypted_data = mcrypt_generic ($td, $input);
  mcrypt_generic_end ($td);
?>
Cet exemple va retourner les données cryptées dans la variable $encrypted_data.

Table des matières
mcrypt_cbc -- Chiffre/déchriffre des données en mode CBC
mcrypt_cfb -- Chiffre/déchiffre des données en mode CFB
mcrypt_create_iv -- Crée un vecteur d'initialisation à partir d'une source aléatoire.
mcrypt_decrypt -- Déchiffre un texte
mcrypt_ecb -- Chiffre/déchiffre des données en mode ECB
mcrypt_enc_get_algorithms_name -- Retourne le nom de l'algorithme
mcrypt_enc_get_block_size -- Retourne la taille de blocs d'un algorithme
mcrypt_enc_get_iv_size -- Retourne la taille du VI d'un algorithme
mcrypt_enc_get_key_size -- Retourne la taille maximale de la clé pour un mode
mcrypt_enc_get_modes_name -- Retourne le nom du mode
mcrypt_enc_get_supported_key_sizes -- Retourne un tableau contenant les tailles de clés acceptées par un algorithme
mcrypt_enc_is_block_algorithm_mode -- Teste le chiffrage par blocs d'un mode
mcrypt_enc_is_block_algorithm -- Teste le chiffrage par blocs d'un algorithme
mcrypt_enc_is_block_mode -- Teste si le mode retourne les données par blocs
mcrypt_enc_self_test -- Teste un module ouvert
mcrypt_encrypt -- Chiffre un texte
mcrypt_generic_deinit -- Prépare le module pour le déchargement
mcrypt_generic_end -- Termine un chiffrage
mcrypt_generic_init -- Initialise tous les buffers nécessaires
mcrypt_generic -- Chiffre
mcrypt_get_block_size -- Retourne la taille de blocs d'un chiffrement
mcrypt_get_cipher_name -- Lit le nom du chiffrement utilisé
mcrypt_get_iv_size -- Retourne la taille du VI utilisé par un couple chiffrement/mode
mcrypt_get_key_size -- Retourne la taille de la clé d'un chiffrement
mcrypt_list_algorithms -- Liste tous les algorithmes de chiffrement supportés
mcrypt_list_modes -- Liste tous les modes de chiffrement supportés
mcrypt_module_close -- Décharge le module de chiffrement
mcrypt_module_get_algo_block_size -- Retourne la taille de blocs d'un algorithme
mcrypt_module_get_algo_key_size -- Retourne la taille maximale de clé
mcrypt_module_get_supported_key_sizes -- Retourne un tableau contenant les tailles de clés supportée par un algorithme de chiffrement
mcrypt_module_is_block_algorithm_mode -- Indique si un mode fonctionne par blocs
mcrypt_module_is_block_algorithm -- Indique si un algorithme fonctionne par blocs
mcrypt_module_is_block_mode -- Indique si un mode travaille par blocs
mcrypt_module_open -- Ouvre le module de l'algorithme et le mode à utiliser
mcrypt_module_self_test -- Teste un mode
mcrypt_ofb -- Chiffre/déchiffre des données en mode OFB
mdecrypt_generic -- Déchiffre

Précédent | Sommaire | Suivant
mcal_week_of_year | Niveau supérieur | mcrypt_cbc


mcrypt_cbc

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_cbc -- Chiffre/déchriffre des données en mode CBC

Description

string mcrypt_cbc ( int cipher, string key, string data, int mode [, string iv])

string mcrypt_cbc ( string cipher, string key, string data, int mode [, string iv])

La première syntaxe utilise libmcrypt 2.2.x, et la seconde utilise libmcrypt 2.4.x.

mcrypt_cbc() ne doit plus être utilisée. Vous pouvez la remplacer par mcrypt_generic() et mdecrypt_generic().

Précédent | Sommaire | Suivant
Chiffrage mcrypt | Niveau supérieur | mcrypt_cfb


mcrypt_cfb

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_cfb -- Chiffre/déchiffre des données en mode CFB

Description

string mcrypt_cfb ( int cipher, string key, string data, int mode, string iv)

string mcrypt_cfb ( string cipher, string key, string data, int mode [, string iv])

La première syntaxe utilise libmcrypt 2.2.x, et la seconde utilise libmcrypt 2.4.x.

mcrypt_cfb() ne doit plus être utilisée. Vous pouvez la remplacer par mcrypt_generic() et mdecrypt_generic().

Précédent | Sommaire | Suivant
mcrypt_cbc | Niveau supérieur | mcrypt_create_iv


mcrypt_create_iv

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_create_iv -- Crée un vecteur d'initialisation à partir d'une source aléatoire.

Description

string mcrypt_create_iv ( int size, int source)

mcrypt_create_iv() sert à créer un IV (vecteur d'initialisation).

mcrypt_create_iv() prend deux arguments, size détermine la taille de IV, source spécifie la source de IV.

La source peut être MCRYPT_RAND (générateur de nombres aléatoires système), MCRYPT_DEV_RANDOM (lecture des données depuis le fichier /dev/random) et MCRYPT_DEV_URANDOM (lecture des données depuis le fichier /dev/urandom). Si vous utilisez MCRYPT_RAND, assurez-vous de bien appeler srand() pour initialiser le générateur de nombres aléatoires.

Exemple 1. Exemple avec mcrypt_create_iv

<?php
    $size = mcrypt_get_iv_size (MCRYPT_CAST_256, MCRYPT_MODE_CFB);
    $iv = mcrypt_create_iv ($size, MCRYPT_DEV_RANDOM);
?>

Le VI est uniquement une solution alternative pour initialiser les routines de chiffrement. Le VI n'a pas besoin d'être spécifiquement secret, même si c'est mieux. Vous pouvez même l'envoyer avec vos données chiffrées sans perdre de sécurité.

Plus d'informations sont disponibles sur les sites de http://www.ciphersbyritter.com/GLOSSARY.HTM#IV, http://fn2.freenet.edmonton.ab.ca/~jsavard/crypto/co0409.htm et dans le chapitre 9.3 du livre "Applied Cryptography" de Schneier (ISBN 0-471-11709-9).

Précédent | Sommaire | Suivant
mcrypt_cfb | Niveau supérieur | mcrypt_decrypt


mcrypt_decrypt

(PHP 4 >= 4.0.2)

mcrypt_decrypt -- Déchiffre un texte

Description

string mcrypt_decrypt ( string cipher, string key, string data, string mode [, string iv])

cipher est une constante MCRYPT_ciphername qui indique le nom de l'algorithme sous forme de chaîne.

key est la clé utilisée pour chiffrer les données. Si elle est plus petite que nécessaire, elle sera complétée avec des '\0'.

data sont les données qui doivent être encryptées. Si la taille des données n'est pas de la forme n * taille_de_bloc, elles seront complétées avec des '\0'. La valeur retournée peut être plus grande que la valeur d'origine.

mode est une constante MCRYPT_MODE_modename qui peut valoir : "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".

iv (Vecteur d'Initialisation) est utilisé pour les modes CBC, CFB, OFB, et dans certains algorithmes de mode STREAM. Si vous ne fournissez pas le VI, alors qu'il est nécessaire, la fonction affichera une alerte, et utilise un VI composé de caractères '\0'.

Précédent | Sommaire | Suivant
mcrypt_create_iv | Niveau supérieur | mcrypt_ecb


mcrypt_ecb

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_ecb -- Chiffre/déchiffre des données en mode ECB

Description

string mcrypt_ecb ( int cipher, string key, string data, int mode)

string mcrypt_ecb ( string cipher, string key, string data, int mode [, string iv])

La première syntaxe utilise libmcrypt 2.2.x, et la seconde utilise libmcrypt 2.4.x.

mcrypt_ecb() ne doit plus être utilisée. Vous pouvez la remplacer par mcrypt_generic() et mdecrypt_generic().

Précédent | Sommaire | Suivant
mcrypt_decrypt | Niveau supérieur | mcrypt_enc_get_algorithms_name


mcrypt_enc_get_algorithms_name

(PHP 4 >= 4.0.2)

mcrypt_enc_get_algorithms_name -- Retourne le nom de l'algorithme

Description

string mcrypt_enc_get_algorithms_name ( resource td)

mcrypt_enc_get_algorithms_name() retourne le nom de l'algorithme désigné par td.

Exemple 1. Exemple avec mcrypt_enc_get_algorithms_name()

<?php
    $td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";

    $td = mcrypt_module_open ('cast-256', '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";
?>

Affiche :
CAST-256
CAST-256

Précédent | Sommaire | Suivant
mcrypt_ecb | Niveau supérieur | mcrypt_enc_get_block_size


mcrypt_enc_get_block_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_block_size -- Retourne la taille de blocs d'un algorithme

Description

int mcrypt_enc_get_block_size ( resource td)

mcrypt_enc_get_block_size() retourne la taille de blocs d'un algorithme, en octets.

Précédent | Sommaire | Suivant
mcrypt_enc_get_algorithms_name | Niveau supérieur | mcrypt_enc_get_iv_size


mcrypt_enc_get_iv_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_iv_size -- Retourne la taille du VI d'un algorithme

Description

int mcrypt_enc_get_iv_size ( resource td)

mcrypt_enc_get_iv_size() retourne la taille du VI de l'algorithme désigné par td, en octets. Si la valeur retournée est 0, c'est que l'algorithme ne demande pas de VI. Un VI est demandé en mode cbc, cfb et ofb, et parfois en mode stream.

Précédent | Sommaire | Suivant
mcrypt_enc_get_block_size | Niveau supérieur | mcrypt_enc_get_key_size


mcrypt_enc_get_key_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_key_size -- Retourne la taille maximale de la clé pour un mode

Description

int mcrypt_enc_get_key_size ( resource td)

mcrypt_enc_get_key_size() retourne la taille maximale de clé acceptée par le mode désigné par td, en octets.

Précédent | Sommaire | Suivant
mcrypt_enc_get_iv_size | Niveau supérieur | mcrypt_enc_get_modes_name


mcrypt_enc_get_modes_name

(PHP 4 >= 4.0.2)

mcrypt_enc_get_modes_name -- Retourne le nom du mode

Description

string mcrypt_enc_get_modes_name ( resource td)

mcrypt_enc_get_modes_name() retourne le nom du mode désigné par td.

Exemple 1. Exemple avec mcrypt_enc_get_modes_name()

<?php
    $td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_modes_name($td). "\n";

    $td = mcrypt_module_open ('cast-256', '', 'ecb', '');
    echo mcrypt_enc_get_modes_name($td). "\n";
?>

Affiche :
CFB
ECB

Précédent | Sommaire | Suivant
mcrypt_enc_get_key_size | Niveau supérieur | mcrypt_enc_get_supported_key_sizes


mcrypt_enc_get_supported_key_sizes

(PHP 4 >= 4.0.2)

mcrypt_enc_get_supported_key_sizes -- Retourne un tableau contenant les tailles de clés acceptées par un algorithme

Description

array mcrypt_enc_get_supported_key_sizes ( resource td)

mcrypt_enc_get_supported_key_sizes() retourne un tableau contenant les tailles des clés supportées par l'algorithme désigné par td. S'il retourne un tableau vide, c'est que toutes les clés entre 1 et mcrypt_enc_get_key_size() sont acceptées par l'algorithme.

Exemple 1. Exemple avec mcrypt_enc_get_supported_key_sizes()

<?php
    $td = mcrypt_module_open ('rijndael-256', '', 'ecb', '');
    var_dump (mcrypt_enc_get_supported_key_sizes($td));
?>

Affiche :

array(3) {
  [0]=>
  int(16)
  [1]=>
  int(24)
  [2]=>
  int(32)
}
?>

Précédent | Sommaire | Suivant
mcrypt_enc_get_modes_name | Niveau supérieur | mcrypt_enc_is_block_algorithm_mode


mcrypt_enc_is_block_algorithm_mode

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_algorithm_mode -- Teste le chiffrage par blocs d'un mode

Description

bool mcrypt_enc_is_block_algorithm_mode ( resource td)

mcrypt_enc_is_block_algorithm_mode() retourne 1 si ce mode utilise des algorithmes par blocs, et 0 sinon. (i.e. 0 pour stream, et 1 pour cbc, cfb, ofb).

Précédent | Sommaire | Suivant
mcrypt_enc_get_supported_key_sizes | Niveau supérieur | mcrypt_enc_is_block_algorithm


mcrypt_enc_is_block_algorithm

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_algorithm -- Teste le chiffrage par blocs d'un algorithme

Description

bool mcrypt_enc_is_block_algorithm ( resource td)

mcrypt_enc_is_block_algorithm() retourne 1 si l'algorithme utilisé est un algorithme par blocs, et 0 si c'est un algorithme par flux.

Précédent | Sommaire | Suivant
mcrypt_enc_is_block_algorithm_mode | Niveau supérieur | mcrypt_enc_is_block_mode


mcrypt_enc_is_block_mode

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_mode -- Teste si le mode retourne les données par blocs

Description

bool mcrypt_enc_is_block_mode ( resource td)

mcrypt_enc_is_block_mode() retourne 1 si le mode retourne des blocs d'octets, ou bien 0 s'il retourne des octets (par flux). (i.e. 1 pour cbc et ecb, et 0 pour cfb et stream).

Précédent | Sommaire | Suivant
mcrypt_enc_is_block_algorithm | Niveau supérieur | mcrypt_enc_self_test


mcrypt_enc_self_test

(PHP 4 >= 4.0.2)

mcrypt_enc_self_test -- Teste un module ouvert

Description

bool mcrypt_enc_self_test ( resource td)

mcrypt_enc_self_test() effectue un test du module ouvert et désigné par td. Si le test est concluant, elle retourne 0, sinon, 1.

Précédent | Sommaire | Suivant
mcrypt_enc_is_block_mode | Niveau supérieur | mcrypt_encrypt


mcrypt_encrypt

(PHP 4 >= 4.0.2)

mcrypt_encrypt -- Chiffre un texte

Description

string mcrypt_encrypt ( string cipher, string key, string data, string mode [, string iv])

mcrypt_encrypt() chiffre les données, et retourne les données cryptées.

cipher est une constante MCRYPT_ciphername qui indique le nom de l'algorithme sous forme de chaîne.

key est la clé utilisée pour chiffrer les données. Si elle est plus petite que nécessaire, elle sera complétée avec des '\0'.

data sont les données qui doivent être encryptées. Si la taille des données n'est pas de la forme n * taille_de_bloc, elles seront complétées avec des '\0'. La valeur retournée peut être plus grande que la valeur d'origine.

mode est une constante MCRYPT_MODE_modename qui peut valoir : "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".

iv (Vecteur d'Initialisation) est utilisé pour les modes CBC, CFB, OFB, et dans certains algorithmes de mode STREAM. Si vous ne fournissez pas le VI, alors qu'il est nécessaire, la fonction affichera une alerte, et utilisera un vecteur d'initialisation composé de caractères '\0'.

Exemple 1. Exemple avec mcrypt_encrypt()

<?php
  $iv = mcrypt_create_iv(mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
  $key = "Ceci est une cl&eacute; secr&egrave;te";
  $text = "Rencontrons nous &agrave; 11 heures, derri&egrave;re le monument";
  echo strlen ($text)."\n";
  $crypttext = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  echo strlen ($crypttext)."\n";
?>
L'exemple ci-dessus affichera : 42 64

Voir aussi mcrypt_module_open().

Précédent | Sommaire | Suivant
mcrypt_enc_self_test | Niveau supérieur | mcrypt_generic_deinit


mcrypt_generic_deinit

(PHP 4 >= 4.1.1)

mcrypt_generic_deinit -- Prépare le module pour le déchargement

Description

bool mcrypt_generic_deinit ( resource td)

mcrypt_generic_deinit() prépare le module de chiffrement td pour le déchargement. Tous les buffers sont vidées, mais le module n'est pas déchargé. Vous devez appeler mcrypt_module_close() vous même (mais PHP le fera pour vous a la fin du script). mcrypt_generic_deinit() retourne FALSE en cas d'erreur, et TRUE sinon.

Pour un exemple, voir mcrypt_module_open() et l'entrée sur mcrypt_generic_init().

Précédent | Sommaire | Suivant
mcrypt_encrypt | Niveau supérieur | mcrypt_generic_end


mcrypt_generic_end

(PHP 4 >= 4.0.2)

mcrypt_generic_end -- Termine un chiffrage

Description

bool mcrypt_generic_end ( resource td)

mcrypt_generic_end() termine le chiffrage désigné par le pointeur td. En fait, elle supprime tous les buffers, et ferme les modules utilisés. Elle retourne FALSE en cas d'erreur, et TRUE sinon.

Précédent | Sommaire | Suivant
mcrypt_generic_deinit | Niveau supérieur | mcrypt_generic_init


mcrypt_generic_init

(PHP 4 >= 4.0.2)

mcrypt_generic_init -- Initialise tous les buffers nécessaires

Description

int mcrypt_generic_init ( resource td, string key, string iv)

La taille maximale de la clé doit être cette retournée par mcrypt_enc_get_key_size() et toutes les valeurs inférieures seront aussi valides. Le vecteur d'initialisation (VI) doit avoir la taille d'un bloc, mais vous devez lire sa taille en appelant mcrypt_enc_get_iv_size(). IV est ignoré en mode ECB. IV DOIT exister en modes CFB, CBC, STREAM, nOFB et OFB. Il doit être aléatoire et unique (mais pas secret). Le même VI doit être utilisé pour le chiffrage et le déchiffrage. Si vous ne voulez pas l'utiliser, remplissez le de zéros, mais ce n'est pas recommandé. La fonction retourne (-1) en cas d'erreur.

Vous devez appeler mcrypt_generic_init()
avant chaque appel à mcrypt_generic() ou
mdecrypt_generic().

Précédent | Sommaire | Suivant
mcrypt_generic_end | Niveau supérieur | mcrypt_generic


mcrypt_generic

(PHP 4 >= 4.0.2)

mcrypt_generic -- Chiffre

Description

string mcrypt_generic ( resource td, string data)

mcrypt_generic() chiffre les données data. Les données sont complétées par des "\0" pour obtenir une taille multiple de la taille d'un bloc. Elle retourne les données chiffrées. Notez que la longueur de la chaîne retournée peut être plus longue que celle passée en argument, à cause du complément.

Le gestionnaire de chiffrement td doit être initialisée avec la fonction mcrypt_generic_init(), avec une clé et un VI, avant d'appeler cette fonction. Lorsque le chiffrement est réalisé, vous devez libérer les buffers en appelant la fonction mcrypt_generic_deinit(). Voyez mcrypt_module_open() pour un exemple.

Voir aussi
mdecrypt_generic(),
mcrypt_generic_init() et
mcrypt_generic_deinit().

Précédent | Sommaire | Suivant
mcrypt_generic_init | Niveau supérieur | mcrypt_get_block_size


mcrypt_get_block_size

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_get_block_size -- Retourne la taille de blocs d'un chiffrement

Description

int mcrypt_get_block_size ( int cipher)

int mcrypt_get_block_size ( string cipher, string module)

mcrypt_get_block_size() sert à lire la taille de blocs du chiffrement cipher (en combinaison avec un mode de chiffrement.

Le premier prototype sert lorsque PHP est compilé avec la librairie libmcrypt 2.2.x, le second lorsque PHP est compilé avec libmcrypt 2.4.x ou 2.5.x.

Cet exemple montre comment utiliser cette fonction lorsque PHP est compilé avec libmcrypt 2.4.x et 2.5.x.

Exemple 1. Exemple avec mcrypt_get_block_size()

<?php
    echo mcrypt_get_block_size ('tripledes', 'ecb');
?>

Affiche :
8

Voir aussi mcrypt_get_key_size() et mcrypt_encrypt().

Précédent | Sommaire | Suivant
mcrypt_generic | Niveau supérieur | mcrypt_get_cipher_name


mcrypt_get_cipher_name

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_get_cipher_name -- Lit le nom du chiffrement utilisé

Description

string mcrypt_get_cipher_name ( int cipher)

string mcrypt_get_cipher_name ( string cipher)

mcrypt_get_cipher_name() retourne le nom du chiffrement utilisé.

mcrypt_get_cipher_name() prend le numéro de chiffrement (avec libmcrypt 2.2.x) ou prend le nom du chiffrement (avec libmcrypt 2.4.x) comme paramètre, et retourne le nom du chiffrement, ou FALSE, si ce chiffrement n'existe pas.

Exemple 1. Exemple avec mcrypt_get_cipher_name()

<?php
$cipher = MCRYPT_TripleDES;
print mcrypt_get_cipher_name($cipher);
?>

L'exemple ci-dessus va afficher :
3DES

Précédent | Sommaire | Suivant
mcrypt_get_block_size | Niveau supérieur | mcrypt_get_iv_size


mcrypt_get_iv_size

(PHP 4 >= 4.0.2)

mcrypt_get_iv_size -- Retourne la taille du VI utilisé par un couple chiffrement/mode

Description

int mcrypt_get_iv_size ( resource td)

int mcrypt_get_iv_size ( string cipher, string mode)

La première syntaxe utilise libmcrypt 2.2.x, et la seconde utilise libmcrypt 2.4.x.

mcrypt_get_iv_size() retourne la taille du Vecteur d'initialisation (VI). En cas d'erreur, la fonction retourne FALSE. Si le VI est ignoré dans le couple chiffrement/mode demandé, zéro est retourné.

cipher est une constante MCRYPT_ciphername qui indique le nom de l'algorithme sous forme de chaîne.

mode est une constante MCRYPT_MODE_modename qui peut valoir : "ecb", "cbc", "cfb", "ofb", "nofb" ou "stream".

Cet exemple illuste l'utilisation de cette fonction avec les deux librairies libmcrypt 2.4.x et 2.5.x.

Exemple 1. Exemple avec mcrypt_get_block_size()

<?php
    $size = mcrypt_get_iv_size (MCRYPT_CAST_256, MCRYPT_MODE_CFB);

    $size = mcrypt_get_iv_size ('des', 'ecb');
?>

Voir aussi mcrypt_get_block_size() et mcrypt_create_iv().

Précédent | Sommaire | Suivant
mcrypt_get_cipher_name | Niveau supérieur | mcrypt_get_key_size


mcrypt_get_key_size

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_get_key_size -- Retourne la taille de la clé d'un chiffrement

Description

int mcrypt_get_key_size ( int cipher)

int mcrypt_get_key_size ( string cipher, string module)

mcrypt_get_key_size() sert à lire la taille de clé du chiffrement cipher.

mcrypt_get_block_size() prend comme argument le chiffrement cipher et retourne une taille en octets.

Cet exemple illustre comment utiliser cette fonction avec les deux librairies libmcrypt 2.4.x et 2.5.x.

Exemple 1. Exemple avec mcrypt_get_block_size()

<?php
    echo mcrypt_get_key_size ('tripledes', 'ecb');
?>

Affiche :
24

Voir aussi mcrypt_get_block_size() et mcrypt_encrypt().

Précédent | Sommaire | Suivant
mcrypt_get_iv_size | Niveau supérieur | mcrypt_list_algorithms


mcrypt_list_algorithms

(PHP 4 >= 4.0.2)

mcrypt_list_algorithms -- Liste tous les algorithmes de chiffrement supportés

Description

array mcrypt_list_algorithms ( [string lib_dir])

mcrypt_list_algorithms() sert à lister tous les algorithmes de chiffrement de lib_dir. mcrypt_list_algorithms() prend un argument optionnel, qui spécifie le dossier qui contient tous les algorithmes. S'il est omis, la valeur de mcrypt.algorithms_dir dans php.ini est utilisée.

Exemple 1. Exemple avec mcrypt_list_algorithms()

<?php
$algorithms = mcrypt_list_algorithms ("/usr/local/lib/libmcrypt");
foreach ($algorithms as $cipher) {
    echo $cipher."/n";
}
?>

L'exemple ci-dessus va afficher tous les algorithmes supportés dans le dossier "/usr/local/lib/libmcrypt".

Précédent | Sommaire | Suivant
mcrypt_get_key_size | Niveau supérieur | mcrypt_list_modes


mcrypt_list_modes

(PHP 4 >= 4.0.2)

mcrypt_list_modes -- Liste tous les modes de chiffrement supportés

Description

array mcrypt_list_modes ( [string lib_dir])

mcrypt_list_algorithms() sert à lister tous les modes de chiffrement de lib_dir. mcrypt_list_algorithms() prend un argument optionnel, qui spécifie le dossier qui contient tous les algorithmes. S'il est omis, la valeur de mcrypt.algorithms_dir dans php.ini est utilisée.

Exemple 1. Exemple avec mcrypt_list_modes()

<?php
$modes = mcrypt_list_modes ();
foreach ($modes as $mode) {
    echo $mode."<BR>";";
}
?>

L'exemple ci-dessus va afficher tous les modes supportés dans le dossier "/usr/local/lib/libmcrypt".

Précédent | Sommaire | Suivant
mcrypt_list_algorithms | Niveau supérieur | mcrypt_module_close


mcrypt_module_close

(PHP 4 >= 4.0.2)

mcrypt_module_close -- Décharge le module de chiffrement

Description

bool mcrypt_module_close ( resource td)

mcrypt_module_close() décharge le module td.

Voir mcrypt_module_open().

Précédent | Sommaire | Suivant
mcrypt_list_modes | Niveau supérieur | mcrypt_module_get_algo_block_size


mcrypt_module_get_algo_block_size

(PHP 4 >= 4.0.2)

mcrypt_module_get_algo_block_size -- Retourne la taille de blocs d'un algorithme

Description

int mcrypt_module_get_algo_block_size ( string algorithm [, string lib_dir])

mcrypt_module_get_algo_block_size() retourne la taille de blocs d'un algorithme, en octets. Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

Précédent | Sommaire | Suivant
mcrypt_module_close | Niveau supérieur | mcrypt_module_get_algo_key_size


mcrypt_module_get_algo_key_size

(PHP 4 >= 4.0.2)

mcrypt_module_get_algo_key_size -- Retourne la taille maximale de clé

Description

int mcrypt_module_get_algo_key_size ( string algorithm [, string lib_dir])

mcrypt_module_get_algo_key_size() retourne la taille maximale de la clé supportée par l'algorithme algorithm. Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

Précédent | Sommaire | Suivant
mcrypt_module_get_algo_block_size | Niveau supérieur | mcrypt_module_get_supported_key_sizes


mcrypt_module_get_supported_key_sizes

(PHP 4 >= 4.0.2)

mcrypt_module_get_supported_key_sizes -- Retourne un tableau contenant les tailles de clés supportée par un algorithme de chiffrement

Description

array mcrypt_module_get_supported_key_sizes ( string algorithm [, string lib_dir])

mcrypt_module_get_supported_key_sizes() retourne un tableau contenant les tailles de clés supportée par l'algorithme de chiffrement algorithm. Si il retourne un tableau vide, alors toutes les clés entre 1 et mcrypt_module_get_algo_key_size() sont supportées par l'algorithme. Le paramètre optionnel lib_dir peut contenir le chemin du dossier d'installation du module, sur le système.

Voir aussi mcrypt_enc_get_supported_key_sizes() qui est utiliés pour ouvrir les modules de chiffrement.

Précédent | Sommaire | Suivant
mcrypt_module_get_algo_key_size | Niveau supérieur | mcrypt_module_is_block_algorithm_mode


mcrypt_module_is_block_algorithm_mode

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_algorithm_mode -- Indique si un mode fonctionne par blocs

Description

bool mcrypt_module_is_block_algorithm_mode ( string mode [, string lib_dir])

mcrypt_module_is_block_algorithm_mode() retourne TRUE si le mode doit être utilisé avec un algorithme par bloc, sinon retourne 0 (i.e. 0 pour stream, et 1 pour cbc, cfb, ofb). Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

Précédent | Sommaire | Suivant
mcrypt_module_get_supported_key_sizes | Niveau supérieur | mcrypt_module_is_block_algorithm


mcrypt_module_is_block_algorithm

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_algorithm -- Indique si un algorithme fonctionne par blocs

Description

bool mcrypt_module_is_block_algorithm ( string algorithm [, string lib_dir])

mcrypt_module_is_block_algorithm() retourne TRUE si algorithm est un algorithme par bloc, sinon retourne 0. Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

Précédent | Sommaire | Suivant
mcrypt_module_is_block_algorithm_mode | Niveau supérieur | mcrypt_module_is_block_mode


mcrypt_module_is_block_mode

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_mode -- Indique si un mode travaille par blocs

Description

bool mcrypt_module_is_block_mode ( string mode [, string lib_dir])

mcrypt_module_is_block_mode() retourne TRUE si ce mode fournit des blocs d'octets, ou bien un flux d'octets. (i.e. 1 pour cbc et ecb, et 0 pour cfb et stream). Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

Précédent | Sommaire | Suivant
mcrypt_module_is_block_algorithm | Niveau supérieur | mcrypt_module_open


mcrypt_module_open

(PHP 4 >= 4.0.2)

mcrypt_module_open -- Ouvre le module de l'algorithme et le mode à utiliser

Description

resource mcrypt_module_open ( string algorithm, string algorithm_directory, string mode, string mode_directory)

mcrypt_module_open() ouvre le module de l'algorithme et du mode à utiliser. Le nom de l'algorithme est spécifié par le paramètre algorithm (par exemple : "twofish"), ou bien une des constantes MCRYPT_ciphername. La librairie est refermée en appelant mcrypt_module_close, mais il n'est pas nécessaire d'appeler cette fonction si mcrypt_generic_end() est utilisé. Normalement, mcrypt_module_open() retourne un pointeur d'encryption, ou bien FALSE en cas d'erreur.

algorithm_directory et mode_directory servent à repérer les modules d'encryption. Si vous fournissez un nom de dossier, il sera utilisé. Si vous passez une chaîne vide (""), la valeur utilisé par mcrypt.algorithms_dir ou mcrypt.modes_dir sera celle indiquée dans les directives de configuration. Lorsque ces paramètres ne sont pas fournis les valeurs par défaut, compilées avec la librairie sont utilisées. (généralement /usr/local/lib/libmcrypt).

Exemple 1. Exemple avec mcrypt_module_open()

<?php
  $td = mcrypt_module_open (MCRYPT_DES, "", MCRYPT_MODE_ECB, "/usr/lib/mcrypt-modes");
?>
L'exemple ci-dessus va essayer d'ouvrir le module de chiffrement par DES, dans le dossier par défaut, et le mode EBC dans le dossier /usr/lib/mcrypt-modes.

Exemple 2. Using mcrypt_module_open() in encryption

<?php
    /* Charge un chiffrement */
    $td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');

    /* Cr&eacute;e le VI et d&eacute;termine la taille de la cl&eacute; */
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    $ks = mcrypt_enc_get_key_size ($td);

    /* Cr&eacute;e la cl&eacute; */
    $key = substr (md5 ('very secret key'), 0, $ks);

    /* Intialise le chiffrement */
    mcrypt_generic_init ($td, $key, $iv);

    /* Chiffre les donn&eacute;es */
    $encrypted = mcrypt_generic ($td, 'This is very important data');

    /* Lib&egrave;re le gestionnaire de chiffrement */
    mcrypt_generic_deinit ($td);

    /* Initialise le module de chiffrement pour le d&eacute;chiffrement */
    mcrypt_generic_init ($td, $key, $iv);

    /* D&eacute;chiffre les donn&eacute;es */
    $decrypted = mdecrypt_generic ($td, $encrypted);

    /* Lib&egrave;re le gestionnaire de d&eacute;chiffrement, et ferme le module */
    mcrypt_generic_deinit ($td);
    mcrypt_module_close ($td);

    /* Affiche la cha&icirc;ne */
    echo trim ($decrypted)."\n";
?>

La première ligne de l'exemple ci-dessus va essayer d'ouvrir le chiffrement DES, dans le dossier par défaut, et le mode EBC dans le dossier /usr/lib/mcrypt-modes. Le second exemple utilise les chaînes comme nom pour le chiffrement et le mode. Cela ne fonctionne que si l'extension est compilée avec libmcrypt 2.4.x or 2.5.x.

Voir aussi
mcrypt_module_close(),
mcrypt_generic(),
mdecrypt_generic(),
mcrypt_generic_init() et
mcrypt_generic_deinit().

Précédent | Sommaire | Suivant
mcrypt_module_is_block_mode | Niveau supérieur | mcrypt_module_self_test


mcrypt_module_self_test

(PHP 4 >= 4.0.2)

mcrypt_module_self_test -- Teste un mode

Description

bool mcrypt_module_self_test ( string algorithm [, string lib_dir])

mcrypt_module_self_test() effectue un test sur l'algorithme spécifié. Le paramètre optionnel lib_dir contient le chemin jusqu'au module de l'algorithme sur le système.

mcrypt_module_self_test() retourne TRUE si le test fonctionne, et FALSE sinon.

Précédent | Sommaire | Suivant
mcrypt_module_open | Niveau supérieur | mcrypt_ofb


mcrypt_ofb

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_ofb -- Chiffre/déchiffre des données en mode OFB

Description

string mcrypt_ofb ( int cipher, string key, string data, int mode, string iv)

string mcrypt_ofb ( string cipher, string key, string data, int mode [, string iv])

La première syntaxe utilise libmcrypt 2.2.x, et la seconde utilise libmcrypt 2.4.x.

mcrypt_ofb() ne doit plus être utilisée. Vous pouvez la remplacer par mcrypt_generic() et mdecrypt_generic().

Précédent | Sommaire | Suivant
mcrypt_module_self_test | Niveau supérieur | mdecrypt_generic


mdecrypt_generic

(PHP 4 >= 4.0.2)

mdecrypt_generic -- Déchiffre

Description

string mdecrypt_generic ( resource td, string data)

mdecrypt_generic() déchiffre les données data. Notez que la longueur de la chaîne déchiffrée peut être plus longue que la chaîne originale, car elle peut avoir été complétée par des caractères "\0".

Exemple 1. Exemple avec mdecrypt_generic()

<?php
    /* Donn&eacute;es */
    $key = 'Ceci est une tr&egrave;s longue cl&eacute; de chiffrement, voire m&ecirc;me trop longue';
    $plain_text = 'Ceci sont des donn&eacute;es importantes';

    /* Ouvre le module et cr&eacute;e un VI */
    $td = mcrypt_module_open ('des', '', 'ecb', '');
    $key = substr ($key, 0, mcrypt_enc_get_key_size ($td));
    $iv_size = mcrypt_enc_get_iv_size ($td);
    $iv = mcrypt_create_iv ($iv_size, MCRYPT_RAND);

    /* Initialise le module de chiffrement */
    if (mcrypt_generic_init ($td, $key, $iv) != -1) {

        /* Chiffre les donn&eacute;es */
        $c_t = mcrypt_generic ($td, $plain_text);
        mcrypt_generic_deinit ($td);

        /* R&eacute;initialise les buffers pour le d&eacute;chiffrement */
        mcrypt_generic_init ($td, $key, $iv);
        $p_t = mdecrypt_generic ($td, $c_t);

        /* Nettoye */
        mcrypt_generic_deinit ($td);
        mcrypt_module_close ($td);
    }

    if (strncmp ($p_t, $plain_text, strlen($plain_text)) == 0) {
        echo "ok\n";
    } else {
        echo "erreur\n";
    }
?>

L'exemple ci-dessus montre comment vérifier que les données avant chiffrage sont bien les mêmes que celles après chiffrage/déchiffrage. Il est très important de réinitialiser le buffer de chiffrement avec mcrypt_generic_init() avant que nous ne déchiffriez les données.

Le gestionnaire de déchiffrement doit toujours être initialisé par la fonction mcrypt_generic_init() avec une clée et un VI avant d'appeler cette fonction. Lorsque le chiffrement est fait, il faut que vous libérirez les données chiffrées en appelant mcrypt_generic_deinit(). Voir mcrypt_module_open() pour un exemple.

Voir aussi
mcrypt_generic(),
mcrypt_generic_init() et
mcrypt_generic_deinit().

Précédent | Sommaire | Suivant
mcrypt_ofb | Niveau supérieur | MCVE (Paiement)


MCVE (Paiement)

Manuel PHP
Précédent Suivant

LV. MCVE (Paiement)

Introduction

Ces fonctions font l'interface avec l'API MCVE (libmcve), et permettent l'accès direct aux fonctions MCVE depuis les scripts PHP. MCVE est la solution de paiement en ligne de Main Street Softworks, qui permet de traiter des cartes de crédits. Il vous permet d'utiliser directement le numéro de carte de crédit, et de l'envoyer à la maison de paiement via votre serveur Unix, avec connexion modem ou internet : il permet de vous passer de services comme Authorize.Net ou Pay Flow Pro). En utilisant le module MCVE de PHP, vous pouvez traiter des cartes de crédit directement depuis vos scripts PHP. La référence suivante va vous décrire le processus.

Note : MCVE est la solution de remplacement pour le module de RedHat CCVS. Ils ont conclu un accord avec RedHat à la fin de l'année 2001 pour migrer tous leur clients vers la plateforme MCVE.

Installation

Pour activer le support MCVE de PHP commencez par vérifier si la librairie LibMCVE est installée. Vous avez alors à configurer PHP avec l'option --with-mcve. Si vous utilisez cette option sans autre détails, PHP essaiera de trouver la librairie LibMCVE dans son dossier standard (/usr/local). Si MCVE est dans un dossier non-standard, utilisez la forme suivante : --with-mcve=$mcve_path, où $mcve_path est le chemin menant à votre installation MCVE. Notez que MCVE requiert que $mcve_path/lib et $mcve_path/include existent, et qu'ils incluent mcve.h dans le dossier include, et libmcve.so et/ou libmcve.a dans le dossier lib.

Comme MCVE vient avec une véritable séparation client/serveur, il n'y a pas de pré-requis supplémentaires pour compiler PHP avec le support MCVE. Pour tester votre extension MCVE avec PHP, connectez vous au site testbox.mcve.com sur le port 8333 pour le mode IP, ou le port 8444 pour le mode SSL. Utilisez 'vitale' comme nom d'utilisateur et 'test' comme mot de passe. Plus de détails sur ce système de test sont disponibles à www.mcve.com.

Voir aussi

Plus de documentation sur l'API PHP de MCVE est disponible à http://www.mcve.com/docs/phpapi.pdf. La documentation éditée par Main Street est complète et est la source primaire d'information.

Table des matières
mcve_adduser -- Ajoute un utilisateur MCVE avec une structure usersetup
mcve_adduserarg -- Ajoute une valeur dans une structure de configuration d'utilisateur
mcve_bt -- Lit le total des paiements non finalisés en mode batch
mcve_checkstatus -- Vérifie si une transaction a été complétée
mcve_chkpwd -- Verifie le mot de passe
mcve_chngpwd -- Modifie le mot de passe administrateur
mcve_completeauthorizations -- Retourne le nombre de transactions dans la queue d'autorisation, ainsi que la liste des identifiants
mcve_connect -- Etablit la connexion avec le système MCVE
mcve_connectionerror -- Lit un message représentant la raison de l'échec de la connexion
mcve_deleteresponse -- Efface une transaction spécifiée dans une structure MCVE_CONN
mcve_deletetrans -- Efface une transaction spécifiée dans une structure MCVE_CONN
mcve_deleteusersetup -- Supprime une structure usersetup
mcve_deluser -- Efface un compte d'utilisateur MCVE
mcve_destroyconn -- Termine une connexion MCVE_CONN
mcve_destroyengine -- Libère la mémoire associée à la connectivité IP/SSL
mcve_disableuser -- Désactive un utilisateur MCVE actif
mcve_edituser -- Modifie la structure usersetup d'un utilisateur
mcve_enableuser -- Active un utilisateur MCVE inactif
mcve_force -- Envoie une commande FORCE à MCVE. (généralement une autorisation par téléphone)
mcve_getcell -- Lit une cellule spécifique dans une réponse au format CSV, en utilisant le nom de colonne
mcve_getcellbynum -- Lit une cellule spécifique dans une réponse au format CSV, en utilisant le numéro de colonne
mcve_getcommadelimited -- Lit une ligne brute, au format CSV retournée par MCVE
mcve_getheader -- Lit le nom d'une colonne dans une réponse au format CSV
mcve_getuserarg -- Lit une valeur dans une structure usersetup
mcve_getuserparam -- Lit un paramètre de réponse utilisateur
mcve_gft -- Audite MCVE pour les transactions échouées
mcve_gl -- Audite MCVE pour les transactions finalisées
mcve_gut -- Audite MCVE pour les transactions non conclues
mcve_initconn -- Crée et initialise une structure MCVE_CONN
mcve_initengine -- Prépare le client pour la connexion IP/SSL
mcve_initusersetup -- Initialise une structure pour stocker des données utilisateurs
mcve_iscommadelimited -- Vérifie qu'une réponse est au format MVCE
mcve_liststats -- Liste les statistiques de tous les utilisateurs MCVE
mcve_listusers -- Liste de tous les utilisateurs du système MCVE
mcve_maxconntimeout -- La durée maximum de tentative de connexion à MCVE
mcve_monitor -- Communique avec MCVE (envoie et reçoit des données) sans blocage
mcve_numcolumns -- Nombre de colonnes retournées dans une ligne au format CSV
mcve_numrows -- Nombre de lignes retournées dans une réponse au format CSV
mcve_override -- Envoie une commande OVERRIDE à MCVE
mcve_parsecommadelimited -- Analyse une au format CSV pour que mcve_getcell et consorts fonctionnent
mcve_ping -- Envoie une requête de ping à MCVE
mcve_preauth -- Envoie une commande PREAUTHORIZATION à MCVE
mcve_preauthcompletion -- Complète une PREAUTHORIZATION et la prépare pour la finalisation
mcve_qc -- Audite MCVE pour une liste de transactions dans la queue de sortie
mcve_responseparam -- Lit un paramètre de réponse personnalisé
mcve_return -- Emet une commande RETURN ou CREDIT vers MCVE
mcve_returncode -- Lit le code retourné exact de la transaction
mcve_returnstatus -- Vérifie si la transaction a réussi
mcve_sale -- Envoie une commande de vente (SALE) à MCVE
mcve_setblocking -- Configure la connexion en mode bloquant/non bloquant
mcve_setdropfile -- Configure la connexion en mode Drop-File
mcve_setip -- Configure la connexion en mode IP
mcve_setssl_files -- Spécifie le fichier de clés de certificats si le serveur requiert la vérification des certificats du client
mcve_setssl -- Configure la connexion en mode SSL
mcve_settimeout -- Configure le temps maximum d'une transaction (par transaction)
mcve_settle -- Emet une résolution pour faire un dépôt batch
mcve_text_avs -- Lit une représentation textuelle de return_avs
mcve_text_code -- Lit une représentation textuelle de return_code
mcve_text_cv -- Lit une représentation textuelle de return_cv
mcve_transactionauth -- Lit le numéro d'autorisation de la transaction (alpha-numérique)
mcve_transactionavs -- Lit l'adresse de vérification (Address Verification) dans le statut retourné
mcve_transactionbatch -- Lit le numéro de batch associé à la transaction
mcve_transactioncv -- Lit le statut de CVC2/CVV2/CID
mcve_transactionid -- Lit l'identifiant système unique d'une transaction
mcve_transactionitem -- Lit le numéro d'ITEM d'une transaction dans un batch
mcve_transactionssent -- Vérifie si le buffer de sortie est vide ou pas
mcve_transactiontext -- Lit le message retourné par MCVE ou par l'institution de traitement
mcve_transinqueue -- Nombre de transactions dans la queue client
mcve_transnew -- Démarre une nouvelle transaction
mcve_transparam -- Ajoute un paramètre à une transaction
mcve_transsend -- Finalise et envoie une transaction
mcve_ub -- Lit une liste des paiements en attente en mode batch
mcve_uwait -- Attend x microsecondes
mcve_verifyconnection -- Configure MCVE pour qu'il pingue ou pas la connexion, afin d'en vérifier l'existence
mcve_verifysslcert -- Configure MCVE pour qu'il vérifie ou pas le certificat SSL
mcve_void -- Annule (rend VOID) une transaction dans la queue d'attente

Précédent | Sommaire | Suivant
mdecrypt_generic | Niveau supérieur | mcve_adduser


mcve_adduser

(PHP 4 >= 4.2.0)

mcve_adduser -- Ajoute un utilisateur MCVE avec une structure usersetup

Description

int mcve_adduser ( resource conn, string admin_password, int usersetup)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
MCVE (Paiement) | Niveau supérieur | mcve_adduserarg


mcve_adduserarg

(PHP 4 >= 4.2.0)

mcve_adduserarg -- Ajoute une valeur dans une structure de configuration d'utilisateur

Description

int mcve_adduserarg ( resource usersetup, int argtype, string argval)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_adduser | Niveau supérieur | mcve_bt


mcve_bt

(PHP 4 >= 4.2.0)

mcve_bt -- Lit le total des paiements non finalisés en mode batch

Description

int mcve_bt ( resource conn, string username, string password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_adduserarg | Niveau supérieur | mcve_checkstatus


mcve_checkstatus

(PHP 4 >= 4.2.0)

mcve_checkstatus -- Vérifie si une transaction a été complétée

Description

int mcve_checkstatus ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_bt | Niveau supérieur | mcve_chkpwd


mcve_chkpwd

(PHP 4 >= 4.2.0)

mcve_chkpwd -- Verifie le mot de passe

Description

int mcve_chkpwd ( resource conn, string username, string password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_checkstatus | Niveau supérieur | mcve_chngpwd


mcve_chngpwd

(PHP 4 >= 4.2.0)

mcve_chngpwd -- Modifie le mot de passe administrateur

Description

int mcve_chngpwd ( resource conn, string admin_password, string new_password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_chkpwd | Niveau supérieur | mcve_completeauthorizations


mcve_completeauthorizations

(PHP 4 >= 4.2.0)

mcve_completeauthorizations -- Retourne le nombre de transactions dans la queue d'autorisation, ainsi que la liste des identifiants

Description

int mcve_completeauthorizations ( resource conn, int &array)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_chngpwd | Niveau supérieur | mcve_connect


mcve_connect

(PHP 4 >= 4.2.0)

mcve_connect -- Etablit la connexion avec le système MCVE

Description

int mcve_connect ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_completeauthorizations | Niveau supérieur | mcve_connectionerror


mcve_connectionerror

(PHP 4 >= 4.3.0)

mcve_connectionerror -- Lit un message représentant la raison de l'échec de la connexion

Description

string mcve_connectionerror ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_connect | Niveau supérieur | mcve_deleteresponse


mcve_deleteresponse

(PHP 4 >= 4.2.0)

mcve_deleteresponse -- Efface une transaction spécifiée dans une structure MCVE_CONN

Description

bool mcve_deleteresponse ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_connectionerror | Niveau supérieur | mcve_deletetrans


mcve_deletetrans

(PHP 4 >= 4.3.0)

mcve_deletetrans -- Efface une transaction spécifiée dans une structure MCVE_CONN

Description

bool mcve_deletetrans ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_deleteresponse | Niveau supérieur | mcve_deleteusersetup


mcve_deleteusersetup

(PHP 4 >= 4.2.0)

mcve_deleteusersetup -- Supprime une structure usersetup

Description

void mcve_deleteusersetup ( resource usersetup)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_deletetrans | Niveau supérieur | mcve_deluser


mcve_deluser

(PHP 4 >= 4.2.0)

mcve_deluser -- Efface un compte d'utilisateur MCVE

Description

int mcve_deluser ( resource conn, string admin_password, string username)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_deleteusersetup | Niveau supérieur | mcve_destroyconn


mcve_destroyconn

(PHP 4 >= 4.2.0)

mcve_destroyconn -- Termine une connexion MCVE_CONN

Description

void mcve_destroyconn ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_deluser | Niveau supérieur | mcve_destroyengine


mcve_destroyengine

(PHP 4 >= 4.2.0)

mcve_destroyengine -- Libère la mémoire associée à la connectivité IP/SSL

Description

void mcve_destroyengine ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_destroyconn | Niveau supérieur | mcve_disableuser


mcve_disableuser

(PHP 4 >= 4.2.0)

mcve_disableuser -- Désactive un utilisateur MCVE actif

Description

int mcve_disableuser ( resource conn, string admin_password, string username)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_destroyengine | Niveau supérieur | mcve_edituser


mcve_edituser

(PHP 4 >= 4.2.0)

mcve_edituser -- Modifie la structure usersetup d'un utilisateur

Description

int mcve_edituser ( resource conn, string admin_password, int usersetup)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_disableuser | Niveau supérieur | mcve_enableuser


mcve_enableuser

(PHP 4 >= 4.2.0)

mcve_enableuser -- Active un utilisateur MCVE inactif

Description

int mcve_enableuser ( resource conn, string admin_password, string username)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_edituser | Niveau supérieur | mcve_force


mcve_force

(PHP 4 >= 4.2.0)

mcve_force -- Envoie une commande FORCE à MCVE. (généralement une autorisation par téléphone)

Description

int mcve_force ( resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string authcode, string comments, string clerkid, string stationid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_enableuser | Niveau supérieur | mcve_getcell


mcve_getcell

(PHP 4 >= 4.2.0)

mcve_getcell -- Lit une cellule spécifique dans une réponse au format CSV, en utilisant le nom de colonne

Description

string mcve_getcell ( resource conn, int identifier, string column, int row)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_force | Niveau supérieur | mcve_getcellbynum


mcve_getcellbynum

(PHP 4 >= 4.2.0)

mcve_getcellbynum -- Lit une cellule spécifique dans une réponse au format CSV, en utilisant le numéro de colonne

Description

string mcve_getcellbynum ( resource conn, int identifier, int column, int row)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getcell | Niveau supérieur | mcve_getcommadelimited


mcve_getcommadelimited

(PHP 4 >= 4.2.0)

mcve_getcommadelimited -- Lit une ligne brute, au format CSV retournée par MCVE

Description

string mcve_getcommadelimited ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getcellbynum | Niveau supérieur | mcve_getheader


mcve_getheader

(PHP 4 >= 4.2.0)

mcve_getheader -- Lit le nom d'une colonne dans une réponse au format CSV

Description

string mcve_getheader ( resource conn, int identifier, int column_num)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getcommadelimited | Niveau supérieur | mcve_getuserarg


mcve_getuserarg

(PHP 4 >= 4.2.0)

mcve_getuserarg -- Lit une valeur dans une structure usersetup

Description

string mcve_getuserarg ( resource usersetup, int argtype)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getheader | Niveau supérieur | mcve_getuserparam


mcve_getuserparam

(PHP 4 >= 4.3.0)

mcve_getuserparam -- Lit un paramètre de réponse utilisateur

Description

string mcve_getuserparam ( resource conn, long identifier, int key)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getuserarg | Niveau supérieur | mcve_gft


mcve_gft

(PHP 4 >= 4.2.0)

mcve_gft -- Audite MCVE pour les transactions échouées

Description

int mcve_gft ( resource conn, string username, string password, int type, string account, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_getuserparam | Niveau supérieur | mcve_gl


mcve_gl

(PHP 4 >= 4.2.0)

mcve_gl -- Audite MCVE pour les transactions finalisées

Description

int mcve_gl ( int conn, string username, string password, int type, string account, string batch, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_gft | Niveau supérieur | mcve_gut


mcve_gut

(PHP 4 >= 4.2.0)

mcve_gut -- Audite MCVE pour les transactions non conclues

Description

int mcve_gut ( resource conn, string username, string password, int type, string account, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_gl | Niveau supérieur | mcve_initconn


mcve_initconn

(PHP 4 >= 4.2.0)

mcve_initconn -- Crée et initialise une structure MCVE_CONN

Description

resource mcve_initconn ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_gut | Niveau supérieur | mcve_initengine


mcve_initengine

(PHP 4 >= 4.2.0)

mcve_initengine -- Prépare le client pour la connexion IP/SSL

Description

int mcve_initengine ( string location)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_initconn | Niveau supérieur | mcve_initusersetup


mcve_initusersetup

(PHP 4 >= 4.2.0)

mcve_initusersetup -- Initialise une structure pour stocker des données utilisateurs

Description

resource mcve_initusersetup ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_initengine | Niveau supérieur | mcve_iscommadelimited


mcve_iscommadelimited

(PHP 4 >= 4.2.0)

mcve_iscommadelimited -- Vérifie qu'une réponse est au format MVCE

Description

int mcve_iscommadelimited ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_initusersetup | Niveau supérieur | mcve_liststats


mcve_liststats

(PHP 4 >= 4.2.0)

mcve_liststats -- Liste les statistiques de tous les utilisateurs MCVE

Description

int mcve_liststats ( resource conn, string admin_password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_iscommadelimited | Niveau supérieur | mcve_listusers


mcve_listusers

(PHP 4 >= 4.2.0)

mcve_listusers -- Liste de tous les utilisateurs du système MCVE

Description

int mcve_listusers ( resource conn, string admin_password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_liststats | Niveau supérieur | mcve_maxconntimeout


mcve_maxconntimeout

(PHP 4 >= 4.3.0)

mcve_maxconntimeout -- La durée maximum de tentative de connexion à MCVE

Description

bool mcve_maxconntimeout ( resource conn, int secs)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_listusers | Niveau supérieur | mcve_monitor


mcve_monitor

(PHP 4 >= 4.2.0)

mcve_monitor -- Communique avec MCVE (envoie et reçoit des données) sans blocage

Description

int mcve_monitor ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_maxconntimeout | Niveau supérieur | mcve_numcolumns


mcve_numcolumns

(PHP 4 >= 4.2.0)

mcve_numcolumns -- Nombre de colonnes retournées dans une ligne au format CSV

Description

int mcve_numcolumns ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_monitor | Niveau supérieur | mcve_numrows


mcve_numrows

(PHP 4 >= 4.2.0)

mcve_numrows -- Nombre de lignes retournées dans une réponse au format CSV

Description

int mcve_numrows ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_numcolumns | Niveau supérieur | mcve_override


mcve_override

(PHP 4 >= 4.2.0)

mcve_override -- Envoie une commande OVERRIDE à MCVE

Description

int mcve_override ( resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_numrows | Niveau supérieur | mcve_parsecommadelimited


mcve_parsecommadelimited

(PHP 4 >= 4.2.0)

mcve_parsecommadelimited -- Analyse une au format CSV pour que mcve_getcell et consorts fonctionnent

Description

int mcve_parsecommadelimited ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_override | Niveau supérieur | mcve_ping


mcve_ping

(PHP 4 >= 4.3.0)

mcve_ping -- Envoie une requête de ping à MCVE

Description

int mcve_ping ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_parsecommadelimited | Niveau supérieur | mcve_preauth


mcve_preauth

(PHP 4 >= 4.2.0)

mcve_preauth -- Envoie une commande PREAUTHORIZATION à MCVE

Description

int mcve_preauth ( resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_ping | Niveau supérieur | mcve_preauthcompletion


mcve_preauthcompletion

(PHP 4 >= 4.2.0)

mcve_preauthcompletion -- Complète une PREAUTHORIZATION et la prépare pour la finalisation

Description

int mcve_preauthcompletion ( resource conn, string username, string password, float finalamount, int sid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_preauth | Niveau supérieur | mcve_qc


mcve_qc

(PHP 4 >= 4.2.0)

mcve_qc -- Audite MCVE pour une liste de transactions dans la queue de sortie

Description

int mcve_qc ( resource conn, string username, string password, string clerkid, string stationid, string comments, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_preauthcompletion | Niveau supérieur | mcve_responseparam


mcve_responseparam

(PHP 4 >= 4.3.0)

mcve_responseparam -- Lit un paramètre de réponse personnalisé

Description

string mcve_responseparam ( resource conn, long identifier, string key)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_qc | Niveau supérieur | mcve_return


mcve_return

(PHP 4 >= 4.2.0)

mcve_return -- Emet une commande RETURN ou CREDIT vers MCVE

Description

int mcve_return ( int conn, string username, string password, string trackdata, string account, string expdate, float amount, string comments, string clerkid, string stationid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_responseparam | Niveau supérieur | mcve_returncode


mcve_returncode

(PHP 4 >= 4.2.0)

mcve_returncode -- Lit le code retourné exact de la transaction

Description

int mcve_returncode ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_return | Niveau supérieur | mcve_returnstatus


mcve_returnstatus

(PHP 4 >= 4.2.0)

mcve_returnstatus -- Vérifie si la transaction a réussi

Description

int mcve_returnstatus ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_returncode | Niveau supérieur | mcve_sale


mcve_sale

(PHP 4 >= 4.2.0)

mcve_sale -- Envoie une commande de vente (SALE) à MCVE

Description

int mcve_sale ( resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_returnstatus | Niveau supérieur | mcve_setblocking


mcve_setblocking

(PHP 4 >= 4.3.0)

mcve_setblocking -- Configure la connexion en mode bloquant/non bloquant

Description

int mcve_setblocking ( resource conn, int tf)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_sale | Niveau supérieur | mcve_setdropfile


mcve_setdropfile

(PHP 4 >= 4.2.0)

mcve_setdropfile -- Configure la connexion en mode Drop-File

Description

int mcve_setdropfile ( resource conn, string directory)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_setblocking | Niveau supérieur | mcve_setip


mcve_setip

(PHP 4 >= 4.2.0)

mcve_setip -- Configure la connexion en mode IP

Description

int mcve_setip ( resource conn, string host, int port)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_setdropfile | Niveau supérieur | mcve_setssl_files


mcve_setssl_files

(no version information, might be only in CVS)

mcve_setssl_files -- Spécifie le fichier de clés de certificats si le serveur requiert la vérification des certificats du client

Description

int mcve_setssl_files ( string sslkeyfile, string sslcertfile)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_setip | Niveau supérieur | mcve_setssl


mcve_setssl

(PHP 4 >= 4.2.0)

mcve_setssl -- Configure la connexion en mode SSL

Description

int mcve_setssl ( resource conn, string host, int port)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_setssl_files | Niveau supérieur | mcve_settimeout


mcve_settimeout

(PHP 4 >= 4.2.0)

mcve_settimeout -- Configure le temps maximum d'une transaction (par transaction)

Description

int mcve_settimeout ( resource conn, int seconds)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_setssl | Niveau supérieur | mcve_settle


mcve_settle

(PHP 4 >= 4.2.0)

mcve_settle -- Emet une résolution pour faire un dépôt batch

Description

int mcve_settle ( resource conn, string username, string password, string batch)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_settimeout | Niveau supérieur | mcve_text_avs


mcve_text_avs

(PHP 4 >= 4.3.0)

mcve_text_avs -- Lit une représentation textuelle de return_avs

Description

string mcve_text_avs ( string code)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_settle | Niveau supérieur | mcve_text_code


mcve_text_code

(PHP 4 >= 4.3.0)

mcve_text_code -- Lit une représentation textuelle de return_code

Description

string mcve_text_code ( string code)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_text_avs | Niveau supérieur | mcve_text_cv


mcve_text_cv

(PHP 4 >= 4.3.0)

mcve_text_cv -- Lit une représentation textuelle de return_cv

Description

string mcve_text_cv ( int code)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_text_code | Niveau supérieur | mcve_transactionauth


mcve_transactionauth

(PHP 4 >= 4.2.0)

mcve_transactionauth -- Lit le numéro d'autorisation de la transaction (alpha-numérique)

Description

string mcve_transactionauth ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_text_cv | Niveau supérieur | mcve_transactionavs


mcve_transactionavs

(PHP 4 >= 4.2.0)

mcve_transactionavs -- Lit l'adresse de vérification (Address Verification) dans le statut retourné

Description

int mcve_transactionavs ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionauth | Niveau supérieur | mcve_transactionbatch


mcve_transactionbatch

(PHP 4 >= 4.2.0)

mcve_transactionbatch -- Lit le numéro de batch associé à la transaction

Description

int mcve_transactionbatch ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionavs | Niveau supérieur | mcve_transactioncv


mcve_transactioncv

(PHP 4 >= 4.2.0)

mcve_transactioncv -- Lit le statut de CVC2/CVV2/CID

Description

int mcve_transactioncv ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionbatch | Niveau supérieur | mcve_transactionid


mcve_transactionid

(PHP 4 >= 4.2.0)

mcve_transactionid -- Lit l'identifiant système unique d'une transaction

Description

int mcve_transactionid ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactioncv | Niveau supérieur | mcve_transactionitem


mcve_transactionitem

(PHP 4 >= 4.2.0)

mcve_transactionitem -- Lit le numéro d'ITEM d'une transaction dans un batch

Description

int mcve_transactionitem ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionid | Niveau supérieur | mcve_transactionssent


mcve_transactionssent

(PHP 4 >= 4.2.0)

mcve_transactionssent -- Vérifie si le buffer de sortie est vide ou pas

Description

int mcve_transactionssent ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionitem | Niveau supérieur | mcve_transactiontext


mcve_transactiontext

(PHP 4 >= 4.2.0)

mcve_transactiontext -- Lit le message retourné par MCVE ou par l'institution de traitement

Description

string mcve_transactiontext ( resource conn, int identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactionssent | Niveau supérieur | mcve_transinqueue


mcve_transinqueue

(PHP 4 >= 4.2.0)

mcve_transinqueue -- Nombre de transactions dans la queue client

Description

int mcve_transinqueue ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transactiontext | Niveau supérieur | mcve_transnew


mcve_transnew

(PHP 4 >= 4.3.0)

mcve_transnew -- Démarre une nouvelle transaction

Description

int mcve_transnew ( resource conn)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transinqueue | Niveau supérieur | mcve_transparam


mcve_transparam

(PHP 4 >= 4.3.0)

mcve_transparam -- Ajoute un paramètre à une transaction

Description

int mcve_transparam ( resource conn, long identifier, int key)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transnew | Niveau supérieur | mcve_transsend


mcve_transsend

(PHP 4 >= 4.3.0)

mcve_transsend -- Finalise et envoie une transaction

Description

int mcve_transsend ( resource conn, long identifier)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transparam | Niveau supérieur | mcve_ub


mcve_ub

(PHP 4 >= 4.2.0)

mcve_ub -- Lit une liste des paiements en attente en mode batch

Description

int mcve_ub ( resource conn, string username, string password)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_transsend | Niveau supérieur | mcve_uwait


mcve_uwait

(PHP 4 >= 4.3.0)

mcve_uwait -- Attend x microsecondes

Description

int mcve_uwait ( long microsecs)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_ub | Niveau supérieur | mcve_verifyconnection


mcve_verifyconnection

(PHP 4 >= 4.3.0)

mcve_verifyconnection -- Configure MCVE pour qu'il pingue ou pas la connexion, afin d'en vérifier l'existence

Description

bool mcve_verifyconnection ( resource conn, int tf)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_uwait | Niveau supérieur | mcve_verifysslcert


mcve_verifysslcert

(PHP 4 >= 4.3.0)

mcve_verifysslcert -- Configure MCVE pour qu'il vérifie ou pas le certificat SSL

Description

bool mcve_verifysslcert ( resource conn, int tf)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_verifyconnection | Niveau supérieur | mcve_void


mcve_void

(PHP 4 >= 4.2.0)

mcve_void -- Annule (rend VOID) une transaction dans la queue d'attente

Description

int mcve_void ( resource conn, string username, string password, int sid, int ptrannum)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mcve_verifysslcert | Niveau supérieur | Hash


Hash

Manuel PHP
Précédent Suivant

LVI. Hash

Ces fonctions ont été prévues pour fonctionner avec mhash.

Cet ensemble de fonctions représente une interface avec la librairie mhash. mhash accepte un grand nombre d'algorithmes différents, tels que MD5, SHA1, GOST, bien d'autres.

Pour l'utiliser, téléchargez les distributions de mhash depuis le site web ici et suivez les instructions d'installation incluses. Vous aurez besoin de recompiler PHP avec l'option --with-mhash pour activer cette extension.

mhash sert à calculer des sommes de vérification, des signatures de message, etc...

Exemple 1. Calcule un hash de type SHA1 et l'affiche au format hexadécimal

<?php
  $input = "Rencontrons-nous à 9h00 dans notre repaire secret.";
  $hash = mhash(MHASH_SHA1, $input);
  print "Le hash est ".bin2hex($hash)."\n";
?>
Cela va produire quelque chose du type (Note du Traducteur : c'est le hash de la version anglaise) Le hash est d3b85d710d8f6e4e5efd4d5e67d041f9cecedafe Pour avoir une liste complète des hash supportés, reportez-vous à la documentation de mhash. En règle générale, vous pouvez utiliser un algorithme de hash avec le type : MHASH_NOMDEHASH. Par exemple pour utiliser HAVAL vous devez spécifier la constante PHP MHASH_HAVAL.

Voici une liste de hash qui sont actuellement supportés par mhash. Si un hash n'est pas dans la liste, mais qu'il est disponible avec mhash, c'est que ce document a pris de l'âge.

  • MHASH_MD5

  • MHASH_SHA1

  • MHASH_HAVAL

  • MHASH_RIPEMD160

  • MHASH_RIPEMD128

  • MHASH_SNEFRU

  • MHASH_TIGER

  • MHASH_GOST

  • MHASH_CRC32

  • MHASH_CRC32B

Table des matières
mhash_count -- retourne l'identifiant maximal de hash.
mhash_get_block_size -- Retourne la taille de bloc du hash.
mhash_get_hash_name -- Retourne le nom du hash.
mhash_keygen_s2k -- Génère une clé
mhash -- Calcule un hash.

Précédent | Sommaire | Suivant
mcve_void | Niveau supérieur | mhash_count


mhash_count

(PHP 3>= 3.0.9, PHP 4 )

mhash_count -- retourne l'identifiant maximal de hash.

Description

int mhash_count ( void )

mhash_count() retourne l'identifiant de hash maximal. Les hash sont numérotés de 0 jusqu'à cet identifiant.

Exemple 1. Parcourir la liste des hash

<?php
  $nr = mhash_count();
  for($i = 0; $i <= $nr; $i++) {
    echo sprintf("The blocksize of %s is %d\n",
            mhash_get_hash_name($i),
            mhash_get_block_size($i));
  }
?>

Précédent | Sommaire | Suivant
Hash | Niveau supérieur | mhash_get_block_size


mhash_get_block_size

(PHP 3>= 3.0.9, PHP 4 )

mhash_get_block_size -- Retourne la taille de bloc du hash.

Description

int mhash_get_block_size ( int hash)

mhash_get_block_size() sert à connaître la taille de bloc du hash spécifié hash.

mhash_get_block_size() prend un seul argument : le hash et retourne la taille en octets, ou bien FALSE si le hash n'existe pas.

Précédent | Sommaire | Suivant
mhash_count | Niveau supérieur | mhash_get_hash_name


mhash_get_hash_name

(PHP 3>= 3.0.9, PHP 4 )

mhash_get_hash_name -- Retourne le nom du hash.

Description

string mhash_get_hash_name ( int hash)

mhash_get_hash_name() sert à connaître le nom d'un hash.

mhash_get_hash_name() prend un numero d'identifiant de hash, et retourne son nom, ou bien FALSE si le hash n'existe pas, ou si une erreur est survenue.

Exemple 1. exemple mhash_get_hash_name()

<?php
  $hash = MHASH_MD5;
  print mhash_get_hash_name($hash);
?>
L'exemple ci-dessus va afficher : MD5

Précédent | Sommaire | Suivant
mhash_get_block_size | Niveau supérieur | mhash_keygen_s2k


mhash_keygen_s2k

(PHP 4 >= 4.0.4)

mhash_keygen_s2k -- Génère une clé

Description

string mhash_keygen_s2k ( int hash, string password, string salt, int bytes)

mhash_keygen_s2k() génère une clé de bytes octets de long, à partir d'un mot de passe. Cette fonction utilise l'algorithme Salted S2K, spécifié dans OpenPGP (RFC 2440). Cet algorithme va utiliser l'algorithme de hashage hash pour créer la clé. Le paramètre salt doit être différent et suffisamment aléatoire pour chaque clé que vous génèrez, afin de créer des clés différentes. Ce grain de sel réservira lorsque vous vérifierez les clés : c'est alors une bonne idée que de l'ajouter à la fin de la clé générée. salt doit avoir la longueur de 8 octets, et sera complété par des 0 si vous ne fournissez par suffisamment de données. N'oubliez pas que les mots de passe fournis par les utilisateurs ne sont pas conseillé pour faire des clés cryptographique, étant donné que les utilisateurs normaux retiennent des mots de passe qu'ils peuvent saisir au clavier. Ces mots de passe utilisent uniquement 6 à 7 des 8 bits d'un caractère (voir moins). Il est vivement recommandé d'appliquer une fonction de transformation (comme celle-ci), à un mot de passe utilisateur.

Précédent | Sommaire | Suivant
mhash_get_hash_name | Niveau supérieur | mhash


mhash

(PHP 3>= 3.0.9, PHP 4 )

mhash -- Calcule un hash.

Description

string mhash ( int hash, string data)

mhash() applique la fonction de hash hash aux données data et retourne le résultat.

Précédent | Sommaire | Suivant
mhash_keygen_s2k | Niveau supérieur | Mimetype


Mimetype

Manuel PHP
Précédent Suivant

LVII. Mimetype

Introduction

Ces fonctions essaient de définir le type de contenu et l'encodage d'un fichier en recherchant certaines séquences magiques, à certaines positions dans le fichier. Même si ce n'est pas une approche imparable, les heuristiques réalisent un bon travail.

Cette extension est dérivée du module Apache mod_mime_magic, qui est lui-même basé sur la commande file, entretenue par Ian F. Darwin. Voyez le code source pour plus de détails sur les heuristiques et les informations de copyright.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

You must compile PHP with the configure switch --with-mime-magic to get support for mime-type functions. The extension needs a copy of the simplified magic file that is distributed with the Apache httpd.

Note : The configure option has been changed from --enable-mime-magic to --with-mime-magic since PHP 4.3.2

Note : This extension is not capable of handling the fully decorated magic file that generally comes with standard Linux distro's and is supposed to be used with recent versions of file command.

Note to Win32 Users : In order to use this module on a Windows environment, you must set the path to the bundled magic.mime file in your php.ini.

Exemple 1. Setting the path to magic.mime

mime_magic.magicfile = "$PHP_INSTALL_DIR\magic.mime"

Remember to substitute the $PHP_INSTALL_DIR for your actual path to PHP in the above example. e.g. c:\php

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
mime_magic.magicfile | "/usr/share/misc/magic.mime" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
mime_content_type -- Détecte le type MIME d'un fichier

Précédent | Sommaire | Suivant
mhash | Niveau supérieur | mime_content_type


mime_content_type

(PHP 4 >= 4.3.0)

mime_content_type -- Détecte le type MIME d'un fichier

Description

string mime_content_type ( string filename)

mime_content_type() retourne le type MIME du fichier filename en se basant sur les informations présentes dans le fichier magic.mime. Le type est retourné au format MIME, comme text/plain ou encore application/octet-stream.

Précédent | Sommaire | Suivant
Mimetype | Niveau supérieur | Microsoft SQL Server


Microsoft SQL Server

Manuel PHP
Précédent Suivant

LVIII. Microsoft SQL Server

Introduction

Ces fonctions vous permettent d'accéder aux serveurs de données MS SQL.

Note : L'extension MSSQL n'est disponible que sous Windows 32 bits. Vous pouvez utiliser l'extension Sybase extension pour vous connecter à un serveur MSSQL, depuis d'autres plate-formes.

Pré-requis

Vous avez besoin d'un client MS SQL Client Tools sur votre système, accessible à PHP. Les Client Tools peuvent être installé depuis le CD MS SQL Server CD ou en copiant ntwdblib.dll depuis le dossier \winnt\system32 du serveur MS SQL vers \winnt\system32 sur le serveur PHP. Copier ntwdblib.dll ne fera que fournir le moyen d'accès. La configuration du client requiert l'installation des autres outils.

Pré-requis pour les plate-formes Unix/Linux.

Pour utiliser l'extension MSSQL sur Unix/Linux, vous devez commencer par compiler et installer la librairie FreeTDS. Le code source et les instructions d'installation sont disponibles sur les ite de FreeTDS : http://www.freetds.org/

Installation

The MSSQL extension is enabled by adding extension=php_mssql.dll to php.ini.

To get these functions to work, you have to compile PHP with --with-mssql[=DIR], where DIR is the FreeTDS install prefix. And FreeTDS should be compiled using --enable-msdblib.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. MS SQL Server configuration options

Name | Default | Changeable
mssql.allow_persistent | "1" | PHP_INI_SYSTEM
mssql.max_persistent | "-1" | PHP_INI_SYSTEM
mssql.max_links | "-1" | PHP_INI_SYSTEM
mssql.min_error_severity | "10" | PHP_INI_ALL
mssql.min_message_severity | "10" | PHP_INI_ALL
mssql.compatability_mode | "0" | PHP_INI_ALL
mssql.connect_timeout | "5" | PHP_INI_ALL
mssql.timeout | "60" | PHP_INI_ALL
mssql.textsize | "-1" | PHP_INI_ALL
mssql.textlimit | "-1" | PHP_INI_ALL
mssql.batchsize | "0" | PHP_INI_ALL
mssql.datetimeconvert | "1" | PHP_INI_ALL
mssql.secure_connection | "0" | PHP_INI_SYSTEM
mssql.max_procs | "25" | PHP_INI_ALL
For further details and definition of the PHP_INI_* constants see ini_set().

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

MSSQL_ASSOC (integer)

MSSQL_NUM (integer)

MSSQL_BOTH (integer)

SQLTEXT (integer)

SQLVARCHAR (integer)

SQLCHAR (integer)

SQLINT1 (integer)

SQLINT2 (integer)

SQLINT4 (integer)

SQLBIT (integer)

SQLFLT8 (integer)

Table des matières
mssql_bind -- Ajoute un paramètre à une procédure stockée MSSQL (locale ou distante)
mssql_close -- Ferme une connexion MS SQL Server
mssql_connect -- Ouvre une connexion à un serveur MS SQL server
mssql_data_seek -- Déplace le pointeur interne de ligne
mssql_execute -- Exécute une procédure stockée sur un serveur MS SQL
mssql_fetch_array -- Lit une ligne de résultat MSSQL dans un tableau
mssql_fetch_assoc -- Retourne un tableau associatif pour la ligne courant de résultat MS SQL Server
mssql_fetch_batch -- Retourne le prochain lot de lignes MS SQL Server
mssql_fetch_field -- Lit les informations sur le champ
mssql_fetch_object -- Retourne une ligne de résultat MS SQL Server sous la forme d'un objet
mssql_fetch_row -- Lit une ligne de résultat MSSQL dans un tableau numérique
mssql_field_length -- Lit la longueur d'un champ MS SQL Server
mssql_field_name -- Lit le nom d'un champ MS SQL Server
mssql_field_seek -- Fixe l'offset du pointeur de champ MS SQL Server
mssql_field_type -- Lit le nom d'un champ MS SQL Server
mssql_free_result -- Libère la mémoire des ressources MS SQL Server
mssql_free_statement -- Libère une commande MS SQL Server de la mémoire
mssql_get_last_message -- Retourne le dernier message d'erreur du serveur
mssql_guid_string -- Convertit le GUID binaire de 16 octets en une chaîne de caractères
mssql_init -- Initialise une procédure stockée MS SQL Server locale ou distante
mssql_min_error_severity -- Fixe le niveau de sévérité des erreurs MS SQL Server
mssql_min_message_severity -- Fixe le niveau de sévérité des messages d'erreurs MS SQL Server
mssql_next_result -- Déplace le pointeur interne MS SQL Server au le résultat suivant
mssql_num_fields -- Retourne le nombre de champs dans un résultat MS SQL Server
mssql_num_rows -- Retourne le nombre de lignes dans un résultat MSSQL
mssql_pconnect -- Ouvre une connexion persistante à un serveur MS SQL.
mssql_query -- Envoie une requête SQL au serveur MSSQL
mssql_result -- Lit les données d'un résultat
mssql_rows_affected -- Retourne le nombre de ligne affectées par une requête MS SQL Server
mssql_select_db -- Sélectionne la base de données MS SQL

Précédent | Sommaire | Suivant
mime_content_type | Niveau supérieur | mssql_bind


mssql_bind

(PHP 4 >= 4.1.0)

mssql_bind -- Ajoute un paramètre à une procédure stockée MSSQL (locale ou distante)

Description

bool mssql_bind ( resource stmt, string param_name, mixed var, int type [, int is_output [, int is_null [, int maxlen]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi
mssql_execute(),
mssql_free_statement() et
mssql_init()

Précédent | Sommaire | Suivant
Microsoft SQL Server | Niveau supérieur | mssql_close


mssql_close

(PHP 3, PHP 4 )

mssql_close -- Ferme une connexion MS SQL Server

Description

bool mssql_close ( [resource link_identifier])

mssql_close() ferme la connexion à la base MS SQL Server, qui était associé à l'identifiant link_identifier. Si ce dernier n'est pas précisé, la dernière connexion ouverte sera fermée.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Notez qu'il n'est pas nécessaire de fermer les connexions non persistantes aux bases de données, car elles seront fermées automatiquement à la fin du script.

mssql_close() ne peut pas fermer les liens persistants, générés par mssql_pconnect().

Voir aussi mssql_connect() et mssql_pconnect().

Précédent | Sommaire | Suivant
mssql_bind | Niveau supérieur | mssql_connect


mssql_connect

(PHP 3, PHP 4 )

mssql_connect -- Ouvre une connexion à un serveur MS SQL server

Description

int mssql_connect ( [string servername [, string username [, string password]]])

mssql_connect() retourne un identifiant positif de lien en cas de succès, et FALSE sinon.

mssql_connect() établit une connexion à un serveur MS SQL. Le nom du serveur servername doit être valide, comme défini dans les fichiers d'interface.

Si un deuxième appel est fait à mssql_connect() avec les mêmes arguments, un nouveau lien ne sera pas retourné, mais le lien déjà ouvert sera retourné.

Le lien avec le serveur sera fermé dès la fin du script, ce qui fait qu'on n'est pas obligé de fermer explicitement la connexion à la fin du script avec mssql_close().

Voir aussi mssql_pconnect() et mssql_close().

Précédent | Sommaire | Suivant
mssql_close | Niveau supérieur | mssql_data_seek


mssql_data_seek

(PHP 3, PHP 4 )

mssql_data_seek -- Déplace le pointeur interne de ligne

Description

bool mssql_data_seek ( resource result_identifier, int row_number)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

mssql_data_seek() déplace le pointeur interne de ligne, dans le résultat result_identifier, jusqu'à la ligne row_number. Le prochain appel à mssql_fetch_row() retournera cette ligne.

Voir aussi mssql_data_seek().

Précédent | Sommaire | Suivant
mssql_connect | Niveau supérieur | mssql_execute


mssql_execute

(PHP 4 >= 4.1.0)

mssql_execute -- Exécute une procédure stockée sur un serveur MS SQL

Description

mixed mssql_execute ( resource stmt [, bool skip_results])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Si la procédure stockée retourne un paramètre ou qu'elle retourne une valeur, ils seront disponibles après l'appel à la fonction mssql_execute(), à moins que la procédure stockée ne retourne plusieurs résultats. Dans ce cas, utilisez la fonction mssql_next_result() pour passer en revue tous les résultats. Lorsque le dernier résultat aura été traité, les valeurs des paramètres de sortie et les valeurs retournées seront disponbiles.

Voir aussi
mssql_bind(),
mssql_free_statement() et
mssql_init().

Précédent | Sommaire | Suivant
mssql_data_seek | Niveau supérieur | mssql_fetch_array


mssql_fetch_array

(PHP 3, PHP 4 )

mssql_fetch_array -- Lit une ligne de résultat MSSQL dans un tableau

Description

array mssql_fetch_array ( resource result [, int result_type])

mssql_fetch_array() retourne un tableau qui contient les valeurs de la ligne courante dans le résultat result, en cas de succès, et FALSE en cas d'échec.

mssql_fetch_array() est une version améliorée de mssql_fetch_row(). En plus de stocker les données dans un tableau à index numérique, elle les stocke aussi dans un tableau associatif, en utilisant les noms de colonnes comme clé.

Une chose importante à noter est que mssql_fetch_array() n'est PAS significativement plus lente que mssql_fetch_row(), tandis qu'elle apporte un confort apréciable.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Pour plus de détails, voyez mssql_fetch_row().

Précédent | Sommaire | Suivant
mssql_execute | Niveau supérieur | mssql_fetch_assoc


mssql_fetch_assoc

(PHP 4 >= 4.2.0)

mssql_fetch_assoc -- Retourne un tableau associatif pour la ligne courant de résultat MS SQL Server

Description

array mssql_fetch_assoc ( resource result_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_fetch_array | Niveau supérieur | mssql_fetch_batch


mssql_fetch_batch

(PHP 4 >= 4.0.4)

mssql_fetch_batch -- Retourne le prochain lot de lignes MS SQL Server

Description

int mssql_fetch_batch ( string result_index)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_fetch_assoc | Niveau supérieur | mssql_fetch_field


mssql_fetch_field

(PHP 3, PHP 4 )

mssql_fetch_field -- Lit les informations sur le champ

Description

object mssql_fetch_field ( resource result [, int field_offset])

mssql_fetch_field() retourne un objet contenant les informations sur un champ.

mssql_fetch_field() sert à lire des informations spécifiques à un champ, dans un résultat de requête. Si l'offset du champ field_offset n'est pas précisé, le prochain champ sera analysé.

Les propriétés de l'objet sont :

  • name - nom de la colonne. Si la colonne est le résultat d'une fonction, le nom de la colonne sera computed#N, où #N est un numéro de série.

  • column_source - le nom de la table d'où la colonne est originaire.

  • max_length - taille maximale de la colonne

  • numeric - 1 si la colonne est numérique

Voir aussi mssql_field_seek().

Précédent | Sommaire | Suivant
mssql_fetch_batch | Niveau supérieur | mssql_fetch_object


mssql_fetch_object

(PHP 3)

mssql_fetch_object -- Retourne une ligne de résultat MS SQL Server sous la forme d'un objet

Description

object mssql_fetch_object ( resource result)

mssql_fetch_object() retourne un objet dont les propriétés contiennent les valeurs de la ligne courante dans le résultat result, ou FALSE si il n'y a plus de ligne.

mssql_fetch_object() est similaire à mssql_fetch_array(), avec un différence : un objet est retourné, au lieu d'un tableau. Indirectement, cela signifie que vous ne pouvez accéder aux données que par leur nom de champs, et pas par leur offset (les nombres sont illégaux comme nom de propriété).

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

En terme de vitesse, cette fonction est identique à mssql_fetch_array(), quasiment aussi rapide que mssql_fetch_row() (la différence est non significative).

Voir aussi mssql_fetch_array() et mssql_fetch_row().

Précédent | Sommaire | Suivant
mssql_fetch_field | Niveau supérieur | mssql_fetch_row


mssql_fetch_row

(PHP 3, PHP 4 )

mssql_fetch_row -- Lit une ligne de résultat MSSQL dans un tableau numérique

Description

array mssql_fetch_row ( resource result)

mssql_fetch_row() retourne un tableau qui contient les valeurs de la ligne courante du résultat result ou bien FALSE si il n'y a plus de lignes à lire.

mssql_fetch_row() lit une ligne dans le résultat result et place les valeurs dans un tableau. Chaque valeur est enregistré dans un élément du tableau, et les indices commencent à 0.

Les appels suivants à mssql_fetch_row() retourneront la ligne suivante, ou bien FALSE s'il ne reste plus de lignes.

Voir aussi
mssql_fetch_array(),
mssql_fetch_object(),
mssql_data_seek(),
mssql_fetch_lengths() et
mssql_result().

Précédent | Sommaire | Suivant
mssql_fetch_object | Niveau supérieur | mssql_field_length


mssql_field_length

(PHP 3>= 3.0.3, PHP 4 )

mssql_field_length -- Lit la longueur d'un champ MS SQL Server

Description

int mssql_field_length ( resource result [, int offset])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_fetch_row | Niveau supérieur | mssql_field_name


mssql_field_name

(PHP 3>= 3.0.3, PHP 4 )

mssql_field_name -- Lit le nom d'un champ MS SQL Server

Description

string mssql_field_name ( resource result [, int offset])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_field_length | Niveau supérieur | mssql_field_seek


mssql_field_seek

(PHP 3, PHP 4 )

mssql_field_seek -- Fixe l'offset du pointeur de champ MS SQL Server

Description

bool mssql_field_seek ( resource result, int field_offset)

mssql_field_seek() modifie la valeur du pointeur de champ. Le prochain appel à mssql_fetch_field() qui ne précisera pas de numéro de champ, le champ fixé par mssql_field_seek() sera retournée.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi mssql_fetch_field().

Précédent | Sommaire | Suivant
mssql_field_name | Niveau supérieur | mssql_field_type


mssql_field_type

(PHP 3>= 3.0.3, PHP 4 )

mssql_field_type -- Lit le nom d'un champ MS SQL Server

Description

string mssql_field_type ( resource result [, int offset])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_field_seek | Niveau supérieur | mssql_free_result


mssql_free_result

(PHP 3, PHP 4 )

mssql_free_result -- Libère la mémoire des ressources MS SQL Server

Description

bool mssql_free_result ( resource result)

mssql_free_result() n'a besoin d'être appelé que si on craint d'utiliser trop de mémoire durant une opération. Toutes les ressources liées à un résultat seront libérés par mssql_free_result().

Précédent | Sommaire | Suivant
mssql_field_type | Niveau supérieur | mssql_free_statement


mssql_free_statement

(PHP 4 >= 4.3.2)

mssql_free_statement -- Libère une commande MS SQL Server de la mémoire

Description

bool mssql_free_statement ( resource statement)

mssql_free_statement() n'est utile que si vous craignez de consommer trop de mémoire durant l'exécution de votre script. Toute a mémoire consommée par une commande sera libérée lorsque le script se termine. Avec la fonction mssql_free_statement(), la mémoire associée au résultat statement sera libéré.

Voir aussi
mssql_bind(),
mssql_execute() et
mssql_init().

Précédent | Sommaire | Suivant
mssql_free_result | Niveau supérieur | mssql_get_last_message


mssql_get_last_message

(PHP 3, PHP 4 )

mssql_get_last_message -- Retourne le dernier message d'erreur du serveur

Description

string mssql_get_last_message ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_free_statement | Niveau supérieur | mssql_guid_string


mssql_guid_string

(PHP 4 >= 4.1.0)

mssql_guid_string -- Convertit le GUID binaire de 16 octets en une chaîne de caractères

Description

string mssql_guid_string ( string binary [, int short_format])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_get_last_message | Niveau supérieur | mssql_init


mssql_init

(PHP 4 >= 4.1.0)

mssql_init -- Initialise une procédure stockée MS SQL Server locale ou distante

Description

int mssql_init ( string sp_name [, resource conn_id])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi
mssql_bind(),
mssql_execute() et
mssql_free_statement()

Précédent | Sommaire | Suivant
mssql_guid_string | Niveau supérieur | mssql_min_error_severity


mssql_min_error_severity

(PHP 3, PHP 4 )

mssql_min_error_severity -- Fixe le niveau de sévérité des erreurs MS SQL Server

Description

void mssql_min_error_severity ( int severity)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_init | Niveau supérieur | mssql_min_message_severity


mssql_min_message_severity

(PHP 3, PHP 4 )

mssql_min_message_severity -- Fixe le niveau de sévérité des messages d'erreurs MS SQL Server

Description

void mssql_min_message_severity ( int severity)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_min_error_severity | Niveau supérieur | mssql_next_result


mssql_next_result

(PHP 4 >= 4.0.5)

mssql_next_result -- Déplace le pointeur interne MS SQL Server au le résultat suivant

Description

bool mssql_next_result ( resource result_id)

Lorsque vous envoyez plus d'une commande SQL au serveur, ou que vous exécutez une procédure stockée avec de multiples résultats, cela va conduire le serveur à retourner plusieurs jeux de lignes. mssql_next_result() va vérifier l'existence de plusieurs résultats disponibles sur le serveur. Si un autre jeu de résultat existe, mssql_next_result() va détruire de résultat précédent, et préparer la lecture dans les nouvelles lignes.

mssql_next_result() retourne TRUE si un autre résultat est disponbile, ou FALSEsinon.

Exemple 1. Exemple avec mssql_next_result()

<?php
    $link = mssql_connect ("localhost", "userid", "secret");
    mssql_select_db("MyDB", $link);
    $SQL = "Select * from table1 select * from table2";
    $rs = mssql_query($SQL, $link);
    do {
        while ($row = mssql_fetch_row($rs)) {
        }
    } while (mssql_next_result($rs));
    mssql_free_result($rs);
    mssql_close ($link);
?>

Précédent | Sommaire | Suivant
mssql_min_message_severity | Niveau supérieur | mssql_num_fields


mssql_num_fields

(PHP 3, PHP 4 )

mssql_num_fields -- Retourne le nombre de champs dans un résultat MS SQL Server

Description

int mssql_num_fields ( resource result)

mssql_num_fields() retourne le nombre de champs dans un résultat.

Voir aussi
mssql_query(),
mssql_fetch_field() et
mssql_num_rows().

Précédent | Sommaire | Suivant
mssql_next_result | Niveau supérieur | mssql_num_rows


mssql_num_rows

(PHP 3, PHP 4 )

mssql_num_rows -- Retourne le nombre de lignes dans un résultat MSSQL

Description

int mssql_num_rows ( resource result)

mssql_num_rows() retourne le nombre de lignes dans le résultat result.

Voir aussi mssql_query() et mssql_fetch_row().

Précédent | Sommaire | Suivant
mssql_num_fields | Niveau supérieur | mssql_pconnect


mssql_pconnect

(PHP 3, PHP 4 )

mssql_pconnect -- Ouvre une connexion persistante à un serveur MS SQL.

Description

int mssql_pconnect ( [string servername [, string username [, string password]]])

mssql_pconnect() retourne un identifiant positif de lien MS SQL en cas de succès, et FALSE en cas d'erreur.

mssql_pconnect() se comporte comme mssql_connect() mais avec deux différences :

Premièrement, lors de la connexion, la fonction va commencer par rechercher un lien persistant déjà ouvert avec le même hôte, le même nom d'utilisateur, username et le même mot de passe password. Si un tel lien est trouvé, cet identifiant sera retourné, au lieux d'en ouvrir une autre connexion.

Deuxièmement, la connexion au serveur SQL ne sera pas fermée à la fin du script, mais restera ouverte, pour d'autres utilisations ultérieures (mssql_close() ne fermera pas un lien établi avec mssql_pconnect()).

C'est pourquoi ce type de lien est dit 'persistant'.

Précédent | Sommaire | Suivant
mssql_num_rows | Niveau supérieur | mssql_query


mssql_query

(PHP 3, PHP 4 )

mssql_query -- Envoie une requête SQL au serveur MSSQL

Description

resource mssql_query ( string query [, resource link_identifier [, int batch_size]])

mssql_query() retourne un identifiant positif de résultat en cas de succès, ou FALSE sinon.

mssql_query() envoie la requête au serveur courant, associé à l'identifiant link_identifier (ou la base par défaut, s'il est omis). Si aucun lien n'est ouvert, mssql_query() essaiera d'en ouvrir une, en appelant mssql_connect().

Voir aussi mssql_select_db() et mssql_connect().

Précédent | Sommaire | Suivant
mssql_pconnect | Niveau supérieur | mssql_result


mssql_result

(PHP 3, PHP 4 )

mssql_result -- Lit les données d'un résultat

Description

string mssql_result ( resource result, int row, mixed field)

mssql_result() retourne la valeur de la colonne, à la ligne donnée, dans le résultat MS SQL, ou FALSE en cas d'erreur.

mssql_result() retourne le contenu d'une des cellules d'un résultat MS SQL. Le nom du champ peut être son nom littéral ou son offet, ou encore, le nom de la table + "." + le nom du champ, ou encore la même chose avec le nom de la base de données. Si la colonne a été aliasée, utilisez le nom de l'alias plutôt que celui de la colonne.

Lorsque vous travaillez sur des résultats de grande taille, il vaut mieux utiliser les fonctions qui récupèrent toute une ligne (voir ci après). Comme ces fonctions lisent toutes les valeurs en une passe, elles sont EXTREMEMENT PLUS RAPIDES que mssql_result(). De plus, pensez que l'utilisation de l'offset numérique est beaucoup plus rapide que l'utilisation du nom de la colonne.

Alternatives recommandées :
mssql_fetch_row(),
mssql_fetch_array() et
mssql_fetch_object().

Précédent | Sommaire | Suivant
mssql_query | Niveau supérieur | mssql_rows_affected


mssql_rows_affected

(PHP 4 >= 4.0.4)

mssql_rows_affected -- Retourne le nombre de ligne affectées par une requête MS SQL Server

Description

int mssql_rows_affected ( resource conn_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mssql_result | Niveau supérieur | mssql_select_db


mssql_select_db

(PHP 3, PHP 4 )

mssql_select_db -- Sélectionne la base de données MS SQL

Description

bool mssql_select_db ( string database_name [, resource link_identifier])

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

mssql_select_db() sélectionne la base de données active. Si aucun identifiant de connexion n'est fourni, la fonction utilisera la dernière connexion ouverte. Si aucune connexion n'a été ouverte, la fonction essaiera d'en ouvrir une avec mssql_connect(), et de l'utiliser.

Tous les appels à mssql_query() seront faits dans cette base.

Exemple 1. Exemple avec mssql_select_db()

<?php
    $conn = mssql_connect('MYSQLSERVER', 'sa', 'password');
    mssql_select_db('[my data-base]', $conn);
?>

Voir aussi
mssql_connect(),
mssql_pconnect() et
mssql_query().

Précédent | Sommaire | Suivant
mssql_rows_affected | Niveau supérieur | Ming pour Flash


Ming pour Flash

Manuel PHP
Précédent Suivant

LIX. Ming pour Flash

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Introduction

Ming est une librairie open-source (LGPL) qui vous permet de créer des animations au format Flash. Ming supporte toutes les fonctionnalités de Flash 4 : les formes (shapes), les gradients, les images bitmaps (JPEG et PNG), les morphing (transformations d'une forme en une autre), les textes, actions, sprites (mini animations), le streaming MP3 et les transformations de couleurs. Le seul ajout futur est celui des événements sons.

Ming n'est pas un acronyme.

Notez que toutes les distances spécifiées (longueurs, distances, tailles...) sont en "twips", c'est-à-dire 20 unités par pixels. C'est plus ou moins arbitraire, car le lecteur Flash fait une mise à l'échelle avec les valeurs qui lui sont fournis dans la balise embed, ou la frame courante si la balise embed n'est pas utilisée.

Ming propose de nombreux avantages par rapport à l'extension swf. Vous pouvez utiliser Ming sur tous les OS où vous pouvez compiler le code, tandis que swf est limité à Windows. Ming vous évite la déconcertante complexité du format SWF, en transformant les éléments des animations en objets PHP. Enfin, Ming est toujours en cours de développement et surveillé par son auteur : si vous souhaitez une nouvelle fonctionnalité, dites le lui : ming@opaque.net.

Ming et tous les objets cités ont été ajouté en PHP 4.0.5.

Installation

Pour utiliser Ming avec PHP, vous devez d'abord installer la librairy Ming. Le code source et les instructions d'installation sont disponible sur la page d'accueil de Ming : http://ming.sourceforge.net/, avec des exemples un tutorial et l'actualité Ming.

Téléchargez l'archive Ming. Décompressez la et allez dans le dossier Ming. Faites "make", puis "make install".

Cela va compiler le fichier libming.so et l'installer dans /usr/lib/, et copier ming.h into /usr/include/. Editez la ligne PREFIX= dans le fichier Makefile pour indiquer votre dossier d'installation.

Compilation CGI avec PHP (Unix)

mkdir <phpdir>/ext/ming
cp php_ext/* <phpdir>/ext/ming
cd <phpdir>
./buildconf
./configure --with-ming <other config options>
Compilez et installez PHP comme d'habitude.
Redémarrez votre serveur web si nécessaire.

Compilation en module avec PHP (Unix)

téléchargez php_ming.so.gz. Décompressez le et copiez le dans votre dossier de modules PHP (vous pouvez trouver votre dossier de module PHP en utilisant la commande php-config --extension-dir). Ensuite, ajoutez la ligne extension=php_ming.so dans votre fichier php.ini, ou bien ajoutez dl('php_ming.so'); en haut de tous vos scripts Ming.

Comment utiliser Ming

Ming introduit 13 objet en PHP. Pour les utilisez, vous devez être familier avec les objets.

  • swfmovie().

  • swfshape().

  • swfdisplayitem().

  • swfgradient().

  • swfbitmap().

  • swffill().

  • swfmorph().

  • swftext().

  • swffont().

  • swftextfield().

  • swfsprite().

  • swfbutton().

  • swfaction().

Table des matières
ming_setcubicthreshold -- Set cubic threshold (?)
ming_setscale -- Set scale (?)
ming_useswfversion -- Use SWF version (?)
SWFAction -- Crée une nouvelle action.
SWFBitmap->getHeight -- Retourne la hauteur d'une bitmap.
SWFBitmap->getWidth -- Retourne la largeur d'une bitmap.
SWFBitmap -- Crée un objet bitmap
swfbutton_keypress -- Returns the action flag for keyPress(char)
SWFbutton->addAction -- Ajoute une action au bouton
SWFbutton->addShape -- Ajoute une forme à un bouton
SWFbutton->setAction -- Assigne l'action du bouton
SWFbutton->setDown -- Alias de addShape(shape, SWFBUTTON_DOWN)
SWFbutton->setHit -- Alias de addShape(shape, SWFBUTTON_HIT)
SWFbutton->setOver -- Alias de addShape(shape, SWFBUTTON_OVER)
SWFbutton->setUp -- Alias de SWFbutton->addShape(shape, SWFBUTTON_UP)
SWFbutton -- Crée un nouveau bouton.
SWFDisplayItem->addColor -- Ajoute une couleur à une transoformation.
SWFDisplayItem->move -- Déplace un objet en coordonnées relatives.
SWFDisplayItem->moveTo -- Déplace un objet en coordonnées globales.
SWFDisplayItem->multColor -- Multiplie la couleur de transformation.
SWFDisplayItem->remove -- Supprime un objet d'une animation
SWFDisplayItem->Rotate -- Fait tourner une forme relativement.
SWFDisplayItem->rotateTo -- Tourne un objet en angle absolu.
SWFDisplayItem->scale -- Etire un objet relativement.
SWFDisplayItem->scaleTo -- Etire un objet en coordonnées globales.
SWFDisplayItem->setDepth -- Modifie la place en profondeur (z-order)
SWFDisplayItem->setName -- Nomme un objet
SWFDisplayItem->setRatio -- Modifie le ratio de l'objet.
SWFDisplayItem->skewX -- Incline suivant les X relativement.
SWFDisplayItem->skewXTo -- Incline suivant les X.
SWFDisplayItem->skewY -- Incline suivant les Y relativement.
SWFDisplayItem->skewYTo -- Incline suivant les Y.
SWFDisplayItem -- Crée un nouvel objet d'affichage displayitem.
SWFFill->moveTo -- Déplace l'origine de l'objet SWFFill
SWFFill->rotateTo -- Tourne la forme
SWFFill->scaleTo -- Modifie l'échelle de la forme
SWFFill->skewXTo -- Incline (abscisses)
SWFFill->skewYTo -- Incline (ordonnées)
SWFFill -- Crée un objet de remplissage
swffont->getwidth -- Retourne la taille de la chaîne
SWFFont -- Charge une police
SWFGradient->addEntry -- Ajoute une couleur à la liste du gradient.
SWFGradient -- Crée un objet gradient
SWFMorph->getshape1 -- Sélectionne la forme de départ
SWFMorph->getshape2 -- Sélectionne la forme de fin
SWFMorph -- Crée un morphing.
SWFMovie->add -- Ajoute un objet dans une animation.
SWFMovie->nextframe -- Passe à l'image suivante.
SWFMovie->output -- Envoie votre animation au navigateur.
SWFMovie->remove -- Supprime un objet d'une animation.
SWFMovie->save -- Sauve dans un fichier.
SWFMovie->setbackground -- Modifie la couleur de fond.
SWFMovie->setdimension -- Modifie les dimensions de l'animation.
SWFMovie->setframes -- Modifie le nombre total d'images dans l'animation.
SWFMovie->setrate -- Modifie la vitesse de l'animation.
SWFMovie->streammp3 -- Envoie un fichier MP3 en streaming.
SWFMovie -- Crée un objet 'animation'.
SWFShape->addFill -- Ajoute un remplissage plein à la forme.
SWFShape->drawCurve -- Dessine une courbe relativement.
SWFShape->drawCurveTo -- Dessine une courbe.
SWFShape->drawLine -- Dessine une ligne relativement.
SWFShape->drawLineTo -- Dessine une ligne.
SWFShape->movePen -- Déplace le stylo relativement.
SWFShape->movePenTo -- Déplace le stylo.
SWFShape->setLeftFill -- Modifie la couleur de rastérisation de gauche.
SWFShape->setLine -- Modifie le style de ligne de la forme.
SWFShape->setRightFill -- Modifie la couleur de rastériation de droite.
SWFShape -- Crée une nouvelle forme.
SWFSprite->add -- Ajoute un objet à un sprite
SWFSprite->nextframe -- Va à la prochaine image du sprite.
SWFSprite->remove -- Supprime un objet dans un sprite
SWFSprite->setframes -- Fixe le nombre maximum d'image dans le sprite.
SWFSprite -- Crée un sprite
SWFText->addString -- Ajoute du texte
SWFText->getWidth -- Calcule la longueur d'une chaîne
SWFText->moveTo -- Déplace le stylo de texte
SWFText->setColor -- Modifie la couleur de la police
SWFText->setFont -- Sélectionne la police courante
SWFText->setHeight -- Modifie la hauteur de la police courante
SWFText->setSpacing -- Modifie l'espacement de police
SWFText -- Crée un nouvel objet texte.
SWFTextField->addstring -- Ajoute au texte
SWFTextField->align -- Modifie l'alignement du texte
SWFTextField->setbounds -- Sélectionne la largeur et hauteur du champ
SWFTextField->setcolor -- Modifie la couleur du champ texte
SWFTextField->setFont -- Modifie la police du champ
SWFTextField->setHeight -- Modifie la hauteur de la police du champ texte.
SWFTextField->setindentation -- Modifie l'indentation de la première ligne.
SWFTextField->setLeftMargin -- Modifie la marge de gauche.
SWFTextField->setLineSpacing -- Modifie l'espacement de lignes.
SWFTextField->setMargins -- Modifie les marges du champ texte.
SWFTextField->setname -- Nomme le champ texte
SWFTextField->setrightMargin -- Modifie la marge de droite.
SWFTextField -- Crée un nouveau champ texte

Précédent | Sommaire | Suivant
mssql_select_db | Niveau supérieur | ming_setcubicthreshold


ming_setcubicthreshold

(PHP 4 >= 4.0.5)

ming_setcubicthreshold -- Set cubic threshold (?)

Description

void ming_setcubicthreshold ( int threshold)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Ming pour Flash | Niveau supérieur | ming_setscale


ming_setscale

(PHP 4 >= 4.0.5)

ming_setscale -- Set scale (?)

Description

void ming_setscale ( int scale)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ming_setcubicthreshold | Niveau supérieur | ming_useswfversion


ming_useswfversion

(PHP 4 >= 4.2.0)

ming_useswfversion -- Use SWF version (?)

Description

void ming_useswfversion ( int version)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ming_setscale | Niveau supérieur | SWFAction


SWFAction

(PHP 4 >= 4.0.5)

SWFAction -- Crée une nouvelle action.

Description

new swfaction ( string script)

swfaction() crée une nouvelle action, et compile le script script.

La syntaxe du script est basée sur le langage C, mais il utilise aussi beaucoup de notions propres à SWF : le bytecode SWF est trop simpliste pour faire l'essentiel de ce que l'on veut. Par exemple, il n'est pas possible de faire des fonctions sans descendre profondément dans les entrailles de la machine, car le bytecode de saut est écrit en dur. Pas moyen de pousser une adresse dans la pile, ou de dépiler - Chaque fonction doit savoir exactement où elle retourne.

Alors, que reste-t-il? Le compilateur reconnaît les mots suivants :

  • break

  • for

  • continue

  • if

  • else

  • do

  • while

Il n'y a pas de type de données : toutes les valeurs de SWF sont stockées comme des chaînes de caractères. Les fonctions suivantes peuvent être utilisées dans les expressions :

time()

Retourne le nombre de milli-secondes depuis le début de l'animation.

random(seed)

Retourne un nombre pseudo-aléatoire, entre 0 et seed.

length(expr)

Retourne la taille de l'expression donnée.

int(number)

Retourne le nombre number, arrondi à l'entier inférieur le plus proche.

concat(expr, expr)

Retourne la concaténation des deux expressions.

ord(expr)

Retourne le code ASCII du caractère expr.

chr(num)

Retourne le caractère pour le code ASCII num.

substr(string, location, length)

Retourne la sous-chaîne, extraite de string, de longueur length et commençant au caractère location.

De plus, les commandes suivantes sont accessibles :

duplicateClip(clip, name, depth)

Duplique le sprite nommé clip. La nouvelle animation a le nouveau nom name et la profondeur depth.

removeClip(expr)

Supprime l'animation nommée expr.

trace(expr)

Ecrit l'expression expr dans le fichier de d'historique. Il est peut probable que le navigateur ou le lecteur ne fasse quoi que ce soit avec.

startDrag(target, lock, [left, top, right, bottom])

Comment à déplacer l'animation target. L'argument lock indique si le déplacement verrouille la souris (utilisez 0, FALSE) ou 1 (TRUE)). Les paramètres optionnels délimitent la zone de déplacement.

stopDrag()

Cesse le déplacement de l'animation.

callFrame(expr)

Appelle l'image expr comme une fonction.

getURL(url, target, [method])

Charge l'URL url dans l'objet target. target peut être l'image courante (je pense) ou une des valeurs magiques "_level0" (remplace l'animation courante) ou "_level1" (charge une nouvelle animation à la place de la courante). L'argument optionnel method peut être post ou get, si vous voulez envoyer des variables au serveur.

loadMovie(url, target)

La même chose que ci-dessus, plus ou moins. En fait, je ne sais pas trop quelle est la différence.

nextFrame()

Va à l'image suivante.

prevFrame()

Va à l'image précédente.

play()

Joue l'animation.

stop()

Cesse de jouer l'animation.

toggleQuality()

Passe de haute en basse qualité (et vice-versa).

stopSounds()

Cesse de jouer les sons.

gotoFrame(num)

Va à l'image numéro num. Les images sont numérotées à partir de 0.

gotoFrame(name)

Va à l'image nommée name. Ce qui est carrément cool, car les labels ne sont pas encore supportés pour les images.

setTarget(expr)

Modifie le contexte de l'action. C'est ce qu'ils disent, mais je n'ai pas trop d'idées là-dessus.

Et il y a un truc bizarre : l'expression frameLoaded(num) peut être utilise dans les conditions if et dans les boucles while pour vérifier si une image a été chargée. En tous cas, c'est ce qu'il est supposé faire, mais je ne l'ai jamais testé, et je doute sérieusement que cela fonctionne. Vous pouvez utiliser plutôt /:framesLoaded à la place.

Les sprites ont des propriétés. Vous pouvez les lire toutes (vraiment?), en modifier quelques unes. Les voici :

  • x

  • y

  • xScale

  • yScale

  • currentFrame - (lecture seule)

  • totalFrames - (lecture seule)

  • alpha - Niveau de transparence

  • visible - 1=on, 0=off (?)

  • width - (lecture seule)

  • height - (lecture seule)

  • rotation

  • target - (lecture seule) (???)

  • framesLoaded - (lecture seule)

  • name

  • dropTarget - (lecture seule) (???)

  • url - (lecture seule) (???)

  • highQuality - 1=high, 0=low (?)

  • focusRect - (???)

  • soundBufTime - (???)

Modifier la position d'un sprite est aussi simple que /box.x = 100;. Pourquoi le slash initial? C'est comme cela que Flash garde la trace des sprites dans les animations, un peu comme des fichiers sous Unix. Si le sprite qui s'appelle box a lui-même un autre sprite appelé biff, vous pouvez y accéder avec la commande /box/biff.x = 100;. En tous cas, ça marche pour moi. Corrigez moi si c'est faux!.

Cet exemple simple va déplacer le gros carré rouge dans la fenêtre.

Exemple 1. Exemple avec swfaction()

<?php
 $s = new SWFShape();
  $f = $s->addFill(0xff, 0, 0);
  $s->setRightFill($f);
  $s->movePenTo(-500,-500);
  $s->drawLineTo(500,-500);
  $s->drawLineTo(500,500);
  $s->drawLineTo(-500,500);
  $s->drawLineTo(-500,-500);
  $p = new SWFSprite();
  $i = $p->add($s);
  $i->setDepth(1);
  $p->nextFrame();
  for($n=0; $n<5; ++$n)
  {
    $i->rotate(-15);
    $p->nextFrame();
  }
  $m = new SWFMovie();
  $m->setBackground(0xff, 0xff, 0xff);
  $m->setDimension(6000,4000);
  $i = $m->add($p);
  $i->setDepth(1);
  $i->moveTo(-500,2000);
  $i->setName("box");
  $m->add(new SWFAction("/box.x += 3;"));
  $m->nextFrame();
  $m->add(new SWFAction("gotoFrame(0); play();"));
  $m->nextFrame();
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Cet exemple suit votre souris sur l'écran.

Exemple 2. Exemple avec swfaction()

<?php
  $m = new SWFMovie();
  $m->setRate(36.0);
  $m->setDimension(1200, 800);
  $m->setBackground(0, 0, 0);
  /* sprite de suivi de souris : vide, mais il suit la souris
  de manière à ce que nous connaissions ses coordonnées*/
  $i = $m->add(new SWFSprite());
  $i->setName('mouse');
  $m->add(new SWFAction("
    startDrag('/mouse', 1); /* '1' signifie verrouiller la souris */
  "));
  /* On peut tout simplement virer l'anti-aliasing, car il n'y a
  que des gros carrés, finalement */
  $m->add(new SWFAction("
    this.quality = 0;
  "));
  /* boîte de morphing */
  $r = new SWFMorph();
  $s = $r->getShape1();
  /* Notez que ce n'est pas pratique pour les formes habituelles.
  Aucune idée de pourquoi */
  $s->setLeftFill($s->addFill(0xff, 0xff, 0xff));
  $s->movePenTo(-40, -40);
  $s->drawLine(80, 0);
  $s->drawLine(0, 80);
  $s->drawLine(-80, 0);
  $s->drawLine(0, -80);
  $s = $r->getShape2();
  $s->setLeftFill($s->addFill(0x00, 0x00, 0x00));
  $s->movePenTo(-1, -1);
  $s->drawLine(2, 0);
  $s->drawLine(0, 2);
  $s->drawLine(-2, 0);
  $s->drawLine(0, -2);
  /* sprite contenant la boîte de morphing -
     c'est juste un scénario avec une boîte de morphing */
  $box = new SWFSprite();
  $box->add(new SWFAction("
    stop();
  "));
  $i = $box->add($r);
  for($n=0; $n<=20; ++$n)
  {
    $i->setRatio($n/20);
    $box->nextFrame();
  }
  /* ce conteneur nous permet d'utiliser la même action plusieurs fois */
  $cell = new SWFSprite();
  $i = $cell->add($box);
  $i->setName('box');
  $cell->add(new SWFAction("
    setTarget('box');
    /* ...x signifie abscisse du parent, c'est-à-dire (..).x */
    dx = (/mouse.x + random(6)-3 - ...x)/5;
    dy = (/mouse.y + random(6)-3 - ...y)/5;
    gotoFrame(int(dx*dx + dy*dy));
  "));
  $cell->nextFrame();
  $cell->add(new SWFAction("
    gotoFrame(0);
    play();
  "));
  $cell->nextFrame();
  /* finalement, ajoutons quelques cellules à l'animation */
  for($x=0; $x<12; ++$x)
  {
    for($y=0; $y8; ++$y)
    {
      $i = $m->add($cell);
      $i->moveTo(100*$x+50, 100*$y+50);
    }
  }
  $m->nextFrame();
  $m->add(new SWFAction("
    gotoFrame(1);
    play();
  "));
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

La même chose que ci-dessus, mais en couleurs.

Exemple 3. Exemple avec swfaction()

<?php
  $m = new SWFMovie();
  $m->setDimension(11000, 8000);
  $m->setBackground(0x00, 0x00, 0x00);
  $m->add(new SWFAction("
this.quality = 0;
/frames.visible = 0;
startDrag('/mouse', 1);
  "));
  // sprite de suivi de souris
  $t = new SWFSprite();
  $i = $m->add($t);
  $i->setName('mouse');
  $g = new SWFGradient();
  $g->addEntry(0, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.1, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.5, 0xff, 0xff, 0xff, 0x5f);
  $g->addEntry(1.0, 0xff, 0xff, 0xff, 0);
  // gradient
  $s = new SWFShape();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.03);
  $s->setRightFill($f);
  $s->movePenTo(-600, -600);
  $s->drawLine(1200, 0);
  $s->drawLine(0, 1200);
  $s->drawLine(-1200, 0);
  $s->drawLine(0, -1200);
  // on en fait un sprite pour utiliser la fonction multColor()
  $p = new SWFSprite();
  $p->add($s);
  $p->nextFrame();
  // Ajoute la forme ici, chaque forme dans une couleur différente
  $q = new SWFSprite();
  $q->add(new SWFAction("gotoFrame(random(7)+1); stop();"));
  $i = $q->add($p);
  $i->multColor(1.0, 1.0, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 0.75, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 0.5, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 1.0);
  $q->nextFrame();
  // Enfin, le code de l'action
  $p = new SWFSprite();
  $i = $p->add($q);
  $i->setName('frames');
  $p->add(new SWFAction("
dx = (/:mousex-/:lastx)/3 + random(10)-5;
dy = (/:mousey-/:lasty)/3;
x = /:mousex;
y = /:mousey;
alpha = 100;
  "));
  $p->nextFrame();
  $p->add(new SWFAction("
this.x = x;
this.y = y;
this.alpha = alpha;
x += dx;
y += dy;
dy += 3;
alpha -= 8;
  "));
  $p->nextFrame();
  $p->add(new SWFAction("prevFrame(); play();"));
  $p->nextFrame();
  $i = $m->add($p);
  $i->setName('frames');
  $m->nextFrame();
  $m->add(new SWFAction("
lastx = mousex;
lasty = mousey;
mousex = /mouse.x;
mousey = /mouse.y;
++num;
if(num == 11)
  num = 1;
removeClip('char' & num);
duplicateClip(/frames, 'char' & num, num);
  "));
  $m->nextFrame();
  $m->add(new SWFAction("prevFrame(); play();"));
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Cet exemple simple gère le clavier (vous devrez cependant cliquer dans la fenêtre pour lui donner le focus, et vous devrez aussi laisser votre souris dans la fenêtre. Si vous savez comment faire cela automatiquement, dites-le moi!).

Exemple 4. Exemple avec swfaction()

<?php
  /* Le sprite n'a qu'une lettre par image */
  $p = new SWFSprite();
  $p->add(new SWFAction("stop();"));
  $chars = "abcdefghijklmnopqrstuvwxyz".
       "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
           "1234567890!@#$%^&*()_+-=/[]{}|;:,.<>?`~";
  $f = new SWFFont("_sans");
  for($n=0; $nremove($i);
    $t = new SWFTextField();
    $t->setFont($f);
    $t->setHeight(240);
    $t->setBounds(600,240);
    $t->align(SWFTEXTFIELD_ALIGN_CENTER);
    $t->addString($c);
    $i = $p->add($t);
    $p->labelFrame($c);
    $p->nextFrame();
  }
  /* région de clic pour le bouton : toute la fenêtre */
  $s = new SWFShape();
  $s->setFillStyle0($s->addSolidFill(0, 0, 0, 0));
  $s->drawLine(600, 0);
  $s->drawLine(0, 400);
  $s->drawLine(-600, 0);
  $s->drawLine(0, -400);
  /* le bouton s'assure des touches pressées, et envoie le bon
     sprite à l'image de droite */
  $b = new SWFButton();
  $b->addShape($s, SWFBUTTON_HIT);
  for($n=0; $naddAction(new SWFAction("
setTarget('/char');
gotoFrame('$c');
    "), SWFBUTTON_KEYPRESS($c));
  }
  $m = new SWFMovie();
  $m->setDimension(600,400);
  $i = $m->add($p);
  $i->setName('char');
  $i->moveTo(0,80);
  $m->add($b);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
ming_useswfversion | Niveau supérieur | SWFBitmap->getHeight


SWFBitmap->getHeight

(no version information, might be only in CVS)

SWFBitmap->getHeight -- Retourne la hauteur d'une bitmap.

Description

int swfbitmap->getheight ( void )

swfbitmap->getheight() retourne la hauteur d'une bitmap, en pixels.

Voir aussi swfbitmap->getwidth().

Précédent | Sommaire | Suivant
SWFAction | Niveau supérieur | SWFBitmap->getWidth


SWFBitmap->getWidth

(no version information, might be only in CVS)

SWFBitmap->getWidth -- Retourne la largeur d'une bitmap.

Description

int swfbitmap->getwidth ( void )

swfbitmap->getwidth() retourne la largeur d'une bitmap, en pixels.

Voir aussi swfbitmap->getheight().

Précédent | Sommaire | Suivant
SWFBitmap->getHeight | Niveau supérieur | SWFBitmap


SWFBitmap

(PHP 4 >= 4.0.5)

SWFBitmap -- Crée un objet bitmap

Description

new swfbitmap ( string filename [, int alphafilename])

swfbitmap() crée un objet bitmap à partir d'un fichier JPEG ou DBL, nommé filename. alphafilename indique un fichier de masque à utiliser comme canal alpha sur une image JPEG.

Note : Seule les JPEG baseline (frame 0) sont supportés. Les baseline optimisée ou les JPEG progressives ne sont pas supportées.

SWFBitmap a les méthodes suivantes : swfbitmap->getwidth() et swfbitmap->getheight().

Il n'est pas possible d'importer directement des images PNG, il faut utiliser l'utilitaire de conversion png2dbl pour en faire un fichier .dbl ("define bits lossless"). La raison est que l'auteur ne souhaite pas de dépendance avec la librairie PNG. Le fichier d'autoconfiguration devrait régler ce problème, mais il n'est pas encore fait.

Exemple 1. Importation de fichiers PNG sous Ming

<?php
  $s = new SWFShape();
  $f = $s->addFill(new SWFBitmap("png.dbl"));
  $s->setRightFill($f);
  $s->drawLine(32, 0);
  $s->drawLine(0, 32);
  $s->drawLine(-32, 0);
  $s->drawLine(0, -32);
  $m = new SWFMovie();
  $m->setDimension(32, 32);
  $m->add($s);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Et vous pouvez ajouter un masque alpha sur une image JPEG.

Exemple 2. Exemple avec swfbitmap()

<?php
  $s = new SWFShape();
  //les fichiers .msk sont générés par l'utilitaire "gif2mask"
  $f = $s->addFill(new SWFBitmap("alphafill.jpg", "alphafill.msk"));
  $s->setRightFill($f);
  $s->drawLine(640, 0);
  $s->drawLine(0, 480);
  $s->drawLine(-640, 0);
  $s->drawLine(0, -480);
  $c = new SWFShape();
  $c->setRightFill($c->addFill(0x99, 0x99, 0x99));
  $c->drawLine(40, 0);
  $c->drawLine(0, 40);
  $c->drawLine(-40, 0);
  $c->drawLine(0, -40);
  $m = new SWFMovie();
  $m->setDimension(640, 480);
  $m->setBackground(0xcc, 0xcc, 0xcc);
  // décide un fond à damier
  for($y=0; $y<480; $y+=40)
  {
    for($x=0; $x<640; $x+=80)
    {
      $i = $m->add($c);
      $i->moveTo($x, $y);
    }
    $y+=40;
    for($x=40; $x<640; $x+=80)
    {
      $i = $m->add($c);
      $i->moveTo($x, $y);
    }
  }
  $m->add($s);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFBitmap->getWidth | Niveau supérieur | swfbutton_keypress


swfbutton_keypress

(PHP 4 >= 4.0.5)

swfbutton_keypress -- Returns the action flag for keyPress(char)

Description

int swfbutton_keypress ( string str)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
SWFBitmap | Niveau supérieur | SWFbutton->addAction


SWFbutton->addAction

(no version information, might be only in CVS)

SWFbutton->addAction -- Ajoute une action au bouton

Description

void swfbutton->addaction ( ressource action, int flags)

swfbutton->setaction() ajoute l'action action (créée par swfaction()) au bouton courant, dans les conditions précisées par flags. Les valeurs valides de flags sont : SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SWFBUTTON_MOUSEUP, SWFBUTTON_MOUSEUPOUTSIDE, SWFBUTTON_MOUSEDOWN, SWFBUTTON_DRAGOUT et SWFBUTTON_DRAGOVER

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
swfbutton_keypress | Niveau supérieur | SWFbutton->addShape


SWFbutton->addShape

(no version information, might be only in CVS)

SWFbutton->addShape -- Ajoute une forme à un bouton

Description

void swfbutton->addshape ( ressource shape, int flags)

swfbutton->addshape() ajoute la forme shape au bouton. Les valeurs possibles de flags sont : SWFBUTTON_UP, SWFBUTTON_OVER, SWFBUTTON_DOWN ou SWFBUTTON_HIT. SWFBUTTON_HIT n'est même pas affiché, elle désigne la région du clic d'un bouton. C'est-à-dire que tous points où le bouton est déssiné est considéré comme accessible.

Précédent | Sommaire | Suivant
SWFbutton->addAction | Niveau supérieur | SWFbutton->setAction


SWFbutton->setAction

(no version information, might be only in CVS)

SWFbutton->setAction -- Assigne l'action du bouton

Description

void swfbutton->setaction ( ressource action)

swfbutton->setaction() assigne l'action qui sera exécutée lorsque le bouton sera cliqué. C'est un alias de addAction(shape, SWFBUTTON_MOUSEUP). action est une swfaction().

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
SWFbutton->addShape | Niveau supérieur | SWFbutton->setDown


SWFbutton->setDown

(no version information, might be only in CVS)

SWFbutton->setDown -- Alias de addShape(shape, SWFBUTTON_DOWN)

Description

void swfbutton->setdown ( ressource shape)

swfbutton->setdown() est un alias pour addShape(shape, SWFBUTTON_DOWN).

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
SWFbutton->setAction | Niveau supérieur | SWFbutton->setHit


SWFbutton->setHit

(no version information, might be only in CVS)

SWFbutton->setHit -- Alias de addShape(shape, SWFBUTTON_HIT)

Description

void swfbutton->sethit ( ressource shape)

swfbutton->sethit() est un alias pour addShape(shape, SWFBUTTON_HIT).

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
SWFbutton->setDown | Niveau supérieur | SWFbutton->setOver


SWFbutton->setOver

(no version information, might be only in CVS)

SWFbutton->setOver -- Alias de addShape(shape, SWFBUTTON_OVER)

Description

void swfbutton->setover ( ressource shape)

swfbutton->setover() est un alias pour addShape(shape, SWFBUTTON_OVER).

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
SWFbutton->setHit | Niveau supérieur | SWFbutton->setUp


SWFbutton->setUp

(no version information, might be only in CVS)

SWFbutton->setUp -- Alias de SWFbutton->addShape(shape, SWFBUTTON_UP)

Description

void swfbutton->setup ( ressource shape)

swfbutton->setup() est un alias pour SWFbutton->addShape(shape, SWFBUTTON_UP).

Voir aussi : swfbutton->addshape() et swfaction().

Précédent | Sommaire | Suivant
SWFbutton->setOver | Niveau supérieur | SWFbutton


SWFbutton

(PHP 4 >= 4.0.5)

SWFbutton -- Crée un nouveau bouton.

Description

new swfbutton ( void )

swfbutton() crée un nouveau bouton. Cliquez-le, passez la souris dessus, et appelez des actions. Facile!

SWFButton a les méthodes suivantes :
swfbutton->addshape(),
swfbutton->setup(), swfbutton->setover()
swfbutton->setdown(), swfbutton->sethit()
swfbutton->setaction() et
swfbutton->addaction().

Cet exemple simplissime vous montre comme faire un roll-over, un roll-on, un clic, un relaché de souris, et rien du tout (pas d'action).

Exemple 1. Exemple avec swfbutton()

<?php
  $f = new SWFFont("_serif");
  $p = new SWFSprite();
  function label($string)
  {
    global $f;
    $t = new SWFTextField();
    $t->setFont($f);
    $t->addString($string);
    $t->setHeight(200);
    $t->setBounds(3200,200);
    return $t;
  }
  function addLabel($string)
  {
    global $p;
    $i = $p->add(label($string));
    $p->nextFrame();
    $p->remove($i);
  }
  $p->add(new SWFAction("stop();"));
  addLabel("NO ACTION");
  addLabel("SWFBUTTON_MOUSEUP");
  addLabel("SWFBUTTON_MOUSEDOWN");
  addLabel("SWFBUTTON_MOUSEOVER");
  addLabel("SWFBUTTON_MOUSEOUT");
  addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
  addLabel("SWFBUTTON_DRAGOVER");
  addLabel("SWFBUTTON_DRAGOUT");
  function rect($r, $g, $b)
  {
    $s = new SWFShape();
    $s->setRightFill($s->addFill($r, $g, $b));
    $s->drawLine(600,0);
    $s->drawLine(0,600);
    $s->drawLine(-600,0);
    $s->drawLine(0,-600);
    return $s;
  }
  $b = new SWFButton();
  $b->addShape(rect(0xff, 0, 0), SWFBUTTON_UP | SWFBUTTON_HIT);
  $b->addShape(rect(0, 0xff, 0), SWFBUTTON_OVER);
  $b->addShape(rect(0, 0, 0xff), SWFBUTTON_DOWN);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(1);"),
            SWFBUTTON_MOUSEUP);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(2);"),
        SWFBUTTON_MOUSEDOWN);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(3);"),
        SWFBUTTON_MOUSEOVER);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(4);"),
        SWFBUTTON_MOUSEOUT);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(5);"),
        SWFBUTTON_MOUSEUPOUTSIDE);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(6);"),
        SWFBUTTON_DRAGOVER);
  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(7);"),
        SWFBUTTON_DRAGOUT);
  $m = new SWFMovie();
  $m->setDimension(4000,3000);
  $i = $m->add($p);
  $i->setName("label");
  $i->moveTo(400,1900);
  $i = $m->add($b);
  $i->moveTo(400,900);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Cet exemple simple illustre le déplacement d'un gros bouton rouge dans la fenêtre. Ce n'est pas du tirer-déposer, mais juste du tirer.

Exemple 2. Exemple avec swfbutton->addaction()

<?php
  $s = new SWFShape();
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->drawLine(1000,0);
  $s->drawLine(0,1000);
  $s->drawLine(-1000,0);
  $s->drawLine(0,-1000);
  $b = new SWFButton();
  $b->addShape($s, SWFBUTTON_HIT | SWFBUTTON_UP | SWFBUTTON_DOWN | SWFBUTTON_OVER);
  $b->addAction(new SWFAction("startDrag('/test', 0);"),
        SWFBUTTON_MOUSEDOWN);
// '0' signifie : ne pas verrouiller la souris
  $b->addAction(new SWFAction("stopDrag();"),
        SWFBUTTON_MOUSEUP | SWFBUTTON_MOUSEUPOUTSIDE);
  $p = new SWFSprite();
  $p->add($b);
  $p->nextFrame();
  $m = new SWFMovie();
  $i = $m->add($p);
  $i->setName('test');
  $i->moveTo(1000,1000);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFbutton->setUp | Niveau supérieur | SWFDisplayItem->addColor


SWFDisplayItem->addColor

(no version information, might be only in CVS)

SWFDisplayItem->addColor -- Ajoute une couleur à une transoformation.

Description

void swfdisplayitem->addcolor ( [int red [, int green [, int blue [, int a]]]])

swfdisplayitem->addcolor() ajoute une couleur à la transformations courante. La couleur est donnée sous la forme RGB.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Précédent | Sommaire | Suivant
SWFbutton | Niveau supérieur | SWFDisplayItem->move


SWFDisplayItem->move

(no version information, might be only in CVS)

SWFDisplayItem->move -- Déplace un objet en coordonnées relatives.

Description

void swfdisplayitem->move ( int dx, int dy)

swfdisplayitem->move() déplace la forme courante de dx et dy unités, depuis sa position courante.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfdisplayitem->moveto().

Précédent | Sommaire | Suivant
SWFDisplayItem->addColor | Niveau supérieur | SWFDisplayItem->moveTo


SWFDisplayItem->moveTo

(no version information, might be only in CVS)

SWFDisplayItem->moveTo -- Déplace un objet en coordonnées globales.

Description

void swfdisplayitem->moveto ( int x, int y)

swfdisplayitem->moveto() déplace la forme courante jusqu'au point de coordonnées globales (x,y).

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfdisplayitem->move().

Précédent | Sommaire | Suivant
SWFDisplayItem->move | Niveau supérieur | SWFDisplayItem->multColor


SWFDisplayItem->multColor

(no version information, might be only in CVS)

SWFDisplayItem->multColor -- Multiplie la couleur de transformation.

Description

void swfdisplayitem->multcolor ( [int red [, int green [, int blue [, int a]]]])

swfdisplayitem->multcolor() multiplie la couleur de transformation par les valeurs données.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Cet exemple simple modifie l'atmosphère de votre image, et en fait une scène d'Halloween (utilisez un paysage ou une image claire pour un meilleur effet)

Exemple 1. Exemple avec swfdisplayitem->multcolor()

<?php
  $b = new SWFBitmap("backyard.jpg");
  // Utilisez une de vos images
  $s = new SWFShape();
  $s->setRightFill($s->addFill($b));
  $s->drawLine($b->getWidth(), 0);
  $s->drawLine(0, $b->getHeight());
  $s->drawLine(-$b->getWidth(), 0);
  $s->drawLine(0, -$b->getHeight());
  $m = new SWFMovie();
  $m->setDimension($b->getWidth(), $b->getHeight());
  $i = $m->add($s);
  for($n=0; $n<=20; ++$n)
  {
    $i->multColor(1.0-$n/10, 1.0, 1.0);
    $i->addColor(0xff*$n/20, 0, 0);
    $m->nextFrame();
  }
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFDisplayItem->moveTo | Niveau supérieur | SWFDisplayItem->remove


SWFDisplayItem->remove

(no version information, might be only in CVS)

SWFDisplayItem->remove -- Supprime un objet d'une animation

Description

void swfdisplayitem->remove ( void )

swfdisplayitem->remove() supprime cet objet de la liste d'affichage.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfmovie->add().

Précédent | Sommaire | Suivant
SWFDisplayItem->multColor | Niveau supérieur | SWFDisplayItem->Rotate


SWFDisplayItem->Rotate

(no version information, might be only in CVS)

SWFDisplayItem->Rotate -- Fait tourner une forme relativement.

Description

void swfdisplayitem->rotate ( double ddegrees)

swfdisplayitem->rotate() fait tourner la forme de ddegrees degrés, en plus de sa rotation courante.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfdisplayitem->rotateto().

Précédent | Sommaire | Suivant
SWFDisplayItem->remove | Niveau supérieur | SWFDisplayItem->rotateTo


SWFDisplayItem->rotateTo

(no version information, might be only in CVS)

SWFDisplayItem->rotateTo -- Tourne un objet en angle absolu.

Description

void swfdisplayitem->rotateto ( double degrees)

swfdisplayitem->rotateto() tourne l'objet jusqu'à l'angle absoludegrees, en degrés.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Cet exemple amène trois chaînes tournoyantes depuis le fond de l'écran. Plutôt sympa.

Exemple 1. Exemple avec swfdisplayitem->rotateto()

<?php
  $thetext =  "ming!";
  $f = new SWFFont("Bauhaus 93.fdb");
  $m = new SWFMovie();
  $m->setRate(24.0);
  $m->setDimension(2400, 1600);
  $m->setBackground(0xff, 0xff, 0xff);
  // Les fonctions avec un nombre d'arguments sont vraiment une bonne idées.
  // Sincèrement!
  function text($r, $g, $b, $a, $rot, $x, $y, $scale, $string)
  {
    global $f, $m;
    $t = new SWFText();
    $t->setFont($f);
    $t->setColor($r, $g, $b, $a);
    $t->setHeight(960);
    $t->moveTo(-($f->getWidth($string))/2, $f->getAscent()/2);
    $t->addString($string);
    // On peut ajouter des propriétés comme pour une variable PHP standard
    // tant que les noms ne sont pas déjà pris.
    // e.g., vous ne pouvez pas utilisez $i->scale, car c'est une fonction.
    $i = $m->add($t);
    $i->x = $x;
    $i->y = $y;
    $i->rot = $rot;
    $i->s = $scale;
    $i->rotateTo($rot);
    $i->scale($scale, $scale);
    // mais les modification sont locales à une fonction, donc il faut
    // retourner l'objet modifié. Pas pratique...
    return $i;
 }
  function step($i)
  {
    $oldrot = $i->rot;
    $i->rot = 19*$i->rot/20;
    $i->x = (19*$i->x + 1200)/20;
    $i->y = (19*$i->y + 800)/20;
    $i->s = (19*$i->s + 1.0)/20;
    $i->rotateTo($i->rot);
    $i->scaleTo($i->s, $i->s);
    $i->moveTo($i->x, $i->y);
    return $i;
  }
  // Alors? Ça valait la peine, non?
  $i1 = text(0xff, 0x33, 0x33, 0xff, 900, 1200, 800, 0.03, $thetext);
  $i2 = text(0x00, 0x33, 0xff, 0x7f, -560, 1200, 800, 0.04, $thetext);
  $i3 = text(0xff, 0xff, 0xff, 0x9f, 180, 1200, 800, 0.001, $thetext);
  for($i=1; $i<=100; ++$i)
  {
    $i1 = step($i1);
    $i2 = step($i2);
    $i3 = step($i3);
    $m->nextFrame();
  }
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Voir aussi swfdisplayitem->rotate().

Précédent | Sommaire | Suivant
SWFDisplayItem->Rotate | Niveau supérieur | SWFDisplayItem->scale


SWFDisplayItem->scale

(no version information, might be only in CVS)

SWFDisplayItem->scale -- Etire un objet relativement.

Description

void swfdisplayitem->scale ( int dx, int dy)

swfdisplayitem->scale() étire un objet de (dx,dy), à partir de sa taille courante.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfdisplayitem->scaleto().

Précédent | Sommaire | Suivant
SWFDisplayItem->rotateTo | Niveau supérieur | SWFDisplayItem->scaleTo


SWFDisplayItem->scaleTo

(no version information, might be only in CVS)

SWFDisplayItem->scaleTo -- Etire un objet en coordonnées globales.

Description

void swfdisplayitem->scaleto ( int x, int y)

swfdisplayitem->scaleto() étire un objet jusqu'au dimensions (x,y).

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi swfdisplayitem->scale().

Précédent | Sommaire | Suivant
SWFDisplayItem->scale | Niveau supérieur | SWFDisplayItem->setDepth


SWFDisplayItem->setDepth

(no version information, might be only in CVS)

SWFDisplayItem->setDepth -- Modifie la place en profondeur (z-order)

Description

void swfdisplayitem->setdepth ( double depth)

swfdisplayitem->rotate() place l'objet à la profondeur depth. Par défaut, l'objet est placé au niveau où il a été ajouté dans l'animation. Les objets les plus anciens sont placés tout en bas, et les nouveaux sont superposés.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Précédent | Sommaire | Suivant
SWFDisplayItem->scaleTo | Niveau supérieur | SWFDisplayItem->setName


SWFDisplayItem->setName

(no version information, might be only in CVS)

SWFDisplayItem->setName -- Nomme un objet

Description

void swfdisplayitem->setname ( string name)

swfdisplayitem->setname() donne à l'objet courant le nom de name. Cela servira à repérer les acteurs d'un script d'action. Cela ne sert qu'avec les sprites.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Précédent | Sommaire | Suivant
SWFDisplayItem->setDepth | Niveau supérieur | SWFDisplayItem->setRatio


SWFDisplayItem->setRatio

(no version information, might be only in CVS)

SWFDisplayItem->setRatio -- Modifie le ratio de l'objet.

Description

void swfdisplayitem->setratio ( double ratio)

swfdisplayitem->setratio() modifie le ratio de l'objet, et le fixe à ratio. Uniquement utile pour les morphings.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Cet exemple simple effectue un morphing délicat de trois cercles concentriques.

Exemple 1. Exemple swfdisplayitem->setname()

<?php
  $p = new SWFMorph();
  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(0.16, 0xff, 0xff, 0xff);
  $g->addEntry(0.32, 0, 0, 0);
  $g->addEntry(0.48, 0xff, 0xff, 0xff);
  $g->addEntry(0.64, 0, 0, 0);
  $g->addEntry(0.80, 0xff, 0xff, 0xff);
  $g->addEntry(1.00, 0, 0, 0);
  $s = $p->getShape1();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.05);
  $s->setLeftFill($f);
  $s->movePenTo(-160, -120);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);
  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(0.16, 0xff, 0, 0);
  $g->addEntry(0.32, 0, 0, 0);
  $g->addEntry(0.48, 0, 0xff, 0);
  $g->addEntry(0.64, 0, 0, 0);
  $g->addEntry(0.80, 0, 0, 0xff);
  $g->addEntry(1.00, 0, 0, 0);
  $s = $p->getShape2();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.05);
  $f->skewXTo(1.0);
  $s->setLeftFill($f);
  $s->movePenTo(-160, -120);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);
  $m = new SWFMovie();
  $m->setDimension(320, 240);
  $i = $m->add($p);
  $i->moveTo(160, 120);
  for($n=0; $n<=1.001; $n+=0.01)
  {
    $i->setRatio($n);
    $m->nextFrame();
  }
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFDisplayItem->setName | Niveau supérieur | SWFDisplayItem->skewX


SWFDisplayItem->skewX

(no version information, might be only in CVS)

SWFDisplayItem->skewX -- Incline suivant les X relativement.

Description

void swfdisplayitem->skewx ( double ddegrees)

swfdisplayitem->skewx() ajoute ddegrees à l'inclinaison courante (x-skew).

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi
swfdisplayitem->skewx(),
swfdisplayitem->skewy() and
swfdisplayitem->skewyto().

Précédent | Sommaire | Suivant
SWFDisplayItem->setRatio | Niveau supérieur | SWFDisplayItem->skewXTo


SWFDisplayItem->skewXTo

(no version information, might be only in CVS)

SWFDisplayItem->skewXTo -- Incline suivant les X.

Description

void swfdisplayitem->skewxto ( double degrees)

swfdisplayitem->skewxto() modifie l'inclinaison (x-skew) à degrees. Si degrees vaut 1.0, l'angle sera de 45¡, en avant. S'il vaut plus, ce sera plus penché, et s'il vaut moins, ce sera plus droit.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi
swfdisplayitem->skewx(),
swfdisplayitem->skewy() and
swfdisplayitem->skewyto().

Précédent | Sommaire | Suivant
SWFDisplayItem->skewX | Niveau supérieur | SWFDisplayItem->skewY


SWFDisplayItem->skewY

(no version information, might be only in CVS)

SWFDisplayItem->skewY -- Incline suivant les Y relativement.

Description

void swfdisplayitem->skewy ( double ddegrees)

swfdisplayitem->skewy() ajoute ddegrees à l'inclinaison courante (y-skew).

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi
swfdisplayitem->skewyto(),
swfdisplayitem->skewx() and
swfdisplayitem->skewxto().

Précédent | Sommaire | Suivant
SWFDisplayItem->skewXTo | Niveau supérieur | SWFDisplayItem->skewYTo


SWFDisplayItem->skewYTo

(no version information, might be only in CVS)

SWFDisplayItem->skewYTo -- Incline suivant les Y.

Description

void swfdisplayitem->skewyto ( double degrees)

swfdisplayitem->skewyto() modifie l'inclinaison (y-skew) à degrees. Si degrees vaut 1.0, l'angle sera de 45¡, en haut. S'il vaut plus, ce sera plus penché, et s'il vaut moins, ce sera plus droit.

L'objet peut être swfshape(), swfbutton(), swftext() ou swfsprite(). Il doit avoir été ajouté à une animation avec la fonction swfmovie->add().

Voir aussi
swfdisplayitem->skewy(),
swfdisplayitem->skewx() and
swfdisplayitem->skewxto().

Précédent | Sommaire | Suivant
SWFDisplayItem->skewY | Niveau supérieur | SWFDisplayItem


SWFDisplayItem

(no version information, might be only in CVS)

SWFDisplayItem -- Crée un nouvel objet d'affichage displayitem.

Description

new swfdisplayitem ( void )

swfdisplayitem() crée un nouvel objet d'affichage displayitem.

C'est là que toute l'animation prend vie. Une fois que vous avez défini une forme, un texte, un sprite ou un bouton, vous l'ajoutez à une animation, puis vous utilisez la ressource retournée pour déplacer, étirer, contracter, faire tourner ou incliner la forme.

SWFDisplayItem a les méthodes suivantes :
swfdisplayitem->move(),
swfdisplayitem->moveto(), swfdisplayitem->scaleto(),
swfdisplayitem->scale(), swfdisplayitem->rotate(),
swfdisplayitem->rotateto(), swfdisplayitem->skewxto(),
swfdisplayitem->skewx(), swfdisplayitem->skewyto()
swfdisplayitem->skewyto(), swfdisplayitem->setdepth()
swfdisplayitem->remove(), swfdisplayitem->setname()
swfdisplayitem->setratio(), swfdisplayitem->addcolor()
et swfdisplayitem->multcolor().

Précédent | Sommaire | Suivant
SWFDisplayItem->skewYTo | Niveau supérieur | SWFFill->moveTo


SWFFill->moveTo

(no version information, might be only in CVS)

SWFFill->moveTo -- Déplace l'origine de l'objet SWFFill

Description

void swffill->moveto ( int x, int y)

swffill->moveto() déplace l'origine de la forme jusqu'au point de coordonnées globales (x,y).

Précédent | Sommaire | Suivant
SWFDisplayItem | Niveau supérieur | SWFFill->rotateTo


SWFFill->rotateTo

(no version information, might be only in CVS)

SWFFill->rotateTo -- Tourne la forme

Description

void swffill->rotateto ( double degrees)

swffill->rotateto() tourne la forme depuis sont orientation initiale jusqu'à un angle de degrees degrés.

Précédent | Sommaire | Suivant
SWFFill->moveTo | Niveau supérieur | SWFFill->scaleTo


SWFFill->scaleTo

(no version information, might be only in CVS)

SWFFill->scaleTo -- Modifie l'échelle de la forme

Description

void swffill->scaleto ( int x, int y)

swffill->scaleto() modifie l'échelle de la forme de x dans le sens des abscisses et y dans le sens des ordonnées.

Précédent | Sommaire | Suivant
SWFFill->rotateTo | Niveau supérieur | SWFFill->skewXTo


SWFFill->skewXTo

(no version information, might be only in CVS)

SWFFill->skewXTo -- Incline (abscisses)

Description

void swffill->skewxto ( double x)

swffill->skewxto() incline la forme de x suivant l'axe des abscisses. Si x vaut 1.0, l'inclinaison sera de 45¡ degrés, en avant. Si x vaut plus, l'inclinaison sera plus forte, et sinon, la forme sera plus droite.

Précédent | Sommaire | Suivant
SWFFill->scaleTo | Niveau supérieur | SWFFill->skewYTo


SWFFill->skewYTo

(no version information, might be only in CVS)

SWFFill->skewYTo -- Incline (ordonnées)

Description

void swffill->skewyto ( double y)

swffill->skewyto() incline la forme de y suivant l'axe des abscisses. Si y vaut 1.0, l'inclinaison sera de 45¡ degrés, en avant. Si x vaut plus, l'inclinaison sera plus forte, et sinon, la forme sera plus droite.

Précédent | Sommaire | Suivant
SWFFill->skewXTo | Niveau supérieur | SWFFill


SWFFill

SWFFill -- Crée un objet de remplissage

Description

swffill() vous permet de transformer une image bitmap ou un gradient. Les objets swffill() sont créé par swfshape->addfill().

SWFFill a les méthodes suivantes :
swffill->moveto(),swffill->scaleto(),
swffill->rotateto(),
swffill->skewxto() et swffill->skewyto().

Précédent | Sommaire | Suivant
SWFFill->skewYTo | Niveau supérieur | swffont->getwidth


swffont->getwidth

(no version information, might be only in CVS)

swffont->getwidth -- Retourne la taille de la chaîne

Description

int swffont->getwidth ( string string)

swffont->getwidth() retourne la taille de la chaîne string, avec la police courante. Vous utiliserez plutôt la même méthode de l'objet swftext(), qui utilise les paramètres de l'objet.

Précédent | Sommaire | Suivant
SWFFill | Niveau supérieur | SWFFont


SWFFont

(PHP 4 >= 4.0.5)

SWFFont -- Charge une police

Description

new swffont ( string filename)

si filename est le nom d'un fichier FDB (i.e., si le nom de fichier se termine par ".fdb"), charge la police.

FDB ("font definition block") est un petit utilitaire pour Flash DefineFont2 qui contient une description complète de la police. Vous pouvez créer des fichiers FDB à partir du "SWT Generator", qui est inclus avec les utilitaires makefdb - regardez dans le dossier utilitaire de Ming.

Les polices utilisateurs ne contiennent aucune information autre que le nom de la police. On suppose que la police sera elle-même accessible au lecteur. Les polices "_serif", "_sans", et "_typewriter" doivent être universellement disponibles. Par exemple :
<?php
$f = newSWFFont("_sans");
?>
vous donne la police standard "sans-serif", probablement identique à celle que vous obtenez avec le code <font name="sans-serif">.

swffont() retourne une ressource de police, à utiliser avec les méthodes swftext->setfont() et swftextfield->setfont().

SWFFont a les méthodes suivantes : swffont->getwidth().

Précédent | Sommaire | Suivant
swffont->getwidth | Niveau supérieur | SWFGradient->addEntry


SWFGradient->addEntry

(no version information, might be only in CVS)

SWFGradient->addEntry -- Ajoute une couleur à la liste du gradient.

Description

void swfgradient->addentry ( double ratio, int red, int green, int blue [, int a])

swfgradient->addentry() ajoute une couleur à la liste des couleurs du gradient. ratio est un nombre de 0 à 1, qui indique l'ordre d'apparition des couleurs. Vous devez ajouter les couleurs dans l'ordre croissant de ratio.

red, green, blue représente une couleur, au format RGB. Le dernier paramètre a est optionnel.

Précédent | Sommaire | Suivant
SWFFont | Niveau supérieur | SWFGradient


SWFGradient

(PHP 4 >= 4.0.5)

SWFGradient -- Crée un objet gradient

Description

new swfgradient ( void )

swfgradient() crée un nouvel objet gradient.

Une fois que vous avez ajouté les couleurs à votre gradient, vous pouvez l'utiliser dans des formes, avec la fonction swfshape->addfill().

SWFGradient a la méthode suivante : swfgradient->addentry().

Cet exemple simple affiche un gradient noir-blanc comme fond, et un gradient concentrique au centre.

Exemple 1. Exemple avec swfgradient()

<?php
  $m = new SWFMovie();
  $m->setDimension(320, 240);
  $s = new SWFShape();
  // gradient noir-blanc
  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(1.0, 0xff, 0xff, 0xff);
  $f = $s->addFill($g, SWFFILL_LINEAR_GRADIENT);
  $f->scaleTo(0.01);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);
  $m->add($s);
  $s = new SWFShape();
  // gradient radial : rouge vers transparent
  $g = new SWFGradient();
  $g->addEntry(0.0, 0xff, 0, 0, 0xff);
  $g->addEntry(1.0, 0xff, 0, 0, 0);
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.005);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);
  $m->add($s);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFGradient->addEntry | Niveau supérieur | SWFMorph->getshape1


SWFMorph->getshape1

(no version information, might be only in CVS)

SWFMorph->getshape1 -- Sélectionne la forme de départ

Description

mixed swfmorph->getshape1 ( void )

swfmorph->getshape1() sélectionne la forme de
début de morphing. swfmorph->getshape1() retourne un
objet swfshape().

Précédent | Sommaire | Suivant
SWFGradient | Niveau supérieur | SWFMorph->getshape2


SWFMorph->getshape2

(no version information, might be only in CVS)

SWFMorph->getshape2 -- Sélectionne la forme de fin

Description

mixed swfmorph->getshape2 ( void )

swfmorph->getshape2() sélectionne la forme de
début de morphing. swfmorph->getshape2() retourne un
objet swfshape().

Précédent | Sommaire | Suivant
SWFMorph->getshape1 | Niveau supérieur | SWFMorph


SWFMorph

(PHP 4 >= 4.0.5)

SWFMorph -- Crée un morphing.

Description

new swfmorph ( void )

swfmorph() crée un morphing.

swfmorph() s'appelle aussi "shape tween". C'est cet objet qui permet toutes ces superbes animations qui mettent à genou votre ordinateur. Joie!

Les méthodes ici sont plutôt bizarres. Il serait tellement plus logique d'avoir seulement new SWFMorph(shape1, shape2);, mais, telles que sont les choses aujourd'hui, la deuxième forme a besoin de savoir qu'elle est l'aboutissement d'un morphing. (Tout cela, parceque Flash commence à dessiner aussitôt qu'il a les commandes de dessins. S'il conservait les descriptions de ses propres formes, et attendait leur totalité avant d'écrire, ceci et bien d'autres choses serait tellement plus simple).

SWFMorph a les méthodes suivantes : swfmorph->getshape1() et swfmorph->getshape2().

Cet exemple simple effectue le morphing d'une gros carré rouge en un carré plus petit, bleu et bordé de noir.

Exemple 1. Exemple avec swfmorph()

<?php
  $p = new SWFMorph();
  $s = $p->getShape1();
  $s->setLine(0,0,0,0);
  /* Notez que cela se fait dans l'ordre inverse de l'ordre habituel
     (gauche au lieu de droite), mais je n'ai aucune idée de pourquoi... */
  $s->setLeftFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-1000,-1000);
  $s->drawLine(2000,0);
  $s->drawLine(0,2000);
  $s->drawLine(-2000,0);
  $s->drawLine(0,-2000);
  $s = $p->getShape2();
  $s->setLine(60,0,0,0);
  $s->setLeftFill($s->addFill(0, 0, 0xff));
  $s->movePenTo(0,-1000);
  $s->drawLine(1000,1000);
  $s->drawLine(-1000,1000);
  $s->drawLine(-1000,-1000);
  $s->drawLine(1000,-1000);
  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setBackground(0xff, 0xff, 0xff);
  $i = $m->add($p);
  $i->moveTo(1500,1000);
  for($r=0.0; $r<=1.0; $r+=0.1)
  {
    $i->setRatio($r);
    $m->nextFrame();
  }
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFMorph->getshape2 | Niveau supérieur | SWFMovie->add


SWFMovie->add

(no version information, might be only in CVS)

SWFMovie->add -- Ajoute un objet dans une animation.

Description

void swfmovie->add ( ressource instance)

swfmovie->add() ajoute l'objet instance dans l'animation courante. instance peut être de n'importe quel type : forme (shape), texte (text), police (font), etc... Ils doivent être ajouté à une animation pour être utilisé.

Pour les objets affichables (formes, textes, boutons, sprites), swfmovie->add() retourne un objet swfdisplayitem() de la liste d'affichage. Ainsi, vous pouvez ajouter la même forme plusieurs fois dans la même animation, et obtenir des ressources différentes pour chaque instance.

Voir aussi tous les autres objets et swfmovie->remove()

Des exemples d'utilisation dans : swfdisplayitem->rotateto() et swfshape->addfill().

Précédent | Sommaire | Suivant
SWFMorph | Niveau supérieur | SWFMovie->nextframe


SWFMovie->nextframe

(no version information, might be only in CVS)

SWFMovie->nextframe -- Passe à l'image suivante.

Description

void swfmovie->nextframe ( void )

swfmovie->setframes() passe à l'image suivante de l'animation.

Précédent | Sommaire | Suivant
SWFMovie->add | Niveau supérieur | SWFMovie->output


SWFMovie->output

(no version information, might be only in CVS)

SWFMovie->output -- Envoie votre animation au navigateur.

Description

void swfmovie->output ( void )

swfmovie->output() envoie votre animation au navigateur. En PHP, faîte le précéder de la fonction header().
<?php
  header('Content-type: application/x-shockwave-flash');
?>
Cela indique au navigateur que l'animation qui arrive est en Flash.

Voir aussi swfmovie->save().

Des exemples d'utilisation dans :
swfmovie->streammp3(),
swfdisplayitem->rotateto(),
swfaction()...
En fait, tous les exemples utilisent cette méthode.

Précédent | Sommaire | Suivant
SWFMovie->nextframe | Niveau supérieur | SWFMovie->remove


SWFMovie->remove

(no version information, might be only in CVS)

SWFMovie->remove -- Supprime un objet d'une animation.

Description

void swfmovie->remove ( ressource instance)

swfmovie->remove() supprime l'objet instance de la liste d'affichage, pour l'animation courante. L'objet ne sera plus disponible pour être affiché ou utilisé.

Voir aussi swfmovie->add().

Précédent | Sommaire | Suivant
SWFMovie->output | Niveau supérieur | SWFMovie->save


SWFMovie->save

(no version information, might be only in CVS)

SWFMovie->save -- Sauve dans un fichier.

Description

void swfmovie->save ( string filename)

swfmovie->save() sauve votre animation dans le fichier filename.

Voir aussi swfmovie->output().

Précédent | Sommaire | Suivant
SWFMovie->remove | Niveau supérieur | SWFMovie->setbackground


SWFMovie->setbackground

(no version information, might be only in CVS)

SWFMovie->setbackground -- Modifie la couleur de fond.

Description

void swfmovie->setbackground ( int red, int green, int blue)

swfmovie->setbackground() modifie la couleur de fond. Pourquoi est-ce que cette fonction n'accepte pas de canal alpha? (réflechissez quelques instants :-) ). En fait, cela ne serait pas si stupide : vous pouvez laisser apercevoir le fond HTML à travers l'animation. Il y a un moyen de faire cela, mais cela ne fonctionne qu'avec IE 4. Recherchez sur le site de http://www.macromedia.com/ pour plus de détails.

Précédent | Sommaire | Suivant
SWFMovie->save | Niveau supérieur | SWFMovie->setdimension


SWFMovie->setdimension

(no version information, might be only in CVS)

SWFMovie->setdimension -- Modifie les dimensions de l'animation.

Description

void swfmovie->setdimension ( int width, int height)

swfmovie->setdimension() modifie les dimensions de l'animation : width est la largeur et height la hauteur.

Précédent | Sommaire | Suivant
SWFMovie->setbackground | Niveau supérieur | SWFMovie->setframes


SWFMovie->setframes

(no version information, might be only in CVS)

SWFMovie->setframes -- Modifie le nombre total d'images dans l'animation.

Description

void swfmovie->setframes ( string numberofframes)

swfmovie->setframes() modifie le nombre total d'images dans l'animation, et le fixe à numberofframes.

Précédent | Sommaire | Suivant
SWFMovie->setdimension | Niveau supérieur | SWFMovie->setrate


SWFMovie->setrate

(no version information, might be only in CVS)

SWFMovie->setrate -- Modifie la vitesse de l'animation.

Description

void swfmovie->setrate ( int rate)

swfmovie->setrate() fixe la vitesse de l'animation à rate images par secondes. L'animation ralentira d'elle-même si le lecteur Flash ne peut pas afficher suffisamment rapidement, à moins qu'il n'y ait du son en stream, auquel cas les images sont sacrifiées pour garder un son fluide.

Précédent | Sommaire | Suivant
SWFMovie->setframes | Niveau supérieur | SWFMovie->streammp3


SWFMovie->streammp3

(no version information, might be only in CVS)

SWFMovie->streammp3 -- Envoie un fichier MP3 en streaming.

Description

void swfmovie->streammp3 ( string mp3FileName)

swfmovie->streammp3() envoie le fichier MP3mp3FileName en stream audio. swfmovie->streammp3() n'est pas très robuste, et se prend facilement les pieds dans le tapis (elle peut éviter la balise initiale ID3, mais c'est bien tout). Tout comme swfshape->addjpegfill(), ce n'est pas une fonction stable. Il faudra sûrement faire un objet séparé, pour gérer les types de son.

Notez que l'animation n'est pas suffisamment intelligente pour ajouter un nombre suffisant d'images, afin de correspondre à la durée totale du stream MP3. Il vous faudra ajouter des images jusqu'à durée de la musique multiplié par le nombre d'images par secondes.

Oui, vous pouvez utiliser Ming pour mettre un rock-'n-roll endiablé dans vos animation. Evitez d'en parler à l'RIAA ou la SACEM.

Exemple 1. Exemple avec swfmovie->streammp3()

<?php
  $m = new SWFMovie();
  $m->setRate(12.0);
  $m->streamMp3("distortobass.mp3");
// utilisez vos propres MP3
// assurez-vous d'avoir les droits
// 11.85 secondes avec 12.0 images par seconde = 142 frames
  $m->setFrames(142);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFMovie->setrate | Niveau supérieur | SWFMovie


SWFMovie

(PHP 4 >= 4.0.5)

SWFMovie -- Crée un objet 'animation'.

Description

new swfmovie ( void )

swfmovie() Crée un objet 'animation', représentant une animation Flash version 4.

SWFMovie a les méthodes suivantes :
swfmovie->output(),swfmovie->save(),
swfmovie->add(), swfmovie->remove(),
swfmovie->nextframe(), swfmovie->setbackground(),
swfmovie->setrate(), swfmovie->setdimension(),
swfmovie->setframes() et swfmovie->streammp3().

Des exemples d'utilisation dans : swfdisplayitem->rotateto(), swfshape->setline(), swfshape->addfill()... En fait, tous les exemples utilisent cet objet.

Précédent | Sommaire | Suivant
SWFMovie->streammp3 | Niveau supérieur | SWFShape->addFill


SWFShape->addFill

(no version information, might be only in CVS)

SWFShape->addFill -- Ajoute un remplissage plein à la forme.

Description

void swfshape->addfill ( int red, int green, int blue [, int a])

void swfshape->addfill ( SWFbitmap bitmap [, int flags])

void swfshape->addfill ( SWFGradient gradient [, int flags])

swfshape->addfill() ajoute un remplissage plein à la forme. swfshape->addfill() accepte trois différents types d'arguments.

red, green, blue est une couleur (format RGB). Le dernier paramètre a est optionnel.

L'argument bitmap est un objet swfbitmap(). Le paramètre flags peut être l'un des suivants : SWFFILL_CLIPPED_BITMAP ou SWFFILL_TILED_BITMAP. Par défault, c'est SWFFILL_TILED_BITMAP. Je crois.

L'argument gradient est un objet swfgradient(). L'argument flags peut alors prendre l'une des valeurs suivantes : SWFFILL_RADIAL_GRADIENT ou SWFFILL_LINEAR_GRADIENT. Par défaut, c'est SWFFILL_LINEAR_GRADIENT. Cette fois ci, j'en suis sûr.

swfshape->addfill() retourne un objet swffill() à utiliser avec swfshape->setleftfill(), et swfshape->setrightfill() décrite un peu plus loin.

Voir aussi swfshape->setleftfill() et swfshape->setrightfill().

Ceci est un exemple simple qui affiche un cadre sur une bitmap. Ah, il y a un petit bug dans le lecteur Flash : il ne semble pas faire grand cas de la transformation de la seconde forme en morphing. Suivant les specs, la bitmap devrait s'étirer avec la forme dans cet exemple...

Exemple 1. Exemple avec swfshape->addfill()

<?php
  $p = new SWFMorph();
  $b = new SWFBitmap("alphafill.jpg");
  // utilisez vos propres bitmaps!
  $width = $b->getWidth();
  $height = $b->getHeight();
  $s = $p->getShape1();
  $f = $s->addFill($b, SWFFILL_TILED_BITMAP);
  $f->moveTo(-$width/2, -$height/4);
  $f->scaleTo(1.0, 0.5);
  $s->setLeftFill($f);
  $s->movePenTo(-$width/2, -$height/4);
  $s->drawLine($width, 0);
  $s->drawLine(0, $height/2);
  $s->drawLine(-$width, 0);
  $s->drawLine(0, -$height/2);
  $s = $p->getShape2();
  $f = $s->addFill($b, SWFFILL_TILED_BITMAP);
  // ces déplacements n'ont aucun effet
  $f->moveTo(-$width/4, -$height/2);
  $f->scaleTo(0.5, 1.0);
  $s->setLeftFill($f);
  $s->movePenTo(-$width/4, -$height/2);
  $s->drawLine($width/2, 0);
  $s->drawLine(0, $height);
  $s->drawLine(-$width/2, 0);
  $s->drawLine(0, -$height);
  $m = new SWFMovie();
  $m->setDimension($width, $height);
  $i = $m->add($p);
  $i->moveTo($width/2, $height/2);
  for($n=0; $n<1.001; $n+=0.03)
  {
    $i->setRatio($n);
    $m->nextFrame();
  }
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFMovie | Niveau supérieur | SWFShape->drawCurve


SWFShape->drawCurve

(no version information, might be only in CVS)

SWFShape->drawCurve -- Dessine une courbe relativement.

Description

void swfshape->drawcurve ( int controldx, int controldy, int anchordx, int anchordy)

swfshape->drawcurve() dessine une courbe quadratique (avec le style courant de ligne, modifié par swfshape->setline()) depuis le point courant jusqu'au point (anchordx,anchordy) relativement au point courant, et en utilisant le point de contrôle (controldx,controldy). C'est-à-dire qu'il commence en allant vers le point de contrôle, puis se dirigie sur le point d'ancrrage.

Voir aussi
swfshape->drawlineto(),
swfshape->drawline(),
swfshape->movepento() et
swfshape->movepen().

Précédent | Sommaire | Suivant
SWFShape->addFill | Niveau supérieur | SWFShape->drawCurveTo


SWFShape->drawCurveTo

(no version information, might be only in CVS)

SWFShape->drawCurveTo -- Dessine une courbe.

Description

void swfshape->drawcurveto ( int controlx, int controly, int anchorx, int anchory)

swfshape->drawcurveto() dessine une courbe quadratique (avec le style courant de ligne, modifié par swfshape->setline()) depuis le point courant jusqu'au point (anchorx,anchory) en utilisant (controlx,controly) comme point de contrôle. C'est-à-dire qu'il commence en allant vers le point de contrôle, puis se dirigie sur le point d'ancrrage.

Voir aussi
swfshape->drawlineto(),
swfshape->drawline(),
swfshape->movepento() et
swfshape->movepen().

Précédent | Sommaire | Suivant
SWFShape->drawCurve | Niveau supérieur | SWFShape->drawLine


SWFShape->drawLine

(no version information, might be only in CVS)

SWFShape->drawLine -- Dessine une ligne relativement.

Description

void swfshape->drawline ( int dx, int dy)

swfshape->drawline() dessine une ligne (avec le style courant de ligne, modifié par swfshape->setline()) depuis le point courant, et sur le déplacement de (dx,dy).

Voir aussi
swfshape->movepento(),
swfshape->drawcurveto(),
swfshape->movepen() et
swfshape->drawlineto().

Précédent | Sommaire | Suivant
SWFShape->drawCurveTo | Niveau supérieur | SWFShape->drawLineTo


SWFShape->drawLineTo

(no version information, might be only in CVS)

SWFShape->drawLineTo -- Dessine une ligne.

Description

void swfshape->drawlineto ( int x, int y)

swfshape->drawlineto() dessine une ligne (avec le style courant de ligne, modifié par swfshape->setline()) depuis le point courant jusqu'au point (x,y) dans l'espace de coordonnées de la forme.

Voir aussi
swfshape->movepento(),
swfshape->drawcurveto(),
swfshape->movepen() et
swfshape->drawline().

Précédent | Sommaire | Suivant
SWFShape->drawLine | Niveau supérieur | SWFShape->movePen


SWFShape->movePen

(no version information, might be only in CVS)

SWFShape->movePen -- Déplace le stylo relativement.

Description

void swfshape->movepen ( int dx, int dy)

swfshape->movepen() déplace le stylo dans la forme depuis les coordonnées (current x,current y) jusqu'au coordonnées (current x + dx, current y + dy), dans l'espace de coordonnées de la forme.

Voir aussi
swfshape->movepento(),
swfshape->drawcurveto(),
swfshape->drawlineto() et
swfshape->drawline().

Précédent | Sommaire | Suivant
SWFShape->drawLineTo | Niveau supérieur | SWFShape->movePenTo


SWFShape->movePenTo

(no version information, might be only in CVS)

SWFShape->movePenTo -- Déplace le stylo.

Description

void swfshape->movepento ( int x, int y)

swfshape->movepento() déplace le stylo dans la forme jusqu'au coordonnées globales (x,y).

Voir aussi
swfshape->movepen(),
swfshape->drawcurveto(),
swfshape->drawlineto() et
swfshape->drawline().

Précédent | Sommaire | Suivant
SWFShape->movePen | Niveau supérieur | SWFShape->setLeftFill


SWFShape->setLeftFill

(no version information, might be only in CVS)

SWFShape->setLeftFill -- Modifie la couleur de rastérisation de gauche.

Description

void swfshape->setleftfill ( swfgradient fill)

void swfshape->setleftfill ( int red, int green, int blue [, int a])

Tout ce sac de noeud fait qu'il y a deux couleurs de remplissage des lignes. Lorsque l'objet est rasterisé, il est pratique de savoir à l'avance quelle sont les remplissages, et le format SWF les demande.

swfshape->setleftfill() affecte à la couleur de rastérisation de gauche, c'est-à-dire l'intérieur d'un objet, si vous définissez les contours d'un objet dans le sens inverse des aiguilles d'une montre. L'objet de remplissage est un objet swffill(), retourné par la fonction swfshape->addfill() ci-dessus.

Cela semble être le contraire lorsque vous défnissez une forme dans un morphing. Si votre navigateur crashe, essayez de placer le remplissage sur l'autre côté.

Raccourci pour swfshape->setleftfill($s->addfill($r, $g, $b [, $a]));.

Voir aussi swfshape->setrightfill().

Précédent | Sommaire | Suivant
SWFShape->movePenTo | Niveau supérieur | SWFShape->setLine


SWFShape->setLine

(no version information, might be only in CVS)

SWFShape->setLine -- Modifie le style de ligne de la forme.

Description

void swfshape->setline ( int width [, int red [, int green [, int blue [, int a]]]])

swfshape->setline() modifie le style de ligne de la forme. width est la largeur de la ligne. Si width vaut 0, le style est supprimé (et tous les autres arguments sont ignorés). Si width > 0, alors la couleur de la ligne devient (red, green, blue). Les couleurs sont représentées en RGB. Le dernier paramètre a est optionnel.

swfshape->setline() accepte 1, 4 ou 5 arguments (mais jamais 3 ou 2).

Vous devez déclarer un style avant de l'utiliser (voir exemple).

Cet exemple enfantin dessine une chaîne "!#%*@", dans des couleurs marrantes et un style rigolo.

Exemple 1. Exemple swfshape->setline()

<?php
  $s = new SWFShape();
  $f1 = $s->addFill(0xff, 0, 0);
  $f2 = $s->addFill(0xff, 0x7f, 0);
  $f3 = $s->addFill(0xff, 0xff, 0);
  $f4 = $s->addFill(0, 0xff, 0);
  $f5 = $s->addFill(0, 0, 0xff);
  // erreur : il faut déclarer tous les styles avant
  // de les utiliser.
  $s->setLine(40, 0x7f, 0, 0);
  $s->setLine(40, 0x7f, 0x3f, 0);
  $s->setLine(40, 0x7f, 0x7f, 0);
  $s->setLine(40, 0, 0x7f, 0);
  $s->setLine(40, 0, 0, 0x7f);
  $f = new SWFFont('Techno.fdb');
  $s->setRightFill($f1);
  $s->setLine(40, 0x7f, 0, 0);
  $s->drawGlyph($f, '!');
  $s->movePen($f->getWidth('!'), 0);
  $s->setRightFill($f2);
  $s->setLine(40, 0x7f, 0x3f, 0);
  $s->drawGlyph($f, '#');
  $s->movePen($f->getWidth('#'), 0);
  $s->setRightFill($f3);
  $s->setLine(40, 0x7f, 0x7f, 0);
  $s->drawGlyph($f, '%');
  $s->movePen($f->getWidth('%'), 0);
  $s->setRightFill($f4);
  $s->setLine(40, 0, 0x7f, 0);
  $s->drawGlyph($f, '*');
  $s->movePen($f->getWidth('*'), 0);
  $s->setRightFill($f5);
  $s->setLine(40, 0, 0, 0x7f);
  $s->drawGlyph($f, '@');
  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setRate(12.0);
  $i = $m->add($s);
// note la chaîne est ici!!!
  $i->moveTo(1500-$f->getWidth("!#%*@")/2, 1000+$f->getAscent()/2);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFShape->setLeftFill | Niveau supérieur | SWFShape->setRightFill


SWFShape->setRightFill

(no version information, might be only in CVS)

SWFShape->setRightFill -- Modifie la couleur de rastériation de droite.

Description

void swfshape->setrightfill ( swfgradient fill)

void swfshape->setrightfill ( int red, int green, int blue [, int a])

Voir aussi swfshape->setleftfill().

Raccourci pour swfshape->setrightfill($s->addfill($r, $g, $b [, $a]));.

Précédent | Sommaire | Suivant
SWFShape->setLine | Niveau supérieur | SWFShape


SWFShape

(PHP 4 >= 4.0.5)

SWFShape -- Crée une nouvelle forme.

Description

new swfshape ( void )

swfshape() crée une nouvelle forme.

SWFShape a les méthodes suivantes :
swfshape->setline(),
swfshape->addfill(), swfshape->setleftfill(),
swfshape->setrightfill(), swfshape->movepento(),
swfshape->movepen(), swfshape->drawlineto(),
swfshape->drawline(), swfshape->drawcurveto()
et swfshape->drawcurve().

Ce exemple simple dessine un quadrant d'ellipse rouge.

Exemple 1. Exemple avec swfshape()

<?php
  $s = new SWFShape();
  $s->setLine(40, 0x7f, 0, 0);
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(200, 200);
  $s->drawLineTo(6200, 200);
  $s->drawLineTo(6200, 4600);
  $s->drawCurveTo(200, 4600, 200, 200);
  $m = new SWFMovie();
  $m->setDimension(6400, 4800);
  $m->setRate(12.0);
  $m->add($s);
  $m->nextFrame();
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFShape->setRightFill | Niveau supérieur | SWFSprite->add


SWFSprite->add

(no version information, might be only in CVS)

SWFSprite->add -- Ajoute un objet à un sprite

Description

mixed swfsprite->add ( ressource object)

swfsprite->add() ajoute une swfshape(), un
swfbutton(), un swftext(),
une swfaction() ou une autre animation
swfsprite().

Pour les objets affichables (swfshape(),
swfbutton(), swftext(),
swfaction() or swfsprite()),
cela retourne une ressource sur l'objet dans la liste d'affichage.

Précédent | Sommaire | Suivant
SWFShape | Niveau supérieur | SWFSprite->nextframe


SWFSprite->nextframe

(no version information, might be only in CVS)

SWFSprite->nextframe -- Va à la prochaine image du sprite.

Description

void swfsprite->nextframe ( void )

swfsprite->setframes() se déplace à la prochaine image du sprite.

Précédent | Sommaire | Suivant
SWFSprite->add | Niveau supérieur | SWFSprite->remove


SWFSprite->remove

(no version information, might be only in CVS)

SWFSprite->remove -- Supprime un objet dans un sprite

Description

void swfsprite->remove ( ressource object)

swfsprite->remove() supprime une swfshape(), un
swfbutton(), un swftext(),
une swfaction() ou un swfsprite() du
sprite courant.

Précédent | Sommaire | Suivant
SWFSprite->nextframe | Niveau supérieur | SWFSprite->setframes


SWFSprite->setframes

(no version information, might be only in CVS)

SWFSprite->setframes -- Fixe le nombre maximum d'image dans le sprite.

Description

void swfsprite->setframes ( int numberofframes)

swfsprite->setframes() fixe le nombre total d'images de l'animation à numberofframes.

Précédent | Sommaire | Suivant
SWFSprite->remove | Niveau supérieur | SWFSprite


SWFSprite

(PHP 4 >= 4.0.5)

SWFSprite -- Crée un sprite

Description

new swfsprite ( void )

swfsprite() sont aussi connue sous le nom de "clip" : ils permettent la création d'objet animé dans une animation, avec un scénario propre. De ce fait, un sprite a les mêmes méthodes qu'une animation.

swfsprite() a les méthodes suivantes :
swfsprite->add(),
swfsprite->remove(), swfsprite->nextframe()
et swfsprite->setframes().

Ce exemple pratique fait tourner un superbe carré rouge.

Exemple 1. Exemple de swfsprite()

<?php
  $s = new SWFShape();
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-500,-500);
  $s->drawLineTo(500,-500);
  $s->drawLineTo(500,500);
  $s->drawLineTo(-500,500);
  $s->drawLineTo(-500,-500);
  $p = new SWFSprite();
  $i = $p->add($s);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $m = new SWFMovie();
  $i = $m->add($p);
  $i->moveTo(1500,1000);
  $i->setName("blah");
  $m->setBackground(0xff, 0xff, 0xff);
  $m->setDimension(3000,2000);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFSprite->setframes | Niveau supérieur | SWFText->addString


SWFText->addString

(no version information, might be only in CVS)

SWFText->addString -- Ajoute du texte

Description

void swftext->addstring ( string string)

swftext->addstring() ajoute le texte string au texte courant, et le dessine. Le stylo est situé sur la ligne de base du texte, c'est-à-dire que le texte sera écrit horizontalement.

Précédent | Sommaire | Suivant
SWFSprite | Niveau supérieur | SWFText->getWidth


SWFText->getWidth

(no version information, might be only in CVS)

SWFText->getWidth -- Calcule la longueur d'une chaîne

Description

void swftext->addstring ( string string)

swftext->addstring() retourne la taille de la chaîne string, une fois qu'elle est dessinée avec la police et l'espaceement courant.

Précédent | Sommaire | Suivant
SWFText->addString | Niveau supérieur | SWFText->moveTo


SWFText->moveTo

(no version information, might be only in CVS)

SWFText->moveTo -- Déplace le stylo de texte

Description

void swftext->moveto ( int x, int y)

swftext->moveto() déplace le style (ou le curseur, si ça a un sens) jusqu'au coordonnées (x,y) dans l'espace de coordonnées du texte. Si x ou y vaut 0, la valeur de coordonnées de la dimension reste la même. C'est ennuyeux, et cela devrait être corrigé.

Précédent | Sommaire | Suivant
SWFText->getWidth | Niveau supérieur | SWFText->setColor


SWFText->setColor

(no version information, might be only in CVS)

SWFText->setColor -- Modifie la couleur de la police

Description

void swftext->setcolor ( int red, int green, int blue [, int a])

swftext->setspacing() change la couleur de la police courante. Par défaut, c'est noir. La couleur est représentée avec la convention RGB.

Précédent | Sommaire | Suivant
SWFText->moveTo | Niveau supérieur | SWFText->setFont


SWFText->setFont

(no version information, might be only in CVS)

SWFText->setFont -- Sélectionne la police courante

Description

void swftext->setfont ( string font)

swftext->setfont() remplace la police courante par font.

Précédent | Sommaire | Suivant
SWFText->setColor | Niveau supérieur | SWFText->setHeight


SWFText->setHeight

(no version information, might be only in CVS)

SWFText->setHeight -- Modifie la hauteur de la police courante

Description

void swftext->setheight ( int height)

swftext->setheight() fixe la hauteur courante de la police courante à height. Par défaut, c'est 240.

Précédent | Sommaire | Suivant
SWFText->setFont | Niveau supérieur | SWFText->setSpacing


SWFText->setSpacing

(no version information, might be only in CVS)

SWFText->setSpacing -- Modifie l'espacement de police

Description

void swftext->setspacing ( double spacing)

swftext->setspacing() fixe l'espacement de police à spacingspacing. Par défaut, c'est 1.0. 0 signifie que toutes les lettres seront écrites au même point. Cela fonctionne pas terrible, car l'avance des lettres augmente, et l'espacement entre lettre n'est pas toujours le même. Il faudra que je l'explique plus clairement. Ou bien que je corrige les erreurs.

Précédent | Sommaire | Suivant
SWFText->setHeight | Niveau supérieur | SWFText


SWFText

(PHP 4 >= 4.0.5)

SWFText -- Crée un nouvel objet texte.

Description

new swftext ( void )

swftext() crée un nouvel objet texte, prêt à être manipulé.

SWFText a les méthodes suivantes :
swftext->setfont(),
swftext->setheight(), swftext->setspacing(),
swftext->setcolor(), swftext->moveto(),
swftext->addstring() et swftext->getwidth().

Cet exemple simple va afficher la phrase "PHP fait du Flash avec Ming" sur un fond blanc.

Exemple 1. Exemple avec swftext()

<?php
  $f = new SWFFont("Techno.fdb");
  $t = new SWFText();
  $t->setFont($f);
  $t->moveTo(200, 2400);
  $t->setColor(0xff, 0xff, 0);
  $t->setHeight(1200);
  $t->addString("PHP fait du Flash avec Ming!!");
  $m = new SWFMovie();
  $m->setDimension(5400, 3600);
  $m->add($t);
  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Précédent | Sommaire | Suivant
SWFText->setSpacing | Niveau supérieur | SWFTextField->addstring


SWFTextField->addstring

(no version information, might be only in CVS)

SWFTextField->addstring -- Ajoute au texte

Description

void swftextfield->addstring ( string string)

swftextfield->setname() concatène la chaîne string avec la chaîne courante.

Précédent | Sommaire | Suivant
SWFText | Niveau supérieur | SWFTextField->align


SWFTextField->align

(no version information, might be only in CVS)

SWFTextField->align -- Modifie l'alignement du texte

Description

void swftextfield->align ( int alignement)

swftextfield->align() change l'alignement du texte par alignement. Les valeurs valides pour alignement sont : SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER et SWFTEXTFIELD_ALIGN_JUSTIFY.

Précédent | Sommaire | Suivant
SWFTextField->addstring | Niveau supérieur | SWFTextField->setbounds


SWFTextField->setbounds

(no version information, might be only in CVS)

SWFTextField->setbounds -- Sélectionne la largeur et hauteur du champ

Description

void swftextfield->setbounds ( int width, int height)

swftextfield->setbounds() fixe la longueur du champ à width et sa hauteur à height. Si vous ne fixez pas les bords vous-mêmes, Ming tentera de les deviner lui-même (mais ne le laissez pas faire!!).

Précédent | Sommaire | Suivant
SWFTextField->align | Niveau supérieur | SWFTextField->setcolor


SWFTextField->setcolor

(no version information, might be only in CVS)

SWFTextField->setcolor -- Modifie la couleur du champ texte

Description

void swftextfield->setcolor ( int red, int green, int blue [, int a])

swftextfield->setcolor() modifie la couleur du champ texte, en la remplaçant par la couleur fournie. Par défaut, c'est noir opaque. Les couleurs sont représentées en convention RGB.

Précédent | Sommaire | Suivant
SWFTextField->setbounds | Niveau supérieur | SWFTextField->setFont


SWFTextField->setFont

(no version information, might be only in CVS)

SWFTextField->setFont -- Modifie la police du champ

Description

void swftextfield->setfont ( string font)

swftextfield->setfont() remplace la police courante par la police font (police client?).

Précédent | Sommaire | Suivant
SWFTextField->setcolor | Niveau supérieur | SWFTextField->setHeight


SWFTextField->setHeight

(no version information, might be only in CVS)

SWFTextField->setHeight -- Modifie la hauteur de la police du champ texte.

Description

void swftextfield->setheight ( int height)

swftextfield->setheight() modifie la hauteur de la police du champ texte par height. Par défaut, c'est 240.

Précédent | Sommaire | Suivant
SWFTextField->setFont | Niveau supérieur | SWFTextField->setindentation


SWFTextField->setindentation

(no version information, might be only in CVS)

SWFTextField->setindentation -- Modifie l'indentation de la première ligne.

Description

void swftextfield->setindentation ( int width)

swftextfield->setindentation() modifie l'indentation de la première ligne du champ texte, en la fixant à width.

Précédent | Sommaire | Suivant
SWFTextField->setHeight | Niveau supérieur | SWFTextField->setLeftMargin


SWFTextField->setLeftMargin

(no version information, might be only in CVS)

SWFTextField->setLeftMargin -- Modifie la marge de gauche.

Description

void swftextfield->setleftmargin ( int width)

swftextfield->setleftmargin() modifie la marge de gauche du champ texte à width. Par défaut, c'est 0.

Précédent | Sommaire | Suivant
SWFTextField->setindentation | Niveau supérieur | SWFTextField->setLineSpacing


SWFTextField->setLineSpacing

(no version information, might be only in CVS)

SWFTextField->setLineSpacing -- Modifie l'espacement de lignes.

Description

void swftextfield->setlinespacing ( int height)

swftextfield->setlinespacing() modifie l'espacement de lignes, en le fixant à height. Par défaut, c'est 40.

Précédent | Sommaire | Suivant
SWFTextField->setLeftMargin | Niveau supérieur | SWFTextField->setMargins


SWFTextField->setMargins

(no version information, might be only in CVS)

SWFTextField->setMargins -- Modifie les marges du champ texte.

Description

void swftextfield->setmargins ( int left, int right)

swftextfield->setmargins() modifie les deux marges du champ texte : left sera la nouvelle largeur de la marge de gauche, et right, celle de gauche. Par défaut, elles sont toutes les deux à 0.

Précédent | Sommaire | Suivant
SWFTextField->setLineSpacing | Niveau supérieur | SWFTextField->setname


SWFTextField->setname

(no version information, might be only in CVS)

SWFTextField->setname -- Nomme le champ texte

Description

void swftextfield->setname ( string name)

swftextfield->setname() baptise le champ texte name. Cela servira pour les formulaires et les actions.

Précédent | Sommaire | Suivant
SWFTextField->setMargins | Niveau supérieur | SWFTextField->setrightMargin


SWFTextField->setrightMargin

(no version information, might be only in CVS)

SWFTextField->setrightMargin -- Modifie la marge de droite.

Description

void swftextfield->setrightmargin ( int width)

swftextfield->setrightmargin() modifie la marge de gauche du champ texte à width. Par défaut, c'est zéro.

Précédent | Sommaire | Suivant
SWFTextField->setname | Niveau supérieur | SWFTextField


SWFTextField

(PHP 4 >= 4.0.5)

SWFTextField -- Crée un nouveau champ texte

Description

new swftextfield ( [int flags])

swftextfield() crée un nouveau champ texte. Les champs textes sont moins souples que les swftext(), car ils ne peuvent être tournés, mis à l'échelle ou incliné, mais ils peuvent être utilisés sous forme de champs de formulaire, et ils peuvent utiliser des polices navigateur.

Les flags optionnels modifient les comportements du champ. Ils peuvent prendre les valeurs suivantes :

  • SWFTEXTFIELD_NOEDIT : indique que le champ ne doit pas être éditable.

  • SWFTEXTFIELD_PASSWORD : indique que c'est un champ mot de passe

  • SWFTEXTFIELD_DRAWBOX : dessine le contour du champ

  • SWFTEXTFIELD_MULTILINE : autorise les lignes multiples

  • SWFTEXTFIELD_WORDWRAP : autorise la mise en forme du texte

  • SWFTEXTFIELD_NOSELECT : rend le champ non-sélectionnable

Les flags peuvent être combinés avec l'opérateur OR. Par exemple :
<?php
$t = newSWFTextField(SWFTEXTFIELD_PASSWORD | SWFTEXTFIELD_NOEDIT);
?>
crée un champ de mot de passe totalement inéditable (et inutile).

SWFTextField a les méthodes suivantes :
swftextfield->setfont(),
swftextfield->setbounds(), swftextfield->align(),
swftextfield->setheight(), swftextfield->setleftmargin(),
swftextfield->setrightmargin(), swftextfield->setmargins(),
swftextfield->setindentation(), swftextfield->setlinespacing(),
swftextfield->setcolor(), swftextfield->setname() et
swftextfield->addstring().

Précédent | Sommaire | Suivant
SWFTextField->setrightMargin | Niveau supérieur | Fonctions diverses


Fonctions diverses

Manuel PHP
Précédent Suivant

LX. Fonctions diverses

Introduction

Ces fonctions ont été placées là, car elles ne rentraient dans aucune catégorie adéquate.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
ignore_user_abort | "0" | PHP_INI_ALL
highlight.string | #DD0000 | PHP_INI_ALL
highlight.comment | #FF9900 | PHP_INI_ALL
highlight.keyword | #007700 | PHP_INI_ALL
highlight.bg | #FFFFFF | PHP_INI_ALL
highlight.default | #0000BB | PHP_INI_ALL
highlight.html | #000000 | PHP_INI_ALL
browscap | NULL | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

ignore_user_abort bool

TRUE par défaut. Si changée à FALSE les scripts seront terminés aussitôt qu'ils essaieront d'envoyer des données à un client qui a annulé la connexion.

Voir aussi ignore_user_abort().

highlight.xxx string

Couleurs utilisées pour le mode Syntax Highlighting. Ces options peuvent prendre n'importe quelles valeurs valides dans <font color="??????">.

browscap string

Nom du fichier de descriptif des clients HTML. Voir aussi get_browser().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

CONNECTION_ABORTED (integer)

CONNECTION_NORMAL (integer)

CONNECTION_TIMEOUT (integer)

Table des matières
connection_aborted -- Indique si l'internaute a abandonné la connexion HTTP
connection_status -- Retourne les bits de status de la connexion HTTP
connection_timeout -- Indique si le script a expiré
constant -- Retourne la valeur d'une constante
define -- Définit une constante
defined -- Vérifie l'existence d'une constante
die -- Alias de la fonction exit()
eval -- Exécute une chaîne comme un script PHP
exit -- Termine le script courant
get_browser -- Indique de quoi est capable le navigateur client.
highlight_file -- Colorisation de la syntaxe d'un fichier
highlight_string -- Applique la syntaxe colorisée à du code PHP
ignore_user_abort -- Active l'option décidant si, lors de la déconnexion du client, le script doit poursuivre son exécution ou non.
pack -- Compacte des données dans une chaîne binaire
show_source -- Génère la syntaxe colorisée d'un fichier PHP
sleep -- Retarde l'exécution
uniqid -- Génère un identifiant unique
unpack -- Déconditionne des données depuis une chaîne binaire.
usleep -- Retarde l'exécution en micro-secondes

Précédent | Sommaire | Suivant
SWFTextField | Niveau supérieur | connection_aborted


connection_aborted

(PHP 3>= 3.0.7, PHP 4 )

connection_aborted -- Indique si l'internaute a abandonné la connexion HTTP

Description

int connection_aborted ( void )

connection_aborted() retourne TRUE si le client a abandonné la connexion. Reportez-vous à Gestion des connexions du chapitre Caractéristiques.

Voir aussi connection_status().

Précédent | Sommaire | Suivant
Fonctions diverses | Niveau supérieur | connection_status


connection_status

(PHP 3>= 3.0.7, PHP 4 )

connection_status -- Retourne les bits de status de la connexion HTTP

Description

int connection_status ( void )

connection_status() retourne les bits de statut de la connexion. Reportez-vous à la section gestion des connexions pour plus de détails.

Voir aussi connection_aborted().

Précédent | Sommaire | Suivant
connection_aborted | Niveau supérieur | connection_timeout


connection_timeout

(PHP 3>= 3.0.7, PHP 4 <= 4.0.4)

connection_timeout -- Indique si le script a expiré

Description

bool connection_timeout ( void )

connection_timeout() retourne TRUE si le script a expiré. Reportez-vous à la section gestion des connexions pour plus de détails.

Deprecated

This function is deprecated, and doesn't even exist anymore as of 4.0.5.

Voyez la section sur la Gestion de la connexion dans la section Caractéristiques pour plus de détails.

Précédent | Sommaire | Suivant
connection_status | Niveau supérieur | constant


constant

(PHP 4 >= 4.0.4)

constant -- Retourne la valeur d'une constante

Description

mixed constant ( string name)

constant() retourne la valeur de la constante name.

constant() est pratique lorsque vous devez lire la valeur d'une constante, mais que vous ne savez pas son nom que durant l'exécution du script. Par exemple, ce nom peut être le résultat d'une fonction.

Exemple 1. Exempe avec constant()

<?php
  define ("MAXSIZE", 100);
  echo MAXSIZE;
  echo constant("MAXSIZE");   // identique a la ligne precedente
?>

Voir aussi define(), defined() et la section sur les constantes.

Précédent | Sommaire | Suivant
connection_timeout | Niveau supérieur | define


define

(PHP 3, PHP 4 )

define -- Définit une constante

Description

bool define ( string name, mixed value [, bool case_insensitive])

define() définit la constante de nom name et de valeurvalue. Voyez la section sur les constantes pour plus de détails sur les constantes.

Le nom de la constante est donné par le paramètre name; sa valeur est donnée par value.

Le troisième paramètre optionnel case_insensitive est une valeur booléenne. S'il vaut TRUE, le nom de la constante sera insensible à la casse : CONSTANT et Constant représentent des valeurs identiques. Par défaut, ces constantes représenteront des valeurs différentes.

Exemple 1. Définition d'une constante

<?php
define ("CONSTANT", "Bonjour &agrave; tous.");
echo CONSTANT; // affiche "Bonjour &agrave; tous."
echo Constant; // affiche "Constant" et une alerte

define ("BONJOUR", "Salut toi.",TRUE);
echo BONJOUR; // affiche "Salut toi."
echo Bonjour; // affiche "Salut toi."

?>

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi defined(), constant() et la section sur les constantes.

Précédent | Sommaire | Suivant
constant | Niveau supérieur | defined


defined

(PHP 3, PHP 4 )

defined -- Vérifie l'existence d'une constante

Description

bool defined ( string name)

defined() retourne TRUE si la constante nommée name a été définie, et FALSE sinon. Pour tester l'existence d'une fonction utilisez function_exists().

Exemple 1. Vérifier la présence de constantes avec defined()

<?php
if (defined("CONSTANT")){
// Notez que le nom de la constante est entre guillemets
    echo CONSTANT;
    }
?>

Voir aussi define(), constant(), get_defined_constants(), la section sur les constantes et function_exists().

Précédent | Sommaire | Suivant
define | Niveau supérieur | die


die

(no version information, might be only in CVS)

die -- Alias de la fonction exit()

Description

void die ( string message)

die() est un alias de exit().

Précédent | Sommaire | Suivant
defined | Niveau supérieur | eval


eval

(PHP 3, PHP 4 )

eval -- Exécute une chaîne comme un script PHP

Description

mixed eval ( string code_str)

eval() évalue la chaîne code_str comme un script PHP. Parmi les utilisations possibles, cette fonction permet de stocker du code dans une base de données, pour utilisation ultérieure.

Il faut bien garder en tête que le code passé à eval() doit être valide, y compris les points virgules de fin de ligne et les séquences d'échappement, sinon l'exécution se terminera.

N'oubliez pas que les variables utilisées dans la fonction eval() resteront accessibles dans le script principal.

Une comande return terminera l'évaluation de la chaîne immédiatement. En PHP 4, eval() retourne NULL sauf si return est appelée dans le code évalué, auquel cas la valeur passée à return est retournée. En PHP 3, eval() ne retourne par de valeur.

Exemple 1. Exemple avec eval() - concaténation de texte

<?php
  $string = 'tasse';
  $name = 'caf&eacute;';
  $str = 'Ceci est une $string avec mon $name dedans.<br />';
  echo $str;
  eval( "\$str = \"$str\";" );
  echo $str;
?>

L'exemple ci-dessus devrait afficher :
Ceci est une $string avec mon $name dedans.
Ceci est une tasse avec mon caf&eacute; dedans.

Tuyau : Comme pour toutes les fonctions qui affichent directement des résultats au navigateur, vous pouvez utiliser les fonctions de gestion des sorties pour capturer le contenu de cette fonction et le sauver, par exemple, dans une chaîne.

Précédent | Sommaire | Suivant
die | Niveau supérieur | exit


exit

(PHP 3, PHP 4 )

exit -- Termine le script courant

Description

void exit ( [string status])

void exit ( int status)

Note : exit() n'est pas une véritable fonction, mais un élément de langage.

exit() termine l'exécution du script courant. Elle n'a pas de valeur de retour (et pour cause!), mais elle utilisera le message status comme message de fin d'exécution.

Note : La fonction die() est un alias de la fonction exit().

Exemple 1. Exemple avec exit()

<?php
  $filename = '/chemin/jusqua/fichier';
  $file = fopen ($filename, 'r')
  or exit("Impossible d'ouvrir le fichier $filename");
?>

Voir aussi register_shutdown_function().

Précédent | Sommaire | Suivant
eval | Niveau supérieur | get_browser


get_browser

(PHP 3, PHP 4 )

get_browser -- Indique de quoi est capable le navigateur client.

Description

object get_browser ( [string user_agent])

get_browser() essaie de déterminer les capacités du navigateur client. Cela se fait en lisant les informations dans le fichier browscap.ini. Par défaut, la valeur de $HTTP_USER_AGENT est utilisée. Cependant, vous pouvez passer n'importe quelle valeur avec le paramètre optionnel user_agent à get_browser().

Les informations sont retournées sous forme d'un objet, dont les différents membres contiendront des informations, telles que les versions majeures et mineures et des chaînes d'identification; des booléens pour des caractéristiques telles que frames, JavaScript, et cookies; et ainsi de suite.

Même si browscap.ini contient des informations sur de nombreux clients, il compte sur les utilisateurs pour être mis à jour. Le format du fichier est facilement compréhensible.

L'exemple suivant montre comment on peut lister les informations disponibles :

Exemple 1. Exemple avec get_browser()

<?php
echo $_SERVER['HTTP_USER_AGENT'] . "<hr />\n";

$browser = get_browser();

foreach ($browser as $name => $value) {
    print "<b>$name</b> $value <br />\n";
}

?>

L'affichage devrait ressembler à ceci :

Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr />
<b>browser_name_pattern:</b> Mozilla/4\.5.*<br />
<b>parent:</b> Netscape 4.0<br />
<b>platform:</b> Linux<br />
<b>majorver:</b> 4<br />
<b>minorver:</b> 5<br />
<b>browser:</b> Netscape<br />
<b>version:</b> 4<br />
<b>frames:</b> 1<br />
<b>tables:</b> 1<br />
<b>cookies:</b> 1<br />
<b>backgroundsounds:</b> <br />
<b>vbscript:</b> <br />
<b>javascript:</b> 1<br />
<b>javaapplets:</b> 1<br />
<b>activexcontrols:</b> <br />
<b>beta:</b> <br />
<b>crawler:</b> <br />
<b>authenticodeupdate:</b> <br />
<b>msn:</b> <br />

Pour fonctionner, votre configuration browscap dans le php.ini doit pointer sur le fichier browscap.ini de votre système. browscap.ini n'est pas fourni avec PHP mais vous pouvez trouver une version à jour sur ce site. Par défaut, la directive browscap est désactivée.

Note : La valeur cookies indique simplement que le navigateur est capable d'accepter les cookies, et n'indique pas si l'utilisateur les a activé sur son navigateur. Le seul moyen de tester l'activation des cookies est d'en poser un avec la fonction setcookie(), de recharger la page et de vérifier que le cookie existe toujours.

Note : Sur les versions de PHP plus ancienne que la 4.0.6, vous devez passer le nom du naviageteur comme troisième paramètre optionnel user_agent, et si la directive register_globals vaut off. Dans ce cas, vous devrez utiliser $HTTP_SERVER_VARS['HTTP_USER_AGENT'].

Précédent | Sommaire | Suivant
exit | Niveau supérieur | highlight_file


highlight_file

(PHP 4 )

highlight_file -- Colorisation de la syntaxe d'un fichier

Description

mixed highlight_file ( string filename [, bool return])

highlight_file() affiche la syntaxe colorisée du fichier filename, en utilisant les couleurs définies dans le moteur interne de PHP.

Si le second paramètre optionnel return vaut TRUE alors highlight_file() retournera le code généré, au lieu de l'afficher. Si le second paramètre ne vaut pas TRUE alors highlight_file() retournera TRUE en cas de succès, et FALSE sinon.

Note : Le paramètre return a été ajouét en PHP 4.2.0. Avant cela, la fonction se comportait comme si ce paramètre avait sa valeur par défaut de FALSE

Note : Beaucoup de soin doit être apporté lors de l'utilisation de show_source() et highlight_file() pour s'assurer que vous ne révélez pas d'informations critiques telles que des mots de passe ou d'autres informations qui pourrait créer des fuites d'information.

Note : Depuis PHP 4.2.1, cette fonction est aussi affectée par safe_mode et open_basedir.

Exemple 1. Colorisation d'URL

Pour configurer une URL qui peut coloriser n'importe quel script que vous lui passez, nous avons besoin d'utiliser la directive Apache "ForceType", pour générer une URL exploitable, puis utiliser la fonction highlight_file() pour afficher un code propre.

Dans votre configuration HTTP httpd.conf, vous pouvez ajouter le code suivant :

<Location /source>
    ForceType application/x-httpd-php
</Location>

Puis, faire un fichier appelé source, que vous placez dans votre racine de site web.

<html>
<head>
<title>Coloration de la source</title>
</head>
<body bgcolor="white">
<?php
    $script = getenv("PATH_TRANSLATED");
    if (!$script) {
      echo "<br /><b>Erreur : Le nom du script est n&eacute;cessaire</b><br>";
    } else {
      if (ereg("(\\.php|\\.inc)$",$script)) {
        echo "<h1>Source de : " . getenv('PATH_INFO') . "</h1>\n<hr />\n";
        highlight_file($script);
      } else {
        echo "<h1>Erreur: Seuls les noms de fichier PHP ou de fichiers PHP inclus sont autoris&eacute;s</h1>";
      }
    }
    echo "<hr />Traitement : " . date("Y/M/d H:i:s", time());
?>
</body>
</html>

Alors, vous pourrez utiliser une URL telle que celle ci-dessous pour afficher une version colorisée de votre script /path/to/script.php.

http://votre.serveur.com/source/jusqu/au/script.php

Voir aussi highlight_string() et show_source().

Précédent | Sommaire | Suivant
get_browser | Niveau supérieur | highlight_string


highlight_string

(PHP 4 )

highlight_string -- Applique la syntaxe colorisée à du code PHP

Description

mixed highlight_string ( string str [, bool return])

highlight_string() affiche la version colorisée du code PHP contenu dans le paramètre str, en utilisant les couleurs du système interne de colorisation de PHP.

Si le second paramètre optionnel return est fourni, et vaut TRUE alors highlight_string() retournera la chaîne colorisée au lieu de l'afficher immédaitement. Si le second paramètre ne vaut pas TRUE alors highlight_string() retournera TRUE en cas de succès, et FALSE sinon.

Note : Le paramètre return est disponible depuis PHP 4.2.0. Auparavant, il prenait la valeur par défaut de FALSE

Voir aussi highlight_file() et show_source().

Précédent | Sommaire | Suivant
highlight_file | Niveau supérieur | ignore_user_abort


ignore_user_abort

(PHP 3>= 3.0.7, PHP 4 )

ignore_user_abort -- Active l'option décidant si, lors de la déconnexion du client, le script doit poursuivre son exécution ou non.

Description

int ignore_user_abort ( [int setting])

ignore_user_abort() active l'option décidant si, lors de la déconnexion du client, le script doit poursuivre son exécution ou non. La fonction renvoie le paramétrage précédent et elle peut être appelée sans argument pour ne pas changer le paramétrage courant. Voir le paragraphe gestion des connexions dans le chapitre caractéristiques pour une description plus complète des manipulations de connexion en PHP.

Précédent | Sommaire | Suivant
highlight_string | Niveau supérieur | pack


pack

(PHP 3, PHP 4 )

pack -- Compacte des données dans une chaîne binaire

Description

string pack ( string format [, mixed args])

pack() compacte les arguments dans une chaîne binaire, suivant le format format. pack() retourne la chaîne binaire.

L'idée vient du Perl et tout le formatage fonctionne de la même façon qu'en Perl, mais quelques formats manquent encore (comme, "u" ). La chaîne de format est composée d'une série de codes de formats, suivis par un quantificateur optionnel. Le quantificateur peut être un entier, ou * pour la répétition indéfinie. Pour les formats a, A, h et H, le quantificateur spécifie combien de caractères d'un argument sont pris; pour @, c'est la position absolue où placer les données, et pour le reste, c'est le nombre de répétitions. Actuellement, les formats suivants sont implémentés :

  • Une chaîne complétée avec NULL

  • Une chaîne complétée avec espace (SPACE)

  • Chaîne hexadécimale h, bit de poids faible en premier.

  • Chaîne hexadécimale H, bit de poids fort en premier.

  • c caractère signé

  • C caractère non signé

  • s entier court signé (toujours sur 16 bits, ordre des bits dépendant de la machine).

  • S entier court non signé (toujours 16 bits, ordre des bits dépendant de la machine).

  • n entier court signé (toujours 16 bits, ordre des bits big endian)

  • v entier cours non signé (toujours 16 bits, ordre des bits little endian)

  • i entier signé (taille et ordre des bits dépendants de la machine)

  • I entier non signé (taille et ordre des bits dépendants de la machine)

  • l entier long signé (toujours 32 bits, ordre des bits dépendant de la machine)

  • L entier long non signé (toujours 32 bits, ordre des bits dépendant de la machine)

  • N entier long non signé (toujours 16 bits, ordre des bits big endian)

  • V entier long non signé (toujours 16 bits, ordre des bits little endian)

  • f nombre à virgule flottante (taille et représentation dépendantes de la machine)

  • d nombre à virgule flottante double (taille et représentation dépendantes de la machine)

  • x bit NULL

  • X recule d'un octet

  • @ rempli avec NULL, jusqu'à une position absolue

Exemple 1. Compactage d'une chaîne

<?php
  $binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);
?>

La chaîne binaire résultante aura 6 octets de long, et contiendra la séquence 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Notez que la distinction entre signé et non signé n'affecte que la fonction unpack(), tandis que la fonction pack() fournira le même résultat pour les deux formats.

De plus, notez que PHP enregistre de manière interne et intégrale les valeurs : cette représentation dépend de la machine. Si vous essayez d'enregistrer une valeur trop grande, elle risque d'être convertie et de donner lieu à des effets de bords vicieux.

Voir aussi pack().

Précédent | Sommaire | Suivant
ignore_user_abort | Niveau supérieur | show_source


show_source

(PHP 4 )

show_source -- Génère la syntaxe colorisée d'un fichier PHP

Description

bool show_source ( string filename [, bool return])

show_source() est un alias de highlight_file().

Voir aussi highlight_string() et highlight_file().

Précédent | Sommaire | Suivant
pack | Niveau supérieur | sleep


sleep

(PHP 3, PHP 4 )

sleep -- Retarde l'exécution

Description

void sleep ( int seconds)

sleep() retarde l'exécution du programme pendant seconds secondes.

Voir aussi usleep().

Précédent | Sommaire | Suivant
show_source | Niveau supérieur | uniqid


uniqid

(PHP 3, PHP 4 )

uniqid -- Génère un identifiant unique

Description

string uniqid ( string prefix [, bool lcg])

uniqid() retourne un identifiant préfixé unique, basé sur l'heure courante, en micro-secondes. Le préfixe peut servir à identifier facilement différents hôtes, si vous générez simultanément des fichiers depuis plusieurs hôtes, à la même micro-seconde. prefix peut prendre jusqu'à 114 caractères.

Si le paramètre optionnel lcg est TRUE, uniqid() ajoutera une entropie "combined LCG" à la fin de la valeur retournée, ce qui renforcera encore l'unicité de l'identifiant.

Sans prefix (préfixe vide), la chaîne retournée fera 13 caractères. Si lcg est à TRUE, elle fera 23 caractères.

Note : Le paramètre lcg est utilisé à partir de PHP 4 et PHP 3.0.13 et ultérieurs.

Si vous voulez utiliser un identifiant unique, ou bien gérer des cookies, il est recommandé d'utiliser un code tel que celui-ci :

<?php
  $token = md5 (uniqid (""));
  // pas de section aleatoire.
  $better_token = md5 (uniqid (rand()));
  // mieux, difficile a deviner
?>

Ceci va créer un identifiant de 32 caractères (un nombre hexadécimal de 128 ) qui sera très difficile à prédire.

Précédent | Sommaire | Suivant
sleep | Niveau supérieur | unpack


unpack

(PHP 3, PHP 4 )

unpack -- Déconditionne des données depuis une chaîne binaire.

Description

array unpack ( string format, string data)

unpack() déconditionne des données depuis une chaîne binaire avec le format format. unpack() retourne un tableau contenant les éléments déconditionnés.

unpack() se comporte légèrement différemment de la version Perl car les données déconditionnées sont stockées dans un tableau. Pour cela, il faut donner un nom à chaque format utilisé et les séparer par des slash (/).

Exemple 1. Exemple avec unpack()

<?php
  $array = unpack ("c2chars/nint", $binarydata);
?>

Le tableau résultant contiendra les entrées suivantes : "chars1", "chars2" et "int".

Pour plus de détails, reportez-vous à: pack()

Il faut noter que PHP gère les valeurs en interne sous forme signée. Si vous déconditionnez une valeur qui est aussi grande que la taille utilisée en interne par PHP, le résultat se trouvera être un nombre négatif, même s'il a été déconditionné avec l'option " non signé ".

Précédent | Sommaire | Suivant
uniqid | Niveau supérieur | usleep


usleep

(PHP 3, PHP 4 )

usleep -- Retarde l'exécution en micro-secondes

Description

void usleep ( int micro_seconds)

sleep() retarde l'exécution du programme pendant micro_seconds micro-secondes.

Voir aussi sleep().

Note : usleep() est inopérante sous Windows

Précédent | Sommaire | Suivant
unpack | Niveau supérieur | mnoGoSearch


mnoGoSearch

Manuel PHP
Précédent Suivant

LXI. mnoGoSearch

Introduction

Ces fonctions donnent l'accès à mnoGoSearch (anciennement UdmSearch), moteur de recherche du monde libre. mnoGoSearch est une moteur de recherche complet, destinés aux intranet et serveurs web, distribué sous licence GNU. mnoGoSearch offre des fonctionnalités unique, qui en font un excellent outil pour un grand nombre d'applications de recherche dans votre site : recherche de recettes de cuisines ou dans les journaux, recherche dans un site FTP, dans les groupes de news, etc... Il offre un système d'indexation de textes pour les fichiers HTML, PDF et documents textes. mnoGoSearch est constitué de deux parties : l'indexeur, qui effectue les recherches et le moteur de recherche. L'indexeur passe en revue récursivement les sites HTTP, FTP, NEWS ou encore les fichiers locaux, et enregistre des méta-données dans les bases MySQL, pour optimiser les recherches ultérieures. Une fois que tous les documents ont été référéncés, ils sont accessibles au moteur de recherche. Celui-ci est utilisable par interface web. Les langages C CGI, Perl et PHP sont supportés pour effectuer les recherches.

Plus de détails sur le site officiel de mnoGoSearch : http://www.mnogosearch.ru/.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Téléchargez mnoGosearch sur le site http://www.mnogosearch.ru/ et installez le sur votre système. Vous aurez besoin de la version 3.1.10 ou plus récente de mnoGoSearch, pour pouvoir utiliser ces fonction.

Installation

Pour pouvoir les utiliser, vous devez inclure le support en ajoutant l'option --with-mnogosearch. Si vous utilisez cette option sans indiquer le chemin jusqu'à mnogosearch, PHP essaiera de le trouver dans le dossier /usr/local/mnogosearch. Si vous avez installé mnogosearch dans un autre endroit, vous devez l'indiquer comme ceci : --with-mnogosearch=DIR.

Note : PHP supporte naturellement MySQL. Il faut savoir que mnoGoSearch n'est pas compatible avec la librairie interne de PHP, et ne peut fonctionner qu'avec les librairies génériques MySQL. Par conséquent, si vous utilisez mnoGoSearch avec MySQL, indiquez le dossier d'installation de MySQL durant la configuration avec l'option : --with-mnogosearch --with-mysql=/usr.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

UDM_FIELD_URLID (entier)

UDM_FIELD_URL (entier)

UDM_FIELD_CONTENT (entier)

UDM_FIELD_TITLE (entier)

UDM_FIELD_KEYWORDS (entier)

UDM_FIELD_DESC (entier)

UDM_FIELD_DESCRIPTION (entier)

UDM_FIELD_TEXT (entier)

UDM_FIELD_SIZE (entier)

UDM_FIELD_RATING (entier)

UDM_FIELD_SCORE (entier)

UDM_FIELD_MODIFIED (entier)

UDM_FIELD_ORDER (entier)

UDM_FIELD_CRC (entier)

UDM_FIELD_CATEGORY (entier)

UDM_FIELD_LANG (entier)

UDM_FIELD_CHARSET (entier)

UDM_PARAM_PAGE_SIZE (entier)

UDM_PARAM_PAGE_NUM (entier)

UDM_PARAM_SEARCH_MODE (entier)

UDM_PARAM_CACHE_MODE (entier)

UDM_PARAM_TRACK_MODE (entier)

UDM_PARAM_PHRASE_MODE (entier)

UDM_PARAM_CHARSET (entier)

UDM_PARAM_LOCAL_CHARSET (entier)

UDM_PARAM_BROWSER_CHARSET (entier)

UDM_PARAM_STOPTABLE (entier)

UDM_PARAM_STOP_TABLE (entier)

UDM_PARAM_STOPFILE (entier)

UDM_PARAM_STOP_FILE (entier)

UDM_PARAM_WEIGHT_FACTOR (entier)

UDM_PARAM_WORD_MATCH (entier)

UDM_PARAM_MAX_WORD_LEN (entier)

UDM_PARAM_MAX_WORDLEN (entier)

UDM_PARAM_MIN_WORD_LEN (entier)

UDM_PARAM_MIN_WORDLEN (entier)

UDM_PARAM_ISPELL_PREFIXES (entier)

UDM_PARAM_ISPELL_PREFIX (entier)

UDM_PARAM_PREFIXES (entier)

UDM_PARAM_PREFIX (entier)

UDM_PARAM_CROSS_WORDS (entier)

UDM_PARAM_CROSSWORDS (entier)

UDM_PARAM_VARDIR (entier)

UDM_PARAM_DATADIR (entier)

UDM_PARAM_HLBEG (entier)

UDM_PARAM_HLEND (entier)

UDM_PARAM_SYNONYM (entier)

UDM_PARAM_SEARCHD (entier)

UDM_PARAM_QSTRING (entier)

UDM_PARAM_REMOTE_ADDR (entier)

UDM_LIMIT_CAT (entier)

UDM_LIMIT_URL (entier)

UDM_LIMIT_TAG (entier)

UDM_LIMIT_LANG (entier)

UDM_LIMIT_DATE (entier)

UDM_PARAM_FOUND (entier)

UDM_PARAM_NUM_ROWS (entier)

UDM_PARAM_WORDINFO (entier)

UDM_PARAM_WORD_INFO (entier)

UDM_PARAM_SEARCHTIME (entier)

UDM_PARAM_SEARCH_TIME (entier)

UDM_PARAM_FIRST_DOC (entier)

UDM_PARAM_LAST_DOC (entier)

UDM_MODE_ALL (entier)

UDM_MODE_ANY (entier)

UDM_MODE_BOOL (entier)

UDM_MODE_PHRASE (entier)

UDM_CACHE_ENABLED (entier)

UDM_CACHE_DISABLED (entier)

UDM_TRACK_ENABLED (entier)

UDM_TRACK_DISABLED (entier)

UDM_PHRASE_ENABLED (entier)

UDM_PHRASE_DISABLED (entier)

UDM_CROSS_WORDS_ENABLED (entier)

UDM_CROSSWORDS_ENABLED (entier)

UDM_CROSS_WORDS_DISABLED (entier)

UDM_CROSSWORDS_DISABLED (entier)

UDM_PREFIXES_ENABLED (entier)

UDM_PREFIX_ENABLED (entier)

UDM_ISPELL_PREFIXES_ENABLED (entier)

UDM_ISPELL_PREFIX_ENABLED (entier)

UDM_PREFIXES_DISABLED (entier)

UDM_PREFIX_DISABLED (entier)

UDM_ISPELL_PREFIXES_DISABLED (entier)

UDM_ISPELL_PREFIX_DISABLED (entier)

UDM_ISPELL_TYPE_AFFIX (entier)

UDM_ISPELL_TYPE_SPELL (entier)

UDM_ISPELL_TYPE_DB (entier)

UDM_ISPELL_TYPE_SERVER (entier)

UDM_MATCH_WORD (entier)

UDM_MATCH_BEGIN (entier)

UDM_MATCH_SUBSTR (entier)

UDM_MATCH_END (entier)

Table des matières
udm_add_search_limit -- Ajoute différentes limitations de recherche
udm_alloc_agent -- Alloue une session mnoGoSearch
udm_api_version -- Lit la version des API mnoGoSearch
udm_cat_list -- Liste toutes les catégories soeurs d'une catégorie
udm_cat_path -- Lit le chemin de la catégorie courante
udm_check_charset -- Vérifie si un jeu de caractère est supporté par mnogosearch
udm_check_stored -- Vérifie la connexion avec document stocké
udm_clear_search_limits -- Annule toutes les limitations de recherche
udm_close_stored -- Ferme la connexion avec le document enregistré
udm_crc32 -- Retourne la somme de contrôle CRC32 d'une chaîne
udm_errno -- Numéro d'erreur mnoGoSearch
udm_error -- Message d'erreur mnoGoSearch
udm_find -- Effectue une recherche
udm_free_agent -- Détruit une session mnoGoSearch
udm_free_ispell_data -- Libère la mémoire allouée pour ispell
udm_free_res -- Libère un résultat mnoGoSearch
udm_get_doc_count -- Lit le nombre total de documents dans les bases
Udm_Get_Res_Field -- Lit un champ de résultat mnoGoSearch
udm_get_res_param -- Lit les paramètres de résultats mnoGoSearch
udm_load_ispell_data -- Charge les données ispell
udm_open_stored -- Ouvre une connexion avec un document stocké
udm_set_agent_param -- Modifie les paramètres de l'agent mnoGoSearch

Précédent | Sommaire | Suivant
usleep | Niveau supérieur | udm_add_search_limit


udm_add_search_limit

(PHP 4 >= 4.0.5)

udm_add_search_limit -- Ajoute différentes limitations de recherche

Description

int udm_add_search_limit ( int agent, int var, string val)

udm_add_search_limit() retourne TRUE en cas de succès, FALSE en cas d'erreur. udm_add_search_limit() ajoute différentes limitations de recherche.

agent - un identifiant d'Agent, obtenu après un appel à udm_alloc_agent().

var - nom du paramètre de limitation.

val - Valeur du paramètre sus-cité.

var peut prendre les valeurs suivantes :

  • UDM_LIMIT_URL - Définit les limitations sur les URL, pour limiter les recherches à une partie de la base. Ce paramètre supporte les jokers SQL '%' et '_' : '%' remplace n'importe quel nombre de caractères, même zéro caractères, et '_' remplace exactement un caractère. Par exemple, 'http://my.domain.__/catalog' peut remplacer http://my.domain.ru/catalog ou http://my.domain.ua/catalog.

  • UDM_LIMIT_TAG - Définit les limitations par étiquettes. Lors de l'indexation, vous pouvez assigner des étiquettes sur différentes parties d'un site. Les étiquettes de mnoGoSearch 3.1.x sont des lignes, qui peuvent contenir les jokers '%' et '_' : '%' remplace n'importe quel nombre de caractères, même zéro caractères, et '_' remplace exactement un caractère. Par exemple, si vous avez les étiquettes ABCD et ABCE, la limitation de recherche ABC_ limitera la recherche à ces deux étiquettes;

  • UDM_LIMIT_LANG - Définit les limitations par langue.

  • UDM_LIMIT_CAT - Définit les limitations par catégorie. Les catégories sont similaires aux étiquettes, mais elles peuvent être imbriquées. Vous pouvez donc placer des catégories dans d'autres cattégories. Vous devez utiliser deux caractères pour chaque niveau. Vous pouvez utiliser des nombres hexadécimaux allant de 0 à F ou bien sûr une base de 36, allant de 0 à Z. Par exemple la catégorie supérieure 'Auto' vaut 01. Si elle a une sous catégorie 'Renault', cette dernière sera repérée par 01 (catégorie mère) suivie de 01 (dans sa catégorie), ce qui donne "0101". Si 'Auto' a une autre sous-catégorie 'Peugeot', cette dernière aura le numéro 02, et sera identifiée par 0102. Si 'Peugeot' a elle-même une autre sous-catégorie, 'Moteur', elle sera numéroté 01, et identifiée uniquement par 010201. Si vous voulez restreindre les recherches à cette catégorie uniquement, passez cat=010201.

  • UDM_LIMIT_DATE - Définit les limitations par date de modification du document.

    Format de la valeur : une chaîne de caractères, dont le premier caractère est < ou >, puis une date au format unixtimestamp. Par exemple :

    Udm_Add_Search_Limit($udm,UDM_LIMIT_DATE,"<908012006");

    Si > est utilisé, la recherche sera limitée aux documents dont la date de modification est plus grande que celle qui a été entrée. Avec <, c'est le contraire.

Précédent | Sommaire | Suivant
mnoGoSearch | Niveau supérieur | udm_alloc_agent


udm_alloc_agent

(PHP 4 >= 4.0.5)

udm_alloc_agent -- Alloue une session mnoGoSearch

Description

int udm_alloc_agent ( string dbaddr [, string dbmode])

udm_alloc_agent() retourne un agent mnogosearch en cas de succès, FALSE en cas d'erreur. udm_alloc_agent() crée une session avec les paramètres de base de données.

dbaddr est une description de base de données formaté comme une URL. Les options (type, hôte, nom de base de données, port, utilisateur ou mot de passe) servent à se connecter à la base de données SQL. Ne passez aucune valeur si vous souhaitez utiliser le support des fichiers texte intégré. Sinon, utilisez le format : DBAddr DBType:[//[DBUser[:DBPass]@]DBHost[:DBPort]]/DBName/. Actuellement, les valeurs de DBType possibles sont : mysql, pgsql, msql, solid, mssql, oracle, ibase. En fait, si vous avez ajouté un support natif, cette option est inutile. Mais les utilisateurs ODBC doivent spécifier une des valeurs supportées. Si votre type de base de données n'est pas supporté, utilisez le terme "unknown".

dbmode - Vous pouvez sélectionner le mode de stockage des mots dans la base de données. Si vous indiquez "single", tous les mots seront sotckés dans la même table. Si vous indiquez "multi", les mots seront situés dans différentes tables, suivant leur taille. Le mode "multi" est généralement plus rapide, mais requiert plus de tables. Si le mode "crc" est sélectionné, mnoGoSearch enregistrera un entier de 32 bits, calculé avec l'algorithme CRC32, plutot que des des mots. Ce mode requiert moins d'espace disque, et il est beaucoup plus rapide que les modes "single" et "multi". "crc-multi" utilise la même technique de stockage que le mode "crc", mais il stocke aussi les mots dans différentes tables suivant leur taille. Format: DBMode single/multi/crc/crc-multi.

Note : dbaddr et dbmode doit correspondre à ceux qui sont utilisés lors de l'indexation.

Note : En réalité, udm_alloc_agent() n'ouvre pas de connexion, et donc, ne vérifie ni le nom d'utilisateur, ni le mot de passe.

Précédent | Sommaire | Suivant
udm_add_search_limit | Niveau supérieur | udm_api_version


udm_api_version

(PHP 4 >= 4.0.5)

udm_api_version -- Lit la version des API mnoGoSearch

Description

int udm_api_version ( void )

udm_api_version() retourne le numéro de version des API mnoGoSearch. Par exemple, si mnoGosearch 3.1.10 est utilisé, udm_api_version() retournera 30110.

udm_api_version() permet aux utilisateurs d'identifier quelles sont les API disponibles. Par exemple, udm_get_doc_count() n'est disponible qu'à partir de mnoGoSearch 3.1.11.

Exemple avec udm_api_version()

<?php
   if (udm_api_version() >= 30111) {
     print  "Nombre total d'URL dans la base : ".
       udm_get_doc_count($udm)."<br>\n";
   }
?>

Précédent | Sommaire | Suivant
udm_alloc_agent | Niveau supérieur | udm_cat_list


udm_cat_list

(PHP 4 >= 4.0.6)

udm_cat_list -- Liste toutes les catégories soeurs d'une catégorie

Description

array udm_cat_list ( int agent, string category)

udm_cat_list() retourne un tableau contenant la liste de toutes les catégories de même niveau que la catégorie courante.

Cette fonction est pratique pour réaliser des arbres à partir des catégories.

udm_cat_list() retourne un tableau avec le format suivant :

Le tableau est constitué de paires. Les index pairs contiennent les chemins de catégories, les index impairs contiennent les noms des catégories correspondantes.

$array[0] contiendra '020300'
$array[1] contiendra 'Marseille'
$array[2] contiendra '020301'
$array[3] contiendra 'Lille'
$array[4] contiendra '020302'
$array[5] contiendra 'Lyon'
...
etc.

Ce qui peut être affiché comme ceci :

Marseille
Lille
Lyon
...

<?php
  $cat_list_arr=Udm_Cat_List($udm_agent,$cat);
  $cat_list='';
  for ($i=0; $i<count($cat_list_arr); $i+=2) {
    $path=$cat_list_arr[$i];
    $name=$cat_list_arr[$i+1];
    $cat_list .= "<a href=\"$PHP_SELF?cat=$path\">$name</a><br>";
  }
?>

Précédent | Sommaire | Suivant
udm_api_version | Niveau supérieur | udm_cat_path


udm_cat_path

(PHP 4 >= 4.0.6)

udm_cat_path -- Lit le chemin de la catégorie courante

Description

array udm_cat_path ( int agent, string category)

udm_cat_path() retourne un tableau listant les catégories depuis la racine jusqu'à la catégorie courante.

Le paramètre agent est un identifiant de résultat, obtenu après un appel à udm_alloc_agent.

category - La catégorie courante : celle dont on veut le chemin.

udm_cat_path() retourne un tableau avec le format suivant :

Le tableau est constitué de paires. Les index pairs contiennent les chemins de catégories, les index impairs contiennent les noms des catégories correspondantes.

Par exemple, l'appel $array=udm_cat_path($agent, '02031D'); peut retourner le tableau suivant :

$array[0] contiendra ''
$array[1] contiendra 'Root'
$array[2] contiendra '02'
$array[3] contiendra 'Sport'
$array[4] contiendra '0203'
$array[5] contiendra 'Foot'
$array[4] contiendra '02031D'
$array[5] contiendra 'PSG'

Exemple 1. Spécifier une catégorie avec un format hiérachisé

<?php
//Sp&eacute;cifier le chemin de la cat&eacute;gorie courante avec le format suivant
// '> Root > Sport > Foot > PSG'

  $cat_path_arr=Udm_Cat_Path($udm_agent,$cat);
  $cat_path='';
  for ($i=0; $i<count($cat_path_arr); $i+=2) {
    $path=$cat_path_arr[$i];
    $name=$cat_path_arr[$i+1];
    $cat_path .= " > <a href=\"$PHP_SELF?cat=$path\">$name</a> ";
  }
&>

Précédent | Sommaire | Suivant
udm_cat_list | Niveau supérieur | udm_check_charset


udm_check_charset

(PHP 4 >= 4.2.0)

udm_check_charset -- Vérifie si un jeu de caractère est supporté par mnogosearch

Description

int udm_check_charset ( int agent, string charset)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
udm_cat_path | Niveau supérieur | udm_check_stored


udm_check_stored

(PHP 4 >= 4.2.0)

udm_check_stored -- Vérifie la connexion avec document stocké

Description

int udm_check_stored ( int agent, int link, string doc_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
udm_check_charset | Niveau supérieur | udm_clear_search_limits


udm_clear_search_limits

(PHP 4 >= 4.0.5)

udm_clear_search_limits -- Annule toutes les limitations de recherche

Description

int udm_clear_search_limits ( int agent)

udm_clear_search_limits() annule toutes les limitations de recherche imposées, et retourne TRUE.

Précédent | Sommaire | Suivant
udm_check_stored | Niveau supérieur | udm_close_stored


udm_close_stored

(PHP 4 >= 4.2.0)

udm_close_stored -- Ferme la connexion avec le document enregistré

Description

int udm_close_stored ( int agent, int link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
udm_clear_search_limits | Niveau supérieur | udm_crc32


udm_crc32

(PHP 4 >= 4.2.0)

udm_crc32 -- Retourne la somme de contrôle CRC32 d'une chaîne

Description

int udm_crc32 ( int agent, string str)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
udm_close_stored | Niveau supérieur | udm_errno


udm_errno

(PHP 4 >= 4.0.5)

udm_errno -- Numéro d'erreur mnoGoSearch

Description

int udm_errno ( int agent)

udm_errno() retourne le numéro d'erreur mnoGoSearch, ou bien 0 sinon.

Le paramètre agent est un identifiant de résultat, obtenu après un appel à udm_alloc_agent.

udm_errno() retourne le numéro de l'erreur généré par l'agent agent.

Précédent | Sommaire | Suivant
udm_crc32 | Niveau supérieur | udm_error


udm_error

(PHP 4 >= 4.0.5)

udm_error -- Message d'erreur mnoGoSearch

Description

string udm_error ( int agent)

udm_errno() retourne le message d'erreur mnoGoSearch, ou bien une chaîne vide sinon.

Le paramètre agent est un identifiant de résultat, obtenu après un appel à udm_alloc_agent.

udm_error() retourne le numéro de l'erreur généré par l'agent agent.

Précédent | Sommaire | Suivant
udm_errno | Niveau supérieur | udm_find


udm_find

(PHP 4 >= 4.0.5)

udm_find -- Effectue une recherche

Description

int udm_find ( int agent, string query)

udm_add_search_limit() retourne TRUE en cas de succès, et FALSE en cas d'erreur.

La recherche en elle-même. Le premier argument agent est la session, le second est la query. Pour rechercher, entrez les mots avec lesquels que vous voulez faire une recherche, puis cliquez sur le bouton d'envoi. Par exemple, "mysql odbc". Vous ne devez pas utiliser de guillemets doubles ", car ils sont utilisés par mnoGoSearch pour séparer une requête en mots. Avec l'exemple ci-dessus, mnoGoSearch va rechercher les pages contenant "mysql" et/ou "odbc". Les meilleures réponses seront classées en premier, et affichées en tête de liste. Si vous sélectionnez le mode de recherche "tous" ("ALL"), la recherche va retourner les documents qui contiennent l'un ou l'autre des mots que vous avez entré. Dans le cas où vous utilisez le mode "ANY", la recheche retourne la lsite des documents qui contiennent l'un ou l'autre des mots. Si vous voulez accéder aux fonctions avancées de recherche, vous pouvez utiliser le mode "BOOL", qui vous permet d'entrer directement des requêtes.

mnoGoSearch utilise les opérateurs booléean suivants :

& - AND, ET logique. Par exemple, "mysql & odbc". mnoGoSearch recherche toutes les URL qui contiennent à la fois les mots "mysql" et "odbc".

| - OR, OU logique. Par exemple, "mysql | odbc". mnoGoSearch recherche toutes les URL qui contiennent soit "mysql", soit "odbc".

~ - NOT, NON logique. Par exemple, "mysql & ~odbc". mnoGoSearch recherche toutes les URL qui contiennent le mot "mysql" mais ne contiennent pas le mot "odbc". Attention : la requête "~odbc" ne trouvera rien!

() - Groupage de commandes pour les requêtes complexes : par exemple, "(mysql | msql) & ~postgres". Le mode par requête est simple et puissant à la fois. Vous pouvez utiliser les commandes booléennes habituelles avec ce mode.

Précédent | Sommaire | Suivant
udm_error | Niveau supérieur | udm_free_agent


udm_free_agent

(PHP 4 >= 4.0.5)

udm_free_agent -- Détruit une session mnoGoSearch

Description

int udm_free_agent ( int agent)

udm_free_res() retourne TRUE en cas de succès, FALSE sinon.

Le paramètre res est un identifiant de résultat, obtenu après un appel à udm-find.

udm_free_agent() détruit l'agent de recherche créé par udm_alloc_agent().

Précédent | Sommaire | Suivant
udm_find | Niveau supérieur | udm_free_ispell_data


udm_free_ispell_data

(PHP 4 >= 4.0.5)

udm_free_ispell_data -- Libère la mémoire allouée pour ispell

Description

int udm_free_ispell_data ( int agent)

udm_free_ispell_data() retourne toujours TRUE.

agent - Agent mnoGoSearch obtenu après un appel à udm_alloc_agent().

Note : udm_free_ispell_data() est supportée à partir de la version 3.1.12 de mnoGoSearch et elle ne fait strictement rien avec les versions précédentes.

Précédent | Sommaire | Suivant
udm_free_agent | Niveau supérieur | udm_free_res


udm_free_res

(PHP 4 >= 4.0.5)

udm_free_res -- Libère un résultat mnoGoSearch

Description

bool udm_free_res ( resource res)

udm_free_res() libère la mémoire de tous les résultats générés.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le paramètre res est un identifiant de résultat, obtenu après un appel à udm_find().

Précédent | Sommaire | Suivant
udm_free_ispell_data | Niveau supérieur | udm_get_doc_count


udm_get_doc_count

(PHP 4 >= 4.0.5)

udm_get_doc_count -- Lit le nombre total de documents dans les bases

Description

int udm_get_doc_count ( int agent)

udm_get_doc_count() retourne le nombre de document dans les bases de données.

agent - Agent mnoGoSearch obtenu après un appel à udm_alloc_agent().

Note : udm_get_doc_count() est supporté à partir de la version mnoGoSearch 3.1.11 ou plus récent.

Précédent | Sommaire | Suivant
udm_free_res | Niveau supérieur | Udm_Get_Res_Field


Udm_Get_Res_Field

(PHP 4 >= 4.0.5)

Udm_Get_Res_Field -- Lit un champ de résultat mnoGoSearch

Description

string udm_get_res_field ( int res, int row, int field)

udm_alloc_agent() retourne la valeur du champ field dans la ligne row, du résultat res, et FALSE sinon.

Le paramètre res est un identifiant de résultat, obtenu après un appel à udm-find.

Le paramètre row est le numéro du lien dans la page courante. Il peut valoir de 0 jusqu'à udm_param_num_rows.

Le paramètre field est l'identifiant de champ, et peut prendre l'une des valeurs suivantes :

  • UDM_FIELD_URL : Champs URL

  • UDM_FIELD_CONTENT : Champs "Content-type" (par exemple, "text/html").

  • UDM_FIELD_TITLE : Titre du document.

  • UDM_FIELD_KEYWORDS : Mots clés du document (balise META KEYWORDS).

  • UDM_FIELD_DESC : Description du document (balise META DESCRIPTION).

  • UDM_FIELD_TEXT : Corps du document (balise body, les premières lignes pour donner une idée du document).

  • UDM_FIELD_SIZE : Taille du document.

  • UDM_FIELD_URLID : Identifiant unique de l'URL.

  • UDM_FIELD_RATING : Score de la page (calculé par mnoGoSearch).

  • UDM_FIELD_MODIFIED : Date de modification au format unixtimestamp.

  • UDM_FIELD_ORDER : Le nombre de documents trouvés.

  • UDM_FIELD_CRC : La valeur CRC du document.

Précédent | Sommaire | Suivant
udm_get_doc_count | Niveau supérieur | udm_get_res_param


udm_get_res_param

(PHP 4 >= 4.0.5)

udm_get_res_param -- Lit les paramètres de résultats mnoGoSearch

Description

string udm_get_res_param ( int res, int param)

udm_get_res_param() retourne les paramètres de résultat en cas de succès, FALSE en cas d'erreur.

Le paramètre res est un identifiant de résultat, obtenu après un appel à udm-find.

Le paramètre param peut prendre les valeurs suivantes :

  • UDM_PARAM_NUM_ROWS - nombre de liens trouvés dans le groupe de résultat courant. C'est la valeur de UDM_PARAM_PAGE_SIZE pour tous les groupes, sauf le dernier.

  • UDM_PARAM_FOUND - Nombre total de résultats trouvés.

  • UDM_PARAM_WORDINFO - Informations sur les mots trouvés, c'est-à-dire que la recherche "un bon libre" retournera "un: stopword, bon:5637, livre: 120"

  • UDM_PARAM_SEARCHTIME - Temps de recherche en secondes

  • UDM_PARAM_FIRST_DOC - le numéro du premier document affiché dans le groupe.

  • UDM_PARAM_LAST_DOC - le numéro du dernier document affiché dans le groupe.

Précédent | Sommaire | Suivant
Udm_Get_Res_Field | Niveau supérieur | udm_load_ispell_data


udm_load_ispell_data

(PHP 4 >= 4.0.5)

udm_load_ispell_data -- Charge les données ispell

Description

int udm_load_ispell_data ( int agent, int var, string val1, string val2, int flag)

udm_load_ispell_data() charge des données ispell. udm_load_ispell_data() retourne TRUE en cas de succès, et FALSE en cas d'erreur.

agent - Agent mnoGoSearch obtenu après un appel à udm_alloc_agent().

var - paramètre indiquant la source des données ispell.

Après avoir utilisé cette fonction, pensez à libérer les données de la mémoire avec udm_free_ispell_data(), même si vous utilisez le mode UDM_ISPELL_TYPE_SERVER.

Le mode de plus rapide est UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT est plus lent, et UDM_ISPELL_TYPE_DB est le plus lent. Ce classement est vrai pour mnoGoSearch 3.1.10 - 3.1.11. Il est prévu d'accélérer le mode DB dans les versions futures, et cela sera plus rapide que le mode TEXT.

  • UDM_ISPELL_TYPE_DB indique que les données ispell doivent être chargée depuis la base SQL. Dans ce cas, les paramètres val1 et val2 sont ignorés et doivent être laissés vides. flag doit valoir 1.

    Note : flag indique qu'après le chargement des données ispell à partir de la source, elles doivent être triées (c'est nécessaire au bon fonctionnement d'ispell). Dans le cas où vous chargez les données depuis un fichier, il peut y avoir plusieurs appels à udm_load_ispell_data(), et il ne vaut pas la peine de trier les valeurs après chaque appel, mais uniquement à la fin. Etant donné qu'en mode DB, toutes les données sont chargées en une seule fois, ce paramètre doit avoir la valeur de 1. Dans ce mode, en cas d'erreur, par exemple si la table ispell est absente, la fonction retournera FALSE et le code d'erreur, avec son message, seront accessibles avec udm_error() et udm_errno().

    Exemple avec udm_load_ispell_data()

    if (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_DB,'','',1)) {
  printf("Erreur #%d: '%s'\n", udm_errno($udm), udm_error($udm));
  exit;
}

  • UDM_ISPELL_TYPE_AFFIX indique que les données ispell doivent être chargée depuis un fichier et initie le chargement. Dans ce cas, val1 définit le code de langue en deux lettre, et val2 est le chemin jusqu'aux fichiers. Notez que si vous utilisez un chemin relatif, le module recherche les fichiers non pas dans UDM_CONF_DIR, mais directement avec le chemin courant, où le script est exécuté. En cas d'erreur avec ce mode, si le fichier est absent, la fonction retourne FALSE, et un message d'erreur sera affiché. Les messages d'erreur ne sont pas accessibles avec udm_error() et udm_errno(), puisque ces fonctions ne traitent que les messages SQL. Reportez-vous à la description du paramètre flag.

    Exemple avec udm_load_ispell_data()

    if ((! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
        (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
        (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
        (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
     exit;
     }

    Note : flag prend la valeur 1 si c'est le dernier appel à cette fonction.

  • UDM_ISPELL_TYPE_SPELL indique que les données ispell doivent être chargées depuis un fichier, et initie le chargement du dictionnaire. Dans ce cas, val1 définit le code langue sur deux lettres, et val2 le chemin du fichier. Notez que si vous utilisez un chemin relatif, le module recherche les fichiers non pas dans UDM_CONF_DIR, mais directement avec le chemin courant, où le script est exécuté. En cas d'erreur avec ce mode, si le fichier est absent, la fonction retourne FALSE, et un message d'erreur sera affiché. Les messages d'erreur ne sont pas accessibles avec udm_error() et udm_errno(), puisque ces fonctions ne traitent que les messages SQL. Reportez-vous à la description du paramètre flag.

    Exemple avec udm_load_ispell_data()

    <?php
     if ((! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
        (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
        (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
        (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
      exit;
      }
?>

    Note : flag prend la valeur 1 si c'est le dernier appel à cette fonction.

  • UDM_ISPELL_TYPE_SERVER active le support des serveurs ispell. val1 indique alors l'adresse de l'hôte qui supporte le serveur ispall. val2 n'est pas encore utilisé, mais dans les cas futurs, il indiquera le numéro de port utilisé par le serveur ispell. flag n'est pas utile, car les données sont déjà triées.

    Les serveurs Spelld lisent les données d'orthographe dans une configuration séparée (par défaut /usr/local/mnogosearch/etc/spelld.conf), les trie et les stockes en mémoire. Avec les clients, le serveur communique de deux façons : vers les indexeurs, tout le contenu de la mémoire est transféré pour que l'indexeur travaille plus vite; vers le moteur de recherche, il reçoit les mots à normaliser, et les rend au client corrigés. Cela permet une plus grande rapidité d'exécution, en comparaison des modes db et text (notamment, les tris et les chargements sont beaucoup plus rapides).

    udm_load_ispell_data() en mode UDM_ISPELL_TYPE_SERVER ne charge pas vraiment les données ispell, mais définit simplement l'adresse du serveur. En fait, le serveur sera automatiquement utilisé par udm_find() lors des recherches. En cas d'erreur, (par exemple si le serveur ispell ne fonctionne pas ou que l'hôte indiqué est invalide), la conversion sera annulée, mais aucun message d'erreur ne sera affiché.

    Note : Cette fonction est disponible à partir de mnoGoSearch 3.1.12.

    Exemple avec udm_load_ispell_data()

    <?php
  if (!udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) {
    printf("Erreur au chargement de la librairie ispell sur le serveur<BR>\n");
    exit;
  }
?>

Précédent | Sommaire | Suivant
udm_get_res_param | Niveau supérieur | udm_open_stored


udm_open_stored

(PHP 4 >= 4.2.0)

udm_open_stored -- Ouvre une connexion avec un document stocké

Description

int udm_open_stored ( int agent, string storedaddr)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
udm_load_ispell_data | Niveau supérieur | udm_set_agent_param


udm_set_agent_param

(PHP 4 >= 4.0.5)

udm_set_agent_param -- Modifie les paramètres de l'agent mnoGoSearch

Description

int udm_set_agent_param ( int agent, int var, string val)

udm_set_agent_param() retourne TRUE en cas de succès et FALSE sinon. udm_set_agent_param() définit les paramètres de l'agent mnoGoSearch.

Les paramètres suivants et leurs valeurs sont disponibles :

  • UDM_PARAM_PAGE_NUM - Utilisé pour choisir le numéro de groupe de résultat (les résultats sont retournés par groupe, commençant à 0, avec UDM_PARAM_PAGE_SIZE résultats par page).

  • UDM_PARAM_PAGE_SIZE - Nombre de résultats affichés par page.

  • UDM_PARAM_SEARCH_MODE - Mode de recherche. Les valeurs suivantes sont disponibles : UDM_MODE_ALL - recherche tous les mots; UDM_MODE_ANY - recherche l'un des mots; UDM_MODE_PHRASE - recherche une phrase; UDM_MODE_BOOL - recherche booléenne. Voir udm_find() pour plus de détails sur les recherches booléennes.

  • UDM_PARAM_CACHE_MODE - Active/désactive le cache. Lorsque le cache est activé, le moteur de recherche va stocker les résultats sur le disque. Lorque deux requête seront similaires, il pourra retourner les résultats plus rapidement, sans recherche. Valeurs disponibles : UDM_CACHE_ENABLED, UDM_CACHE_DISABLED.

  • UDM_PARAM_TRACK_MODE - Active le mode de suivi de requête. Depuis la version 3.1.2, mnoGoSearch dispose d'un suivi de requête. Notez que ce suivi n'est implémenté qu'avec les versions SQL et n'est pas disponible avec les bases de données intégrées. Pour utiliser ce suivi, vous devez créer des tables de suivi. Pour mysql, utilisez le script create/mysql/track.txt. Lorsque vous effectuez une recherche avec l'interface, ces tables stockeront les mots recherchés ainsi que le nombre de mots trouvés, et la date. Valeurs disponibles : UDM_TRACK_ENABLED, UDM_TRACK_DISABLED.

  • UDM_PARAM_PHRASE_MODE - indique si les index des bases de données utilise des phrases( paramètre "phrase" dans indexer.conf). Valeurs disponibles : UDM_PHRASE_ENABLED and UDM_PHRASE_DISABLED. Notez bien que si la recherche par phrase est activé (UDM_PHRASE_ENABLED), il est toujours possible de faire des recherches dans d'autres modes, (ANY, ALL, BOOL ou PHRASE). En version 3.1.10 de mnoGoSearch, la recherche par phrase n'est supportée que pour les modes SQL et intégré, tandis qu'en 3.1.11, la recherche par phrase est supporté par le mode cache.

    Exemple de recherche par phrase :

    "Arizona desert" - Cette requête retourne tous les documents qui contiennent les mots "Arizona desert" comme une phrase. Notez que vous devez mettre des guillemets doubles autour des phrases.

  • UDM_PARAM_CHARSET - Définit le jeu de caractères local. Valeurs disponibles : Tous les jeux supportés par mnoGoSearch. koi8-r, cp1251, ...

  • UDM_PARAM_STOPFILE - Définit le nom et le chemin du fichier de mots ignorés. Il y a une petite différence avec mnoGoSearch : Avec mnoGoSearch, si le chemin est NULL ou relatif, il est utilisé à partir de UDM_CONF_DIR, alors qu'en PHP, le module va rechercher à partir du chemin courant, c'est-à-dire celui du script courant.

  • UDM_PARAM_STOPTABLE - Charge la liste des mots ignorés depuis une table SQL. Vous pouvez utiliser plusieurs tables SQL. Cette commande n'a aucun effet si mnoGoSearch n'a pas été compilé avec le support de base de données.

  • UDM_PARAM_WEIGHT_FACTOR - Représente le poids relatif des différentes parties d'un document. Actuellement, le corps, titre, mots clés, descriptions et url sont supportés. Pour activer cette fonctionnalité, utilisez le degré 2 de *Weight commands, dans le fichier indexer.conf. Imaginons que vous avez choisi les poids suivants :

    URLWeight 1

    BodyWeight 2

    TitleWeight 4

    KeywordWeight 8

    DescWeight 16

    Comme l'indexeur utiliser l'opérateur de bits OR pour mesurer le poids des mots, il est possible que le même mot soit trouvé plusieurs fois dans le même document lors des recherches. Un mot qui n'apparaît qu'une fois dans le corps sera défini par 00000010 (notation binaire). Un mot qui apparaîtra dans plusieurs parties pourra avoir la notation 00011111.

    La valeur de ce paramètre est une chaîne de chiffres hexadécimaux, sous la forme ABCDE. Chaque chiffre est un facteur correspondant à un poids affecté à une partie du document. Por la situation décrite ci-dessus,

    est le facteur de poids 1 (URL)

    est le facteur de poids 2 (Corps)

    est le facteur de poids 4 (Titre)

    est le facteur de poids 8 (Mots clés)

    est le facteur de poids 16 (Description)

    Exemples:

    UDM_PARAM_WEIGHT_FACTOR=00001 ne recherche que dans les URL.

    UDM_PARAM_WEIGHT_FACTOR=00100 ne recherche que dans les Titres.

    UDM_PARAM_WEIGHT_FACTOR=11100 recherche dans les Titres,Mots-clés,Description mais pas dans le corps ou les URL.

    UDM_PARAM_WEIGHT_FACTOR=F9421 recherche dans :

    Description avec un poids de 15 (F hex)

    Keywords avec un poids de 9

    Title avec un poids de 4

    Body avec un poids de 2

    URL avec un poids de 1

    Si UDM_PARAM_WEIGHT_FACTOR est omis, la valeur par défaut est utilisée.

  • UDM_PARAM_WORD_MATCH - Recherche des mots. Vous pouvez utiliser ce paramètre pour choisir le type de recherche de mots. Cette fonctionnalité n'est valable qu'en mode "single" et "multi", avec les bases SQL ou intégrée. Elle ne fonctionne pas en mode intégré, ni avec d'autres modes, car les CRC ne supportent pas les recherches de sous-chaînes. Les valeurs disponibles sont :

    UDM_MATCH_BEGIN - début de mot;

    UDM_MATCH_END - fin de mot;

    UDM_MATCH_WORD - tout le mot;

    UDM_MATCH_SUBSTR - une sous-partie de mots.

  • UDM_PARAM_MIN_WORD_LEN - définit les tailles extrêmes de mots. Tout mot plus court que la limite inférieur est ignoré. Notez que ce paramètre est inclusif, c'est-à-dire que si UDM_PARAM_MIN_WORD_LEN=3, un mot de 3 caractères ne sera pas ignoré, alors qu'un mot de 2 caractères sera ignoré. Par défaut, la valeur est de 1.

  • UDM_PARAM_ISPELL_PREFIXES - Valeurs possibles : UDM_PREFIXES_ENABLED et UDM_PREFIXES_DISABLED. Ces valeurs activent et désactivent le support des préfixes. Par exemple, si le mot "testé" est placé dans la requête de recherche, les mots tels que "test", "tester", etc.. seront aussi recherchés. Les suffixes sont supportés par défaut. Les préfixes modifie généralement le sens des mots. Par exemple, si vous cherchez "testé", vous ne souhaitez pas trouver "protesté" ou "contesté". Le support des préfixes peut cependant être utilisé pour des raisons d'orthographe. Pour activer ispell, vous devez charger les données ispell avec la fonction udm_load_ispell_data().

  • UDM_PARAM_CROSS_WORDS - Active ou désactive le support "CROSS_WORDS". Valeurs possibles : UDM_CROSS_WORDS_ENABLED et UDM_CROSS_WORDS_DISABLED.

    La fonctionnalité "CROSS_WORDS" vous permet d'effectuer des recherches dans les balises (entre <a href="xxx"> </a>), pour utiliser le nom du lien. Ce mode fonctionne avec les bases de données SQL et n'est pas supporté par les modes intégrés ou le cache.

    Note : CROSS_WORDS est supporté à partir de mnoGoSearch 3.1.11.

  • UDM_PARAM_VARDIR - spécifie un chemin spécifique sur le disque où l'indexeur enregistre les données lorsqu'il utilise le cache et les bases de données internes. Par défaut, le dossier /var de l'installation de mnoGoSearch est utilisé. Ce paramètre est disponible en PHP 4.1.0 et plus récent.

Précédent | Sommaire | Suivant
udm_open_stored | Niveau supérieur | mSQL


mSQL

Manuel PHP
Précédent Suivant

LXII. mSQL

Introduction

Ces fonctions vous permettent d'accéder aux bases de données mSQL. Plus d'informations sur mSQL à http://www.hughes.com.au/.

Pré-requis

Installation

Pour cela, vous devez compiler PHP avec le support msql, en utilisant l'option de configuration --with-msql[=dir]. Par défaut, le chemin est '/usr/local/Hughes'.

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies msql.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32).

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
msql.allow_persistent | "On" | PHP_INI_SYSTEM
msql.max_persistent | "-1" | PHP_INI_SYSTEM
msql.max_links | "-1" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

msql.allow_persistent bool

Activation ou non des connexions mSQL persistantes.

msql.max_persistent integer

Le nombre maximum de connexions mSQL persistantes par processus.

msql.max_links integer

Le nombre maximum de connexions mSQL par processus, y compris les connexions persistantes.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

MSQL_ASSOC (integer)

MSQL_NUM (integer)

MSQL_BOTH (integer)

Table des matières
msql_affected_rows -- Retourne le nombre de ligne affectées
msql_close -- Ferme une connexion mSQL
msql_connect -- Ouvre une connexion mSQL
msql_create_db -- Crée une base de données mSQL
msql_createdb -- Crée une base de données mSQL
msql_data_seek -- Déplace le pointeur interne mSQL
msql_dbname -- Lit le nom de la base de données courante
msql_drop_db -- Efface une base de données mSQL
msql_dropdb -- Efface une base de données mSQL
msql_error -- Retourne le message d'erreur mSQL
msql_fetch_array -- Lit une ligne sous la forme d'un tableau
msql_fetch_field -- Lit la valeur d'un champ mSQL
msql_fetch_object -- Lit une ligne sous la forme d'un objet
msql_fetch_row -- Retourne une ligne sous la forme d'un objet
msql_field_seek -- Fixe d'offset d'un champ mSQL
msql_fieldflags -- Retourne le flag d'un champ mSQL
msql_fieldlen -- Retourne la longueur d'un champ mSQL
msql_fieldname -- Lit le nom d'un champ mSQL
msql_fieldtable -- Retourne le nom d'une table à partir d'un nom de champ mSQL
msql_fieldtype -- Retourne le type de champs mSQL
msql_free_result -- Libère le résultat de la mémoire
msql_freeresult -- Libère le résultat de la mémoire
msql_list_dbs -- Liste les bases de données mSQL sur un serveur
msql_list_fields -- Liste les champs d'une table
msql_list_tables -- Liste les tables mSQL sur une base de données
msql_listdbs -- Liste les bases de données mSQL sur un serveur
msql_listfields -- Liste les champs d'une table
msql_listtables -- Liste les tables mSQL sur une base de données
msql_num_fields -- Retourne le nombre de champs dans un résultat
msql_num_rows -- Retourne le nombre de lignes dans un résultat
msql_numfields -- Retourne le nombre de champs dans un résultat
msql_numrows -- Retourne le nombre de lignes dans un résultat
msql_pconnect -- Ouvre une connexion persistante à un serveur mSQL
msql_query -- Envoie une requête mSQL
msql_regcase -- Prépare une chaîne pour une recherche par expression régulière insensible à la casse.
msql_result -- Retourne les données de résultat
msql_select_db -- Sélectionne une base de données mSQL
msql_selectdb -- Sélectionne une base de données mSQL
msql_tablename -- Retourne le nom d'une table à partir d'un nom de champs
msql -- Exécute une requête mSQL

Précédent | Sommaire | Suivant
udm_set_agent_param | Niveau supérieur | msql_affected_rows


msql_affected_rows

(PHP 3>= 3.0.6, PHP 4 )

msql_affected_rows -- Retourne le nombre de ligne affectées

Description

int msql_affected_rows ( int query_identifier)

msql_affected_rows() retourne le nombre de lignes affectées par la dernière commande INSERT, UPDATE ou DELETE sur le serveur associé au link_identifier. Si ce dernier n'est pas précisé, la dernière connexion est utilisée.

Voir aussi msql_query().

Précédent | Sommaire | Suivant
mSQL | Niveau supérieur | msql_close


msql_close

(PHP 3, PHP 4 )

msql_close -- Ferme une connexion mSQL

Description

int msql_close ( int link_identifier)

msql_close() retourne TRUE en cas de succès, FALSE en cas d'erreur.

msql_close() ferme la connexion au serveur de base de données mSQL référencé par l'identifiant fourni. Si aucun identifiant n'est fourni, la dernière connexion sera utilisée.

Notez bien qu'il n'est pas toujours nécessaire d'appeler cette fonction, car les connexions non persistantes seront automatiquement fermées à la fin du script.

msql_close() ne peut pas fermer les connexions persistantes, générées par msql_pconnect().

Voir aussi msql_connect() et msql_pconnect().

Précédent | Sommaire | Suivant
msql_affected_rows | Niveau supérieur | msql_connect


msql_connect

(PHP 3, PHP 4 )

msql_connect -- Ouvre une connexion mSQL

Description

int msql_connect ( [string hostname [, string server [, string username [, string password]]]])

msql_connect() établit une connexion à un serveur mSQL. Le nom d'hôte est optionnel, et lorsqu'il manque, localhost est utilisé.

msql_connect() retourne un identifiant de connexion positif en cas de succès, et FALSE sinon.

Si un deuxième appel est fait à msql_connect(), avec les mêmes arguments, ce ne sera pas une nouvelle connexion qui va être ouverte, mais l'ancienne connexion qui sera utilisée, et son identifiant sera retourné.

Le lien au serveur sera fermé dès la fin du script, ou bien, manuellement, lors de l'appel de msql_close().

Voir aussi msql_pconnect() et msql_close().

Précédent | Sommaire | Suivant
msql_close | Niveau supérieur | msql_create_db


msql_create_db

(PHP 3, PHP 4 )

msql_create_db -- Crée une base de données mSQL

Description

int msql_create_db ( string database_name [, int link_identifier])

msql_create_db() essaie de créer une nouvelle base de données nommée database_name sur le serveur référencé par l'identifiant link_identifier.

Voir aussi msql_drop_db().

Précédent | Sommaire | Suivant
msql_connect | Niveau supérieur | msql_createdb


msql_createdb

(PHP 3, PHP 4 )

msql_createdb -- Crée une base de données mSQL

Description

int msql_createdb ( string database_name [, int link_identifier])

Identique à msql_create_db().

Précédent | Sommaire | Suivant
msql_create_db | Niveau supérieur | msql_data_seek


msql_data_seek

(PHP 3, PHP 4 )

msql_data_seek -- Déplace le pointeur interne mSQL

Description

int msql_data_seek ( int query_identifier, int row_number)

msql_data_seek() déplace le pointeur interne de résultat mSQL, et le place à l'offset donné. Le prochain appel à la fonction to msql_fetch_row() retournera cette ligne.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi msql_fetch_row().

Précédent | Sommaire | Suivant
msql_createdb | Niveau supérieur | msql_dbname


msql_dbname

(PHP 3, PHP 4 )

msql_dbname -- Lit le nom de la base de données courante

Description

string msql_dbname ( int query_identifier, int i)

msql_dbname() retourne le nom de la base de données enregistré en position i du pointeur de résultat retourné par la fonction msql_listdbs(). La fonction msql_numrows() peut être utilisée pour déterminer le nombre de bases disponibles.

Précédent | Sommaire | Suivant
msql_data_seek | Niveau supérieur | msql_drop_db


msql_drop_db

(PHP 3, PHP 4 )

msql_drop_db -- Efface une base de données mSQL

Description

int msql_drop_db ( string database_name, int link_identifier)

msql_drop_db() essaie d'effacer une base de données entière sur le serveur référencé par l'identifiant link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi msql_create_db().

Précédent | Sommaire | Suivant
msql_dbname | Niveau supérieur | msql_dropdb


msql_dropdb

msql_dropdb -- Efface une base de données mSQL

Description

Voir msql_drop_db().

Précédent | Sommaire | Suivant
msql_drop_db | Niveau supérieur | msql_error


msql_error

(PHP 3, PHP 4 )

msql_error -- Retourne le message d'erreur mSQL

Description

string msql_error ( [int link_identifier])

msql_error() retourne les erreurs renvoyées par le serveur. Les erreurs générées par mSQL ne sont plus traitées comme des alertes.

Précédent | Sommaire | Suivant
msql_dropdb | Niveau supérieur | msql_fetch_array


msql_fetch_array

(PHP 3, PHP 4 )

msql_fetch_array -- Lit une ligne sous la forme d'un tableau

Description

int msql_fetch_array ( int query_identifier [, int result_type])

msql_fetch_array() retourne un tableau qui contient la ligne demandée, ou FALSE, si il n'y a pas d'autres lignes.

msql_fetch_array() est une version évoluée de msql_fetch_row(). En plus d'enregistrer les données dans un tableau à indice numérique, il peut enregistrer les données dans un tableau associatif, en utilisant les noms des champs comme clés.

Le deuxième argument result_type de msql_fetch_array() est une constante, et peut prendre les valeurs suivantes : MSQL_ASSOC, MSQL_NUM, et MSQL_BOTH.

Méfiez vous des requêtes qui retournent une ligne qui ne contient qu'un champ de valeur 0 (ou NULL, ou chaîne vide).

Il est important de noter que msql_fetch_array() est marginalement plus lent que msql_fetch_row(), alors qu'elle apporte un confort d'utilisation appréciable.

Voir aussi msql_fetch_row().

Précédent | Sommaire | Suivant
msql_error | Niveau supérieur | msql_fetch_field


msql_fetch_field

(PHP 3, PHP 4 )

msql_fetch_field -- Lit la valeur d'un champ mSQL

Description

object msql_fetch_field ( int query_identifier, int field_offset)

msql_fetch_field() retourne un objet contenant les informations sur un champ.

msql_fetch_field() sert à lire les informations sur les champs, dans certaines requêtes. Si l'indice du champ n'est pas spécifié, le prochain champ sera retourné.

Les propriétés de l'objet sont :

  • name - nom de la colonne

  • table - nom de la table à qui appartient la colonne.

  • not_null - 1 si la colonne ne peut être NULL

  • primary_key - 1 si la colonne est une clé primaire

  • unique - 1 la colonne est une clé unique

  • type - le type de la colonne

Voir aussi msql_field_seek().

Précédent | Sommaire | Suivant
msql_fetch_array | Niveau supérieur | msql_fetch_object


msql_fetch_object

(PHP 3, PHP 4 )

msql_fetch_object -- Lit une ligne sous la forme d'un objet

Description

int msql_fetch_object ( int query_identifier [, int result_type])

msql_fetch_object() retourne un objet, dont les propriétés seront affectées suivant les champs de la ligne lue, ou FALSE si il ne reste plus de lignes.

msql_fetch_object() est identique à msql_fetch_array(), avec une différence : c'est un objet qui est retourné, à la place d'un tableau. Par conséquent, cela signifie que vous ne pouvez accéder aux valeurs que par les noms des champs, et non plus avec leur offset. (les nombres sont interdits dans les noms de propriétés)

L'argument optionnel result_type de msql_fetch_array() est une constante qui peut prendre les valeurs suivantes : MSQL_ASSOC, MSQL_NUM, et MSQL_BOTH.

msql_fetch_object() est aussi rapide que
msql_fetch_array(), et marginalement plus
lente que msql_fetch_row()
(la différence est non significative).

Voir aussi msql_fetch_array() et msql_fetch_row().

Précédent | Sommaire | Suivant
msql_fetch_field | Niveau supérieur | msql_fetch_row


msql_fetch_row

(PHP 3, PHP 4 )

msql_fetch_row -- Retourne une ligne sous la forme d'un objet

Description

array msql_fetch_row ( int query_identifier)

msql_fetch_row() retourne un tableau qui contient la ligne demandée, ou FALSE, si il n'y a plus de lignes à lire.

msql_fetch_row() retourne une ligne, extraite du résultat associé à l'identifiant de résultat query_identifier. La ligne est retournée sous la forme d'un tableau. Chaque résultat est enregistré dans un champ, indexé numériquement, à partir de 0.

Les appels ultérieurs à msql_fetch_row() retourneront les lignes suivantes, ou FALSE, lorsqu'il n'y aura plus de ligne.

Voir aussi
msql_fetch_array(),
msql_fetch_object(),
msql_data_seek() et
msql_result().

Précédent | Sommaire | Suivant
msql_fetch_object | Niveau supérieur | msql_field_seek


msql_field_seek

(PHP 3, PHP 4 )

msql_field_seek -- Fixe d'offset d'un champ mSQL

Description

int msql_field_seek ( int query_identifier, int field_offset)

msql_field_seek() recherche l'offset du champ field_offset. Le prochain appel à msql_fetch_field() sans l'argument field_offset, retournera ce champ.

Voir aussi msql_fetch_field().

Précédent | Sommaire | Suivant
msql_fetch_row | Niveau supérieur | msql_fieldflags


msql_fieldflags

(PHP 3, PHP 4 )

msql_fieldflags -- Retourne le flag d'un champ mSQL

Description

string msql_fieldflags ( int query_identifier, int i)

msql_fieldflags() retourne le flag du champ spécifié. Actuellement, il peut valoir soit "not NULL", "primary key", ou une combinaison des deux ou "" (chaîne vide).

Précédent | Sommaire | Suivant
msql_field_seek | Niveau supérieur | msql_fieldlen


msql_fieldlen

(PHP 3, PHP 4 )

msql_fieldlen -- Retourne la longueur d'un champ mSQL

Description

int msql_fieldlen ( int query_identifier, int i)

msql_fieldlen() retourne la longueur du champ i.

Précédent | Sommaire | Suivant
msql_fieldflags | Niveau supérieur | msql_fieldname


msql_fieldname

(PHP 3, PHP 4 )

msql_fieldname -- Lit le nom d'un champ mSQL

Description

string msql_fieldname ( int query_identifier, int field)

msql_fieldname() retourne le nom du champ à l'index field. query_identifier est un identifiant de résultat, et field est un index de champ. msql_fieldname($result, 2); retournera le nom du deuxième champ, dans le résultat associé à query_identifier.

Précédent | Sommaire | Suivant
msql_fieldlen | Niveau supérieur | msql_fieldtable


msql_fieldtable

(PHP 3, PHP 4 )

msql_fieldtable -- Retourne le nom d'une table à partir d'un nom de champ mSQL

Description

int msql_fieldtable ( int query_identifier, int field)

msql_fieldtable() retourne le nom de la table d'où est le champ field a été extrait.

Précédent | Sommaire | Suivant
msql_fieldname | Niveau supérieur | msql_fieldtype


msql_fieldtype

(PHP 3, PHP 4 )

msql_fieldtype -- Retourne le type de champs mSQL

Description

string msql_fieldtype ( int query_identifier, int i)

msql_fieldtype() est similaire à msql_fieldname(). Les arguments sont identiques, mais c'est le type du champ qui est retourné. Cela produira un résultat tel que "int", "string" ou "real".

Précédent | Sommaire | Suivant
msql_fieldtable | Niveau supérieur | msql_free_result


msql_free_result

(PHP 3, PHP 4 )

msql_free_result -- Libère le résultat de la mémoire

Description

int msql_free_result ( int query_identifier)

msql_free_result() libère de la mémoire le résultat associé à l'identifiant de résultat query_identifier. Lorsque PHP a terminé une requête, cette mémoire est libérée, ce qui fait que vous n'aurez pas besoin de cette fonction. Vous pouvez toujours l'utiliser pour vous assurer que vous n'utilisez pas trop de mémoire durant un script.

Précédent | Sommaire | Suivant
msql_fieldtype | Niveau supérieur | msql_freeresult


msql_freeresult

msql_freeresult -- Libère le résultat de la mémoire

Description

Voir msql_free_result()

Précédent | Sommaire | Suivant
msql_free_result | Niveau supérieur | msql_list_dbs


msql_list_dbs

(PHP 3, PHP 4 )

msql_list_dbs -- Liste les bases de données mSQL sur un serveur

Description

int msql_list_dbs ( void )

msql_list_dbs() retournea un pointeur de résultat, qui contiendra les noms des bases de données disponibles sur la connexion mSQL courante. Utilisez msql_dbname() pour passer en revue toutes les lignes.

Précédent | Sommaire | Suivant
msql_freeresult | Niveau supérieur | msql_list_fields


msql_list_fields

(PHP 3, PHP 4 )

msql_list_fields -- Liste les champs d'une table

Description

int msql_list_fields ( string database, string tablename)

msql_list_fields() lit les informations de la table tablename. Les arguments sont le nom de la base de données, database et le nom de la table tablename. Cette fonction retourne un identifiant de résultat qui sera utilisé avec msql_fieldflags(), msql_fieldlen(), msql_fieldname() et msql_fieldtype(). Un identifiant de résultat est un entier positif. La fonction retourne -1 si une erreur survient. Une chaîne décrivant l'erreur sera placée dans la variable $phperrmsg, et à moins que cette fonction n'ai été appelée avec @ (@msql_list_fields()), alors cette erreur sera affichée.

Voir aussi msql_error().

Précédent | Sommaire | Suivant
msql_list_dbs | Niveau supérieur | msql_list_tables


msql_list_tables

(PHP 3, PHP 4 )

msql_list_tables -- Liste les tables mSQL sur une base de données

Description

int msql_list_tables ( string database)

msql_list_tables() prend un nom de base de données, et fourni un résultat, un peu comme la fonction msql(). La fonction msql_tablename() devrait être utilisée de préférence pour extraire les nom de table d'un pointeur de résultat.

Précédent | Sommaire | Suivant
msql_list_fields | Niveau supérieur | msql_listdbs


msql_listdbs

msql_listdbs -- Liste les bases de données mSQL sur un serveur

Description

Voir msql_list_dbs().

Précédent | Sommaire | Suivant
msql_list_tables | Niveau supérieur | msql_listfields


msql_listfields

msql_listfields -- Liste les champs d'une table

Description

Voir msql_list_fields().

Précédent | Sommaire | Suivant
msql_listdbs | Niveau supérieur | msql_listtables


msql_listtables

msql_listtables -- Liste les tables mSQL sur une base de données

Description

Voir msql_list_tables().

Précédent | Sommaire | Suivant
msql_listfields | Niveau supérieur | msql_num_fields


msql_num_fields

(PHP 3, PHP 4 )

msql_num_fields -- Retourne le nombre de champs dans un résultat

Description

int msql_num_fields ( int query_identifier)

msql_num_fields() retourne le nombre de champs du résultat associé à l'identifiant query_identifier.

Voir aussi
msql(),
msql_query(),
msql_fetch_field() et
msql_num_rows().

Précédent | Sommaire | Suivant
msql_listtables | Niveau supérieur | msql_num_rows


msql_num_rows

(PHP 3, PHP 4 )

msql_num_rows -- Retourne le nombre de lignes dans un résultat

Description

int msql_num_rows ( resource query_identifier)

msql_num_rows() retourne le nombre de lignes du résultat associé à l'identifiant query_identifier.

Voir aussi
msql(),
msql_query() et
msql_fetch_row().

Précédent | Sommaire | Suivant
msql_num_fields | Niveau supérieur | msql_numfields


msql_numfields

(PHP 3, PHP 4 )

msql_numfields -- Retourne le nombre de champs dans un résultat

Description

int msql_numfields ( int query_identifier)

Identique à msql_num_fields().

Précédent | Sommaire | Suivant
msql_num_rows | Niveau supérieur | msql_numrows


msql_numrows

(PHP 3, PHP 4 )

msql_numrows -- Retourne le nombre de lignes dans un résultat

Description

int msql_numrows ( void )

Identique à msql_num_rows().

Précédent | Sommaire | Suivant
msql_numfields | Niveau supérieur | msql_pconnect


msql_pconnect

(PHP 3, PHP 4 )

msql_pconnect -- Ouvre une connexion persistante à un serveur mSQL

Description

int msql_pconnect ( [string server [, string username [, string password]]])

msql_pconnect() se comporte presque comme msql_connect() mais avec deux différences majeures.

D'abord, lors de la connexion, msql_pconnect() cherche si une connexion persistante a déjà été ouverte sur le même hôte. Si une telle connexion est trouvée, elle sera utilisée.

Deuxièmement, la connexion au serveur SQL ne sera pas terminée lors de la fin de l'exécution du script. A la place, le lien restera ouvert pour d'autres connexions futures. (msql_close() ne fermera pas un lien ouvert par msql_pconnect()).

msql_pconnect() retourne un identifiant de connexion persistante à un serveur mSQL en cas de succès, et FALSE sinon.

C'est pourquoi une telle connexion est considérée comme 'persistante'.

Précédent | Sommaire | Suivant
msql_numrows | Niveau supérieur | msql_query


msql_query

(PHP 3, PHP 4 )

msql_query -- Envoie une requête mSQL

Description

int msql_query ( string query, int link_identifier)

msql_query() envoie une requête à la base de données active, sur le serveur associé à l'identifiant de connexion link_identifier. Si link_identifier n'est pas fourni, PHP tentera d'utiliser la dernière connexion ouverte. Si aucune connexion n'a été ouverte, la fonction tentera de se connecter par elle même, avec msql_connect() appelé sans argument.

msql_query() retourne un identifiant positif mSQL en cas de succès, et FALSE sinon.

Exemple 1. Exemple avec msql_query()

<?php
$link = msql_connect("dbserver")
   or die("unable to connect to msql server: ".msql_error());
msql_select_db("db", $link)
   or die("unable to select database 'db': ".msql_error());

$result = msql_query("SELECT * FROM table WHERE id=1", $link);
if (!$result) {
   die("query failed: ".msql_error());
}

while ($row = msql_fetch_array($result)) {
    echo $row["id"];
}
?>

Voir aussi
msql(),
msql_select_db(), et
msql_connect().

Précédent | Sommaire | Suivant
msql_pconnect | Niveau supérieur | msql_regcase


msql_regcase

msql_regcase -- Prépare une chaîne pour une recherche par expression régulière insensible à la casse.

Description

Voir sql_regcase().

Précédent | Sommaire | Suivant
msql_query | Niveau supérieur | msql_result


msql_result

(PHP 3, PHP 4 )

msql_result -- Retourne les données de résultat

Description

int msql_result ( int query_identifier, int i, mixed field)

msql_result() retourne la valeur de la cellule, à la ligne i et l'offset spécifié, field dans le résultat mSQL query_identifier.

msql_result() retourne le contenu d'une cellule depuis un résultat mSQL query_identifier. L'argument de champ field peut être aussi bien un offset, qu'un nom de champ, ou encore le nom de la table point le nom du fichier (nom_table.nom_champ). Si la colonne est un alias, (par exemple 'select foo as bar from...'), utilisez de préférence l'alias au nom de colonne.

Lorsque vous travailler sur des résutats de grande taille, il est préférable d'utiliser les fonctions qui récupèrent toute la ligne (voir ci-dessous). Comme ces fonctions retournent plusieurs cellules en même temps, elles sont beaucoup plus rapide que msql_result(). De plus, sachez qu'accéder à un champ avec son indice numérique est beaucoup plus rapide qu'en utilisant les autres méthodes.

Alternatives recommandées : msql_fetch_row(), msql_fetch_array() et msql_fetch_object().

Précédent | Sommaire | Suivant
msql_regcase | Niveau supérieur | msql_select_db


msql_select_db

(PHP 3, PHP 4 )

msql_select_db -- Sélectionne une base de données mSQL

Description

int msql_select_db ( string database_name, int link_identifier)

msql_select_db() retourne TRUE en cas de succès, et FALSE en cas d'erreur.

msql_select_db() choisi la base de données courante sur le serveur associé à l'identifiant de connexion link_identifier. Si link_identifier n'est pas fourni, PHP tentera d'utiliser la dernière connexion ouverte. Si aucune connexion n'a été ouverte, la fonction tentera de se connecter par elle-même, avec msql_connect() appelée sans argument.

Les prochains appels à msql_query() seront fait dans la base de données active.

Voir aussi
msql_connect(),
msql_pconnect() et
msql_query().

Précédent | Sommaire | Suivant
msql_result | Niveau supérieur | msql_selectdb


msql_selectdb

msql_selectdb -- Sélectionne une base de données mSQL

Description

Reportez vous à msql_select_db().

Précédent | Sommaire | Suivant
msql_select_db | Niveau supérieur | msql_tablename


msql_tablename

(PHP 3, PHP 4 )

msql_tablename -- Retourne le nom d'une table à partir d'un nom de champs

Description

string msql_tablename ( int query_identifier, int field)

msql_tablename() prend un pointeur de résultat (retourné par la fonction msql_list_tables()), ainsi qu'un index, et retourne le nom d'une table. La fonction msql_numrows() peut servir à déterminer le nombre de table dans le pointeur de résultat.

Exemple 1. Exemple msql_tablename()

<?php
msql_connect ("localhost");
$result = msql_list_tables("limousin");
$i = 0;
while ($i < msql_numrows ($result)) {
    $tb_names[$i] = msql_tablename ($result, $i);
    echo $tb_names[$i] . "<BR>";
    $i++;
}
?>

Précédent | Sommaire | Suivant
msql_selectdb | Niveau supérieur | msql


msql

(PHP 3, PHP 4 )

msql -- Exécute une requête mSQL

Description

int msql ( string database, string query, int link_identifier)

msql() retourne un identifiant positif de résultat de requête, ou FALSE en cas d'erreur.

msql() sélectionne la base de données database, et y exécute la requête query. Si l'identifiant de connexion link_identifier n'est pas fourni, la fonction va rechercher un lien ouvert à un serveur mSQL, et sinon, il va tenter d'en créer une, avec msql_connect(), sans argument.

Précédent | Sommaire | Suivant
msql_tablename | Niveau supérieur | MySQL


MySQL

Manuel PHP
Précédent Suivant

LXIII. MySQL

Introduction

Ces fonctions vous permettent d'accéder aux bases de données MySQL. Le site officiel de cette base est http://www.mysql.com/.

La documentation de MySQL est disponible à http://www.mysql.com/documentation/.

Pré-requis

Afin de pouvoir les utiliser, vous devez compiler PHP avec le support MySQL.

Installation

En utilisant l'option --with-mysql. Si vous utilisez cette fonction sans préciser le chemin d'accès à la base MySQL, PHP utilisera les librairies clientes MySQL fournies en standard. Les utilisateurs qui font tourner d'autres applications qui utilisent elles-mêmes MySQL (par exemple, PHP 3 et PHP 4 utilisés comme des modules concurrents apache, ou encore auth-mysql), devraient toujours spécifier le chemin jusqu'à MySQL : --with-mysql=/path/to/mysql. Cela va forcer PHP à utiliser les librairies clientes installées par MySQL et évitera les conflits.

En PHP 5, MySQL n'est plus activé par défaut, et la librairie MysQL n'est plus fournie avec PHP. Lisez la FAQ pour savoir pourquoi.

Cette extension MySQL extension ne fonctionnera pas avec les versions de MySQL supérieure à la version 4.1.0. Pour cela, il faut utiliser l'extension MySQLi.

Avertissement

Des crashes et des problèmes de démarrage de PHP peuvent être rencontré lorsque vous chargez cette fonction en même temps que l'extension recode. Voyez l'extension recode pour plus de détails.

Note : Si vous avez besoin d'autres jeux de caractères que celui par défaut (latin), vous devez installer la librairie externe libmysql (non fournie), compilée avec ce jeu de caractères.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.connect_timeout | "0" | PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

mysql.allow_persistent bool

Active ou désactive les connexions persistantes à la base de données MySQL.

mysql.max_persistent integer

Le nombre maximum de connexions persistantes aux bases de données MySQL, par processus.

mysql.max_links integer

Le nombre maximum de connexions aux bases de données MySQL, y compris les connexions persistantes, par processus.

mysql.default_port string

Le numéro de port TCP par défaut, utilisé pour se connecter à la base de données, lorsqu'aucun port n'est spécifié. Si aucun port par défaut est spécifié, le port sera alors obtenu en lisant la variable d'environnement MYSQL_TCP_PORT, l'entrée mysql-tcp dans le fichier /etc/services ou encore la constante de compilation MYSQL_PORT, dans cet order. Win32 n'utilisera aussi que la constante MYSQL_PORT.

mysql.default_socket string

Le nom par défaut de la socket lorsque l'on se conecte au serveur local, si aucune autre socket n'est spécifiée.

mysql.default_host string

Adresse par défaut du serveur, à utiliser lors de la connexion à un serveur MySQL, si aucun hôte n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

mysql.default_user string

Utilisateur par défaut, à utiliser lors de la connexion à un serveur MySQL, si aucun utilisateur n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

mysql.default_password string

Mot de passe par défaut, à utiliser lors de la connexion à un serveur MySQL, si aucun mot de passe n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

mysql.connect_timeout integer

Durée maximale d'attente de la réponse d'un serveur, en secondes. Sous Linux, cette durée sert aussi lors de l'échange du premier avec le serveur.

Types de ressources

Il y a deux types de ressources utilisées par le module MySQL. Le premier est un identifiant de connexion au serveur, appelé mysql link, et le second est un identifiant de résultat de requête, appelé mysql result.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Depuis PHP 4.3.0, il est possible de spécifier des options de client supplémentaires pour les fonctions mysql_connect() et mysql_pconnect(). Ces constantes sont les suivantes :

Tableau 2. Constantes client MySQL

Constante | Description
MYSQL_CLIENT_COMPRESS | Utilise le protocole avec compression
MYSQL_CLIENT_IGNORE_SPACE | Autorise les espaces après les noms de fonction
MYSQL_CLIENT_INTERACTIVE | Autorise interactive_timeout secondes d'inactivité sur la connexion (au lieu de wait_timeout).

La fonction mysql_fetch_array() utilise une constante pour spécifier les différents types de formats de réponse. Les constantes suivante sont utilisées :

Tableau 3. Constantes de mysql_fetch_array

Constante | Description
MYSQL_ASSOC | Les colonnes sont retournées dans un tableau, dont les index sont les noms de colonnes.
MYSQL_BOTH | Les colonnes sont retournées dans un tableau ayant une indexation numérique et un système d'index correspondant au nom des colonnes.
MYSQL_NUM | Les colonnes sont retournées dans un tableau avec un index numérique. Les colonnes sont numérotées dans leur ordre d'apparition. L'index commence à zéro.

Exemples

Cet exemple simple montre comment se connecter, exécuter une requête, lire les informations obtenues et se déconnecter d'une base de données MySQL.

Exemple 1. Exemple de présentation de l'extension MySQL

<?php
    /* Connexion et s&eacute;lection de la base */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect");
    print "Connexion r&eacute;ussie";
    mysql_select_db("my_database") or die("Could not select database");

    /* Ex&eacute;cuter des requ&ecirc;tes SQL */
    $query = "SELECT * FROM my_table";
    $result = mysql_query($query) or die("Query failed");

    /* Afficher des r&eacute;sultats en HTML */
    print "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";

    /* Lib&eacute;ration des r&eacute;sultats */
    mysql_free_result($result);

    /* Fermeture de la connexion */
    mysql_close($link);
?>

Table des matières
mysql_affected_rows -- Retourne le nombre de lignes affectées lors de la dernière requête SQL
mysql_change_user -- Change le nom de session de l'utilisateur actif
mysql_client_encoding -- Retourne le nom du jeu de caractères utilisé par le client MySQL
mysql_close -- Ferme la connexion MySQL
mysql_connect -- Ouvre une connexion à un serveur MySQL
mysql_create_db -- Crée une base de données MySQL
mysql_data_seek -- Déplace le pointeur interne de résultat
mysql_db_name -- Lit les noms des bases de données
mysql_db_query -- Envoie une requête MySQL à un serveur MySQL
mysql_drop_db -- Efface une base de données MySQL
mysql_errno -- Retourne le numéro d'erreur de la dernière commande MySQL
mysql_error -- Retourne le texte associé avec l'erreur générée lors de la dernière requête.
mysql_escape_string -- Protège une chaîne pour la passer à mysql_query()
mysql_fetch_array -- Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
mysql_fetch_assoc -- Lit une ligne de résultats dans un tableau associatif
mysql_fetch_field -- Retourne les données enregistrées dans une colonne sous forme d'objet.
mysql_fetch_lengths -- Retourne la taille de chaque colonne d'une ligne de résultat
mysql_fetch_object -- Retourne une ligne de résultat MySQL sous la forme d'un objet
mysql_fetch_row -- Retourne une ligne de résultat MySQL sous la forme d'un tableau
mysql_field_flags -- Retourne des détails sur une colonne MySQL
mysql_field_len -- Retourne la taille d'un champ de résultat MySQL
mysql_field_name -- Retourne le nom d'une colonne
mysql_field_seek -- Déplace le pointeur de résultat
mysql_field_table -- Retourne le nom de la table où se trouve une colonne
mysql_field_type -- Retourne le type de la colonne courante
mysql_free_result -- Efface le résultat de la mémoire
mysql_get_client_info -- Lit les informations sur le client MySQL
mysql_get_host_info -- Lit les informations sur l'hôte MySQL
mysql_get_proto_info -- Lit les informations sur le protocole MySQL
mysql_get_server_info -- Lit les informations sur le serveur MySQL
mysql_info -- Lit des informations à propos de la dernière requête
mysql_insert_id -- Retourne l'identifiant généré par la dernière requête INSERT.
mysql_list_dbs -- Liste les bases de données disponibles sur le serveur MySQL
mysql_list_fields -- Liste les champs du résultat MySQL
mysql_list_processes -- Liste les processus MySQL
mysql_list_tables -- Liste les tables d'une base de données
mysql_num_fields -- Retourne le nombre de champs d'un résultat MySQL
mysql_num_rows -- Retourne le nombre de lignes d'un résultat
mysql_pconnect -- Ouvre une connexion persistante à un serveur MySQL.
mysql_ping -- Pingue le serveur, et se reconnecte au besoin
mysql_query -- Envoie une requête SQL à un serveur MySQL
mysql_real_escape_string -- Protège les caractères spéciaux d'une commande SQL.
mysql_result -- Retourne un champ d'un résultat
mysql_select_db -- Sélectionne une base de données MySQL
mysql_stat -- Retourne le statut courant du serveur
mysql_tablename -- Lit le nom de la table qui contient un champ
mysql_thread_id -- Retourne l'identifiant du thread courant
mysql_unbuffered_query -- Exécute une requête SQL sans mobiliser les résultats

Précédent | Sommaire | Suivant
msql | Niveau supérieur | mysql_affected_rows


mysql_affected_rows

(PHP 3, PHP 4 )

mysql_affected_rows -- Retourne le nombre de lignes affectées lors de la dernière requête SQL

Description

int mysql_affected_rows ( [resource link_identifier])

mysql_affected_rows() retourne le nombre de lignes affectées lors de la dernière requête INSERT, UPDATE ou DELETE sur le serveur associé à l'identifiant de connexion. Si cet identifiant n'est pas précisé, mysql_affected_rows() utilise la dernière connexion ouverte.

Note : Si vous utilisez les transactions, vous devez appeler mysql_affected_rows() après votre INSERT, UPDATE, ou DELETE et non après la validation.

Si la dernière requête était un DELETE sans clause WHERE, tous les enregistrements ont été effacés, mais mysql_affected_rows() va retourner 0.

mysql_affected_rows() n'est pas possible après un SELECT, car elle ne fonctionne qu'après des commandes qui modifient les enregistrements. Pour connaître le nombre de lignes retournées par un SELECT, utilisez mysql_num_rows().

Si la dernière requête a échoué, mysql_affected_rows() retourne -1.

Exemple 1. Requête SQL Delete

<?php
    /* connexion &agrave; la base */
    mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysql_error());

    /* Ceci devrait retourner le nombre correct de lignes effac&eacute;es */
    mysql_query("DELETE FROM mytable WHERE id < 10");
    printf ("Records deleted: %d\n", mysql_affected_rows());

    /* Sans la clause WHERE, il retourne 0 */
    mysql_query("DELETE FROM mytable");
    printf ("Lignes effac&eacute;es : %d\n", mysql_affected_rows());
?>

Le script ci-dessus devrait afficher :
Lignes effac&eacute;es : 10
Lignes effac&eacute;es : 0

Exemple 2. Requête SQL Update

<?php
    /* connexion &agrave; la base */
    mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysql_error());

    /* Requ&ecirc;te de modification Update */
    mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
    printf ("Lignes modifi&eacute;es : %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

Le script ci-dessus devrait afficher :
Lignes modifi&eacute;es : 10

Voir aussi mysql_num_rows() et mysql_info().

Précédent | Sommaire | Suivant
MySQL | Niveau supérieur | mysql_change_user


mysql_change_user

(PHP 3>= 3.0.13)

mysql_change_user -- Change le nom de session de l'utilisateur actif

Description

int mysql_change_user ( string user, string password [, string database [, resource link_identifier]])

mysql_change_user() change l'utilisateur de la session courante, ou sur la connexion spécifiée avec l'option link_identifier. Si une base est spécifiée, elle deviendra la base par défaut de l'utilisateur. Si une erreur de connexion survient, la connexion en cours restera active.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : mysql_change_user() a été introduite en PHP 3.0.13 et requiert MySQL 3.23.3 ou plus récent.

Précédent | Sommaire | Suivant
mysql_affected_rows | Niveau supérieur | mysql_client_encoding


mysql_client_encoding

(PHP 4 >= 4.3.0)

mysql_client_encoding -- Retourne le nom du jeu de caractères utilisé par le client MySQL

Description

string mysql_client_encoding ( [resource link_identifier])

mysql_client_encoding() retourne le nom du jeu de caractères utilisé par le client mysql, pour la connexion courante (si omise), ou pour la connexion link_identifier.

Exemple 1. Exemple avec mysql_client_encoding()

<?php
$link = mysql_connect('localhost', 'utilisateur_mysql', 'mot_de_passe');
$charset = mysql_client_encoding($link);
printf ("Le jeu de caract&egrave;res actuel est %s.\n", $charset);
?>

L'exemple ci-dessus va afficher ceci :
Le jeu de caract&egrave;res actuel est latin1.

Voir aussi mysql_real_escape_string().

Précédent | Sommaire | Suivant
mysql_change_user | Niveau supérieur | mysql_close


mysql_close

(PHP 3, PHP 4 )

mysql_close -- Ferme la connexion MySQL

Description

bool mysql_close ( [resource link_identifier])

mysql_close() ferme la connexion au serveur MySQL associée à l'identifiant link_identifier. Si cet identifiant n'est pas spécifié, cette commande s'applique à la dernière connexion ouverte.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Notez que cette commande n'est pas nécessaire, car toutes les connexions non persistantes seront automatiquement fermées à la fin du script.

mysql_close() ne ferme pas les connexions persistantes générées par mysql_pconnect().

Exemple 1. Exemple MySQL_close

<?php
  $link = mysql_connect("serveur.mysql.com", "utilisateur", "secret")
    or die("Impossible de se connecter");

  print("Connexion r&eacute;ussie");
  mysql_close($link);
?>

Voir aussi mysql_connect() et mysql_pconnect().

Précédent | Sommaire | Suivant
mysql_client_encoding | Niveau supérieur | mysql_connect


mysql_connect

(PHP 3, PHP 4 )

mysql_connect -- Ouvre une connexion à un serveur MySQL

Description

resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]])

mysql_connect() retourne une ressource de connexion au serveur MySQL en cas de succès, et sinon FALSE.

mysql_connect() établit une connexion à un serveur MySQL. Tous les arguments sont optionnels, et s'ils manquent, les valeurs par défaut sont utilisées ('localhost', nom du propriétaire du processus, mot de passe vide).

Le nom d'hôte peut aussi inclure un numéro de port, sous la forme : "hostname:port" ou un chemin jusqu'à une socket sous la forme ":/path/to/socket" pour l'hôte localhost.

Note : Le support des ":port" a été ajouté à partir de la version 3.0B4.

Le support de ":/path/to/socket" a été ajouté à partir de la version 3.0.10.

Vous pouvez supprimer le message d'erreur de connexion en ajoutant une arobase '@' au nom de la fonction.

Si un second appel à mysql_connect() est fait avec les mêmes arguments, PHP ne va pas ouvrir une nouvelle connexion, mais va retourner l'identifiant de la connexion déjà ouverte. Le paramètre new_link modifie ce comportement et permet que mysql_connect() ouvre une nouvelle connexion même si mysql_connect() a été appelée auparavant avec les mêmes paramètres. Le paramètre client_flags peut être une combinaison des constantes suivantes : MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE et MYSQL_CLIENT_INTERACTIVE.

Note : La paramètre new_link a été ajouté en PHP 4.2.0.

La paramètre client_flags a été ajouté en PHP 4.3.0

Le lien sera fermé automatiquement dès que l'exécution du script sera terminée, à moins d'être fermé explicitement avec mysql_close().

Exemple 1. Exemple avec mysql_connect()

<?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password")
        or die("Impossible de se connecter : " . mysql_error());
    print ("Connexion r&eacute;ussie.");
    mysql_close($link);
?>

Voir aussi mysql_pconnect() et mysql_close().

Précédent | Sommaire | Suivant
mysql_close | Niveau supérieur | mysql_create_db


mysql_create_db

(PHP 3, PHP 4 )

mysql_create_db -- Crée une base de données MySQL

Description

bool mysql_create_db ( string database_name [, resource link_identifier])

mysql_create_db() tente de créer une nouvelle base de données nommée database_name sur le serveur associé à l'identifiant link_identifier, ou sur la dernière connexion ouverte.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple de création de base MySQL avec mysql_create_db()

<?php
  $link = mysql_pconnect ("kron", "jutta", "geheim") {
    or die ("Connexion impossible");
  }
  if (mysql_create_db ("my_db")) {
    print ("Base de donn&eacute;es cr&eacute;&eacute;e\n");
  } else {
    echo "Erreur lors de la cr&eacute;ation de la base: ".mysql_error();
  }
?>

Pour des raisons de compatibilité ascendante, mysql_createdb() est toujours utilisable.

Note : La fonction mysql_create_db() est obsolète. Il est préférable d'utiliser la fonction mysql_query(), avec une commande SQL "CREATE DATABASE".

Voir aussi mysql_drop_db() et mysql_query()

Précédent | Sommaire | Suivant
mysql_connect | Niveau supérieur | mysql_data_seek


mysql_data_seek

(PHP 3, PHP 4 )

mysql_data_seek -- Déplace le pointeur interne de résultat

Description

bool mysql_data_seek ( resource result_identifier, int row_number)

mysql_data_seek() déplace le pointeur interne de résultat, dans le résultat associé à l'identifiant de résultat result_identifier. Il le fait pointer à la ligne row_number. Le prochain appel à mysql_fetch_row() retournera cette ligne.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

row_number commence à 0. row_number doit être une valeur qui va de 0 à mysql_num_rows() - 1.

Note :
      La fonction mysql_data_seek() peut être utilisée
      en conjonction avec mysql_query(), mais pas
      avec la fonction mysql_unbuffered_query().

Exemple 1. Exemple mysql_data_seek()

<?php
  $link = mysql_pconnect ("kron", "jutta", "geheim") {
    or die ("Connexion impossible");
  }
  mysql_select_db ("samp_db") {
    or die ("S&eacute;lection de base impossible");
  }
  $query = "SELECT last_name, first_name FROM friends";
  $result = mysql_query ($query) {
    or die ("Requ&ecirc;te impossible");
  }
// r&eacute;cup&egrave;re les lignes dans l'ordre inverse
  for ($i = mysql_num_rows ($result) - 1; $i >=0; $i--) {
    if (!mysql_data_seek ($result, $i)) {
      echo "Impossible d'atteindre la ligne $i\n";
      continue;
    }
    if(!($row = mysql_fetch_object ($result)))
      continue;
    echo "{$row->last_name} {$row->last_name$row->first_name}<BR>\n";
  }
  mysql_free_result ($result);
?>

Voir aussi mysql_query() et mysql_num_rows().

Précédent | Sommaire | Suivant
mysql_create_db | Niveau supérieur | mysql_db_name


mysql_db_name

(PHP 3>= 3.0.6, PHP 4 )

mysql_db_name -- Lit les noms des bases de données

Description

string mysql_db_name ( resource result, int row [, mixed field])

mysql_db_name() prend comme premier argument le pointeur de résultat result_identifier, issu de mysql_list_dbs(). row est l'index dans le résultat.

Si une erreur survient, FALSE est retourné. Utilisez mysql_errno() et mysql_error() pour connaître la nature de l'erreur.

Exemple 1. Exemple mysql_db_name()

<?php
  error_reporting(E_ALL);
  mysql_connect('dbhost', 'username', 'password');
  $db_list = mysql_list_dbs();
  $i = 0;
  $cnt = mysql_num_rows($db_list);
  while ($i < $cnt) {
    echo mysql_db_name($db_list, $i) . "\n";
    $i++;
  }
?>

Pour des raisons de compatibilité ascendante, mysql_dbname() est aussi accepté, mais obsolète.

Précédent | Sommaire | Suivant
mysql_data_seek | Niveau supérieur | mysql_db_query


mysql_db_query

(PHP 3, PHP 4 )

mysql_db_query -- Envoie une requête MySQL à un serveur MySQL

Description

resource mysql_db_query ( string database, string query [, resource link_identifier])

mysql_db_query() retourne un identifiant de résultat si la requête réussit et FALSE sinon.

mysql_db_query() sélectionne une base de données et exécute une requête. Si l'identifiant de lien link_identifier n'est pas précisé, mysql_db_query() prendra par défaut la dernière connexion ouverte sur le serveur et si elle n'en trouve pas, elle tentera de se connecter, en utilisant la fonction mysql_connect(), sans arguments.

Voir aussi mysql_connect() et mysql_query().

Note : Cette fonction est obsolète, et abandonnée depuis PHP 4.0.6. Ne l'utilisez plus (ou pas!). Alternative recommandée : mysql_select_db() et mysql_query().

Précédent | Sommaire | Suivant
mysql_db_name | Niveau supérieur | mysql_drop_db


mysql_drop_db

(PHP 3, PHP 4 )

mysql_drop_db -- Efface une base de données MySQL

Description

bool mysql_drop_db ( string database_name [, resource link_identifier])

mysql_drop_db() essaie d'effacer une base de données entière sur le serveur associé à la ressource de connexion link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Pour des raisons de compatibilité ascendante, mysql_dropdb() peut encore être utilisée. Son usage est déconseillé.à

Note : La fonction mysql_drop_db() est obsolète. Il est préférable d'utiliser mysql_query() avec la requête SQL DROP DATABASE à la place.

Voir aussi mysql_create_db() et mysql_query().

Précédent | Sommaire | Suivant
mysql_db_query | Niveau supérieur | mysql_errno


mysql_errno

(PHP 3, PHP 4 )

mysql_errno -- Retourne le numéro d'erreur de la dernière commande MySQL

Description

int mysql_errno ( [resource link_identifier])

mysql_errno() retourne le numéro de message d'erreur de la dernière opération MySQL sur la connexion courante, ou sur la connexion spécifiée avec l'option link_identifier. Les erreurs qui sont remontées depuis le serveur MySQL ne sont plus des alertes. A la place, il faut utiliser mysql_errno() pour obtenir le numéro d'erreur.

Exemple 1. Exemple avec mysql_errno()

<?php
  mysql_connect("marliesle");
  echo mysql_errno()." : ".mysql_error()."<BR>";
  mysql_select_db("nonexistentdb");
  echo mysql_errno()." : ".mysql_error()."<BR>";
  $conn = mysql_query("SELECT * FROM nonexistenttable");
  echo mysql_errno()." : ".mysql_error()."<BR>";
?>

The above example would produce the following output:

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

Voir aussi mysql_error().

Précédent | Sommaire | Suivant
mysql_drop_db | Niveau supérieur | mysql_error


mysql_error

(PHP 3, PHP 4 )

mysql_error -- Retourne le texte associé avec l'erreur générée lors de la dernière requête.

Description

string mysql_error ( [resource link_identifier])

mysql_error() retourne le message d'erreur généré par la dernière commande MySQL, ou bien '' (la chaîne vide) si aucune erreur n'est survenue.

Les erreurs retournées par le serveur MySQL ne génèrent plus de message d'alerte. A la place, vous devez utiliser la fonction mysql_error() pour lire le contenu du message. Notez que cette fonction ne retourne que le texte de l'erreur la plus récente, ce qui fait que si vous souhaitez l'utiliser, vous devez vous assurer de sa valeur avant de lancer une autre requête.

Exemple 1. Exemple avec mysql_error()

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb");
    echo mysql_errno() . ": " . mysql_error(). "\n";

    mysql_select_db("kossu");
    mysql_query("SELECT * FROM nonexistenttable");
    echo mysql_errno() . ": " . mysql_error() . "\n";
?>

L'exemple ci-dessus va afficher :

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

Note : Si le paramètre optionnel link_identifier est utilisé, c'est le dernièr message d'erreur sur cette connexion qui sera lue. Sinon, c'est la dernière connexion MySQL ouverte qui est utilisée.

Voir aussi mysql_errno().

Précédent | Sommaire | Suivant
mysql_errno | Niveau supérieur | mysql_escape_string


mysql_escape_string

(PHP 4 >= 4.0.3)

mysql_escape_string -- Protège une chaîne pour la passer à mysql_query()

Description

string mysql_escape_string ( string unescaped_string)

mysql_escape_string() va protéger tous les caractères de la chaîne unescaped_string, pour pouvoir l'utiliser directement dans une requête mysql_query(). Elle retourne la chaîne modifiée.

Note : mysql_escape_string() n'échappe pas les caractères pourcentage % ou _.

Note : mysql_escape_string() est identique à la fonction mysql_real_escape_string() hormi le fait que mysql_real_escape_string() requiert une ressource de connexion et protège la chaîne en fonction du jeu de caractères courant. mysql_escape_string() ne demande pas de connexion comme argument, et ne resepecte pas le jeu de caractères courant.

Exemple 1. Exemple avec mysql_escape_string()

<?php
    $item = "C'est un exemple de Zak";
    $escaped_item = mysql_escape_string($item);
    printf ("Cha&icirc;ne prot&eacute;g&eacute;e : %s\n", $escaped_item);
?>

L'exemple ci-dessus affichera :
Cha&icirc;ne prot&eacute;g&eacute;e : C\'est un exemple de Zak

Voir aussi mysql_real_escape_string(), addslashes() et les magic_quotes_gpc directive.

Précédent | Sommaire | Suivant
mysql_error | Niveau supérieur | mysql_fetch_array


mysql_fetch_array

(PHP 3, PHP 4 )

mysql_fetch_array -- Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux

Description

array mysql_fetch_array ( resource result [, int result_type])

mysql_fetch_array() retourne un tableau qui contient la ligne demandée, ou FALSE si il ne reste plus de ligne.

mysql_fetch_array() est une version étendue de mysql_fetch_row(). En plus d'enregistrer les données sous forme d'un tableau à indice numérique, elle peut aussi les enregistrer dans un tableau associatif, en utilisant les noms des champs comme indices.

Si plusieurs colonnes portent le même nom, la dernière colonne aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser l'index numérique, ou faire un alias pour chaque colonne.

Exemple 1. Requête avec duplication de nom de colonnes

select table1.field as foo, table2.field as bar from table1, table2

Il est important de souligner que mysql_fetch_array() N'est PAS plus lente que mysql_fetch_row(), tandis qu'elle ajoute un confort d'utilisation notable.

L'option result_type de mysql_fetch_array() est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM et MYSQL_BOTH.Cette fonctionnalité a été ajoutée en PHP 3.0.7. MYSQL_BOTH est la valeur par défaut de cet argument.

En utilisant MYSQL_BOTH, vos obtiendrez un tableau qui sera à la fois associatif et indexé numériquement. En utilisant MYSQL_ASSOC, vous obtiendrez un tableau associatif (tout comme le fait mysql_fetch_assoc()), et en utilisant MYSQL_NUM, vous obtiendrez un tableau indexé nuériquement (comme le fait mysql_fetch_row()).

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 2. Exemple de mysql_fetch_array() avec MYSQL_NUM

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter :  " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        printf ("ID: %s  Name: %s", $row[0], $row[1]);
    }

    mysql_free_result($result);
?>

Exemple 3. Exemple de mysql_fetch_array() avec MYSQL_ASSOC

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter :  " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysql_free_result($result);
?>

Exemple 4. Exemple de mysql_fetch_array() avec MYSQL_BOTH

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter :  " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysql_free_result($result);
?>

Voir aussi mysql_fetch_row() et mysql_fetch_assoc().

Précédent | Sommaire | Suivant
mysql_escape_string | Niveau supérieur | mysql_fetch_assoc


mysql_fetch_assoc

(PHP 4 >= 4.0.3)

mysql_fetch_assoc -- Lit une ligne de résultats dans un tableau associatif

Description

array mysql_fetch_assoc ( resource result)

mysql_fetch_assoc() retourne un tableau associatif qui contient la ligne lue dans le résultat result, ou bien FALSE, s'il ne reste plus de lignes à lire.

mysql_fetch_assoc() est équivalente à mysql_fetch_array() utilisée avec l'option MYSQL_ASSOC. Elle ne retourne qu'un tableau associatif. C'est le fonctionnement original de mysql_fetch_array(). Si vous avez besoin d'indices numériques, utilisez mysql_fetch_array().

Si plusieurs colonnes portent le même nom, la dernière aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser mysql_fetch_array() et les indices numériques.

Une chose importante à noter est que mysql_fetch_assoc() n'est PAS significativement plus lente que mysql_fetch_row(), alors qu'elle apporte un confort d'utilisation important.

Pour plus de détails, reportez-vous à mysql_fetch_row() et mysql_fetch_array().

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 1. Exemple avec mysql_fetch_assoc()

<?php
    $conn = mysql_connect("localhost", "mysql_user", "mysql_password");

    if (!$conn) {
        echo "Impossible de se connecter &agrave; la base de donn&eacute;es : " . mysql_error();
        exit;
    }

    if (!mysql_select_db("mydbname")) {
        echo "Impossible d'acc&eacute;der &agrave; la base de donn&eacute;es  : " . mysql_error();
        exit;
    }

    $sql = "SELECT id as userid, fullname, userstatus
            FROM   sometable
            WHERE  userstatus = 1";

    $result = mysql_query($sql);

    if (!$result) {
        echo "Impossible d'ex&eacute;cuter la requ&ecirc;te ($sql) dans la base : " . mysql_error();
        exit;
    }

    if (mysql_num_rows($result) == 0) {
        echo "Aucune ligne trouv&eacute;es, rien &agrave; afficher.";
        exit;
    }

    // Tant qu'une ligne existe, place cette ligne dans la variable $row
    // sous la forme d'un tableau associatif.
    // Note : Si vous n'attendez qu'une seule ligne, oubliez la boucle
    // Note : Si vous utilisez extract($row); dans la boucle suivante
    //       vous cr&eacute;erez then create $userid, $fullname, and $userstatus
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["userid"];
        echo $row["fullname"];
        echo $row["userstatus"];
    }

    mysql_free_result($result);

?>

Voir aussi
mysql_fetch_row(),
mysql_fetch_array(),
mysql_query() et
mysql_error().

Précédent | Sommaire | Suivant
mysql_fetch_array | Niveau supérieur | mysql_fetch_field


mysql_fetch_field

(PHP 3, PHP 4 )

mysql_fetch_field -- Retourne les données enregistrées dans une colonne sous forme d'objet.

Description

object mysql_fetch_field ( resource result [, int field_offset])

mysql_fetch_field() retourne un objet contenant les données, lu dans le résultat result.

mysql_fetch_field() sert à obtenir des informations à propos des champs, dans certaines requêtes. Si l'indice du champ n'est pas spécifié, le champ suivant le dernier champ retourné, est retourné.

Les propriétés de l'objet sont :

  • name - nom de la colonne

  • table - nom de la table de la colonne

  • max_length - taille maximale de la colonne

  • not_null - 1 si la colonne ne peut pas être NULL (attribut NOT NULL)

  • primary_key - 1 si la colonne est une clé primaire (attribut PRIMARY KEY)

  • unique_key - 1 si la colonne est une clé unique (attribut UNIQUE)

  • multiple_key - 1 si la colonne est une clé non-unique

  • numeric - 1 si la colonne est numérique

  • blob - 1 si la colonne est BLOB

  • type - le type de la colonne

  • unsigned - 1 si la colonne est non signée

  • zerofill - 1 si la colonne est complétée par des zéros.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 1. Exemple avec mysql_fetch_field()

<?php
mysql_connect('localhost:3306', $user, $password)
    or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("database");
$result = mysql_query("select * from table")
    or die("Query failed: " . mysql_error());
/* Lecture des m&eacute;ta donn&eacute;es de la colonne */
$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "D&eacute;tails sur la colonne $i :<br />\n";
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) {
        echo "Aucun d&eacute;tail disponible<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}
mysql_free_result($result);
?>

Voir aussi mysql_field_seek().

Précédent | Sommaire | Suivant
mysql_fetch_assoc | Niveau supérieur | mysql_fetch_lengths


mysql_fetch_lengths

(PHP 3, PHP 4 )

mysql_fetch_lengths -- Retourne la taille de chaque colonne d'une ligne de résultat

Description

array mysql_fetch_lengths ( resource result)

mysql_fetch_lengths() retourne un tableau avec la taille de chaque colonne de la dernière ligne retournée par mysql_fetch_row(), et lue dans le résultat result, sinon FALSE.

mysql_fetch_lengths() stocke les tailles de chaque colonne de la dernière ligne retournée par mysql_fetch_row(), mysql_fetch_array() et mysql_fetch_object() dans un tableau, en commençant à la position 0.

Voir aussi mysql_fetch_row().

Précédent | Sommaire | Suivant
mysql_fetch_field | Niveau supérieur | mysql_fetch_object


mysql_fetch_object

(PHP 3, PHP 4 )

mysql_fetch_object -- Retourne une ligne de résultat MySQL sous la forme d'un objet

Description

object mysql_fetch_object ( resource result)

mysql_fetch_object() retourne un objet dont les propriétés correspondent à une ligne du résultat result, ou FALSE si il n'y a plus d'autres lignes.

mysql_fetch_object() est identique à mysql_fetch_array(), à la différence qu'elle retourne un objet à la place d'un tableau. Vous pourrez ainsi accéder aux valeurs des champs par leur nom, mais plus par leur offset (les nombres ne sont pas des noms MySQL).

<?php

/* Ceci est valide */
echo $row->field;
/*  Ceci est invalide */
echo $row->0;

?>

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

L'argument optionnel result_type est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM et MYSQL_BOTH.

Concernant la vitesse, mysql_fetch_object() est aussi rapide que mysql_fetch_array() et presque aussi rapide que mysql_fetch_row() (la différence est insignifiante)

Exemple 1. Exemple avec mysql_fetch_object()

<?php
mysql_connect("hostname", "user", "password");
mysql_select_db($db);
$result = mysql_query("select * from table");
while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
mysql_free_result($result);
?>

Voir aussi
mysql_fetch_assoc(),
mysql_fetch_array() et
mysql_fetch_row().

Précédent | Sommaire | Suivant
mysql_fetch_lengths | Niveau supérieur | mysql_fetch_row


mysql_fetch_row

(PHP 3, PHP 4 )

mysql_fetch_row -- Retourne une ligne de résultat MySQL sous la forme d'un tableau

Description

array mysql_fetch_row ( resource result)

mysql_fetch_row() retourne un tableau indexé numériquement, qui correspond à la prochaine ligne du résultat MySQL result, ou bien FALSE s'il ne reste plus de ligne.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

mysql_fetch_row() va rechercher une ligne dans le résultat associé à l'identifiant de résultat spécifié. La ligne est retournée sous la forme d'un tableau. Chaque colonne est enregistrée sous la forme d'un tableau commençant à la position 0.

Les appels suivants à mysql_fetch_row() retourneront la ligne suivante dans le résultat, ou FALSE si il n'y a plus de ligne disponible.

Voir aussi
mysql_fetch_assoc(),
mysql_fetch_array(),
mysql_fetch_object(),
mysql_data_seek(),
mysql_fetch_lengths() et
mysql_result().

Précédent | Sommaire | Suivant
mysql_fetch_object | Niveau supérieur | mysql_field_flags


mysql_field_flags

(PHP 3, PHP 4 )

mysql_field_flags -- Retourne des détails sur une colonne MySQL

Description

string mysql_field_flags ( resource result, int field_offset)

mysql_field_flags() retourne le sémaphore associé au champ spécifié par field_offset. Les sémaphores sont retournés comme des mots, séparés par des espaces, ce qui les rend faciles à séparer, avec la commande explode().

Les valeurs suivantes (pour une version suffisamment récente de MySQL) sont disponibles : "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".

Pour des raisons de compatibilité ascendante, mysql_fieldflags() peut encore être utilisé.

Précédent | Sommaire | Suivant
mysql_fetch_row | Niveau supérieur | mysql_field_len


mysql_field_len

(PHP 3, PHP 4 )

mysql_field_len -- Retourne la taille d'un champ de résultat MySQL

Description

int mysql_field_len ( resource result, int field_offset)

mysql_field_len() retourne la taille du champ field_offset-ième champ dans le résultat result. Les champs sont indexés à partir de 0.

Pour des raisons de compatibilité ascendante, mysql_fieldlen() peut encore être utilisé.

Précédent | Sommaire | Suivant
mysql_field_flags | Niveau supérieur | mysql_field_name


mysql_field_name

(PHP 3, PHP 4 )

mysql_field_name -- Retourne le nom d'une colonne

Description

string mysql_field_name ( resource result, int field_index)

mysql_field_name() retourne le nom de la field_index-ième colonne du résulat MySQL result. result doit être une ressource de résultat MySQL et field_index est un offset numérique du champ.

Note : field_index commence à 0.

e.g. L'index du troisième champ sera en fait l'offset 2, et l'index du quatrième champ sera en fait l'offset 3, etc....

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 1. Exemple avec mysql_field_name()

/* Supposons que la table utilis&eacute;e contienne trois champs :
 *   user_id
 *   username
 *   password.
 */
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
mysql_select_db($dbname, $link)
    or die("Impossible de se connecter &agrave; la base $dbname : " . mysql_error());
$res = mysql_query("select * from users", $link);

echo mysql_field_name($res, 0) . "\n";
echo mysql_field_name($res, 2);

L'exemple ci-dessus va afficher :
user_id
password

Pour des raisons de compatibilité ascendante, mysql_fieldname() peut encore être utilisé.

Précédent | Sommaire | Suivant
mysql_field_len | Niveau supérieur | mysql_field_seek


mysql_field_seek

(PHP 3, PHP 4 )

mysql_field_seek -- Déplace le pointeur de résultat

Description

int mysql_field_seek ( resource result, int field_offset)

Place le pointeur de résultat sur le champ spécifié. Lors du prochain appel à mysql_fetch_field() qui n'aura pas d'argument d'index de champ, le champ désormais pointé sera retourné.

Voir aussi mysql_fetch_field().

Précédent | Sommaire | Suivant
mysql_field_name | Niveau supérieur | mysql_field_table


mysql_field_table

(PHP 3, PHP 4 )

mysql_field_table -- Retourne le nom de la table où se trouve une colonne

Description

string mysql_field_table ( resource result, int field_offset)

mysql_field_table() retourne le nom de la table où se trouve la colonne d'offset field_offset, dans le résultat MySQL result.

Pour des raisons de compatibilité ascendante, mysql_fieldtable() peut encore être utilisé. Toutefois, elle est obsolète.

Précédent | Sommaire | Suivant
mysql_field_seek | Niveau supérieur | mysql_field_type


mysql_field_type

(PHP 3, PHP 4 )

mysql_field_type -- Retourne le type de la colonne courante

Description

string mysql_field_type ( resource result, int field_offset)

mysql_field_type() est similaire à la fonction mysql_field_name(). Les arguments sont identiques : c'est le type du champ qui est retourné. Il vaudra "int", "real", "string", "blob" ou d'autres, comme détaillé dans la documentation MySQL.

Exemple 1. Types MySQL

<?php
    mysql_connect("localhost", "mysql_utilisateur", "mysql_mot_de_passe");
    mysql_select_db("mysql");
    $result = mysql_query("SELECT * FROM func");
    $fields = mysql_num_fields($result);
    $rows   = mysql_num_rows($result);
    $table = mysql_field_table($result, 0);
    echo "Votre table '".$table."' dispose de ".$fields." colonnes et ".$rows." ligne(s)\n";
    echo "Les colonnes sont les suivantes :  \n";
    for ($i=0; $i < $fields; $i++) {
        $type  = mysql_field_type($result, $i);
        $name  = mysql_field_name($result, $i);
        $len   = mysql_field_len($result, $i);
        $flags = mysql_field_flags($result, $i);
        echo $type." ".$name." ".$len." ".$flags."\n";
    }
    mysql_free_result($result);
    mysql_close();
?>

L'exemple ci-dessus produit l'affichage suivant :
Votre table 'func' dispose de 4 colonnes et 1 ligne(s)
Les colonnes sont les suivantes :
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

Pour des raisons de compatibilité ascendante, mysql_fieldtype() peut encore être utilisé. Toutefois, elle est obsolète.

Précédent | Sommaire | Suivant
mysql_field_table | Niveau supérieur | mysql_free_result


mysql_free_result

(PHP 3, PHP 4 )

mysql_free_result -- Efface le résultat de la mémoire

Description

bool mysql_free_result ( resource result)

mysql_free_result() libère toute la mémoire et les ressources utilisées par la ressource de résultat result.

mysql_free_result() n'est à appeler que si vous avez peur d'utiliser trop de mémoire durant l'exécution de votre script. Toute la mémoire associée à l'identifiant de résultat sera automatiquement libérée.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Pour des raisons de compatibilité ascendante, mysql_freeresult() peut encore être utilisé.

Précédent | Sommaire | Suivant
mysql_field_type | Niveau supérieur | mysql_get_client_info


mysql_get_client_info

(PHP 4 >= 4.0.5)

mysql_get_client_info -- Lit les informations sur le client MySQL

Description

string mysql_get_client_info ( void )

mysql_get_client_info() retourne une chaîne qui représente le numéro de version du client utilisé par PHP.

Exemple 1. Exemple avec mysql_get_client_info()

<?php
    printf ("D&eacute;tails sur le client MySQL : %s\n", mysql_get_client_info());
?>

L'exemple ci-dessus pourrait afficher par exemple :

D&eacute;tails sur le client MySQL : 3.23.39

Voir aussi
mysql_get_host_info(),
mysql_get_proto_info() et
mysql_get_server_info().

Précédent | Sommaire | Suivant
mysql_free_result | Niveau supérieur | mysql_get_host_info


mysql_get_host_info

(PHP 4 >= 4.0.5)

mysql_get_host_info -- Lit les informations sur l'hôte MySQL

Description

string mysql_get_host_info ( [resource link_identifier])

mysql_get_host_info() retourne une chaîne qui représente le type de connexion utilisé avec la connexion link_identifier, y compris le nom du serveur hôte. Si link_identifier est omis, la dernière connexion ouverte est utilisée.

Exemple 1. Exemple avec mysql_get_host_info()

<?php
    mysql_connect("hote.mysql", "utilisateur", "mot de passe") or
        die("Imopssible de se connecter : " . mysql_error());
    printf ("Informations sur l'h&ocirc;te MySQL : %s\n", mysql_get_host_info());
?>

L'exemple ci-dessus va afficher (par exemple) :

Informations sur l'h&ocirc;te MySQL : Localhost via UNIX socket

Voir aussi
mysql_get_client_info(),
mysql_get_proto_info() et
mysql_get_server_info().

Précédent | Sommaire | Suivant
mysql_get_client_info | Niveau supérieur | mysql_get_proto_info


mysql_get_proto_info

(PHP 4 >= 4.0.5)

mysql_get_proto_info -- Lit les informations sur le protocole MySQL

Description

int mysql_get_proto_info ( [resource link_identifier])

mysql_get_proto_info() retourne une chaîne qui représente la version du protocole utilisé par la connexion link_identifier. Si link_identifier est omis, la dernière connexion ouverte est utilisée.

Exemple 1. Exemple avec mysql_get_proto_info()

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysql_error());
    printf ("Version du protocole MySQL : %s\n", mysql_get_proto_info());
?>

L'exemple ci-dessus pourrait afficher :

Version du protocole MySQL  : 10

Voir aussi
mysql_get_client_info(),
mysql_get_host_info() et
mysql_get_server_info().

Précédent | Sommaire | Suivant
mysql_get_host_info | Niveau supérieur | mysql_get_server_info


mysql_get_server_info

(PHP 4 >= 4.0.5)

mysql_get_server_info -- Lit les informations sur le serveur MySQL

Description

string mysql_get_server_info ( [resource link_identifier])

mysql_get_server_info() retourne une chaîne qui représente la version du serveur, dont la connexion est Si link_identifier est omis, la dernière connexion ouverte est utilisée.

Exemple 1. Exemple avec mysql_get_server_info()

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    printf ("MySQL server version: %s\n", mysql_get_server_info());
?>

L'exemple ci-dessus va afficher (par exemple) :

MySQL server version: 4.0.1-alpha

Voir aussi
mysql_get_client_info(),
mysql_get_host_info() et
mysql_get_proto_info().

Précédent | Sommaire | Suivant
mysql_get_proto_info | Niveau supérieur | mysql_info


mysql_info

(PHP 4 >= 4.3.0)

mysql_info -- Lit des informations à propos de la dernière requête

Description

string mysql_info ( [resource link_identifier])

mysql_info() retourne des informations détaillées sur la dernière requête exécutée sur la dernière connexion ouverte (si omise), ou sur la connexion link_identifier.

mysql_info() retourne une chaîne avec tous les détails listés ci-dessous. Pour toutes les autres commandes, elle retourne FALSE. Le format de la chaîne dépend de la commande.

Exemple 1. Commande utilisables avec mysql_info()

INSERT INTO ... SELECT ...
String format: Records: 23 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
String format: Records: 37 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
String format: Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
String format: Records: 60 Duplicates: 0 Warnings: 0
UPDATE
String format: Rows matched: 65 Changed: 65 Warnings: 0
Les nombres ci-dessus ne sont là que pour illustrer. Leur valeur s'adaptera à la situation de la requête.

Note : mysql_info() retourne une valeur différente de FALSE pour les commandes INSERT ... VALUES uniquement si plusieurs jeux de valeurs à insérer ont été spécifiés dans la commande.

Voir aussi mysql_affected_rows().

Précédent | Sommaire | Suivant
mysql_get_server_info | Niveau supérieur | mysql_insert_id


mysql_insert_id

(PHP 3, PHP 4 )

mysql_insert_id -- Retourne l'identifiant généré par la dernière requête INSERT.

Description

int mysql_insert_id ( [resource link_identifier])

mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante, ou bien sûr la connexion spécifiée par link_identifier. Si link_identifier est omis, la dernière connexion ouverte est utilisée.

mysql_insert_id() retourne 0 si la dernière requête SQL n'a pas généré de valeur AUTO_INCREMENT. Si vous devez lire cette valeur pour la conserver et l'utiliser ultérieurement, appelez la fonction mysql_insert_id() juste après l'exécution de la requête, pour obtenir cette valeur non parasitée.

Note : La fonction MySQL LAST_INSERT_ID() contient toujours la valeur AUTO_INCREMENT la plus récente, et n'est pas remis à zéro entre deux requêtes.

Avertissement

mysql_insert_id() convertit le type de valeur retourné par la fonction C de MySQL C mysql_insert_id() en type PHP long (appelé int en PHP). Si votre colonne de type AUTO_INCREMENT est une colonne de type BIGINT, la valeur retournée par mysql_insert_id() sera incorrecte. A la place, utilisez la fonction interne MySQL LAST_INSERT_ID() dans une requête SQL.

Exemple 1. Exemple avec mysql_insert_id()

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysql_error());
    mysql_select_db("mydb");

    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf ("Le dernier ID ins&eacute;r&eacute; dans est le %d\n", mysql_insert_id());
?>

Voir aussi mysql_query().

Précédent | Sommaire | Suivant
mysql_info | Niveau supérieur | mysql_list_dbs


mysql_list_dbs

(PHP 3, PHP 4 )

mysql_list_dbs -- Liste les bases de données disponibles sur le serveur MySQL

Description

resource mysql_list_dbs ( [resource link_identifier])

mysql_list_dbs() retournera un identifiant de résultat, qui contiendra les noms des bases de données disponibles sur la connexion MySQL courante, ou bien sur la connexion spécifiée par link_identifier. La fonction mysql_tablename(), ainsi que toutes les fonctions d'accès aux résultats comme mysql_fetch_array() peuvent être utilisées pour déterminer le nom des bases dans le pointeur de résultat.

Exemple 1. Exemple avec mysql_list_dbs()

<?php
$link = mysql_connect('localhost', 'utilisateur_mysql', 'mot_de_passe_mysql');
$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {
    echo $row->Database . "\n";
}
?>

L'exemple ci-dessus va afficher :
database1
database2
database3
...

Note : The above code would just as easily work with mysql_fetch_row() or other similar functions.

Pour des raisons de compatibilité ascendante, mysql_listdbs() est encore disponible.

Voir aussi mysql_db_name().

Précédent | Sommaire | Suivant
mysql_insert_id | Niveau supérieur | mysql_list_fields


mysql_list_fields

(PHP 3, PHP 4 )

mysql_list_fields -- Liste les champs du résultat MySQL

Description

resource mysql_list_fields ( string database_name, string table_name [, resource link_identifier])

mysql_list_fields() recherche les informations relatives à la table table_name sur la connexion MySQL courante, ou bien sûr la connexion spécifiée par link_identifier. Les arguments sont la base de données et le nom de la table. Un pointeur de résultat est retourné et pourra être passé à mysql_field_flags(), mysql_field_len(), mysql_field_name() et mysql_field_type().

Un identifiant de résultat est un entier positif. La fonction retourne -1 si une erreur survient. Une chaîne décrivant le problème rencontré sera placée dans la variable $phperrmsg et, à moins que la fonction n'ait été appelée sous la forme @mysql(), cette erreur sera aussi affichée.

Exemple 1. Exemple avec mysql_list_fields()

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$fields = mysql_list_fields("database1", "table1", $link);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo mysql_field_name($fields, $i) . "\n";
}

Le script ci-dessus va afficher :
field1
field2
field3
...

Pour des raisons de compatibilité ascendante, mysql_listfields() est encore disponible.

Précédent | Sommaire | Suivant
mysql_list_dbs | Niveau supérieur | mysql_list_processes


mysql_list_processes

(PHP 4 >= 4.3.0)

mysql_list_processes -- Liste les processus MySQL

Description

resource mysql_list_processes ( [resource link_identifier])

mysql_list_processes() retourne une ressource de résultat qui liste les processus courants sur le serveur.

Exemple 1. Exemple avec mysql_list_processes()

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$result = mysql_list_processes($link);
while ($row = mysql_fetch_row($result)){
    printf("%s %s %s %s %s\n", $row["Id"], $row["Host"], $row["db"],
       $row["Command"], $row["Time"]);
}
mysql_free_result ($result);
?>

L'exemple ci-dessus va afficher :
1 localhost test Processlist 0
4 localhost mysql sleep 5

Voir aussi mysql_thread_id().

Précédent | Sommaire | Suivant
mysql_list_fields | Niveau supérieur | mysql_list_tables


mysql_list_tables

(PHP 3, PHP 4 )

mysql_list_tables -- Liste les tables d'une base de données

Description

resource mysql_list_tables ( string database [, resource link_identifier])

mysql_list_tables() prend le nom d'une base de données database et retourne un identifiant de résultat, qui contiendra la liste des tables sur la connexion MySQL courante, ou bien sûr la connexion spécifiée par link_identifier. La fonction mysql_tablename(), ainsi que toutes les fonctions d'accès aux résultats comme mysql_fetch_array() peuvent être utilisées pour déterminer le nom des tables dans le pointeur de résultat.

Le paramètre database est le nom de la base de données à utiliser pour lister les tables. En cas d'échec, mysql_list_tables() retourne FALSE.

Pour des raisons de compatibilité ascendante, la fonction mysql_listtables() est toujours disponible. Elle est désormais obsolète.

Exemple 1. Exemple avec mysql_list_tables()

<?php
    $dbname = 'test';

    if (!mysql_connect('serveur_mysql', 'utilisateur_mysql', 'mot_de_passe_mysql') {
        print 'Impossible de se connecter &agrave; MySQL';
        exit;
    }

    $result = mysql_list_tables($dbname);

    if (!$result) {
        print "Erreur : impossible de lister les bases de donn&eacute;es\n";
        print 'Erreur MySQL : ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_row($result)) {
        print "Table : $row[0]\n";
    }

    mysql_free_result($result);
?>

Voir aussi mysql_list_dbs() et mysql_tablename().

Précédent | Sommaire | Suivant
mysql_list_processes | Niveau supérieur | mysql_num_fields


mysql_num_fields

(PHP 3, PHP 4 )

mysql_num_fields -- Retourne le nombre de champs d'un résultat MySQL

Description

int mysql_num_fields ( resource result)

mysql_num_fields() retourne le nombre de champs du résultat MySQL result.

Voir aussi
mysql_select_db(),
mysql_query(),
mysql_fetch_field() et
mysql_num_rows().

Pour des raisons de compatibilité ascendante mysql_numfields() est encore disponible.

Précédent | Sommaire | Suivant
mysql_list_tables | Niveau supérieur | mysql_num_rows


mysql_num_rows

(PHP 3, PHP 4 )

mysql_num_rows -- Retourne le nombre de lignes d'un résultat

Description

int mysql_num_rows ( resource result)

mysql_num_rows() retourne le nombre de lignes d'un résultat. Cette commande n'est valide que pour les commandes SELECT . Pour connaître le nombre de lignes retournées par INSERT, UPDATE ou DELETE, utilisez mysql_affected_rows().

Exemple 1. Exemple mysql_num_rows()

<?php

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>

Note : Si vous utilisez mysql_unbuffered_query(), mysql_num_rows() ne retournera pas le nombre correct de lignes lues tant que vous n'aurez pas lu toutes les lignes de la base.

Voir aussi
mysql_affected_rows(),
mysql_connect(),
mysql_data_seek(),
mysql_select_db() et
mysql_query().

Pour des raisons de compatibilité ascendante mysql_numrows() est encore disponible.

Précédent | Sommaire | Suivant
mysql_num_fields | Niveau supérieur | mysql_pconnect


mysql_pconnect

(PHP 3, PHP 4 )

mysql_pconnect -- Ouvre une connexion persistante à un serveur MySQL.

Description

resource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]])

mysql_pconnect() retourne un lien persistant positif en cas de succès et sinon FALSE en cas d'erreur.

mysql_pconnect() établit une connexion persistante à un serveur MySQL. Tous les arguments sont optionnels et des valeurs par défaut seront utilisér en cas d'omission ('localhost', nom d'utilisateur propriétaire du processus, mot de passe vide).

Le nom de l'hôte peut aussi inclure le numéro de port, c'est-à-dire "hostname:port" ou un chemin jusqu'à la socket :/path/to/socket pour l'hôte local.

Note : Le support de ":port" a été ajouté à partir de la version 3.0B4.

Le support de ":/path/to/socket" a été ajouté à partir de la version 3.0.10.

mysql_pconnect() se comporte exactement comme mysql_connect(), mais avec deux différences majeures :

Premièrement, lors de la connexion, la fonction essaie de trouver une connexion permanente déjà ouverte sur cet hôte, avec le même nom d'utilisateur et de mot de passe. Si une telle connexion est trouvée, son identifiant est retourné, sans ouvrir de nouvelle connexion.

Deuxièmement, la connexion au serveur MySQL ne sera pas terminée avec la fin du script. Au lieu de cela, le lien sera conservé pour un prochain accès (mysql_close() ne terminera pas une connexion persistante établie par mysql_pconnect()).

C'est pourquoi ce type de connexion est dite 'persistante'.

Note : Notez que les connexions persitantes ne fonctionnent que si vous utilisez PHP en version module. Voyez la section sur les connexions persistantes aux bases de données pour plus d'informations.

Avertissement

L'utilisation des connexions persistantes requiert des paramétrages d'Apache et de MySQL pour vous assurer que vous n'atteindrez pas la limite maximale de nombre de connexions simultanées.

Précédent | Sommaire | Suivant
mysql_num_rows | Niveau supérieur | mysql_ping


mysql_ping

(PHP 4 >= 4.3.0)

mysql_ping -- Pingue le serveur, et se reconnecte au besoin

Description

bool mysql_ping ( [resource link_identifier])

mysql_ping() vérifie sir la connexion au serveur fonctionne. Si elle est tombée, une reconnexion automatique est effectuée. Cette fonction est utile pour les scripts qui restent inactifs durant un long moment. Ils peuvent ainsi vérifier si le serveur a fermé la connexion, pour cause d'inactivité. mysql_ping() retourne TRUE si la connexion au serveur fonctionne, et FALSE sinon.

Voir aussi mysql_thread_id() et mysql_list_processes().

Précédent | Sommaire | Suivant
mysql_pconnect | Niveau supérieur | mysql_query


mysql_query

(PHP 3, PHP 4 )

mysql_query -- Envoie une requête SQL à un serveur MySQL

Description

resource mysql_query ( string query [, resource link_identifier])

mysql_query() envoie une requête SQL à la base de données actuellement active sur le serveur MysQL. Si link_identifier n'est pas précisé, la dernière connexion est utilisée. Si aucune connexion n'a été ouverte, la fonction tentera d'en ouvrir une, avec la fonction mysql_connect() mais sans aucun paramètre (c'est-à-dire avec les valeurs par défaut).

Le paramètre optionnel result_mode peut prendre les valeurs de MYSQL_USE_RESULT ou MYSQL_STORE_RESULT. Par défaut, il vaut MYSQL_STORE_RESULT, ce qui fait que le résultat est mis dans un buffer. Voyez aussi la fonction mysql_unbuffered_query() pour comprendre cas où le résultat n'est pas mis en buffer.

Note : La requête ne doit pas être terminée par un point-virgule.

Seules les requêtes SQL SELECT, SHOW, EXPLAIN et DESCRIBE, utilisées avec mysql_query() retourne une ressource de résultat MySQL, ou bien FALSE si la requête n'a pu être exécuté correctement. Pour les autres types de requêtes SQL, mysql_query() retourne TRUE en cas de succès et FALSE en cas d'erreur. Un résultat différent de FALSE, la valeur signifie que la requête soumise est valide et qu'elle a pu être exécutée correctement. Cela n'apporte aucune indication sur le nombre de lignes affectées. Il est parfaitement possible qu'une requête soit réussie, mais qu'elle ne modifie aucune ligne, ou qu'elle n'en retourne aucune.

L'exemple suivant est syntaxiquement invalide, ce qui conduit mysql_query() à l'échec et retourne FALSE:

Exemple 1. Exemple avec mysql_query()

<php
$result = mysql_query("SELECT * WHERE 1=1")
    or die ("Requ&ecirc;te invalide");
?>

L'exemple suivant est sémantiquement invalide si ma_colonne n'est pas une colonne de la table my_table, ce qui conduit mysql_query() à l'échec et retourne FALSE :

Exemple 2. Exemple avec mysql_query() (2)

<?php
$result = mysql_query("SELECT ma_colonne FROM ma_table")
    or die ("Requ&ecirc;te invalide");
?>

mysql_query() échouera aussi et retournera aussi FALSE si les droits d'accès ne sont pas suffisants.

En supposant que la requête réussisse, vous pouvez appeler mysql_affected_rows() pour connaître le nombre de lignes affectées (pour les commandes DELETE, INSERT, REPLACE, ou UPDATE ).

Pour les commandes SELECT , mysql_query() retourne un identifiant de résultat que vous pouvez passer à mysql_fetch_array(), ou n'importe quelle autre fonction de lecture de résultat. Lorsque vous avez terminé avec le résultat, libérez la mémoire avec mysql_free_result().

Voir aussi
mysql_num_rows(),
mysql_affected_rows(),
mysql_unbuffered_query(),
mysql_free_result(),
mysql_fetch_array(),
mysql_fetch_row(),
mysql_fetch_assoc(),
mysql_result(),
mysql_select_db() et
mysql_connect().

Précédent | Sommaire | Suivant
mysql_ping | Niveau supérieur | mysql_real_escape_string


mysql_real_escape_string

(PHP 4 >= 4.3.0)

mysql_real_escape_string -- Protège les caractères spéciaux d'une commande SQL.

Description

string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])

mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant. Le résultat peut être utilisé sans problème avec la fonction mysql_query().

Note : mysql_real_escape_string() ne remplace ni %, ni _.

Exemple 1. Exemple avec mysql_real_escape_string()

<?php
  $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
  $item = "C'est la belle vie, n'est ce pas?";
  $escaped_item = mysql_real_escape_string($item);
  printf ("Cha&icirc;ne r&eacute;sultat : : %s\n", $escaped_item);
?>

L'exemple ci-dessus va afficher ceci :
Cha&icirc;ne r&eacute;sultat : C\'est la belle vie, n\'est ce pas?

Voir aussi mysql_escape_string() et mysql_character_set_name().

Précédent | Sommaire | Suivant
mysql_query | Niveau supérieur | mysql_result


mysql_result

(PHP 3, PHP 4 )

mysql_result -- Retourne un champ d'un résultat

Description

mixed mysql_result ( resource result, int row [, mixed field])

mysql_result() retourne le contenu d'un champ dans le résultat MySQL result_identifier. L'argument field peut être un indice de champ, ou le nom d'un champ, ou le nom de la table + point + le nom du champ ("table.champ"). Si la colonne a été aliasée, utilisez de préférence l'alias.

Lorsque vous travaillez sur des résultats de grande taille, il est conseillé d'utiliser une des fonctions qui vont rechercher une ligne entière dans un tableau. Ces fonctions sont NETTEMENT plus rapides. De plus, utiliser un offset numériques est aussi beaucoup plus rapide que spécifier un nom littéral.

Les appels mysql_result() ne devraient pas être mélangés avec d'autres fonctions qui travaillent aussi sur le résultat.

Exemple 1. Exemple avec mysql_result()

<?php
    $link = mysql_connect("hote", "utilisateur", "mot_de_passe")
            or die("Impossible de se connecter : " . mysql_error());

    $result = mysql_query("SELECT name FROM work.employee")
            or die("Impossible d'ex&eacute;cuter la requ&ecirc;te : . mysql_error());

    echo mysql_result($result,2); // Affiche le nom du troisi&egrave;me employ&eacute;

    mysql_close($link);
?>

Alternatives à haut rendement, RECOMMANDEES :
mysql_fetch_row(),
mysql_fetch_array() et
mysql_fetch_object().

Précédent | Sommaire | Suivant
mysql_real_escape_string | Niveau supérieur | mysql_select_db


mysql_select_db

(PHP 3, PHP 4 )

mysql_select_db -- Sélectionne une base de données MySQL

Description

bool mysql_select_db ( string database_name [, resource link_identifier])

mysql_select_db() change la base de données active sur la connexion représentée par link_identifier. Si aucun identifiant n'est spécifié, la dernière connexion est utilisée. S'il n'y a pas de dernière connexion, la fonction tentera de se connecter seule, avec mysql_connect() et les paramètres par défaut.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Toutes les requêtes suivantes avec mysql_query() seront faites avec la base de données active.

Voir aussi
mysql_connect(),
mysql_pconnect() et
mysql_query().

Pour des raisons de compatibilité ascendante mysql_selectdb() est encore disponible. Elle est toutefois obsolète.

Précédent | Sommaire | Suivant
mysql_result | Niveau supérieur | mysql_stat


mysql_stat

(PHP 4 >= 4.3.0)

mysql_stat -- Retourne le statut courant du serveur

Description

string mysql_stat ( [resource link_identifier])

mysql_stat() retourne le statut courant du serveur.

Note : mysql_stat() actuellement ne retourne que le temps de fonctionnement, les threads, les requêtes, les tables ouvertes, les tables flushées, et le nombre de requêtes par secondes. Pour une liste complète des statuts du serveur, utilisez la requête SHOW STATUS.

Exemple 1. Exemple mysql_stat()

<?php
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
$status = explode('  ',mysql_stat($link));
print_r($status);
?>

L'exemple ci-dessus va afficher :
Array
(
    [0] => Uptime: 5380
    [1] => Threads: 2
    [2] => Questions: 1321299
    [3] => Slow queries: 0
    [4] => Opens: 26
    [5] => Flush tables: 1
    [6] => Open tables: 17
    [7] => Queries per second avg: 245.595
)

Précédent | Sommaire | Suivant
mysql_select_db | Niveau supérieur | mysql_tablename


mysql_tablename

(PHP 3, PHP 4 )

mysql_tablename -- Lit le nom de la table qui contient un champ

Description

string mysql_tablename ( resource result, int i)

mysql_tablename() prend le pointeur de résultat obtenu avec mysql_list_tables() ou bien un index entier et retourne le nom de la table. La fonction mysql_tablename(), ainsi que toutes les fonctions d'accès aux résultats comme mysql_fetch_array() peuvent être utilisées pour déterminer le nom des tables dans le pointeur de résultat.

Exemple 1. Exemple avec mysql_tablename()

<?php
    mysql_connect("localhost", "utilisateur_mysql", "mot_de_passe_mysql");
    $result = mysql_list_tables("ma_bdd");

    for ($i = 0; $i < mysql_num_rows($result); $i++)
        printf ("Table : %s\n", mysql_tablename($result, $i));

    mysql_free_result($result);
?>

Voir aussi mysql_list_tables().

Précédent | Sommaire | Suivant
mysql_stat | Niveau supérieur | mysql_thread_id


mysql_thread_id

(PHP 4 >= 4.3.0)

mysql_thread_id -- Retourne l'identifiant du thread courant

Description

int mysql_thread_id ( [resource link_identifier])

mysql_thread_id() retourne l'identifiant du thread courant. Si la connexion est perdue et que vous vous reconnectez (avec mysql_ping() par exemple), alors l'identifiant de thread va changer. Cela signifie que vous devez lire l'identifiant de thread, et le garder pour plus tard. Lisez le lorsque vous en avez besoin.

Exemple 1. Exemple avec mysql_thread_id()

<?php
  $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
  $thread_id = mysql_thread_id($link);
  if ($thread_id){
    printf ("L'identifiant du thread courant est %d\n", $thread_id);
  }
?>

L'exemple ci-dessus va afficher :
L'identifiant du thread courant est 73

Voir aussi mysql_ping() et mysql_list_processes().

Précédent | Sommaire | Suivant
mysql_tablename | Niveau supérieur | mysql_unbuffered_query


mysql_unbuffered_query

(PHP 4 >= 4.0.6)

mysql_unbuffered_query -- Exécute une requête SQL sans mobiliser les résultats

Description

resource mysql_unbuffered_query ( string query [, resource link_identifier])

mysql_unbuffered_query() envoie la requête SQL query au serveur MySQL identifié par link_identifier, sans préparer les résultats pour la lecture, comme le fait mysql_query(). D'une part, cela réduit considérablement la consommation de mémoire par MySQL, lorsque les requêtes génère des résultats de grandes tailles. D'autre part, vous pourrez utiliser les résultats dès que la première ligne aura été lue : pas besoin d'attendre que la requête ait complètement été exécutée.

Note : L'intérêt de mysql_unbuffered_query() est tempéré par une limitation : mysql_num_rows() ne fonctionne pas sur une ressource retournée par mysql_unbuffered_query(). Vous devez aussi lire tous les résultats d'une première requête exécutée avec mysql_unbuffered_query(), avant de pouvoir en exécuter une autre.

Voir aussi mysql_query().

Précédent | Sommaire | Suivant
mysql_thread_id | Niveau supérieur | Extension MySQL améliorée


Extension MySQL améliorée

Manuel PHP
Précédent Suivant

LXIV. Extension MySQL améliorée

Introduction

L'extension mysqli vous permet d'accéder aux fonctionnalités fournies par MySQL 4.1 et plus. Plus d'informations sur le serveur de bases de données MySQL peuvent être trouvées sur http://www.mysql.com/

La documentation de MySQL peut être trouvée sur http://www.mysql.com/documentation/.

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Pré-requis

Pour faire fonctionner ces fonctions, vous devez compiler PHP avec le support de l'extension MySQLi.

Note : L'extension MySQLi est conçue pour fonctionner avec la version 4.1 ou plus de MySQL. Pour les versions plus anciennes, voyez la documentation de l'extension mysql.

Installation

Pour installer l'extension mysqli pour PHP, utilisez l'option de configuration --with-mysqli=mysql_config_path où mysql_config_path représente l'endroit où se trouve le programme mysql_config qui accompagne les versions de MySQL supérieures à la 4.1. Désactivez aussi l'extension standard MySQL (qui est activée par défaut) en utilisant aussi l'option de configuration --without-mysql. Si vous voulez installer l'extension standard mysql en même temps que l'extension mysqli, la librairie embarquée libmysql distribuée avec PHP ne peut être utilisée. Utilisez à la place les librairies clientes installées par MySQL avec des versions inférieures à la 4.1. Cela forcera PHP à utiliser les librairies du client installées par MySQL pour éviter les conflits.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration MySQLi

Nom | Par défaut | Modifiable
mysqli.max_links | "-1" | PHP_INI_SYSTEM
mysqli.default_port | NULL | PHP_INI_ALL
mysqli.default_socket | NULL | PHP_INI_ALL
mysqli.default_host | NULL | PHP_INI_ALL
mysqli.default_user | NULL | PHP_INI_ALL
mysqli.default_pw | NULL | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

mysqli.max_links integer

Le nombre maximal de connexions MySQL par processus, incluant les connexions persistantes.

mysqli.default_port string

Le numéro par défaut de port TCP à utiliser lors de la connexion au serveur si aucun autre port n'est fourni. Si il n'est pas défini, le port sera obtenu à partir de la variable d'environnement MYSQL_TCP_PORT, l'entrée mysql-tcp dans /etc/services ou la constante de compilation MYSQL_PORT, dans cet ordre. Win32 n'utilisera que la constante MYSQL_PORT.

mysqli.default_socket string

Le nom par défaut de la socket à utiliser lors des connexions locales au serveur si aucun autre nom n'est fourni.

mysqli.default_host string

Le serveur par défaut à utiliser lors de la connexion à un serveur si aucun autre hôte n'est fourni. Ne s'applique pas avec le safe mode.

mysqli.default_user string

Le nom d'utilisateur par défaut à utiliser lors de la connexion à un serveur si aucun autre nom n'est fourni. Ne s'applique pas avec le safe mode.

mysqli.default_password string

Le mot de passe par défaut à utiliser lors de la connexion à un serveur si aucun autre mot de passe n'est fourni. Ne s'applique pas avec le safe mode.

Types de ressources

mysqli_link

Représente une connexion entre PHP et une base de données MySQL.

mysqli_stmt

Représente une commande préparée.

mysqli_result

Représente le jeu de résultats obtenu d'une requête sur la base de données.

Constantes prédefinies

Tableau 2. Constantes MySQLi

Nom | Description
MYSQLI_READ_DEFAULT_GROUP (integer) |
MYSQLI_READ_DEFAULT_FILE (integer) |
MYSQLI_OPT_CONNECT_TIMEOUT (integer) |
MYSQLI_OPT_LOCAL_INFILE (integer) |
MYSQLI_INIT_COMMAND (integer) |
MYSQLI_CLIENT_SSL (integer) |
MYSQLI_CLIENT_COMPRESS (integer) |
MYSQLI_CLIENT_INTERACTIVE (integer) |
MYSQLI_CLIENT_IGNORE_SPACE (integer) |
MYSQLI_CLIENT_NO_SCHEMA (integer) |
MYSQLI_CLIENT_MULTI_QUERIES (integer) |
MYSQLI_STORE_RESULT (integer) |
MYSQLI_USE_RESULT (integer) |
MYSQLI_ASSOC (integer) |
MYSQLI_NUM (integer) |
MYSQLI_BOTH (integer) |
MYSQLI_NOT_NULL_FLAG (integer) |
MYSQLI_PRI_KEY_FLAG (integer) |
MYSQLI_UNIQUE_KEY_FLAG (integer) |
MYSQLI_MULTIPLE_KEY_FLAG (integer) |
MYSQLI_BLOB_FLAG (integer) |
MYSQLI_UNSIGNED_FLAG (integer) |
MYSQLI_ZEROFILL_FLAG (integer) |
MYSQLI_AUTO_INCREMENT_FLAG (integer) |
MYSQLI_TIMESTAMP_FLAG (integer) |
MYSQLI_SET_FLAG (integer) |
MYSQLI_NUM_FLAG (integer) |
MYSQLI_PART_KEY_FLAG (integer) |
MYSQLI_GROUP_FLAG (integer) |
MYSQLI_TYPE_DECIMAL (integer) |
MYSQLI_TYPE_TINY (integer) |
MYSQLI_TYPE_SHORT (integer) |
MYSQLI_TYPE_LONG (integer) |
MYSQLI_TYPE_FLOAD (integer) |
MYSQLI_TYPE_DOUBLE (integer) |
MYSQLI_TYPE_NULL (integer) |
MYSQLI_TYPE_TIMESTAMP (integer) |
MYSQLI_TYPE_LONGLONG (integer) |
MYSQLI_TYPE_INT24 (integer) |
MYSQLI_TYPE_DATE (integer) |
MYSQLI_TYPE_TIME (integer) |
MYSQLI_TYPE_DATETIME (integer) |
MYSQLI_TYPE_YEAR (integer) |
MYSQLI_TYPE_NEWDATE (integer) |
MYSQLI_TYPE_ENUM (integer) |
MYSQLI_TYPE_SET (integer) |
MYSQLI_TYPE_TINY_BLOB (integer) |
MYSQLI_TYPE_MEDIUM_BLOB (integer) |
MYSQLI_TYPE_LONG_BLOB (integer) |
MYSQLI_TYPE_BLOB (integer) |
MYSQLI_TYPE_VAR_STRING (integer) |
MYSQLI_TYPE_STRING (integer) |
MYSQLI_TYPE_CHAR (integer) |
MYSQLI_TYPE_INTERVAL (integer) |
MYSQLI_TYPE_GEOMETRY (integer) |
MYSQLI_BIND_STRING (integer) |
MYSQLI_BIND_INT (integer) |
MYSQLI_BIND_DOUBLE (integer) |
MYSQLI_BIND_SEND_DATA (integer) |
MYSQLI_RPL_MASTER (integer) |
MYSQLI_RPL_SLAVE (integer) |
MYSQLI_RPL_ADMIN (integer) |
MYSQLI_NEED_DATA (integer) |
MYSQLI_NO_DATA (integer) |
MYSQLI_PR_REPORT_STDERR (integer) |
MYSQLI_PR_REPORT_PORT (integer) |
MYSQLI_PR_REPORT_FILE (integer) |
Table des matières
mysqli_affected_rows -- Retourne le nombre de ligne affectées par la dernière opération MySQL
mysqli_autocommit -- Active ou désactive le mode auto-commit
mysqli_bind_param -- Lie des variables à une requête préparée
mysqli_bind_result -- Lie des variables à une requête préparée pour le stockage de résultat
mysqli_change_user -- Change l'utilisateur de la connexion spécifiée
mysqli_character_set_name -- Retourne le jeu de caractères courant pour la connexion
mysqli_close -- Ferme une connexion
mysqli_commit -- Valide la transaction courante
mysqli_connect -- Ouvre une connexion à un serveur MySQL
mysqli_data_seek -- Déplace le pointeur interne de résultat
mysqli_debug -- Effectue des actions de débogage
mysqli_disable_reads_from_master --
mysqli_disable_rpl_parse --
mysqli_dump_debug_info -- Ecrit les informations de débogage dans le log
mysqli_enable_reads_from_master --
mysqli_enable_rpl_parse --
mysqli_errno -- Retourne un code d'erreur pour la dernière commande MySQL
mysqli_error -- Retourne une chaîne décrivant la dernière erreur
mysqli_execute -- Exécute une requête préparée
mysqli_fetch_array -- Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux.
mysqli_fetch_assoc -- Récupère une ligne de résultat sous forme de tableau associatif
mysqli_fetch_field_direct -- Récupère les données métas d'un champ unique
mysqli_fetch_field -- Retourne le prochain champ dans le jeu de résultats
mysqli_fetch_fields -- Retourne un tableau d'objets représentant les champs dans le résultat
mysqli_fetch_lengths -- Retourne les longueurs des colonnes de la ligne courante du jeu de résultats
mysqli_fetch_object -- Retourne la ligne courante d'un jeu de résultat sous forme d'objet
mysqli_fetch_row -- Récupère une ligne de résultat sous forme de tableau indexé
mysqli_fetch -- Récupère un résultat à partir d'une requête préparée dans les variables
mysqli_field_count -- Retourne le nombre de colonnes pour la dernière requête
mysqli_field_seek -- Déplace le pointeur de résultat sur le champ spécifié
mysqli_field_tell -- Retourne la position du champ courant dans un pointeur de résultat
mysqli_free_result -- Libère la mémoire associée à un résultat
mysqli_get_client_info -- Retourne une chaîne contenant la version du client MySQL
mysqli_get_host_info -- Retourne une chaîne contenant le type de connexion utilisé
mysqli_get_proto_info -- Retourne la version du protocole MySQL utilisé
mysqli_get_server_info -- Retourne la version du serveur MySQL
mysqli_get_server_version -- Retourne un entier représentant la version du serveur MySQL
mysqli_info -- Retourne des informations à propos de la dernière requête exécutée
mysqli_init -- Initialise MySQLi et retourne une ressource à utiliser avec mysqli_real_connect
mysqli_insert_id -- Retourne l'identifiant automatiquement généré par la dernière requête
mysqli_kill -- Demande au serveur de terminer un thread MySQL
mysqli_master_query -- Force l'exécution d'une requête sur le maître dans une configuration maître/esclave (master/slave)
mysqli_num_fields -- Retourne le nombre de champs dans un résultat
mysqli_num_rows -- Retourne le nombre de lignes dans un résultat
mysqli_options -- Modifie les options
mysqli_param_count -- Retourne le nombre de paramètres pour la requête donnée
mysqli_ping -- Ping la connexion au serveur et reconnecte si elle n'existe plus
mysqli_prepare_result --
mysqli_prepare -- Prépare une requête SQL pour l'exécution
mysqli_profiler --
mysqli_query -- Performe une requête sur la base de données
mysqli_read_query_result --
mysqli_real_connect -- Ouvre une connexion à un serveur MySQL
mysqli_real_escape_string -- Protège les caractères spéciaux d'une chaîne pour l'utiliser dans une requête SQL, en prenant en compte le jeu de caractères courant de la connexion
mysqli_real_query -- Exécute une requête SQL
mysqli_reload --
mysqli_rollback --
mysqli_rpl_parse_enabled --
mysqli_rpl_probe --
mysqli_rpl_query_type --
mysqli_select_db -- Sélectionne une base de données par défaut pour les requêtes
mysqli_send_long_data --
mysqli_send_query --
mysqli_slave_query -- Force l'exécution d'une requête sur un esclave dans une configuration maître/esclave (master/slave)
mysqli_ssl_set --
mysqli_stat -- Obtient le statut courant du système
mysqli_stmt_affected_rows --
mysqli_stmt_close -- Ferme une requête
mysqli_stmt_errno --
mysqli_stmt_error --
mysqli_stmt_store_result --
mysqli_store_result -- Transfère un jeu de résultats à partir de la dernière requête
mysqli_thread_id -- Retourne l'identifiant du thread pour la connexion courante
mysqli_thread_safe -- Indique si le thread safety est donné ou non
mysqli_use_result -- Initialise la récupération d'un jeu de résultats
mysqli_warning_count -- Retourne le nombre d'avertissements généré par la dernière requête

Précédent | Sommaire | Suivant
mysql_unbuffered_query | Niveau supérieur | mysqli_affected_rows


mysqli_affected_rows

(PHP 5 CVS only)

mysqli_affected_rows -- Retourne le nombre de ligne affectées par la dernière opération MySQL

Description

mixed mysqli_affected_rows ( resource link)

mysqli_affected_rows() retourne le nombre de lignes affectées par la dernière requête INSERT, UPDATE, ou DELETE associée au paramètre link. Si la dernière requête était invalide, cette fonction retournera -1.

Note : Lorsque vous supprimez tout le contenu de la table (i.e. 'DELETE FROM foo'), cette fonction ne retourne pas le nombre de lignes effacées.

La fonction mysqli_affected_rows() ne fonctionne que pour les requêtes qui modifient une table. Pour connaître le nombre de lignes retournées par une requête SELECT, utilisez la fonction mysqli_num_rows().

Exemple 1. Requête de suppression

<?php
    /* connexion &agrave; la base */
    mysqli_connect("localhost", "utilisateur_mysql", "pass_mysql") or
      die("Impossible de se connecter : " . mysqli_error());
    mysqli_select_db("mydb");

    /* cela devrait retourner le nombre correct de lignes effac&eacute;es */
    mysqli_query("DELETE FROM mytable WHERE id < 10");
    printf ("Enregistrements effac&eacute;s : %d\n", mysqli_affected_rows());

    /* sans la clause where dans la requ&ecirc;te, cela devrait retourner 0 */
    mysqli_query("DELETE FROM mytable");
    printf ("Enregistrements effac&eacute;s : %d\n", mysqli_affected_rows());
?>

L'exemple précédent produira ce qui suit :
Enregistrements effac&eacute;s : 10
Enregistrements effac&eacute;s : 0

Exemple 2. Requête de mise à jour

<?php
    /* connexion &agrave; la base */
    mysqli_connect("localhost", "utilisateur_mysql", "pass_mysql") or
      die("Impossible de se connecter : " . mysqli_error());
    mysqli_select_db("mydb");

    /* Update records */
    mysqli_query("UPDATE mytable SET used=1 WHERE id < 10");
    printf ("Lignes mises &agrave; jour : %d\n", mysqli_affected_rows());
?>

L'exemple précédent produira ce qui suit :
Lignes mises &agrave; jour : 10

Précédent | Sommaire | Suivant
Extension MySQL améliorée | Niveau supérieur | mysqli_autocommit


mysqli_autocommit

(PHP 5 CVS only)

mysqli_autocommit -- Active ou désactive le mode auto-commit

Description

bool mysqli_autocommit ( resource link, bool mode)

mysqli_autocommit() est utilisée pour activer ou désactiver le mode auto-commit pour les requêtes sur la connexion à la base de données représentée par le paramètre link.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Utilisation de la fonction mysqli_autocommit()

<?php

    /* Ouvre une connexion */
    $link = mysqli_connect("localhost", "user", "pass");
    mysqli_select_db("mydb");

    /* active le monde auto-commit */
    mysqli_autocommit($link, true);

?>

Précédent | Sommaire | Suivant
mysqli_affected_rows | Niveau supérieur | mysqli_bind_param


mysqli_bind_param

(PHP 5 CVS only)

mysqli_bind_param -- Lie des variables à une requête préparée

Description

bool mysqli_bind_param ( resource stmt, mixed variable, int type)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Vous pouvez passer des paires additionelles de variables/types à cette fonction.

Précédent | Sommaire | Suivant
mysqli_autocommit | Niveau supérieur | mysqli_bind_result


mysqli_bind_result

(PHP 5 CVS only)

mysqli_bind_result -- Lie des variables à une requête préparée pour le stockage de résultat

Description

bool mysqli_bind_result ( resource stmt, mixed var, int len)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_bind_param | Niveau supérieur | mysqli_change_user


mysqli_change_user

(PHP 5 CVS only)

mysqli_change_user -- Change l'utilisateur de la connexion spécifiée

Description

bool mysqli_change_user ( resource link, string user, string password, string database)

mysqli_change_user() est utilisée pour changer l'utilisateur de la connexion spécifiée par le paramètre link et changer la base de données courante pour celle spécifiée par le paramètre database.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Vous pouvez passer la valeur NULL au paramètre database pour ne changer que l'utilisateur. Dans ce cas, vous pouvez utiliser la fonction mysqli_select_db() pour changer de base de données.

Pour que cette fonction réussisse, les paramètres username et password doivent être valides et l'utilisateur en question doit avoir les permissions d'accès à la base de données désirée. Si pour une raison ou l'autre, l'autorisation échoue, l'utilisateur courant sera conservé.

Note : L'utilisation de cette commande implique toujours que la connexion soit considérée comme neuve, que la fonction réussisse ou non. Un appel à cette fonction annulera donc toutes les transactions actives, fermera les tables temporaires et déverrouillera les tables verrouillées.

Exemple 1. Utilisation de mysqli_change_user()

<?php

    /* Ouvre une connexion en tant que foo@localhost et s&eacute;lectionne foo_db */
    $link = mysqli_connect("localhost", "foo", "pass");
    mysqli_select_db("foo_db");

    /* Change l'utilisateur en bar@localhost et la base de donn&eacute;es en bar_db */
    mysqli_change_user($link, "bar", "otherpass", "bar_db");

?>

Précédent | Sommaire | Suivant
mysqli_bind_result | Niveau supérieur | mysqli_character_set_name


mysqli_character_set_name

(PHP 5 CVS only)

mysqli_character_set_name -- Retourne le jeu de caractères courant pour la connexion

Description

string mysqli_character_set_name ( resource link)

Retourne le jeu de caractères courant pour la connexion spécifiée par le paramètre link.

Exemple 1. Utilisation de mysqli_character_set_name()

<?php

    /* Ouvre une connexion */
    $link = mysqli_connect("localhost", "username", "password");

    /* Affiche le jeu de caract&egrave;res courant */
    $charset = mysqli_character_set_name($link);
    printf ("Le jeu de caract&egrave;res courant est %s\n",$charset);

?>

Voir aussi mysqli_real_escape_string().

Précédent | Sommaire | Suivant
mysqli_change_user | Niveau supérieur | mysqli_close


mysqli_close

(PHP 5 CVS only)

mysqli_close -- Ferme une connexion

Description

bool mysqli_close ( resource link)

La fonction mysqli_close() ferme la connexion spécifiée par le paramètre link.

Voir aussi mysqli_connect() et mysqli_real_connect().

Précédent | Sommaire | Suivant
mysqli_character_set_name | Niveau supérieur | mysqli_commit


mysqli_commit

(PHP 5 CVS only)

mysqli_commit -- Valide la transaction courante

Description

bool mysqli_commit ( resource link)

Valide la transaction courante pour la base de données spécifiée par le paramètre link.

Voir aussi mysqli_autocommit() et mysqli_rollback().

Précédent | Sommaire | Suivant
mysqli_close | Niveau supérieur | mysqli_connect


mysqli_connect

(PHP 5 CVS only)

mysqli_connect -- Ouvre une connexion à un serveur MySQL

Description

resource mysqli_connect ( [string hostname [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]])

La fonction mysqli_connect() essaie d'ouvrir une connexion au serveur MySQL de l'hôte host qui peut être un nom d'hôte ou une adresse IP. Si vous passez la valeur NULL ou la chaîne "localhost" à ce paramètre, l'hôte local est sous-entendu. Lorsque possible, les sockets seront utilisées au lieu du protocole TCP/IP. mysqli_connect() retourne une ressource de connexion au serveur MySQL en cas de succès, et sinon FALSE.

Les paramètres username et password spécifient l'utilisateur et le mot de passe avec lesquels on se connecte au serveur MySQL. Si le mot de passe n'est pas indiqué (la valeur NULL est passée), le serveur MySQL essaiera d'identifier l'utilisateur en n'étudiant que les enregistrements où les utilisateurs n'ont pas de mot de passe. Cela permet à un utilisateur de jouir de plusieurs permissions (selon qu'on fournit le mot de passe ou non).

Le paramètre dbname, si fourni, spécifiera la base de données par défaut à utiliser lors de l'exécution de requêtes.

Les paramètres port et socket sont utilisés en conjonction avec le paramètre hostname pour mieux contrôler la manière dont la connexion au serveur se fait. Le paramètre port spécifie le numéro de port à utiliser, tandis que le paramètre socket spécifie la socket ou le tunnel nommé qui doit être utilisé.

Note : Spécifier le paramètre socket ne déterminera pas explicitement le type de connexion qui sera utilisé lors de la connexion au serveur MySQL. Cela est déterminé par le paramètre host.

Exemple 1. Utilisation de la fonction mysqli_connect()

<?php

/* Ouvre une connexion en tant que foo@localhost et s&eacute;lectionne
   bar comme base de donn&eacute;es par d&eacute;faut */
$link = mysqli_connect("localhost", "foo", "password", "bar");

?>

Voir aussi mysqli_close() et mysqli_real_connect().

Précédent | Sommaire | Suivant
mysqli_commit | Niveau supérieur | mysqli_data_seek


mysqli_data_seek

(PHP 5 CVS only)

mysqli_data_seek -- Déplace le pointeur interne de résultat

Description

void mysqli_data_seek ( resource result, int offset)

La fonction mysqli_data_seek() déplace le pointeur interne de résultat associé au jeu de résultat représenté par result, en le faisant pointer sur la ligne spécifiée par offset. Le paramètre offset doit être compris entre zéro et mysqli_num_rows() - 1.

Note : Cette fonction ne peut être utilisée qu'avec des résultats obtenus avec la fonction mysqli_store_result().

Exemple 1. Utilisation de mysqli_data_seek()

<?php

    /* Connexion &agrave; la base de donn&eacute;es */
    $link = mysqli_connect("localhost", "username", "password");
    mysqli_select_db("mydb");

    /* R&eacute;cup&eacute;ration de quelques lignes et stockage */
    $query = "SELECT DINSTINCT name FROM employee ORDER BY name";
    $result = mysqli_query($query) or die(mysqli_error()):

    $rows = mysqli_store_result($result);

    $total = mysqli_num_fields($rows);

    if ($total > 0) { // il y'a au moins une ligne
        /* Obtenir le dernier employ&eacute; */
        mysqli_data_seek($rows, mysqli_num_rows($result) -1);
        $employee = mysqli_fetch_row($rows);
        printf ("Nom de l'employ&eacute; : %s\n", $employee[0]);
    }

    mysqli_free_result($rows);

?>

Voir aussi
mysqli_store_result(),
mysqli_fetch_row() et
mysqli_num_rows().

Précédent | Sommaire | Suivant
mysqli_connect | Niveau supérieur | mysqli_debug


mysqli_debug

(PHP 5 CVS only)

mysqli_debug -- Effectue des actions de débogage

Description

void mysqli_debug ( string debug)

La fonction mysqli_debug() est utilisée pour effectuer des actions de débogage en utilisant la librairie de débogage Fred Fish. Le paramètre debug est une chaîne de caractères représentant l'opération de débogage à effectuer.

Exemple 1. Générer un journal de suivi

<?php

    /* Cr&eacute;e un journal de suivi dans '/tmp/client.trace' sur la machine locale (client) */
    mysqli_debug("d:t:0,/tmp/client.trace");

?>

Précédent | Sommaire | Suivant
mysqli_data_seek | Niveau supérieur | mysqli_disable_reads_from_master


mysqli_disable_reads_from_master

(PHP 5 CVS only)

mysqli_disable_reads_from_master --

Description

void mysqli_disable_reads_from_master ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_debug | Niveau supérieur | mysqli_disable_rpl_parse


mysqli_disable_rpl_parse

(PHP 5 CVS only)

mysqli_disable_rpl_parse --

Description

void mysqli_disable_rpl_parse ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_disable_reads_from_master | Niveau supérieur | mysqli_dump_debug_info


mysqli_dump_debug_info

(PHP 5 CVS only)

mysqli_dump_debug_info -- Ecrit les informations de débogage dans le log

Description

bool mysqli_dump_debug_info ( resource link)

Cette fonction est à utiliser par un utilisateur possédant le privilège SUPER et est utilisée pour écrire quelques informations de débogage dans le log pour le serveur MySQL relatif à la connexion spécifiée par le paramètre link.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
mysqli_disable_rpl_parse | Niveau supérieur | mysqli_enable_reads_from_master


mysqli_enable_reads_from_master

(PHP 5 CVS only)

mysqli_enable_reads_from_master --

Description

void mysqli_enable_reads_from_master ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_dump_debug_info | Niveau supérieur | mysqli_enable_rpl_parse


mysqli_enable_rpl_parse

(PHP 5 CVS only)

mysqli_enable_rpl_parse --

Description

void mysqli_enable_rpl_parse ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_enable_reads_from_master | Niveau supérieur | mysqli_errno


mysqli_errno

(PHP 5 CVS only)

mysqli_errno -- Retourne un code d'erreur pour la dernière commande MySQL

Description

int mysqli_errno ( resource link)

La fonction mysqli_errno() retournera le code erreur pour le dernier appel à une fonction MySQLi qui peut échouer ou réussir en respectant la connexion définie par la paramètre link. Si aucune erreur n'est survenue, cette fonction retournera zéro.

Note : Une liste complète des codes erreurs et leur signification peut être trouvée dans la section des constantes de la documentation MySQLi

Voir aussi mysqli_error().

Précédent | Sommaire | Suivant
mysqli_enable_rpl_parse | Niveau supérieur | mysqli_error


mysqli_error

(PHP 5 CVS only)

mysqli_error -- Retourne une chaîne décrivant la dernière erreur

Description

string mysqli_error ( resource link)

La fonction mysqli_error() est identique à la fonction mysqli_errno(), sauf qu'au lieu de renvoyer un code erreur sous forme d'entier, cette fonction retournera une chaîne de caractères décrivant la dernière erreur survenue sur la connexion représentée par le paramètre link. Si aucune erreur n'est survenue, cette fonction retournera une chaîne vide.

Exemple 1. Utilisation de la fonction mysqli_error()

<?php

/* Tentative de connexion &eacute;chou&eacute;e */
$host = "hote_inconnu";

$link = mysqli_connect($host, "username", "password")
        or die("Connexion impossible : " . mysqli_error());

?>

Voir aussi mysqli_errno().

Précédent | Sommaire | Suivant
mysqli_errno | Niveau supérieur | mysqli_execute


mysqli_execute

(PHP 5 CVS only)

mysqli_execute -- Exécute une requête préparée

Description

int mysqli_execute ( resource stmt)

La fonction mysqli_execute() exécute une requête préparée en utilisant la fonction mysqli_prepare() représentée par la ressource stmt. Lors de son exécution, tous les marqueurs de paramètres qui existent seront remplacés par les données appropriées.

Si la requête est un UPDATE, DELETE, ou INSERT, le nombre total de lignes affectées peut être déterminé en utilisant la fonction mysqli_stmt_affected_rows(). De même, si la requête retourne un jeu de résultats, la fonction mysqli_fetch() est utilisée.

Note : Lors de l'utilisation de la fonction mysqli_execute(), la fonction mysqli_fetch() doit être appelée pour récupérer les données avant toute autre requête.

Exemple 1. Utilisation de mysqli_execute()

<?php

    /* Connexion au serveur */
    $link = mysqli_connect("localhost", "user", "pass");
    /* Activation du mode autocommit */
    mysqli_autocommit($link, true);
    /* S&eacute;lection de la base */
    mysqli_select_db("mabdd")

    /* Pr&eacute;pare une requ&ecirc;te d'insertion */
    $query = "INSERT INTO matable VALUES(?, ?)";
    $stmt = mysqli_prepare($link, $query);

    $value_one = "hello";
    $value_two = "world";

    mysqli_bind_param($link, $value_one, $value_two);

    /* Ex&eacute;cute la requ&ecirc;te */
    mysqli_execute($stmt);

    /* Retourne le nombre de lignes affect&eacute;es */
    $affected_rows = mysqli_stmt_affected_rows($stmt);

    /* Ferme la requ&ecirc;te */
    mysqli_stmt_close($stmt);

    echo "Le nombre total de lignes affect&eacute;es est $affected_rows";

?>

Voir aussi mysqli_prepare() et mysqli_bind_param().

Précédent | Sommaire | Suivant
mysqli_error | Niveau supérieur | mysqli_fetch_array


mysqli_fetch_array

(PHP 5 CVS only)

mysqli_fetch_array -- Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux.

Description

array mysqli_fetch_array ( resource result [, int resulttype])

Retourne un tableau qui correspond à la ligne lue ou FALSE s'il n'y a plus de lignes pour la connexion spécifiée par le paramètre link.

mysqli_fetch_array() est une version étendue de la fonction mysqli_fetch_row(). En plus d'enregistrer les données sous forme d'un tableau à indices numériques, elle peut aussi les enregistrer dans un tableau associatif, en utilisant les noms des champs comme clefs.

Si plusieurs colonnes portent le même nom, la dernière colonne aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser l'index numérique, ou faire un alias pour chaque colonne.

Le second argument optionnel result_type est une constante indiquant quel type de tableau doit être renvoyé à partir de la ligne de données courante. Les valeurs possibles pour ce paramètre sont les constantes MYSQLI_ASSOC, MYSQLI_NUM, et MYSQLI_BOTH. MYSQLI_BOTH est la valeur par défaut de ce paramètre.

En utilisant la constante MYSQLI_ASSOC, cette fonction se comportera comme la fonction mysqli_fetch_assoc(), tandis que MYSQLI_NUM la fera agir comme la fonction mysqli_fetch_row(). La constante MYSQLI_BOTH, créera elle un tableau qui sera à la fois associatif et indexé numériquement.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 1. mysqli_fetch_array() avec MYSQLI_NUM

<?php
    mysqli_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysqli_error());
    mysqli_select_db("mydb");

    $result = mysqli_query("SELECT id, name FROM mytable");

    while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
        printf ("ID: %s  Name: %s", $row[0], $row[1]);
    }

    mysqli_free_result($result);
?>

Exemple 2. mysqli_fetch_array() avec MYSQLI_ASSOC

<?php
    mysqli_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysqli_error());
    mysqli_select_db("mydb");

    $result = mysqli_query("SELECT id, name FROM mytable");

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysqli_free_result($result);
?>

Exemple 3. mysqli_fetch_array() avec MYSQLI_BOTH

<?php
    mysqli_connect("localhost", "mysql_user", "mysql_password") or
        die("Impossible de se connecter : " . mysqli_error());
    mysqli_select_db("mydb");

    $result = mysqli_query("SELECT id, name FROM mytable");

    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysqli_free_result($result);
?>

Voir aussi mysqli_fetch_assoc(),
mysqli_fetch_row() et
mysqli_fetch_object().

Précédent | Sommaire | Suivant
mysqli_execute | Niveau supérieur | mysqli_fetch_assoc


mysqli_fetch_assoc

(PHP 5 CVS only)

mysqli_fetch_assoc -- Récupère une ligne de résultat sous forme de tableau associatif

Description

array mysqli_fetch_assoc ( resource result)

Retourne un tableau associatif qui correspond à la ligne récupérée ou FALSE s'il n'y a plus de lignes.

La fonction mysqli_fetch_assoc() est utilisée pour retourner un tableau associatif représentant la prochaine ligne dans le jeu de résultat représenté par le paramètre result, où chaque clef du tableau représente le nom d'une colonne du résultat.

Si deux ou plus colonnes dans le jeu de résultat ont le même nom, le tableau associatif retrourné par la fonction mysqli_fetch_assoc() ne contiendra que la valeur de la dernière colonne de ce nom. Si vous devez travailler avec des jeux de résultats ayant cette particularité, la fonction mysqli_fetch_row() qui retourne un tableau indexé doit être utilisée à la place.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Exemple 1. Exemple étendu avec mysqli_fetch_assoc()

<?php

    $conn = mysqli_connect("localhost", "mysql_user", "mysql_password");

    if (!$conn) {
        echo "Impossible de se connecter : " . mysqli_error();
        exit;
    }

    if (!mysqli_select_db("mydbname")) {
        echo "Impossible de s&eacute;lectionner mydbname: " . mysqli_error();
        exit;
    }

    $sql = "SELECT id as userid, fullname, userstatus
            FROM   sometable
            WHERE  userstatus = 1";

    $result = mysqli_query($sql);

    if (!$result) {
        echo "Impossible d'ex&eacute;cuter la requ&ecirc;te ($sql) : " . mysqli_error();
        exit;
    }

    if (mysqli_num_rows($result) == 0) {
        echo "Pas de lignes trouv&eacute;es, je stoppe";
        exit;
    }

    // Tant qu'il y'a des lignes, les placer dans $row en tableau associatif
    // Note : Si vous ne r&eacute;cup&eacute;rez qu'une ligne, pas besoin de boucle
    // Note : Si vous placez extract($row); dans la boucle, vous cr&eacute;erez
    //        alors $userid, $fullname, et $userstatus
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row["userid"];
        echo $row["fullname"];
        echo $row["userstatus"];
    }

    mysqli_free_result($result);

?>

Voir aussi mysqli_fetch_array(),
mysqli_fetch_row() et
mysqli_fetch_object().

Précédent | Sommaire | Suivant
mysqli_fetch_array | Niveau supérieur | mysqli_fetch_field_direct


mysqli_fetch_field_direct

(PHP 5 CVS only)

mysqli_fetch_field_direct -- Récupère les données métas d'un champ unique

Description

int mysqli_fetch_field_direct ( resource result, int offset)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_fetch_assoc | Niveau supérieur | mysqli_fetch_field


mysqli_fetch_field

(PHP 5 CVS only)

mysqli_fetch_field -- Retourne le prochain champ dans le jeu de résultats

Description

object mysqli_fetch_field ( resource result)

mysqli_fetch_field() est utilisée pour retourner les attributs de la prochaine colonne dans le jeu de résultats représenté par le paramètre result en tant qu'objet. Lors de son exécution, cette fonction retournera un objet contenant les attributs de la colonne courante ou FALSE s'il n'y a plus de colonnes dans le jeu de résultats.

Tableau 1. Attributs de l'objet

Attributs | Description
name | Le nom de la colonne
orgname | ?
table | Le nom de la table d'où provient le champ (si non calculé)
orgtable | ?
def | La valeur par défaut pour ce champ, en tant que chaîne de caractères
max_length | La taille maximale du champ dans le jeu de résultat
flags | Un entier représentant les bits pour ce champ
type | Le type de données utilisés pour ce champ
decimals | Le nombre de décimales utilisées (pour les champs numériques)

Précédent | Sommaire | Suivant
mysqli_fetch_field_direct | Niveau supérieur | mysqli_fetch_fields


mysqli_fetch_fields

(PHP 5 CVS only)

mysqli_fetch_fields -- Retourne un tableau d'objets représentant les champs dans le résultat

Description

array mysqli_fetch_fields ( resource result)

Cette fonction fonctionne comme la fonction mysqli_fetch_field() à la différence que, au lieu de retourner un objet à la fois pour chaque champ, les colonnes sont retournées en tant que tableau d'objets. Pour une description des attributs de chaque objet et leur signification, voyez la fonction mysqli_fetch_field().

Précédent | Sommaire | Suivant
mysqli_fetch_field | Niveau supérieur | mysqli_fetch_lengths


mysqli_fetch_lengths

(PHP 5 CVS only)

mysqli_fetch_lengths -- Retourne les longueurs des colonnes de la ligne courante du jeu de résultats

Description

array mysqli_fetch_lengths ( resource result)

La fonction mysqli_fetch_lengths() retourne un tableau contenant les longueurs de chaque colonne de la ligne courante du jeu de résultats représenté par le paramètre result. Un tableau indexé numériquement représentant la longueur de chaque colonne est retourné en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
mysqli_fetch_fields | Niveau supérieur | mysqli_fetch_object


mysqli_fetch_object

(PHP 5 CVS only)

mysqli_fetch_object -- Retourne la ligne courante d'un jeu de résultat sous forme d'objet

Description

object mysqli_fetch_object ( resource result)

La fonction mysqli_fetch_object() retourne la ligne courante du jeu de résultat sous forme d'objet dont les attributs représentent les noms des champs trouvés dans le jeu de résultat. Si il n'y a plus de lignes à lire, la fonction retourne FALSE.

Note : Les noms de colonnes renvoyés par cette fonction sont sensibles à la casse.

Voir aussi mysqli_fetch_array(),
mysqli_fetch_assoc() et
mysqli_fetch_row().

Précédent | Sommaire | Suivant
mysqli_fetch_lengths | Niveau supérieur | mysqli_fetch_row


mysqli_fetch_row

(PHP 5 CVS only)

mysqli_fetch_row -- Récupère une ligne de résultat sous forme de tableau indexé

Description

array mysqli_fetch_row ( resource result)

Retourne un tableau correspondant à la ligne récupérée ou FALSE s'il n'y a plus de lignes.

mysqli_fetch_row() récupère une ligne de données à partir du jeu de résultats représenté par result et le retourne en tant que tableau indexé, où chaque colonne est une case du tableau, celui-ci commençant à 0 (zéro). Chaque nouvel appel à mysqli_fetch_row() retournera la prochaine ligne dans le jeu de résultats, ou FALSE s'il n'y a plus de lignes.

Voir aussi mysqli_fetch_array(),
mysqli_fetch_assoc() et
mysqli_fetch_object().

Précédent | Sommaire | Suivant
mysqli_fetch_object | Niveau supérieur | mysqli_fetch


mysqli_fetch

(PHP 5 CVS only)

mysqli_fetch -- Récupère un résultat à partir d'une requête préparée dans les variables

Description

int mysqli_fetch ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_fetch_row | Niveau supérieur | mysqli_field_count


mysqli_field_count

(PHP 5 CVS only)

mysqli_field_count -- Retourne le nombre de colonnes pour la dernière requête

Description

int mysqli_field_count ( resource link)

Retourne le nombre de colonnes pour la dernière requête sur la connexion spécifiée par le paramètre link. Cette fonction peut être utile lors de l'utilisation de mysqli_store_result() pour déterminer si la requête aurait du retourner un résultat non-vide ou non, sans en connaître la nature.

Précédent | Sommaire | Suivant
mysqli_fetch | Niveau supérieur | mysqli_field_seek


mysqli_field_seek

(PHP 5 CVS only)

mysqli_field_seek -- Déplace le pointeur de résultat sur le champ spécifié

Description

int mysqli_field_seek ( resource link, int fieldnr)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_field_count | Niveau supérieur | mysqli_field_tell


mysqli_field_tell

(PHP 5 CVS only)

mysqli_field_tell -- Retourne la position du champ courant dans un pointeur de résultat

Description

int mysqli_field_tell ( resource result)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_field_seek | Niveau supérieur | mysqli_free_result


mysqli_free_result

(PHP 5 CVS only)

mysqli_free_result -- Libère la mémoire associée à un résultat

Description

int mysqli_free_result ( resource result)

La fonction mysqli_free_result() libère la mémoire associée au résultat représenté par le paramètre result.

Précédent | Sommaire | Suivant
mysqli_field_tell | Niveau supérieur | mysqli_get_client_info


mysqli_get_client_info

(PHP 5 CVS only)

mysqli_get_client_info -- Retourne une chaîne contenant la version du client MySQL

Description

string mysqli_get_client_info ( void )

La fonction mysqli_get_client_info() est utilisée pour retourner une chaîne de caractères représentant la version du client utilisé par l'extension MySQLi.

Précédent | Sommaire | Suivant
mysqli_free_result | Niveau supérieur | mysqli_get_host_info


mysqli_get_host_info

(PHP 5 CVS only)

mysqli_get_host_info -- Retourne une chaîne contenant le type de connexion utilisé

Description

string mysqli_get_host_info ( resource link)

La fonction mysqli_get_host_info() retourne une chaîne de caractères décrivant la connexion représentée par le paramètre link (incluant le nom d'hôte du serveur).

Précédent | Sommaire | Suivant
mysqli_get_client_info | Niveau supérieur | mysqli_get_proto_info


mysqli_get_proto_info

(PHP 5 CVS only)

mysqli_get_proto_info -- Retourne la version du protocole MySQL utilisé

Description

int mysqli_get_proto_info ( resource link)

Retourne un entier représentant la version du protocole MySQL utilisé par la connexion représentée par le paramètre link.

Précédent | Sommaire | Suivant
mysqli_get_host_info | Niveau supérieur | mysqli_get_server_info


mysqli_get_server_info

(PHP 5 CVS only)

mysqli_get_server_info -- Retourne la version du serveur MySQL

Description

string mysqli_get_server_info ( resource link)

Retourne une chaîne de caractères représentant la version du serveur MySQL auquel l'extension MySQLi est connectée (représenté par le paramètre link).

Précédent | Sommaire | Suivant
mysqli_get_proto_info | Niveau supérieur | mysqli_get_server_version


mysqli_get_server_version

(PHP 5 CVS only)

mysqli_get_server_version -- Retourne un entier représentant la version du serveur MySQL

Description

int mysqli_get_server_version ( resource link)

La fonction mysqli_get_server_version() retourne un entier représentant la version du serveur sur lequel on est connecté (représenté par le paramètre link). Le format de ce nombre est main_version * 10000 + minor_version * 100 + sub_version (i.e. la version 4.1.0 retournera 40100).

Précédent | Sommaire | Suivant
mysqli_get_server_info | Niveau supérieur | mysqli_info


mysqli_info

(PHP 5 CVS only)

mysqli_info -- Retourne des informations à propos de la dernière requête exécutée

Description

string mysqli_info ( resource link)

La fonction mysqli_info() retourne une chaîne fournissant des informations à propos de la dernière requête exécutée. La nature de cette chaîne est fournie ci-dessous :

Tableau 1. Valeurs de retour possibles pour mysqli_info()

Type de requête | Exemple de retour
INSERT INTO...SELECT... | Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO...VALUES (...),(...),(...) | Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ... | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ... | Records: 3 Duplicates: 0 Warnings: 0
UPDATE ... | Rows matched: 40 Changed: 40 Warnings: 0

Note : Les requêtes qui ne font pas partie de la liste précédente ne sont pas supportées. Dans cette situation, mysqli_info() retournera FALSE

Précédent | Sommaire | Suivant
mysqli_get_server_version | Niveau supérieur | mysqli_init


mysqli_init

(PHP 5 CVS only)

mysqli_init -- Initialise MySQLi et retourne une ressource à utiliser avec mysqli_real_connect

Description

resource mysqli_init ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_info | Niveau supérieur | mysqli_insert_id


mysqli_insert_id

(PHP 5 CVS only)

mysqli_insert_id -- Retourne l'identifiant automatiquement généré par la dernière requête

Description

mixed mysqli_insert_id ( resource link)

La fonction mysqli_insert_id() retourne l'identifiant généré par une requête sur une table avec une colonne possédant l'attribut AUTO_INCREMENT. Si la dernière requête n'était ni un INSERT, ni un UPDATE ou que la table modifiée ne possède pas de colonne avec l'attribut AUTO_INCREMENT, cette fonction retournera zéro.

Note : Exécuter une commande INSERT ou UPDATE utilisant la fonction LAST_INSERT_ID() modifiera aussi la valeur retournée par la fonction mysqli_insert_id().

Précédent | Sommaire | Suivant
mysqli_init | Niveau supérieur | mysqli_kill


mysqli_kill

(PHP 5 CVS only)

mysqli_kill -- Demande au serveur de terminer un thread MySQL

Description

bool mysqli_kill ( resource link, int processid)

mysqli_kill() est utilisée pour demander au serveur de terminer un thread MySQL spécifié par le paramètre processid. Cette valeur doit être obtenue en appelant la fonction mysqli_thread_id().

Précédent | Sommaire | Suivant
mysqli_insert_id | Niveau supérieur | mysqli_master_query


mysqli_master_query

(PHP 5 CVS only)

mysqli_master_query -- Force l'exécution d'une requête sur le maître dans une configuration maître/esclave (master/slave)

Description

bool mysqli_master_query ( resource link, string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_kill | Niveau supérieur | mysqli_num_fields


mysqli_num_fields

(PHP 5 CVS only)

mysqli_num_fields -- Retourne le nombre de champs dans un résultat

Description

int mysqli_num_fields ( resource result)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_master_query | Niveau supérieur | mysqli_num_rows


mysqli_num_rows

(PHP 5 CVS only)

mysqli_num_rows -- Retourne le nombre de lignes dans un résultat

Description

int mysqli_num_rows ( resource result)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_num_fields | Niveau supérieur | mysqli_options


mysqli_options

(PHP 5 CVS only)

mysqli_options -- Modifie les options

Description

bool mysqli_options ( resource link, int flags, mixed values)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_num_rows | Niveau supérieur | mysqli_param_count


mysqli_param_count

(PHP 5 CVS only)

mysqli_param_count -- Retourne le nombre de paramètres pour la requête donnée

Description

int mysqli_param_count ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_options | Niveau supérieur | mysqli_ping


mysqli_ping

(PHP 5 CVS only)

mysqli_ping -- Ping la connexion au serveur et reconnecte si elle n'existe plus

Description

int mysqli_ping ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_param_count | Niveau supérieur | mysqli_prepare_result


mysqli_prepare_result

(PHP 5 CVS only)

mysqli_prepare_result --

Description

resource mysqli_prepare_result ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_ping | Niveau supérieur | mysqli_prepare


mysqli_prepare

(PHP 5 CVS only)

mysqli_prepare -- Prépare une requête SQL pour l'exécution

Description

resource mysqli_prepare ( resource link, string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_prepare_result | Niveau supérieur | mysqli_profiler


mysqli_profiler

(PHP 5 CVS only)

mysqli_profiler --

Description

bool mysqli_profiler ( int flags, string info, int port)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_prepare | Niveau supérieur | mysqli_query


mysqli_query

(PHP 5 CVS only)

mysqli_query -- Performe une requête sur la base de données

Description

resource mysqli_query ( resource link, string query [, int resultmode])

La fonction mysqli_query() est utilisée pour simplifier l'acte de performer une requête sur la connexion à la base de données représentée par le paramètre link. En termes de fonctionnalités, utiliser cette fonction revient à appeler mysqli_real_query() suivie de mysqli_use_result() ou mysqli_store_result() où query est la requête elle-même et resultmode la constante MYSQLI_USE_RESULT ou MYSQLI_STORE_RESULT selon le comportement voulu. Par défaut, si resultmode n'est pas renseigné, c'est la constante MYSQLI_STORE_RESULT qui est utilisée.

Précédent | Sommaire | Suivant
mysqli_profiler | Niveau supérieur | mysqli_read_query_result


mysqli_read_query_result

(PHP 5 CVS only)

mysqli_read_query_result --

Description

bool mysqli_read_query_result ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_query | Niveau supérieur | mysqli_real_connect


mysqli_real_connect

(PHP 5 CVS only)

mysqli_real_connect -- Ouvre une connexion à un serveur MySQL

Description

bool mysqli_real_connect ( resource link [, string hostname [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi mysqli_connect() et mysqli_close().

Précédent | Sommaire | Suivant
mysqli_read_query_result | Niveau supérieur | mysqli_real_escape_string


mysqli_real_escape_string

(PHP 5 CVS only)

mysqli_real_escape_string -- Protège les caractères spéciaux d'une chaîne pour l'utiliser dans une requête SQL, en prenant en compte le jeu de caractères courant de la connexion

Description

string mysqli_real_escape_string ( resource link, string escapestr)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi mysqli_character_set_name().

Précédent | Sommaire | Suivant
mysqli_real_connect | Niveau supérieur | mysqli_real_query


mysqli_real_query

(PHP 5 CVS only)

mysqli_real_query -- Exécute une requête SQL

Description

bool mysqli_real_query ( resource link, string query)

La fonction mysqli_real_query() est utilisée pour exécuter une seule requête sur la connexion à la base de données représentée par le paramètre link dont le résultat peut être récupéré ou stocké en utilisant les fonctions mysqli_store_result() ou mysqli_use_result().

Note : Pour déterminer si une requête donnée aurait du retourner un jeu de résultats ou non, voyez la fonction mysqli_field_count().

Précédent | Sommaire | Suivant
mysqli_real_escape_string | Niveau supérieur | mysqli_reload


mysqli_reload

(PHP 5 CVS only)

mysqli_reload --

Description

bool mysqli_reload ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_real_query | Niveau supérieur | mysqli_rollback


mysqli_rollback

(PHP 5 CVS only)

mysqli_rollback --

Description

bool mysqli_rollback ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_reload | Niveau supérieur | mysqli_rpl_parse_enabled


mysqli_rpl_parse_enabled

(PHP 5 CVS only)

mysqli_rpl_parse_enabled --

Description

int mysqli_rpl_parse_enabled ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_rollback | Niveau supérieur | mysqli_rpl_probe


mysqli_rpl_probe

(PHP 5 CVS only)

mysqli_rpl_probe --

Description

bool mysqli_rpl_probe ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_rpl_parse_enabled | Niveau supérieur | mysqli_rpl_query_type


mysqli_rpl_query_type

(PHP 5 CVS only)

mysqli_rpl_query_type --

Description

int mysqli_rpl_query_type ( string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_rpl_probe | Niveau supérieur | mysqli_select_db


mysqli_select_db

(PHP 5 CVS only)

mysqli_select_db -- Sélectionne une base de données par défaut pour les requêtes

Description

bool mysqli_select_db ( resource link, string dbname)

La fonction mysqli_select_db() sélectionne la base de données par défaut (spécifiée par le paramètre dbname) pour être utilisée lors de l'exécution de requêtes sur la connexion représentée par le paramètre link.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
mysqli_rpl_query_type | Niveau supérieur | mysqli_send_long_data


mysqli_send_long_data

(PHP 5 CVS only)

mysqli_send_long_data --

Description

bool mysqli_send_long_data ( resource stmt, int param_nr, string data)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_select_db | Niveau supérieur | mysqli_send_query


mysqli_send_query

(PHP 5 CVS only)

mysqli_send_query --

Description

bool mysqli_send_query ( resource link, string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_send_long_data | Niveau supérieur | mysqli_slave_query


mysqli_slave_query

(PHP 5 CVS only)

mysqli_slave_query -- Force l'exécution d'une requête sur un esclave dans une configuration maître/esclave (master/slave)

Description

bool mysqli_slave_query ( resource link, string query)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_send_query | Niveau supérieur | mysqli_ssl_set


mysqli_ssl_set

(PHP 5 CVS only)

mysqli_ssl_set --

Description

string mysqli_ssl_set ( resource link [, string key [, string cert [, string ca [, string capath [, string cipher]]]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_slave_query | Niveau supérieur | mysqli_stat


mysqli_stat

(PHP 5 CVS only)

mysqli_stat -- Obtient le statut courant du système

Description

string mysqli_stat ( resource link)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_ssl_set | Niveau supérieur | mysqli_stmt_affected_rows


mysqli_stmt_affected_rows

(PHP 5 CVS only)

mysqli_stmt_affected_rows --

Description

mixed mysqli_stmt_affected_rows ( object stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_stat | Niveau supérieur | mysqli_stmt_close


mysqli_stmt_close

(PHP 5 CVS only)

mysqli_stmt_close -- Ferme une requête

Description

bool mysqli_stmt_close ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_stmt_affected_rows | Niveau supérieur | mysqli_stmt_errno


mysqli_stmt_errno

(PHP 5 CVS only)

mysqli_stmt_errno --

Description

int mysqli_stmt_errno ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_stmt_close | Niveau supérieur | mysqli_stmt_error


mysqli_stmt_error

(PHP 5 CVS only)

mysqli_stmt_error --

Description

string mysqli_stmt_error ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_stmt_errno | Niveau supérieur | mysqli_stmt_store_result


mysqli_stmt_store_result

(PHP 5 CVS only)

mysqli_stmt_store_result --

Description

resource mysqli_stmt_store_result ( resource stmt)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_stmt_error | Niveau supérieur | mysqli_store_result


mysqli_store_result

(PHP 5 CVS only)

mysqli_store_result -- Transfère un jeu de résultats à partir de la dernière requête

Description

resource mysqli_store_result ( resource link)

Transfère le jeu de résultats à partir de la dernière requête sur la connexion à la base de données spécifiée par le paramètre link pour une utilisation avec mysqli_data_seek().

Note : Il est toujours conseillé de libérer la mémoire allouée pour le résultat en utilisant la fonction mysqli_free_result(), lors du transfert de grands résultats en utilisant la fonction mysqli_store_result() cela devient particulièrement important.

Précédent | Sommaire | Suivant
mysqli_stmt_store_result | Niveau supérieur | mysqli_thread_id


mysqli_thread_id

(PHP 5 CVS only)

mysqli_thread_id -- Retourne l'identifiant du thread pour la connexion courante

Description

int mysqli_thread_id ( resource link)

La fonction mysqli_thread_id() retourne l'identifiant du thread de la connexion courante qui peut être terminé par la suite en utilisant la fonction mysqli_kill().

Note : L'identifiant du thread est assigné sur une base de connexion par connexion. Ce qui fait que si la connexion est coupée, puis relancée, un nouvel identifiant de thread lui sera assigné.

Précédent | Sommaire | Suivant
mysqli_store_result | Niveau supérieur | mysqli_thread_safe


mysqli_thread_safe

(PHP 5 CVS only)

mysqli_thread_safe -- Indique si le thread safety est donné ou non

Description

bool mysqli_thread_safe ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
mysqli_thread_id | Niveau supérieur | mysqli_use_result


mysqli_use_result

(PHP 5 CVS only)

mysqli_use_result -- Initialise la récupération d'un jeu de résultats

Description

resource mysqli_use_result ( resource link)

mysqli_use_result() est utilisée pour initialiser la récupération d'un jeu de résultats à partir de la dernière requête exécuté en utilisant la fonction mysqli_real_query() sur la connexion spécifiée par le paramètre link. Cette fonction ou la fonction mysqli_store_result() doivent être appelées avant que le résultat d'une requête ne puisse être récupéré, et pour éviter l'echec de de la prochaine requête sur la connexion à la base de données.

Note : La fonction mysqli_use_result() ne transfère pas le jeu de résultat en entier à partir de la base de données et on ne peut donc pas utiliser des fonctions telles que mysqli_data_seek() pour se déplacer entre les enregistrements. Pour utiliser cette fonctionnalité, vous devez récupérer le jeu de résultats en utilisant mysqli_store_result().

Voir aussi mysqli_real_query() et mysqli_store_result().

Précédent | Sommaire | Suivant
mysqli_thread_safe | Niveau supérieur | mysqli_warning_count


mysqli_warning_count

(PHP 5 CVS only)

mysqli_warning_count -- Retourne le nombre d'avertissements généré par la dernière requête

Description

resource mysqli_warning_count ( resource link)

mysqli_warning_count() retourne le nombre d'avertissements généré par la dernière requête de la connexion représentée par le paramètre link.

Précédent | Sommaire | Suivant
mysqli_use_result | Niveau supérieur | Sessions Mohawk


Sessions Mohawk

Manuel PHP
Précédent Suivant

LXV. Sessions Mohawk

Introduction

msession est une interface avec un démon de sessions rapides, qui permet de gérer les sessions localement ou à distance. Il est conçu pour fournir une gestion de sessions cohérentes pour une ferme de serveurs PHP. Plus d'informations sur les msession et le démon sont disponible sur le site http://devel.mohawksoft.com/msession.html.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Installation

Pour activer le support de l'extension msession, vous devez compiler PHP avec l'option --with-msession[=DIR], où DIR est le dossier d'installation de msession.

Configuration à l'exécution

Types de ressources

Constantes prédefinies

Table des matières
msession_connect -- Ouvre la connexion au serveur msession
msession_count -- Compte le nombre de sessions
msession_create -- Crée une session
msession_destroy -- Détruit la session
msession_disconnect -- Ferme la connexion au serveur msession
msession_find -- Trouve une valeur
msession_get_array -- Lit un tablaeu de ... (??)
msession_get -- Lit une valeur dans une session
msession_getdata -- Lit les données ... (??)
msession_inc -- Incrémente une valeur dans une session
msession_list -- Liste ... (??)
msession_listvar -- Liste les sessions contenant une variable
msession_lock -- Verrouille une session
msession_plugin -- Appele une fonction d'échappement dans les plugins de personnalité msession
msession_randstr -- Lit une chaîne aléatoire
msession_set_array -- Modifie un tableau de ... (??)
msession_set -- Modifie une valeur dans la session
msession_setdata -- Modifie les données (??)
msession_timeout -- Lit et/ou modifie la durée de vie de la session
msession_uniq -- Lit un identifiant unique
msession_unlock -- Déverrouille une session

Précédent | Sommaire | Suivant
mysqli_warning_count | Niveau supérieur | msession_connect


msession_connect

(PHP 4 >= 4.2.0)

msession_connect -- Ouvre la connexion au serveur msession

Description

bool msession_connect ( string host, string port)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Sessions Mohawk | Niveau supérieur | msession_count


msession_count

(PHP 4 >= 4.2.0)

msession_count -- Compte le nombre de sessions

Description

int msession_count ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_connect | Niveau supérieur | msession_create


msession_create

(PHP 4 >= 4.2.0)

msession_create -- Crée une session

Description

bool msession_create ( string session)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_count | Niveau supérieur | msession_destroy


msession_destroy

(PHP 4 >= 4.2.0)

msession_destroy -- Détruit la session

Description

bool msession_destroy ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_create | Niveau supérieur | msession_disconnect


msession_disconnect

(PHP 4 >= 4.2.0)

msession_disconnect -- Ferme la connexion au serveur msession

Description

void msession_disconnect ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_destroy | Niveau supérieur | msession_find


msession_find

(PHP 4 >= 4.2.0)

msession_find -- Trouve une valeur

Description

array msession_find ( string name, string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_disconnect | Niveau supérieur | msession_get_array


msession_get_array

(PHP 4 >= 4.2.0)

msession_get_array -- Lit un tablaeu de ... (??)

Description

array msession_get_array ( string session)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_find | Niveau supérieur | msession_get


msession_get

(PHP 4 >= 4.2.0)

msession_get -- Lit une valeur dans une session

Description

string msession_get ( string session, string name, string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_get_array | Niveau supérieur | msession_getdata


msession_getdata

(no version information, might be only in CVS)

msession_getdata -- Lit les données ... (??)

Description

string msession_getdata ( string session)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_get | Niveau supérieur | msession_inc


msession_inc

(PHP 4 >= 4.2.0)

msession_inc -- Incrémente une valeur dans une session

Description

string msession_inc ( string session, string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_getdata | Niveau supérieur | msession_list


msession_list

(PHP 4 >= 4.2.0)

msession_list -- Liste ... (??)

Description

array msession_list ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_inc | Niveau supérieur | msession_listvar


msession_listvar

(PHP 4 >= 4.2.0)

msession_listvar -- Liste les sessions contenant une variable

Description

array msession_listvar ( string name)

msession_listvar() retourne un tableau associatif des valeurs que prend la variable de session name dans les différentes sessions en cours.

Utilisée pour rechercher les sessions ayant des attributs communs.

Précédent | Sommaire | Suivant
msession_list | Niveau supérieur | msession_lock


msession_lock

(PHP 4 >= 4.2.0)

msession_lock -- Verrouille une session

Description

int msession_lock ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_listvar | Niveau supérieur | msession_plugin


msession_plugin

(PHP 4 >= 4.2.0)

msession_plugin -- Appele une fonction d'échappement dans les plugins de personnalité msession

Description

string msession_plugin ( string session, string val [, string param])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_lock | Niveau supérieur | msession_randstr


msession_randstr

(PHP 4 >= 4.2.0)

msession_randstr -- Lit une chaîne aléatoire

Description

string msession_randstr ( int param)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_plugin | Niveau supérieur | msession_set_array


msession_set_array

(PHP 4 >= 4.2.0)

msession_set_array -- Modifie un tableau de ... (??)

Description

bool msession_set_array ( string session, array tuples)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_randstr | Niveau supérieur | msession_set


msession_set

(PHP 4 >= 4.2.0)

msession_set -- Modifie une valeur dans la session

Description

bool msession_set ( string session, string name, string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_set_array | Niveau supérieur | msession_setdata


msession_setdata

(no version information, might be only in CVS)

msession_setdata -- Modifie les données (??)

Description

bool msession_setdata ( string session, string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_set | Niveau supérieur | msession_timeout


msession_timeout

(PHP 4 >= 4.2.0)

msession_timeout -- Lit et/ou modifie la durée de vie de la session

Description

int msession_timeout ( string session [, int param])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_setdata | Niveau supérieur | msession_uniq


msession_uniq

(PHP 4 >= 4.2.0)

msession_uniq -- Lit un identifiant unique

Description

string msession_uniq ( int param)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_timeout | Niveau supérieur | msession_unlock


msession_unlock

(PHP 4 >= 4.2.0)

msession_unlock -- Déverrouille une session

Description

int msession_unlock ( string session, int key)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
msession_uniq | Niveau supérieur | Muscat


Muscat

Manuel PHP
Précédent Suivant

LXVI. Muscat

Introduction

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Installation

Ces fonctions ne sont disponibles que si PHP a été compilé avec --with-muscat[=DIR].

Table des matières
muscat_close -- Ferme la connexion à muscat
muscat_get -- Lit la réponse de l'API muscat
muscat_give -- Envoie une chaîne à l'API de base muscat
muscat_setup_net -- Crée une nouvelle session muscat
muscat_setup -- Crée une nouvelle session

Précédent | Sommaire | Suivant
msession_unlock | Niveau supérieur | muscat_close


muscat_close

(4.0.5 - 4.2.3 only)

muscat_close -- Ferme la connexion à muscat

Description

int muscat_close ( resource muscat_handle)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

muscat_close() termine la session muscat, et libère les ressources. Les ressources systèmes sont rendues à PHP, mais pas au système.

Précédent | Sommaire | Suivant
Muscat | Niveau supérieur | muscat_get


muscat_get

(4.0.5 - 4.2.3 only)

muscat_get -- Lit la réponse de l'API muscat

Description

string muscat_get ( resource muscat_handle)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

muscat_get() lit une ligne de réponse de l'API muscat. Elle retourne FALSE lorsqu'il n'y a plus rien à lire. Il ne faut pas confondre ce résultat avec une chaîne vide. Utilisez === FALSE et !== FALSE pour faire la différence entre une réponse vide et la fin de la réponse.

Précédent | Sommaire | Suivant
muscat_close | Niveau supérieur | muscat_give


muscat_give

(4.0.5 - 4.2.3 only)

muscat_give -- Envoie une chaîne à l'API de base muscat

Description

int muscat_give ( resource muscat_handle, string string)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
muscat_get | Niveau supérieur | muscat_setup_net


muscat_setup_net

(4.0.5 - 4.2.3 only)

muscat_setup_net -- Crée une nouvelle session muscat

Description

resource muscat_setup_net ( string muscat_host, int port)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

muscat_setup_net() crée une nouvelle session muscat, et retourne une ressource de connexion. muscat_host est le nom de l'hôte serveur et port est le numéro de port ou se connecter : en fait, cette fonction prend les mêmes arguments que fsockopen().

Précédent | Sommaire | Suivant
muscat_give | Niveau supérieur | muscat_setup


muscat_setup

(4.0.5 - 4.2.3 only)

muscat_setup -- Crée une nouvelle session

Description

resource muscat_setup ( int size [, string muscat_dir])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

size est la quantité de mémoire allouée, en octets. muscat_dir est le dossier d'installation de muscat, c'est à dire "/usr/local/empower", par défaut.

Précédent | Sommaire | Suivant
muscat_setup_net | Niveau supérieur | Réseau


Réseau

Manuel PHP
Précédent Suivant

LXVII. Réseau

Introduction

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration de l'extension Réseau (Network)

Nom | Par défaut | Modifiable
define_syslog_variables | "0" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, voyez ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

define_syslog_variables booléen

Définit si il faut ou pas définir les différentes variables de syslog, (e.g. $LOG_PID, $LOG_CRON, etc.). Eteindre cette fontionnalité est recommandé pour les performances. Durant l'exécution, vous pouvez définir ces variables en appelant define_syslog_variables().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Les constantes listées ici sont toujours disponibles dans PHP.

Tableau 2. Options de openlog()

Constante | Description
LOG_CONS | Si il y a une erreur lors de l'envoi de données au système d'historique, l'erreur sera écrite directement sur la console système.
LOG_NDELAY | Ouvre la connexion à l'historique immédiatement
LOG_ODELAY | (par défaut) retarde l'ouverture de la connexion jusqu'à ce que le premier message soit archivé
LOG_PERROR | Affiche aussi le message sur la sortie standard
LOG_PID | Ajoute le PID dans chaque message

Tableau 3. Priorités de syslog() (en ordre décroissant)

Constante | Description
LOG_EMERG | Le système est inutilisable
LOG_ALERT | Une mesure doit être prise immédiatement
LOG_CRIT | Conditions critiques
LOG_ERR | Erreurs
LOG_WARNING | Alertes
LOG_NOTICE | Notes (normales mais significantives)
LOG_INFO | Message d'informations
LOG_DEBUG | Message de débogage

Tableau 4. Options dns_get_record()

Constante | Description
DNS_A | Adresse IPv4
DNS_MX | Champs serveur Mail (MX)
DNS_CNAME | Champs alias (Nom canonique) (A)
DNS_NS | Champs de serveur autorité (NS)
DNS_PTR | Champs de pointeur (PTR)
DNS_HINFO | Champs d'informations d'hôte (HINFO) (voir la Operating System Names pour la signification de ces valeurs)
DNS_SOA | Champs de délégation d'autorité (SOA)
DNS_TXT | Texte
DNS_ANY | Tout les Champs. Sur la plupart des systèmes, cela retourne tous les Champs, mais il ne faut pas s'y fier. Utilisez DNS_ALL.
DNS_AAAA | Adresse IPv6
DNS_ALL | Sollicite itérativement le serveur pour chaque type de champs.
Table des matières
checkdnsrr -- Résolution DNS d'une adresse IP
closelog -- Ferme la connexion à l'historique système
debugger_off -- Désactive le debugger interne de PHP.
debugger_on -- Active le debugger interne de PHP
define_syslog_variables -- Initialise toutes les constantes liées au syslog
dns_check_record -- Synonyme de checkdnsrr()
dns_get_mx -- Synonyme de getmxrr()
dns_get_record -- Lit les données DNS associées à un hôte
fsockopen -- Ouvre une socket de connexion Internet ou Unix
gethostbyaddr -- Retourne le nom d'hôte correspondant à une IP
gethostbyname -- Retourne l'adresse IP correspondant à un hôte
gethostbynamel -- Retourne la liste d'IP correspondante à un hôte.
getmxrr -- Retourne les enregistrements MX d'un hôte
getprotobyname -- Retourne le numéro de protocole associé à un nom de protocole
getprotobynumber -- Retourne le nom de protocole associé à un numéro de protocole
getservbyname -- Retourne le numéro de port associé à un service Internet et un protocole.
getservbyport -- Retourne le service Internet qui correspond au port et protocole.
ip2long -- Convertit une chaîne contenant une adresse (IPv4) IP numérique en adresse littérale.
long2ip -- Convertit une adresse IP (IPv4) en adresse IP numérique
openlog -- Ouvre la connexion à l'historique système
pfsockopen -- Ouvre une socket de connexion Internet ou Unix persistante.
socket_get_status -- Retourne les informations sur une socket
socket_set_blocking -- Active/désactive le mode bloquant d'une socket
socket_set_timeout -- Alias de stream_set_timeout()
syslog -- Génère un message dans l'historique système

Précédent | Sommaire | Suivant
muscat_setup | Niveau supérieur | checkdnsrr


checkdnsrr

(PHP 3, PHP 4 )

checkdnsrr -- Résolution DNS d'une adresse IP

Description

int checkdnsrr ( string host [, string type])

checkdnsrr() recherche l'enregistrement DNS de type type correspondant à l'hôte host. Retourne TRUE si un record a été trouvé, et FALSE en cas d'erreur ou d'échec.

type peut être l'une des valeurs suivantes : A, MX, NS, SOA, PTR, CNAME, AAAA, ou ANY. La valeur par défaut est MX.

host peut être soit une adresse IP au format numérique, ou un nom d'hôte.

Note : Le type AAAA a été ajouté en PHP 5.0.0.

Note : Cette fonction n'est pas disponible sur les machines Windows. Pour la remplacer, essayez la classe PEAR : Net_DNS.

Voir aussi
getmxrr(),
gethostbyaddr(),
gethostbyname(),
gethostbynamel() et
la page de manuel named(8).

Précédent | Sommaire | Suivant
Réseau | Niveau supérieur | closelog


closelog

(PHP 3, PHP 4 )

closelog -- Ferme la connexion à l'historique système

Description

int closelog ( void )

closelog() ferme le pointeur qui sert à écrire dans l'historique système. L'utilisation de closelog() est optionnelle.

Voir aussi
define_syslog_variables(),
syslog() et
openlog().

Précédent | Sommaire | Suivant
checkdnsrr | Niveau supérieur | debugger_off


debugger_off

(PHP 3)

debugger_off -- Désactive le debugger interne de PHP.

Description

int debugger_off ( void )

debugger_off() désactive le debuggeur interne de PHP. Le debuggeur est toujours en cours de développement.

Précédent | Sommaire | Suivant
closelog | Niveau supérieur | debugger_on


debugger_on

(PHP 3)

debugger_on -- Active le debugger interne de PHP

Description

int debugger_on ( string address)

debugger_on() active le debugger interne de PHP, et le connecte à l'adresse address. Le debuggeur est toujours en cours de développement.

Précédent | Sommaire | Suivant
debugger_off | Niveau supérieur | define_syslog_variables


define_syslog_variables

(PHP 3, PHP 4 )

define_syslog_variables -- Initialise toutes les constantes liées au syslog

Description

void define_syslog_variables ( void )

define_syslog_variables() initialise toutes les constantes utilisées par les fonctions de syslog.

Voir aussi
openlog(),
syslog() et
closelog().

Précédent | Sommaire | Suivant
debugger_on | Niveau supérieur | dns_check_record


dns_check_record

(PHP 5 CVS only)

dns_check_record -- Synonyme de checkdnsrr()

Description

int dns_check_record ( string host [, string type])

dns_check_record() vérifie les enregistrements DNS correspondant à l'hôte internet host, donnés sous forme d'adresse IP ou de nom Internet.

Précédent | Sommaire | Suivant
define_syslog_variables | Niveau supérieur | dns_get_mx


dns_get_mx

(PHP 5 CVS only)

dns_get_mx -- Synonyme de getmxrr()

Description

int dns_get_mx ( string hostname, array mxhosts [, array &weight])

dns_get_mx() lit le champ MX de l'hôte internet hostname.

Précédent | Sommaire | Suivant
dns_check_record | Niveau supérieur | dns_get_record


dns_get_record

(PHP 5 CVS only)

dns_get_record -- Lit les données DNS associées à un hôte

Description

array dns_get_record ( string hostname [, int type [, array &authns, array &addtl]])

Note : dns_get_record n'est pas implémentée sur les plate-formes Windows. Utilisez la classe PEAR Net_DNS.

dns_get_record retourne un tabluau associatif, contenant au minimum les index suivants : host, type, class, ttl.

Tableau 1. Attributs de base DNS

Attribut | Signification
host | L'enregistrement de l'espace de nom DNS qui est décrit par les autres données.
class | dns_get_record() ne retourne que la classe d'enregistrement Internet et en tant que tel, cet index vaudra toujours IN.
type | Chaîne de caractère contenant le type d'enregistrement. Des attributs supplémentaires seront aussi disponbiles dans le tableau suivant la valeur de ce type. Reportez-vous à la table ci-dessous.
ttl | Time To Live : Durée avant expiration de l'enregistrement. Cette valeur est différente de la durée avant expiration originale, mais plutôt cette valeur moins la durée depuis la dernière interrogation du serveur DNS responsable.

hostname doit être un nom d'hôte DNS valide, comme par exemple www.exemple.com. Des résolutions inversées peuvent être faites avec la notation in-addr.arpa, mais la fonction gethostbyaddr() est plus efficace pour faire des résolutions inverses.

Par défaut, dns_get_record() va rechercher toutes les ressources associées à hostname. Pour limiter la taille de la requête, le paramètre optionnel type peut prendre l'une des valeurs constantes suivantes : DNS_A, DNS_CNAME, DNS_HINFO, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_ALL et DNS_ANY. Par défaut, il vaut DNS_ANY.

Note : A cause des performances excentriques de la librairie libresolv, suivant les plate-formes, DNS_ANY ne retournera pas toujours tous les enregistrements, et l'option DNS_ALL, bien que plus lente, le fera de manière plus sûre.

Les paramètres optionnels authns et addtl sont passé par référence, et si fournis, ils recevront les enregistrements de ressources pour les Authoritative Name Servers, et tous les Additional Records respectivement. Voir l'exemple ci-dessous.

Suivant le type de valeur de l'index type, le tableau associatif peut aussi contenir les index suivants : ip, pri, target, cpu, os, mname, rname, serial, refresh, retry, expire, minimum-ttl, txt.

Tableau 2. Autres index disponibles suivant le type DNS

Type | Valeur supplémentaire
A | ip: Une adresse IP v4, au format numérique.
MX | pri: Priorité du serveur de mail. Les nombres faibles indiquent une priorité importante. target: FQDN du serveur de mail. Voir aussi dns_get_mx().
CNAME | target: FQDN du nom de l'espace DNS qui sert d'alias à cet enregistrement.
NS | target: FQDN du nom de serveur qui est responsable de ce nom de domaine.
PTR | target: Nom de domaine sur lequel cet enregistrement pointe.
TXT | txt: Chaîne de caractères arbitrairement associée à cet enregistrement.
HINFO | cpu: Numéro IANA désignant le processeur de la machine référencée par cet enregistrement. os: Numéro IANA désignant le système d'exploitation de la machine référencée par cet enregistrement. Voir Operating System Names pour connaître la signification de ces valeurs.
SOA | mname: FQDN de la source de cet enregistrement. rname: Adresse email du contact administratif de ce domaine. serial: Numéro de série du nom de domaine. refresh: Interval de rafraîchissement (en secondes) que les serveurs de noms secondaires doivent utiliser pour mettre en cache ce nom de domaine. retry: Durée (en seconde) d'attente après un rafraîchissement échoué, avant de faire une seconde tentative. expire: Durée maximale (en seconde) de conservation d'une copie des données de zone sans pouvoir faire de rafraichissement. minimum-ttl: Durée minimale (en seconde) pour un client conserve des données de zone avant qu'il ne soumette une nouvelle requête. Cette configuration peut être annulée par d'autres enregistrements.
AAAA | ipv6: adresse IPv6

Note : En terme de standards DNS, les adresses email sont données au format utilisateur.hote (par exemple : webmestre.exemple.com au contraire du format webmestre@exemple.com). N'oubliez pas de vérifier cette adresse et de la modifier si nécessaire avant de la passer à la fonction mail().

Exemple 1. Exemple avec dns_get_record()

<?php
$result = dns_get_record("php.net");
print_r($result);
?>

/*
Produit un affichage similaire &agrave; ceci :
----------------------------------------

Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)
*/

Comme il est très courant de rechercher l'IP d'un serveur, une fois que le champ MX a été résolu, dns_get_record() retournera aussi un tableau dans le paramètre addtl qui contiendra les enregistrements associés. authns est aussi retourné en contenant une liste des serveurs autorité.

Exemple 2. Exemple avec dns_get_record() et DNS_ANY

<?php
/* Demande tous ("ANY") les enregistrements pour php.net,
   pu cr&eacute;e les tableaus $authns et $addtl
   contenant une liste des noms de serveurs, et tous
   les enregistrements qui vont avec
    */
$result = dns_get_record("php.net",DNS_ANY,$authns,$addtl);
print "R&eacute;sultat = ";
print_r($result);
print "Authorit&eacute; NS = ";
print_r($authns);
print "Additionnel = ";
print_r($addtl);
?>

/*
Produit un affichage similaire &agrave; ceci :
-----------------------------------------

R&eacute;sultat = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)
Authortit&eacute; NS = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [1] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [2] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [3] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

)
Additionnel = Array
(
    [0] => Array
        (
            [host] => pair2.php.net
            [type] => A
            [ip] => 216.92.131.5
            [class] => IN
            [ttl] => 6766
        )

    [1] => Array
        (
            [host] => remote1.easydns.com
            [type] => A
            [ip] => 64.39.29.212
            [class] => IN
            [ttl] => 100384
        )

    [2] => Array
        (
            [host] => remote2.easydns.com
            [type] => A
            [ip] => 212.100.224.80
            [class] => IN
            [ttl] => 81241
        )

    [3] => Array
        (
            [host] => ns1.easydns.com
            [type] => A
            [ip] => 216.220.40.243
            [class] => IN
            [ttl] => 81241
        )

    [4] => Array
        (
            [host] => ns2.easydns.com
            [type] => A
            [ip] => 216.220.40.244
            [class] => IN
            [ttl] => 81241
        )

)
*/

Voir aussi dns_get_mx() et dns_check_record()

Précédent | Sommaire | Suivant
dns_get_mx | Niveau supérieur | fsockopen


fsockopen

(PHP 3, PHP 4 )

fsockopen -- Ouvre une socket de connexion Internet ou Unix

Description

int fsockopen ( string target, int port [, int errno [, string errstr [, float timeout]]])

fsockopen() crée un flux de connexion à l'Internet (AF_INET) ou à un domaine Unix (AF_UNIX). Via Internet, cette fonction va ouvrir une socket de connexion TCP avec l'hôte target sur le port port. Pour les connexions UDP, vous devez explicitement spécifier le protocole : udp://target. Via un domaine Unix, target représente le chemin jusqu'à la socket, et port doit être mis à 0. L'option timeout sert à donner une durée maximale à cet appel.

fsockopen() retourne un pointeur de fichier qui peut
être utilisé avec d'autres fonctions fichiers, telles que
fgets(), fgetss(),
fputs(), fclose() et
feof().

Si l'appel échoue, fsockopen() retourne FALSE, et si les options errno et errstr ont été fournies, elles contiennent désormais les raisons de l'échec. Si l'erreur retournée est 0 et que la fonction retourne FALSE, c'est une indication d'erreur. C'est probablement du à une erreur d'initialisation de la socket. Notez que errno et errstr sont passées par référence.

Suivant les environnements, le type 'domaine Unix' ou l'option timeout ne sont pas toujours disponibles.

La socket sera ouverte par défaut en mode bloquant. Vous pouvez changer de mode en utilisant : stream_set_blocking().

Exemple 1. Exemple avec fsockopen()

<?php
$fp = fsockopen("www.php.net", 80, &$errno, &$errstr, 30);
if(!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs($fp,"GET / HTTP/1.0\n\n");
    while(!feof($fp)) {
        echo fgets($fp,128);
    }
    fclose($fp);
}
?>
L'exemple ci-dessous décrit comment lire la date et l'heure grâce à un service UDP "daytime" (port 13), sur votre propre machine.

Exemple 2. Utilisation d'une connexion UDP

<?php
$fp = fsockopen("udp://127.0.0.1", 13, &$errno, &$errstr);
if (!$fp) {
    echo "ERREUR: $errno - $errstr<br>\n";
} else {
    fwrite($fp,"\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>

Note : Lors de la spécification d'adresses IPv6 au format numérique (e.g. fe80::1) vous devez placer l'adresse IP entre crochets. Par exemple : tcp://[fe80::1]:80.

Note : Le paramètre timeout a été introduit en PHP 3.0.9 et le support UDP en PHP 4.

Voir aussi pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() et feof().

Précédent | Sommaire | Suivant
dns_get_record | Niveau supérieur | gethostbyaddr


gethostbyaddr

(PHP 3, PHP 4 )

gethostbyaddr -- Retourne le nom d'hôte correspondant à une IP

Description

string gethostbyaddr ( string ip_address)

gethostbyaddr() retourne le nom d'hôte correspondant à l'IP ip_address. Si une erreur survient, retourne ip_address.

Exemple 1. Exemple avec gethostbyaddr()

<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

print $hostname;
?>

Voir aussi gethostbyname().

Précédent | Sommaire | Suivant
fsockopen | Niveau supérieur | gethostbyname


gethostbyname

(PHP 3, PHP 4 )

gethostbyname -- Retourne l'adresse IP correspondant à un hôte

Description

string gethostbyname ( string hostname)

gethostbyname() retourne l'adresse IP correspondant à l'hôte hostname.

Exemple 1. Exemple avec gethostbyaddr()

<?php
$ip = gethostbyname('www.exemple.com');

print $ip;
?>

Voir aussi gethostbyaddr().

Précédent | Sommaire | Suivant
gethostbyaddr | Niveau supérieur | gethostbynamel


gethostbynamel

(PHP 3, PHP 4 )

gethostbynamel -- Retourne la liste d'IP correspondante à un hôte.

Description

array gethostbynamel ( string hostname)

gethostbynamel() retourne la liste d'IP correspondant à l'hôte hostname.

Exemple 1. Exemple avec gethostbynamel()

<?php
  $hotes = gethostbynamel('www.yahoo.com');
  print_r($hotes);
?>

Le résultat du script ci-dessus sera :
Array
(
    [0] => 216.109.125.67
    [1] => 64.58.76.228
    [2] => 216.109.125.65
    [3] => 216.109.125.70
    [4] => 64.58.76.226
    [5] => 64.58.76.230
    [6] => 64.58.76.222
    [7] => 216.109.125.66
)

Voir aussi
gethostbyname(),
gethostbyaddr(),
checkdnsrr(),
getmxrr()
et la page 8 du manuel.

Précédent | Sommaire | Suivant
gethostbyname | Niveau supérieur | getmxrr


getmxrr

(PHP 3, PHP 4 )

getmxrr -- Retourne les enregistrements MX d'un hôte

Description

int getmxrr ( string hostname, array mxhosts [, array weight])

getmxrr() effectue une recherche DNS pour obtenir les enregistrements MX de l'hôte hostname. Retourne TRUE si des enregistrements sont trouvés, et FALSE si une erreur est rencontrée, ou si la recherche échoue.

La liste des enregistrements MX est placée dans le tableau mxhosts. Si le tableau weight est fourni, il sera rempli par les informations de poids.

Note : Cette fonction ne doit pas être utilisée à des fin de vérification d'adresse. Seuls le serveur de mail trouvé dans les enregistrements DNS sont retournés. Suivant la RFC 974 lorsqu'aucun serveur de mail n'est listé, hostname doit être utilisé comme serveur de mail, avec la priorité 0.

Note : Cette fonction n'est pas disponible sur les machines Windows. Pour la remplacer, essayez la classe PEAR : Net_DNS.

Voir aussi
checkdnsrr(),
gethostbyname(),
gethostbynamel(),
gethostbyaddr(),
et la page 8 du manuel.

Précédent | Sommaire | Suivant
gethostbynamel | Niveau supérieur | getprotobyname


getprotobyname

(PHP 4 )

getprotobyname -- Retourne le numéro de protocole associé à un nom de protocole

Description

int getprotobyname ( string name)

getprotobyname() retourne le numéro de protocole associé avec le nom de protocole name, comme dans /etc/protocols.

Voir aussi getprotobynumber().

Précédent | Sommaire | Suivant
getmxrr | Niveau supérieur | getprotobynumber


getprotobynumber

(PHP 4 )

getprotobynumber -- Retourne le nom de protocole associé à un numéro de protocole

Description

string getprotobynumber ( int number)

getprotobynumber() retourne le nom de protocole associé avec le numéro de protocole name, comme dans /etc/protocols.

Voir aussi getprotobyname().

Précédent | Sommaire | Suivant
getprotobyname | Niveau supérieur | getservbyname


getservbyname

(PHP 4 )

getservbyname -- Retourne le numéro de port associé à un service Internet et un protocole.

Description

int getservbyname ( string service, string protocol)

getservbyname() retourne le numéro de port associé au service service et au protocole protocol, comme dans /etc/services. protocol vaut soit tcp, soit udp.

Voir aussi getservbyport().

Précédent | Sommaire | Suivant
getprotobynumber | Niveau supérieur | getservbyport


getservbyport

(PHP 4 )

getservbyport -- Retourne le service Internet qui correspond au port et protocole.

Description

string getservbyport ( int port, string protocol)

getservbyport() le service internet associé au port port pour le protocole protocol comme dans /etc/services. protocol vaut soit tcp, soit udp.

Voir aussi getservbyname().

Précédent | Sommaire | Suivant
getservbyname | Niveau supérieur | ip2long


ip2long

(PHP 4 )

ip2long -- Convertit une chaîne contenant une adresse (IPv4) IP numérique en adresse littérale.

Description

int ip2long ( string ip_address)

ip2long() génère une adresse IPv4 à partir de son équivalent numérique.

Exemple 1. Exemple ip2long()

<?php
$ip = gethostbyname("www.php.net");
$out = "Les URLS suivantes sont &eacute;quivalentes :<br>\n";
$out .= "http://www.php.net/, http://".$ip."/, et http://".ip2long($ip)."/<br>\n";
echo $out;
?>

Ce second exemple montre comment afficher une adresse convertie à l'aide de la fonction printf() :

Exemple 2. Affichage d'adresse IP

<?php
    $ip = gethostbyname("www.php.net");
    printf ("%u\n", ip2long ($ip));
    echo $out;
?>

Voir aussi long2ip() et sprintf().

Précédent | Sommaire | Suivant
getservbyport | Niveau supérieur | long2ip


long2ip

(PHP 4 )

long2ip -- Convertit une adresse IP (IPv4) en adresse IP numérique

Description

string long2ip ( int proper_address)

long2ip() génère une adresse IP (format aaa.bbb.ccc.ddd) à partir de sa représentation littérale.

Voir aussi ip2long()

Précédent | Sommaire | Suivant
ip2long | Niveau supérieur | openlog


openlog

(PHP 3, PHP 4 )

openlog -- Ouvre la connexion à l'historique système

Description

int openlog ( string ident, int option, int facility)

openlog() ouvre la connexion à l'historique système. La chaîne ident sera ajoutée à chaque message. Les valeurs de option et facility sont données ci-dessous. L'utilisation de openlog() est optionnelle; cette fonction sera automatiquement appelée par syslog() si nécessaire, et dans ce cas, l'identification sera mise par défaut à FALSE. facility sert à indiquer quel programme enregistre ce message. Cela vous permet de spécifier (sur la machine d'historique) comment traiter les messages venant de plusieurs serveurs. L'utilisation de openlog() est optionnel. Cette fonction sera automatiquement appelée par la fonction syslog() si nécessaire, auquel cas, ident vaudra par défaut FALSE.

Tableau 1. Options openlog()

Constante | Description
LOG_CONS | Si une erreur survient lors de l'envoi des données au gestionnaire d'historique, écrire directement l'erreur sur la console.
LOG_NDELAY | Ouvre immédiatement une connexion au gestionnaire d'historique
LOG_ODELAY | Retarde l'ouverture de la connexion jusqu'à ce que le premier message soit enregistré (par défaut)
LOG_PERROR | Envoie le message au gestionnaire standard
LOG_PID | Inclut le PID à chaque message
Vous pouvez utiliser une ou plusieurs de ces options. Pour les combiner, utiliser l'opérateur OR. Par exemple, pour ouvrir immédiatement la connexion, écrire sur la console et inclure le PID de chaque message, utilisez : LOG_CONS | LOG_NDELAY | LOG_PID.

Tableau 2. Paramètre facility de openlog()

Constante | Description
LOG_AUTH | sécurité/messages d'autorisation (utilisez LOG_AUTHPRIV, pour remplacer cette constante sur les systèmes où elle est définie).
LOG_AUTHPRIV | sécurité/messages d'autorisation (privé)
LOG_CRON | démon horloge (cron et at)
LOG_DAEMON | autres démons système
LOG_KERN | noyau (kernel)
LOG_LOCAL0 ... LOG_LOCAL7 | réservé pour utilisation local. Inutilisable sous Windows
LOG_LPR | imprimante (line printer subsystem)
LOG_MAIL | messagerie mail
LOG_NEWS | USENET : groupes de news (newsgroup)
LOG_SYSLOG | messages générés en interne par syslogd
LOG_USER | messages utilisateurs générique
LOG_UUCP | UUCP subsystem

Voir aussi
define_syslog_variables(),
syslog() et
closelog().

Précédent | Sommaire | Suivant
long2ip | Niveau supérieur | pfsockopen


pfsockopen

(PHP 3>= 3.0.7, PHP 4 )

pfsockopen -- Ouvre une socket de connexion Internet ou Unix persistante.

Description

int pfsockopen ( string hostname, int port [, int errno [, string errstr [, int timeout]]])

pfsockopen() se comporte exactement comme fsockopen() mais la connexion ouverte le reste, même après la fin du script. C'est la version persistante de fsockopen().

Précédent | Sommaire | Suivant
openlog | Niveau supérieur | socket_get_status


socket_get_status

(PHP 4 )

socket_get_status -- Retourne les informations sur une socket

Description

array socket_get_status ( resource socket_get_status)

socket_get_status est un alias de stream_get_meta_data().

Précédent | Sommaire | Suivant
pfsockopen | Niveau supérieur | socket_set_blocking


socket_set_blocking

(PHP 4 )

socket_set_blocking -- Active/désactive le mode bloquant d'une socket

Description

int socket_set_blocking ( int socket_descriptor, int mode)

Si mode est FALSE, la socket est mise en mode non bloquant, et si il est TRUE, la socket est mise en mode bloquant. Cela affecte des appels tels que fgets() qui lisent depuis une socket. En mode non bloquant, un appel fgets() retournera immediatement toujours TRUE tandis qu'en mode bloquant, elle va attendre que des données arrivent pour répondre TRUE.

Précédent | Sommaire | Suivant
socket_get_status | Niveau supérieur | socket_set_timeout


socket_set_timeout

(PHP 4 )

socket_set_timeout -- Alias de stream_set_timeout()

Description

bool socket_set_timeout ( int socket_descriptor, int seconds, int microseconds)

socket_set_timeout() est un alias de stream_set_timeout().

Précédent | Sommaire | Suivant
socket_set_blocking | Niveau supérieur | syslog


syslog

(PHP 3, PHP 4 )

syslog -- Génère un message dans l'historique système

Description

int syslog ( int priority, string message)

syslog() génère un message qui sera inscrit dans l'historique par le système. priority est une combinaison des valeurs d'accès et de niveau, qui seront décrites dans la prochaine section. Le dernier argument est le message à envoyer. Attention : les caractères %m seront remplacés par l'erreur (sous forme de chaîne), présente dans errno.

Tableau 1. Priorités syslog()(en ordre décroissant)

Constante | Description
LOG_EMERG | système inutilisable
LOG_ALERT | une décision doit être prise immédiatement
LOG_CRIT | conditions critiques
LOG_ERR | conditions d'erreur
LOG_WARNING | conditions d'alerte
LOG_NOTICE | condition normale, mais significative
LOG_INFO | message d'information
LOG_DEBUG | message de débuggage

Exemple 1. Utilisation de syslog()

<?php
define_syslog_variables();
// ouverture de syslog, ajout du PID et envoi simultan&eacute; du
// message &agrave; la sortie standard et &agrave; un m&eacute;canisme
// sp&eacute;cifique
openlog("myScripLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);

// quelques lignes de code
if (authorized_client()) {
    // faire quelquechose
} else {
    // client non autoris&eacute;!
    // notation de la tentative
    $access = date("Y/m/d H:i:s");
    syslog(LOG_WARNING,"Client non autoris&eacute;: $access $REMOTE_ADDR ($HTTP_USER_AGENT)");
}

  closelog();
?>
Pour plus d'informations sur comment mettre en place un gestionnaire d'historique, reportez-vous au manuel Unix, page 5 syslog.conf(5). D'autres informations sur les systèmes d'historique et leurs options sont aussi disponibles dans le manuel syslog(3) des machines Unix.

Avec Windows NT, l'historique est pris en charge par Event Log.

Note : L'utilisation de LOG_LOCAL0 à LOG_LOCAL7 pour le paramètre facility de la fonction openlog() n'est pas disponible sous Windows.

Voir aussi
define_syslog_variables(),
openlog() et
closelog().

Précédent | Sommaire | Suivant
socket_set_timeout | Niveau supérieur | Fonctions de contrôle d'écran de terminal


Fonctions de contrôle d'écran de terminal

Manuel PHP
Précédent Suivant

LXVIII. Fonctions de contrôle d'écran de terminal

Introduction

ncurses (new curses, les nouveaux curseurs) sont une émulation libère des curseurs du System V Rel 4.0 (et plus récente). Ils utilisent le format terminfo, supportent les pavé numériques, les couleurs, les colorations multiples, les caractères de formulaire et les touches de fonctions.

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Ncurses est disponible sur les plate-formes suivantes :

  • AIX

  • BeOS

  • Cygwin

  • Digital Unix (aka OSF1)

  • FreeBSD

  • GNU/Linux

  • HPUX

  • IRIX

  • OS/2

  • SCO OpenServer

  • Solaris

  • SunOS

Pré-requis

Vous devez disposer des librairies ncurses et des fichiers d'en-têtes. Téléchargez la dernière version sur le site de ftp://ftp.gnu.org/pub/gnu/ncurses/ ou sur un mirroir GNU.

Installation

Pour installer cette extension, compilez PHP en mode CGI ou CLI, avec l'option --with-ncurses[=DIR].

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
ncurses.value | "42" | PHP_INI_ALL
ncurses.string | "foobar" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Error codes

On error ncurses functions return NCURSES_ERR.

Colors

Tableau 2. ncurses color constants

Constante | Signification
NCURSES_COLOR_BLACK | Pas de couleur
NCURSES_COLOR_WHITE | blanc
NCURSES_COLOR_RED | rouge - supporté lorsque le terminal est en mode couleurs
NCURSES_COLOR_GREEN | vert - supporté lorsque le terminal est en mode couleurs
NCURSES_COLOR_YELLOW | jaune - supporté lorsque le terminal est en mode couleurs
NCURSES_COLOR_BLUE | bleu - supporté lorsque le terminal est en mode couleurs
NCURSES_COLOR_CYAN | cyan - supporté lorsque le terminal est en mode couleurs
NCURSES_COLOR_MAGENTA | magenta - supporté lorsque le terminal est en mode couleurs

Keys

Tableau 3. Constantes de touches ncurses

constant | meaning
NCURSES_KEY_F0 - NCURSES_KEY_F64 | Touches de fonctions F1 - F64
NCURSES_KEY_DOWN | flèche vers le bas
NCURSES_KEY_UP | flèche vers le haut
NCURSES_KEY_LEFT | flèche vers la gauche
NCURSES_KEY_RIGHT | flèche vers la droite
NCURSES_KEY_HOME | touche home (vers le haut + flèche vers la gauche)
NCURSES_KEY_BACKSPACE | retour en arrière
NCURSES_KEY_DL | efface une ligne
NCURSES_KEY_IL | insère une ligne
NCURSES_KEY_DC | efface un caractère
NCURSES_KEY_IC | insère un caractère, ou bien passe en mode insertion
NCURSES_KEY_EIC | termine le mode insertion
NCURSES_KEY_CLEAR | efface l'écran
NCURSES_KEY_EOS | efface l'écran jusqu'en bas
NCURSES_KEY_EOL | efface l'écran jusqu'à la fin de la ligne
NCURSES_KEY_SF | scrolle une ligne vers le bas
NCURSES_KEY_SR | scroll une ligne vers le haut
NCURSES_KEY_NPAGE | page suivante
NCURSES_KEY_PPAGE | page précédente
NCURSES_KEY_STAB | place une tabulation
NCURSES_KEY_CTAB | supprime une tabulation
NCURSES_KEY_CATAB | supprime toutes les tabulations
NCURSES_KEY_SRESET | remise à zéro partielle
NCURSES_KEY_RESET | remise à zéro totale
NCURSES_KEY_PRINT | imprime
NCURSES_KEY_LL | inférieur gauche (sur le pavé numérique)
NCURSES_KEY_A1 | supérieur gauche (sur le pavé numérique)
NCURSES_KEY_A3 | supérieur droit (sur le pavé numérique)
NCURSES_KEY_B2 | centre (sur le pavé numérique)
NCURSES_KEY_C1 | inférieur gauche (sur le pavé numérique)
NCURSES_KEY_C3 | inférieur droit (sur le pavé numérique)
NCURSES_KEY_BTAB | tabulation arrière
NCURSES_KEY_BEG | début
NCURSES_KEY_CANCEL | annule
NCURSES_KEY_CLOSE | ferme
NCURSES_KEY_COMMAND | commande
NCURSES_KEY_COPY | copie
NCURSES_KEY_CREATE | crée
NCURSES_KEY_END | fin
NCURSES_KEY_EXIT | quitte
NCURSES_KEY_FIND | trouve
NCURSES_KEY_HELP | aide
NCURSES_KEY_MARK | marque
NCURSES_KEY_MESSAGE | message
NCURSES_KEY_MOVE | déplace
NCURSES_KEY_NEXT | suivant
NCURSES_KEY_OPEN | ouvre
NCURSES_KEY_OPTIONS | options
NCURSES_KEY_PREVIOUS | précédent
NCURSES_KEY_REDO | refaire
NCURSES_KEY_REFERENCE | référence
NCURSES_KEY_REFRESH | rafraîchis
NCURSES_KEY_REPLACE | replace
NCURSES_KEY_RESTART | redémarre
NCURSES_KEY_RESUME | recommence
NCURSES_KEY_SAVE | sauve
NCURSES_KEY_SBEG | shift et début
NCURSES_KEY_SCANCEL | shift et annule
NCURSES_KEY_SCOMMAND | shift et commande
NCURSES_KEY_SCOPY | shift et copie
NCURSES_KEY_SCREATE | shift et crée
NCURSES_KEY_SDC | shift et efface un caractère
NCURSES_KEY_SDL | shift et efface une ligne
NCURSES_KEY_SELECT | selectionne
NCURSES_KEY_SEND | shift et fin
NCURSES_KEY_SEOL | shift et fin de ligne
NCURSES_KEY_SEXIT | shift et quitte
NCURSES_KEY_SFIND | shift et trouve
NCURSES_KEY_SHELP | shift et aide
NCURSES_KEY_SHOME | shift et home
NCURSES_KEY_SIC | shift et entrée
NCURSES_KEY_SLEFT | shift et flèche vers la gauche
NCURSES_KEY_SMESSAGE | shift et message
NCURSES_KEY_SMOVE | shift et déplace
NCURSES_KEY_SNEXT | shift et suivant
NCURSES_KEY_SOPTIONS | shift et options
NCURSES_KEY_SPREVIOUS | shift et précédent
NCURSES_KEY_SPRINT | shift et imprime
NCURSES_KEY_SREDO | shift et refait
NCURSES_KEY_SREPLACE | shift et remplace
NCURSES_KEY_SRIGHT | shift et flèche vers la droite
NCURSES_KEY_SRSUME | shift et recommnence
NCURSES_KEY_SSAVE | shift et sauve
NCURSES_KEY_SSUSPEND | shift et suspend
NCURSES_KEY_UNDO | défait
NCURSES_KEY_MOUSE | un événement souris est survenu
NCURSES_KEY_MAX | valeur maximale de clé

Souris

Tableau 4. Constantes de souris

Constante | Signification
NCURSES_BUTTON1_RELEASED - NCURSES_BUTTON4_RELEASED | bouton (1-4) relaché
NCURSES_BUTTON1_PRESSED - NCURSES_BUTTON4_PRESSED | bouton (1-4) pressé
NCURSES_BUTTON1_CLICKED - NCURSES_BUTTON4_CLICKED | bouton (1-4) cliqué
NCURSES_BUTTON1_DOUBLE_CLICKED - NCURSES_BUTTON4_DOUBLE_CLICKED | bouton (1-4) double cliqué
NCURSES_BUTTON1_TRIPLE_CLICKED - NCURSES_BUTTON4_TRIPLE_CLICKED | bouton (1-4) triple cliqué
NCURSES_BUTTON_CTRL | ctrl pressé durant le clic
NCURSES_BUTTON_SHIFT | shift pressé durant le clic
NCURSES_BUTTON_ALT | alt pressé durant le clic
NCURSES_ALL_MOUSE_EVENTS | indique tous les événements souris
NCURSES_REPORT_MOUSE_POSITION | indique la position de la souris
Table des matières
ncurses_addch -- Ajoute un caractère à la position courante et avance le curseur
ncurses_addchnstr -- Ajoute une chaîne de taille donnée à la position courante
ncurses_addchstr -- Ajoute une chaîne à la position courante
ncurses_addnstr -- Ajoute une chaîne à la position courante
ncurses_addstr -- Affiche du texte à la position courante
ncurses_assume_default_colors -- Définit la couleur 0
ncurses_attroff -- Désactive les attributs donnés
ncurses_attron -- Active les attributs suivants
ncurses_attrset -- Modifie les attributs donnés
ncurses_baudrate -- Retourne le baudrate du terminal
ncurses_beep -- Fait beeper le terminal
ncurses_bkgd -- Définit les propriétés de fond d'écran pour le terminal
ncurses_bkgdset -- Définit le fond d'écran
ncurses_border -- Dessine un bord autour de l'écran avec les caractères données
ncurses_bottom_panel -- Place un conteneur visibile en bas de la pile
ncurses_can_change_color -- Vérfifie si le terminal peut changer de couleurs
ncurses_cbreak -- Change la bufferisation d'entrée
ncurses_clear -- Efface l'écran
ncurses_clrtobot -- Efface l'écran depuis la position courante jusqu'au bas de l'écran
ncurses_clrtoeol -- Efface l'écran depuis la position courante jusqu'à la fin de la ligne
ncurses_color_content -- Lit la valeur RGB d'une couleur
ncurses_color_set -- Modifie la couleur de fond et de devant
ncurses_curs_set -- Modifie l'état du curseur
ncurses_def_prog_mode -- sauve le mode du terminal
ncurses_def_shell_mode -- Sauve le mode de terminal (shell)
ncurses_define_key -- Défini un code de clé (keycode)
ncurses_del_panel -- Retire un conteneur de la pile et l'efface (mais pas la fenêtre associée)
ncurses_delay_output -- Retarde l'affichage sur les terminaux utilisant des caractères de remplissage
ncurses_delch -- Efface le caractère courant et décale le reste de la ligne vers la gauche
ncurses_deleteln -- Efface la ligne courante, et monte l'écran d'une ligne
ncurses_delwin -- Efface une fenête ncurses
ncurses_doupdate -- Affiche tout ce qui est prêt, et rafraichit l'écran
ncurses_echo -- Active l'écho d'entrée clavier
ncurses_echochar -- Affiche un caractère et rafraichit l'écran
ncurses_end -- Cesse l'utilisation de ncurses et efface l'écran
ncurses_erase -- Efface l'écran du terminal
ncurses_erasechar -- Lit le caractère qui se fait effacer
ncurses_filter -- Filtre pour ncurses
ncurses_flash -- Fait flasher le terminal (visual bell)
ncurses_flushinp -- Vide le buffer d'entrée du clavier
ncurses_getch -- Lit un caractère sur le clavier
ncurses_getmaxyx -- Retourne la taille d'une fenêtre
ncurses_getmouse -- Lit les événements souris
ncurses_getyx -- Retourne la position courante du curseur pour une fenêtre
ncurses_halfdelay -- Met le terminal en mode semi-retardé
ncurses_has_colors -- Vérifie que le que le terminal supporte les couleurs
ncurses_has_ic -- Vérifie les capacités d'insertion et d'effacement
ncurses_has_il -- Vérifie les capacitées d'insertion et d'effacement
ncurses_has_key -- Vérifie la présence des touches de fonctions sur le clavier
ncurses_hide_panel -- Retire un conteneur de la pile, pour le rendre invisible
ncurses_hline -- Dessine une ligne horizontale à la position courante, en utilisant un caractère et une taille maximale
ncurses_inch -- Lit le caractère et ses attributs à la position courante
ncurses_init_color -- Configure une nouvelle valeur RGB pour une couleur
ncurses_init_pair -- Alloue une paire de couleur
ncurses_init -- Initialise ncurses
ncurses_insch -- Insère un caractère et décale le reste de la ligne vers la droite, y compris le caractère courant
ncurses_insdelln -- Insère des lignes devant la ligne courante en scrollant vers le bas (des nombres négatifs donneront un scroll vers le haut)
ncurses_insertln -- Insère une ligne et décale le reste de l'écran vers le bas
ncurses_insstr -- Insère une chaîne à la position courante, et décale le reste de la chaîne à droite
ncurses_instr -- Lit une chaîne depuis le terminal
ncurses_isendwin -- Ncurses est en mode endwin, des affichages normaux sont possibles
ncurses_keyok -- Active ou désactive un code de clé (keycode)
ncurses_keypad -- Active ou désactive le keypad
ncurses_killchar -- Retourne la ligne du caractère actuellement supprimé
ncurses_longname -- Retourne la description du terminal
ncurses_meta -- Active/désactive les informations de méta clé 8-bits
ncurses_mouse_trafo -- Transforme les coordonnées
ncurses_mouseinterval -- Configure les délais entre les clics de souris
ncurses_mousemask -- Configure les événements de souris à surveiller
ncurses_move_panel -- Déplace un conteneur pour que son coin supérieur gauche soit aux coordonnées [startx, starty]
ncurses_move -- Déplace la position d'affichage
ncurses_mvaddch -- Déplace la position courante et ajoute un caractère
ncurses_mvaddchnstr -- Déplace la position et ajoute la chaîne attribuée avec la taille donnée
ncurses_mvaddchstr -- Déplace la position et ajoute une chaîne attribuée
ncurses_mvaddnstr -- Déplace la position et ajoute une chaîne de taille donnée
ncurses_mvaddstr -- Déplace la position et ajoute une chaîne
ncurses_mvcur -- Déplace immédiatement le curseur
ncurses_mvdelch -- Déplace la position et efface le caractère, puis décale le reste de la ligne à gauche
ncurses_mvgetch -- Déplace la position et lit le caractère à la nouvelle position
ncurses_mvhline -- Choisi une nouvelle position et dessine une ligne horizontale avec le caractère donné, et de taille maximale donnée
ncurses_mvinch -- Déplace la position et lit le caractère la nouvelle position
ncurses_mvvline -- Modifie la position et dessine une ligne verticale avec le caractère donné, de taille maximale donnée
ncurses_mvwaddstr -- Ajoute une chaîne à une nouvelle position dans la fenêtre
ncurses_napms -- Fait une pause
ncurses_new_panel -- Créée un nouveau conteneur et l'associe à une fenêtre
ncurses_newpad -- Crée une nouveau pad (fenêtre)
ncurses_newwin -- Crée une nouvelle fenêtre
ncurses_nl -- Convertit les nouvelles lignes et retour chariot en saut de ligne
ncurses_nocbreak -- Passe le terminal en mode cooked
ncurses_noecho -- Désactive l'écho clavier
ncurses_nonl -- Ne convertit par les nouvelles lignes et retour chariot en saut de ligne
ncurses_noqiflush -- Ne vide pas les buffers sur reception des caractères de signaux
ncurses_noraw -- Déconfigure le mode brut du terminal
ncurses_pair_content -- Retourne la valeur RGB d'une couleur
ncurses_panel_above -- Retourne le conteneur au dessus du conteneur. Si ce dernier est null, retourne le dernier conteneur de la pile
ncurses_panel_below -- Retour le conteneur sous le conteneur. Si ce dernier est null, le premier conteneur de la pile est retourné
ncurses_panel_window -- Retourne la fenêtre associée avec un conteneur
ncurses_pnoutrefresh -- Copie une région depuis un pad dans un écran virtuel
ncurses_prefresh -- Copie une région depuis un pad dans l'écran virtuel
ncurses_putp -- ncurses_putp (???)
ncurses_qiflush -- Vide les buffers après détection d'un caractèer de signal
ncurses_raw -- Passe le terminal en mode brut (raw)
ncurses_refresh -- Rafraichit l'écran
ncurses_replace_panel -- Remplace la fenêtre associée à un conteneur
ncurses_reset_prog_mode -- Restaure le mode prog sauvé par def_prog_mode
ncurses_reset_shell_mode -- Restaure le mode shell mode sauvé ar def_shell_mode
ncurses_resetty -- Rétablit le terminal sauvé
ncurses_savetty -- Sauve l'état du terminal
ncurses_scr_dump -- Sauve un écran dans un fichier
ncurses_scr_init -- Initilise un écran depuis un fichier de sauvegarde
ncurses_scr_restore -- Rétablit un écran depuis une fichier de sauvegarde
ncurses_scr_set -- Configure un écran depuis un fichier de sauvegarde
ncurses_scrl -- Scrolle le contenu de la fenêtre vers le haut ou le bas, dans changer la position courante
ncurses_show_panel -- Place un conteneur invisible en haut de la pile, pour le rendre visible
ncurses_slk_attr -- Retourne l'attribut de la clé soft label courante
ncurses_slk_attroff -- ncurses_slk_attroff
ncurses_slk_attron -- ncurses_slk_attron
ncurses_slk_attrset -- ncurses_slk_attrset
ncurses_slk_clear -- Efface les soft labels de l'écran
ncurses_slk_color -- Configure la couleur des clés soft label
ncurses_slk_init -- Initialises les fonctions de clés soft label
ncurses_slk_noutrefresh -- Copie toutes les clés soft label à l'écran virtuel
ncurses_slk_refresh -- Copie les clés soft label à l'écran
ncurses_slk_restore -- Rétablit les clés soft label
ncurses_slk_set -- Modifie les étiquettes de clé de fonction (function key labels)
ncurses_slk_touch -- Force l'affichage lorsque ncurses_slk_noutrefresh est utilisé
ncurses_standend -- Cesse l'utilisation de l'attribut 'standout'
ncurses_standout -- Commence l'utilisation de l'attribut 'standout'
ncurses_start_color -- Active les couleurs
ncurses_termattrs -- Retourne toutes les options supportées par le terminal, combinées ensemble par l'opérateur OR
ncurses_termname -- Retourne le nom court du terminal
ncurses_timeout -- Configure le temps d'expiration des des séquences clavier spéciales
ncurses_top_panel -- Place un conteneur visible sur le haut de la pile
ncurses_typeahead -- Spécifie un autre descripteur de fichier pour la vérification à la volée des donneés saisies
ncurses_ungetch -- Replace un caractère dans la queue d'entrée
ncurses_ungetmouse -- Ajoute un événement souris dans la queue
ncurses_update_panels -- Rafraîchit l'écran virtuel pour prendre en compte les relations entre les conteneurs de la pile
ncurses_use_default_colors -- Assigne la couleur de terminal pour l'index -1
ncurses_use_env -- Contrôle l'utilisation des informations d'environnement concernant la taille du terminal
ncurses_use_extended_names -- Controle l'utilisation des noms étendus dans les descriptions terminfo
ncurses_vidattr -- ncurses_vidattr
ncurses_vline -- Dessine une ligne verticale à la position courante en utilisant un caractère donnée, pour une taille donnée
ncurses_waddch -- Ajoute un caractère à la position courante, dans une fenêtre, et avance le curseur
ncurses_waddstr -- Affiche le texte à la position courante dans la fenêtre
ncurses_wattroff -- Désactive les attributs d'une fenêtre
ncurses_wattron -- Efface les attributs de la fenêtre
ncurses_wattrset -- Modifie les attributs d'une fenêtre
ncurses_wborder -- Dessine le bord d'une fenêtre avec un caractère qualifié
ncurses_wclear -- Efface la fenêtre
ncurses_wcolor_set -- Modifie les paires de couleurs de la fenêtre
ncurses_werase -- Efface le contenu de la fenêtre
ncurses_wgetch -- Lit un caractère depuis le clavier (fenêtre)
ncurses_whline -- Dessine une ligne horizontale à partir de la position courante, avec un caractère qualifié, et d'une taille maximale
ncurses_wmouse_trafo -- Transforme les coordonnées d'une fenêtre
ncurses_wmove -- Déplace le position d'affichage de la fenêtre
ncurses_wnoutrefresh -- Copie la fenêtre dans l'écran virtuel
ncurses_wrefresh -- Rafraichit la fenêtre sur l'écran du terminal
ncurses_wstandend -- Termine le mode standout de la fenêtre
ncurses_wstandout -- Passe une fenêtre en mode standout
ncurses_wvline -- Dessine une ligne verticale dans une fenêtre, à la position courante, en utilisant un caractère qualifié, avec une taille maximale

Précédent | Sommaire | Suivant
syslog | Niveau supérieur | ncurses_addch


ncurses_addch

(PHP 4 >= 4.1.0)

ncurses_addch -- Ajoute un caractère à la position courante et avance le curseur

Description

int ncurses_addch ( int ch)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Fonctions de contrôle d'écran de terminal | Niveau supérieur | ncurses_addchnstr


ncurses_addchnstr

(PHP 4 >= 4.2.0)

ncurses_addchnstr -- Ajoute une chaîne de taille donnée à la position courante

Description

int ncurses_addchnstr ( string s, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_addch | Niveau supérieur | ncurses_addchstr


ncurses_addchstr

(PHP 4 >= 4.2.0)

ncurses_addchstr -- Ajoute une chaîne à la position courante

Description

int ncurses_addchstr ( string s)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_addchnstr | Niveau supérieur | ncurses_addnstr


ncurses_addnstr

(PHP 4 >= 4.2.0)

ncurses_addnstr -- Ajoute une chaîne à la position courante

Description

int ncurses_addnstr ( string s, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_addchstr | Niveau supérieur | ncurses_addstr


ncurses_addstr

(PHP 4 >= 4.2.0)

ncurses_addstr -- Affiche du texte à la position courante

Description

int ncurses_addstr ( string text)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_addnstr | Niveau supérieur | ncurses_assume_default_colors


ncurses_assume_default_colors

(PHP 4 >= 4.2.0)

ncurses_assume_default_colors -- Définit la couleur 0

Description

int ncurses_assume_default_colors ( int fg, int bg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_addstr | Niveau supérieur | ncurses_attroff


ncurses_attroff

(PHP 4 >= 4.1.0)

ncurses_attroff -- Désactive les attributs donnés

Description

int ncurses_attroff ( int attributes)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_assume_default_colors | Niveau supérieur | ncurses_attron


ncurses_attron

(PHP 4 >= 4.1.0)

ncurses_attron -- Active les attributs suivants

Description

int ncurses_attron ( int attributes)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_attroff | Niveau supérieur | ncurses_attrset


ncurses_attrset

(PHP 4 >= 4.1.0)

ncurses_attrset -- Modifie les attributs donnés

Description

int ncurses_attrset ( int attributes)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_attron | Niveau supérieur | ncurses_baudrate


ncurses_baudrate

(PHP 4 >= 4.1.0)

ncurses_baudrate -- Retourne le baudrate du terminal

Description

int ncurses_baudrate ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_attrset | Niveau supérieur | ncurses_beep


ncurses_beep

(PHP 4 >= 4.1.0)

ncurses_beep -- Fait beeper le terminal

Description

int ncurses_beep ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_beep() envoie une alerte audible (bell) Et si ce n'est pas possible, fait flasher l'écran. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ncurses_flash().

Précédent | Sommaire | Suivant
ncurses_baudrate | Niveau supérieur | ncurses_bkgd


ncurses_bkgd

(PHP 4 >= 4.1.0)

ncurses_bkgd -- Définit les propriétés de fond d'écran pour le terminal

Description

int ncurses_bkgd ( int attrchar)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_beep | Niveau supérieur | ncurses_bkgdset


ncurses_bkgdset

(PHP 4 >= 4.1.0)

ncurses_bkgdset -- Définit le fond d'écran

Description

void ncurses_bkgdset ( int attrchar)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_bkgd | Niveau supérieur | ncurses_border


ncurses_border

(PHP 4 >= 4.2.0)

ncurses_border -- Dessine un bord autour de l'écran avec les caractères données

Description

int ncurses_border ( int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_bkgdset | Niveau supérieur | ncurses_bottom_panel


ncurses_bottom_panel

(PHP 4 >= 4.3.0)

ncurses_bottom_panel -- Place un conteneur visibile en bas de la pile

Description

int ncurses_bottom_panel ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_border | Niveau supérieur | ncurses_can_change_color


ncurses_can_change_color

(PHP 4 >= 4.1.0)

ncurses_can_change_color -- Vérfifie si le terminal peut changer de couleurs

Description

bool ncurses_can_change_color ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_can_change_color() retourne TRUE ou FALSE, suivant que le terminal supporte les couleurs ou pas, et si le programmeur peut changer ces couleurs ou pas.

Précédent | Sommaire | Suivant
ncurses_bottom_panel | Niveau supérieur | ncurses_cbreak


ncurses_cbreak

(PHP 4 >= 4.1.0)

ncurses_cbreak -- Change la bufferisation d'entrée

Description

bool ncurses_cbreak ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_cbreak() désactive la bufferisation de ligne, et le traitement des caractères (les interruptions et le flux de caractères de contrôles sont intouchées), rendant les caractères tapés par l'utilisateur directement acceessible au programme.

ncurses_cbreak() retourne TRUE en cas de succès, et NCURSES_ERR en cas d'erreur.

Voir aussi ncurses_nocbreak().

Précédent | Sommaire | Suivant
ncurses_can_change_color | Niveau supérieur | ncurses_clear


ncurses_clear

(PHP 4 >= 4.1.0)

ncurses_clear -- Efface l'écran

Description

bool ncurses_clear ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_clear() efface totalement l'écran sans configurer les blancs. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note: ncurses_clear() efface totalement l'écran sans configurer les blancs, qui représente la couleur de fond d'écran. Pour effacer le fond d'écran avec les blancs, utilisez plutôt ncurses_erase().

Voir aussi ncurses_erase().

Précédent | Sommaire | Suivant
ncurses_cbreak | Niveau supérieur | ncurses_clrtobot


ncurses_clrtobot

(PHP 4 >= 4.1.0)

ncurses_clrtobot -- Efface l'écran depuis la position courante jusqu'au bas de l'écran

Description

bool ncurses_clrtobot ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_clrtobot() efface toutes les lignes de l'écran depuis le curseur jusqu'à la fin de l'écran. Les blancs sont créés avec la fonction ncurses_clrtobot() pour avoir le bon rendu de fond d'écran. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ncurses_clear() et ncurses_clrtoeol()

Précédent | Sommaire | Suivant
ncurses_clear | Niveau supérieur | ncurses_clrtoeol


ncurses_clrtoeol

(PHP 4 >= 4.1.0)

ncurses_clrtoeol -- Efface l'écran depuis la position courante jusqu'à la fin de la ligne

Description

bool ncurses_clrtoeol ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_clrtoeol() efface la ligne courante depuis la position courante du curseur jusqu'à la fin. Les blancs sont créés par la fonction ncurses_clrtoeol() pour avoir le bon rendu de fond d'écran. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ncurses_clear() et ncurses_clrtobot()

Précédent | Sommaire | Suivant
ncurses_clrtobot | Niveau supérieur | ncurses_color_content


ncurses_color_content

(PHP 4 >= 4.3.0)

ncurses_color_content -- Lit la valeur RGB d'une couleur

Description

int ncurses_color_content ( int color, int &r, int &g, int &b)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_clrtoeol | Niveau supérieur | ncurses_color_set


ncurses_color_set

(PHP 4 >= 4.1.0)

ncurses_color_set -- Modifie la couleur de fond et de devant

Description

int ncurses_color_set ( int pair)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_color_content | Niveau supérieur | ncurses_curs_set


ncurses_curs_set

(PHP 4 >= 4.1.0)

ncurses_curs_set -- Modifie l'état du curseur

Description

int ncurses_curs_set ( int visibility)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_color_set | Niveau supérieur | ncurses_def_prog_mode


ncurses_def_prog_mode

(PHP 4 >= 4.1.0)

ncurses_def_prog_mode -- sauve le mode du terminal

Description

bool ncurses_def_prog_mode ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_def_prog_mode() sauve le mode du terminal pour réutilisation (dans les curses) avec la fonction ncurses_reset_prog_mode(). ncurses_def_prog_mode() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_reset_prog_mode().

Précédent | Sommaire | Suivant
ncurses_curs_set | Niveau supérieur | ncurses_def_shell_mode


ncurses_def_shell_mode

(PHP 4 >= 4.1.0)

ncurses_def_shell_mode -- Sauve le mode de terminal (shell)

Description

bool ncurses_def_shell_mode ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_def_shell_mode() sauve le mode de terminal courant pour qu'il soit réutilisé par le shell (et non pas par curses) avec la fonction ncurses_reset_shell_mode(). ncurses_def_shell_mode() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_reset_shell_mode().

Précédent | Sommaire | Suivant
ncurses_def_prog_mode | Niveau supérieur | ncurses_define_key


ncurses_define_key

(PHP 4 >= 4.2.0)

ncurses_define_key -- Défini un code de clé (keycode)

Description

int ncurses_define_key ( string definition, int keycode)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_def_shell_mode | Niveau supérieur | ncurses_del_panel


ncurses_del_panel

(PHP 4 >= 4.3.0)

ncurses_del_panel -- Retire un conteneur de la pile et l'efface (mais pas la fenêtre associée)

Description

int ncurses_del_panel ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_define_key | Niveau supérieur | ncurses_delay_output


ncurses_delay_output

(PHP 4 >= 4.1.0)

ncurses_delay_output -- Retarde l'affichage sur les terminaux utilisant des caractères de remplissage

Description

int ncurses_delay_output ( int milliseconds)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_del_panel | Niveau supérieur | ncurses_delch


ncurses_delch

(PHP 4 >= 4.1.0)

ncurses_delch -- Efface le caractère courant et décale le reste de la ligne vers la gauche

Description

bool ncurses_delch ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_delch() efface la caractère sous le curseur. Tous les caractères sont alors décalés vers la gauche sur la même ligne, et le dernier caractère est remplacé par un vide. La position du curseur ne change pas. ncurses_delch() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_deleteln().

Précédent | Sommaire | Suivant
ncurses_delay_output | Niveau supérieur | ncurses_deleteln


ncurses_deleteln

(PHP 4 >= 4.1.0)

ncurses_deleteln -- Efface la ligne courante, et monte l'écran d'une ligne

Description

bool ncurses_deleteln ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_deleteln() efface la ligne courante, qui est placée sous le curseur. Toutes les lignes sousjacentes sont alors remontée d'un cran. La ligne du bas est effacée. La position du curseur ne change pas. ncurses_deleteln() retourne FALSE en cas de succès, et sinon TRUE.

Voir aussi ncurses_delch().

Précédent | Sommaire | Suivant
ncurses_delch | Niveau supérieur | ncurses_delwin


ncurses_delwin

(PHP 4 >= 4.1.0)

ncurses_delwin -- Efface une fenête ncurses

Description

int ncurses_delwin ( resource window)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_deleteln | Niveau supérieur | ncurses_doupdate


ncurses_doupdate

(PHP 4 >= 4.1.0)

ncurses_doupdate -- Affiche tout ce qui est prêt, et rafraichit l'écran

Description

bool ncurses_doupdate ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_doupdate()() compare l'écran mémoire avec l'écran physique, et met à jour l'écran physique. Cette méthode est plus efficace que d'utiliser des rafraichissements multiples. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ncurses_delwin | Niveau supérieur | ncurses_echo


ncurses_echo

(PHP 4 >= 4.1.0)

ncurses_echo -- Active l'écho d'entrée clavier

Description

bool ncurses_echo ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_echo() active le mode écho. Tous les caractères saisis par l'utilisateur sont affichés à l'écran par ncurses_getch(). ncurses_echo() retourne FALSE en cas de succès, et TRUE si une erreur survient.

Pour désactiver le mode écho, utilisez ncurses_noecho().

Précédent | Sommaire | Suivant
ncurses_doupdate | Niveau supérieur | ncurses_echochar


ncurses_echochar

(PHP 4 >= 4.1.0)

ncurses_echochar -- Affiche un caractère et rafraichit l'écran

Description

int ncurses_echochar ( int character)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_echo | Niveau supérieur | ncurses_end


ncurses_end

(PHP 4 >= 4.1.0)

ncurses_end -- Cesse l'utilisation de ncurses et efface l'écran

Description

int ncurses_end ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_echochar | Niveau supérieur | ncurses_erase


ncurses_erase

(PHP 4 >= 4.1.0)

ncurses_erase -- Efface l'écran du terminal

Description

bool ncurses_erase ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_erase() remplit le terminal avec des blancs. Les blancs créés ont la couleur du fond d'écran, configuré avec la fonction ncurses_bkgd(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ncurses_bkgd() et ncurses_clear()

Précédent | Sommaire | Suivant
ncurses_end | Niveau supérieur | ncurses_erasechar


ncurses_erasechar

(PHP 4 >= 4.1.0)

ncurses_erasechar -- Lit le caractère qui se fait effacer

Description

string ncurses_erasechar ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_erasechar() retourne le caractère qui se fait effacer.

Voir aussi ncurses_killchar().

Précédent | Sommaire | Suivant
ncurses_erase | Niveau supérieur | ncurses_filter


ncurses_filter

(PHP 4 >= 4.1.0)

ncurses_filter -- Filtre pour ncurses

Description

int ncurses_filter ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_erasechar | Niveau supérieur | ncurses_flash


ncurses_flash

(PHP 4 >= 4.1.0)

ncurses_flash -- Fait flasher le terminal (visual bell)

Description

bool ncurses_flash ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_flash() ait flasher le terminal et si ce n'est pas possible, envoie une alerte sonore (bell). ncurses_flash() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_beep().

Précédent | Sommaire | Suivant
ncurses_filter | Niveau supérieur | ncurses_flushinp


ncurses_flushinp

(PHP 4 >= 4.1.0)

ncurses_flushinp -- Vide le buffer d'entrée du clavier

Description

bool ncurses_flushinp ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_flushinp() vide le buffer d'entrée du clavier que votre programme n'a pas encore lu. ncurses_flushinp() retourne FALSE en cas de succès, et TRUE sinon.

Précédent | Sommaire | Suivant
ncurses_flash | Niveau supérieur | ncurses_getch


ncurses_getch

(PHP 4 >= 4.1.0)

ncurses_getch -- Lit un caractère sur le clavier

Description

int ncurses_getch ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_flushinp | Niveau supérieur | ncurses_getmaxyx


ncurses_getmaxyx

(PHP 4 >= 4.3.0)

ncurses_getmaxyx -- Retourne la taille d'une fenêtre

Description

void ncurses_getmaxyx ( resource window, int &y, int &x)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_getch | Niveau supérieur | ncurses_getmouse


ncurses_getmouse

(PHP 4 >= 4.2.0)

ncurses_getmouse -- Lit les événements souris

Description

bool ncurses_getmouse ( array mevent)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_getmouse() lit les événements souris placés dans la queue. ncurses_getmouse() retournera FALSE si un événement souris est visible dans la fenêtre, et sinon, elle retournera TRUE. Les options d'événement seront placées dans le paramètre mevent, qui doit être un tableau, passé par référence. En cas de succès, un tableau associatif avec les clées suivantes sera fourni :

  • "id" : Identifiant permettant de distinguer plusieurs périphériques

  • "x" : Position à l'écran, en absisse relative, et comptée en caractères

  • "y" : Position à l'écran, en ordonnée relative, et comptée en caractères

  • "z" : Actuellement non supporté

  • "mmask" : Action de souris

Exemple 1. Exemple avec ncurses_getmouse()

switch (ncurses_getch){
  case NCURSES_KEY_MOUSE:
    if (!ncurses_getmouse(&$mevent)){
      if ($mevent["mmask"] & NCURSES_MOUSE_BUTTON1_PRESSED){
        $mouse_x = $mevent["x"]; // Sauve la position de la souris
        $mouse_y = $mevent["y"];
      }
    }
  break;

  default:
    ....
}

Voir aussi ncurses_ungetmouse().

Précédent | Sommaire | Suivant
ncurses_getmaxyx | Niveau supérieur | ncurses_getyx


ncurses_getyx

(PHP 4 >= 4.3.0)

ncurses_getyx -- Retourne la position courante du curseur pour une fenêtre

Description

void ncurses_getyx ( resource window, int &y, int &x)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_getmouse | Niveau supérieur | ncurses_halfdelay


ncurses_halfdelay

(PHP 4 >= 4.1.0)

ncurses_halfdelay -- Met le terminal en mode semi-retardé

Description

int ncurses_halfdelay ( int tenth)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_getyx | Niveau supérieur | ncurses_has_colors


ncurses_has_colors

(PHP 4 >= 4.1.0)

ncurses_has_colors -- Vérifie que le que le terminal supporte les couleurs

Description

bool ncurses_has_colors ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_has_colors() retourne TRUE ou FALSE suivant que le terminal supporte les couleurs ou pas.

Voir aussi ncurses_can_change_color().

Précédent | Sommaire | Suivant
ncurses_halfdelay | Niveau supérieur | ncurses_has_ic


ncurses_has_ic

(PHP 4 >= 4.1.0)

ncurses_has_ic -- Vérifie les capacités d'insertion et d'effacement

Description

bool ncurses_has_ic ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_has_ic() vérifie les capacités d'insertion et d'effacement du terminal. ncurses_has_ic() retourne TRUE lorsque le terminal a ces capacités et sinon FALSE.

Voir aussi ncurses_has_il().

Précédent | Sommaire | Suivant
ncurses_has_colors | Niveau supérieur | ncurses_has_il


ncurses_has_il

(PHP 4 >= 4.1.0)

ncurses_has_il -- Vérifie les capacitées d'insertion et d'effacement

Description

bool ncurses_has_il ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_has_il() vérifie les capacités d'insertion et d'effacement du terinal. ncurses_has_il() retourne TRUE si le terminal a ces capacités, et sinon FALSE

Voir aussi ncurses_has_ic().

Précédent | Sommaire | Suivant
ncurses_has_ic | Niveau supérieur | ncurses_has_key


ncurses_has_key

(PHP 4 >= 4.1.0)

ncurses_has_key -- Vérifie la présence des touches de fonctions sur le clavier

Description

int ncurses_has_key ( int keycode)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_has_il | Niveau supérieur | ncurses_hide_panel


ncurses_hide_panel

(PHP 4 >= 4.3.0)

ncurses_hide_panel -- Retire un conteneur de la pile, pour le rendre invisible

Description

int ncurses_hide_panel ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_has_key | Niveau supérieur | ncurses_hline


ncurses_hline

(PHP 4 >= 4.2.0)

ncurses_hline -- Dessine une ligne horizontale à la position courante, en utilisant un caractère et une taille maximale

Description

int ncurses_hline ( int charattr, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_hide_panel | Niveau supérieur | ncurses_inch


ncurses_inch

(PHP 4 >= 4.1.0)

ncurses_inch -- Lit le caractère et ses attributs à la position courante

Description

string ncurses_inch ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_inch() retourne le caractère de la position courante.

Précédent | Sommaire | Suivant
ncurses_hline | Niveau supérieur | ncurses_init_color


ncurses_init_color

(PHP 4 >= 4.2.0)

ncurses_init_color -- Configure une nouvelle valeur RGB pour une couleur

Description

int ncurses_init_color ( int color, int r, int g, int b)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_inch | Niveau supérieur | ncurses_init_pair


ncurses_init_pair

(PHP 4 >= 4.1.0)

ncurses_init_pair -- Alloue une paire de couleur

Description

int ncurses_init_pair ( int pair, int fg, int bg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_init_color | Niveau supérieur | ncurses_init


ncurses_init

(PHP 4 >= 4.1.0)

ncurses_init -- Initialise ncurses

Description

int ncurses_init ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_init_pair | Niveau supérieur | ncurses_insch


ncurses_insch

(PHP 4 >= 4.1.0)

ncurses_insch -- Insère un caractère et décale le reste de la ligne vers la droite, y compris le caractère courant

Description

int ncurses_insch ( int character)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_init | Niveau supérieur | ncurses_insdelln


ncurses_insdelln

(PHP 4 >= 4.1.0)

ncurses_insdelln -- Insère des lignes devant la ligne courante en scrollant vers le bas (des nombres négatifs donneront un scroll vers le haut)

Description

int ncurses_insdelln ( int count)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_insch | Niveau supérieur | ncurses_insertln


ncurses_insertln

(PHP 4 >= 4.1.0)

ncurses_insertln -- Insère une ligne et décale le reste de l'écran vers le bas

Description

bool ncurses_insertln ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_insertln() insère une nouvelle ligne au dessus de la ligne courante. La ligne du bas de l'écran sera perdue.

Précédent | Sommaire | Suivant
ncurses_insdelln | Niveau supérieur | ncurses_insstr


ncurses_insstr

(PHP 4 >= 4.2.0)

ncurses_insstr -- Insère une chaîne à la position courante, et décale le reste de la chaîne à droite

Description

int ncurses_insstr ( string text)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_insertln | Niveau supérieur | ncurses_instr


ncurses_instr

(PHP 4 >= 4.2.0)

ncurses_instr -- Lit une chaîne depuis le terminal

Description

int ncurses_instr ( string buffer)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_instr() retourne le nombre de caractères lus depuis la position courante jusqu'à la fin de la ligne. buffer contient les caractères lus. Les attributs sont supprimés de ces caractères.

Précédent | Sommaire | Suivant
ncurses_insstr | Niveau supérieur | ncurses_isendwin


ncurses_isendwin

(PHP 4 >= 4.1.0)

ncurses_isendwin -- Ncurses est en mode endwin, des affichages normaux sont possibles

Description

bool ncurses_isendwin ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_isendwin() retourne TRUE, si
ncurses_endwin() a été appelé sans aucun
appel subséquent à  ncurses_wrefresh(),
et sinon FALSE.

Voir aussi ncurses_endwin() et ncurses_wrefresh().

Précédent | Sommaire | Suivant
ncurses_instr | Niveau supérieur | ncurses_keyok


ncurses_keyok

(PHP 4 >= 4.2.0)

ncurses_keyok -- Active ou désactive un code de clé (keycode)

Description

int ncurses_keyok ( int keycode, bool enable)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_isendwin | Niveau supérieur | ncurses_keypad


ncurses_keypad

(PHP 4 >= 4.2.0)

ncurses_keypad -- Active ou désactive le keypad

Description

int ncurses_keypad ( resource window, bool bf)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_keyok | Niveau supérieur | ncurses_killchar


ncurses_killchar

(PHP 4 >= 4.1.0)

ncurses_killchar -- Retourne la ligne du caractère actuellement supprimé

Description

bool ncurses_killchar ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_killchar() retourne la ligne du caractère actuellement supprimé.

Voir aussi ncurses_erasechar().

Précédent | Sommaire | Suivant
ncurses_keypad | Niveau supérieur | ncurses_longname


ncurses_longname

(PHP 4 >= 4.2.0)

ncurses_longname -- Retourne la description du terminal

Description

string ncurses_longname ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_longname() retourne une description complète du terminal. La descritpion est tronquée à 128 caractères. En cas d'erreur, ncurses_longname() retourne NULL.

Voir aussi ncurses_termname().

Précédent | Sommaire | Suivant
ncurses_killchar | Niveau supérieur | ncurses_meta


ncurses_meta

(PHP 4 >= 4.3.0)

ncurses_meta -- Active/désactive les informations de méta clé 8-bits

Description

long ncurses_meta ( resource window, bool 8bit)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_longname | Niveau supérieur | ncurses_mouse_trafo


ncurses_mouse_trafo

(PHP 4 >= 4.2.0)

ncurses_mouse_trafo -- Transforme les coordonnées

Description

bool ncurses_mouse_trafo ( int &y, int &x, bool toscreen)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_meta | Niveau supérieur | ncurses_mouseinterval


ncurses_mouseinterval

(PHP 4 >= 4.1.0)

ncurses_mouseinterval -- Configure les délais entre les clics de souris

Description

int ncurses_mouseinterval ( int milliseconds)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mouse_trafo | Niveau supérieur | ncurses_mousemask


ncurses_mousemask

(PHP 4 >= 4.2.0)

ncurses_mousemask -- Configure les événements de souris à surveiller

Description

int ncurses_mousemask ( int newmask, int oldmask)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_mousemask() configure les événements de souris à surveiller. Par défaut, aucun événement souris n'est rapporté. La fonction ncurses_mousemask() retourne un masque opur indiquer quels paramètres de newmask peut être rapporté. En cas d'échec complet, elle retourne 0. Dans le paramètre oldmask, qui est passé par référence ncurses_mousemask() retourne la valeur du masque précédent. Les événements souris sont représentés par NCURSES_KEY_MOUSE dans la fonction ncurses_wgetch(). Pour lire les données d'événements dans la queue, utilisez la fonction ncurses_getmouse().

Comme effect secondaire, utiliser la valeur de 0 avec le paramètre newmask désactive la souris. Lui donner une valeur positive non nulle réactive la souris.

Les options de masque de souris sont les constantes suiavntes :

  • NCURSES_BUTTON1_PRESSED

  • NCURSES_BUTTON1_RELEASED

  • NCURSES_BUTTON1_CLICKED

  • NCURSES_BUTTON1_DOUBLE_CLICKED

  • NCURSES_BUTTON1_TRIPLE_CLICKED

  • NCURSES_BUTTON2_PRESSED

  • NCURSES_BUTTON2_RELEASED

  • NCURSES_BUTTON2_CLICKED

  • NCURSES_BUTTON2_DOUBLE_CLICKED

  • NCURSES_BUTTON2_TRIPLE_CLICKED

  • NCURSES_BUTTON3_PRESSED

  • NCURSES_BUTTON3_RELEASED

  • NCURSES_BUTTON3_CLICKED

  • NCURSES_BUTTON3_DOUBLE_CLICKED

  • NCURSES_BUTTON3_TRIPLE_CLICKED

  • NCURSES_BUTTON4_PRESSED

  • NCURSES_BUTTON4_RELEASED

  • NCURSES_BUTTON4_CLICKED

  • NCURSES_BUTTON4_DOUBLE_CLICKED

  • NCURSES_BUTTON4_TRIPLE_CLICKED

  • NCURSES_BUTTON_SHIFT>

  • NCURSES_BUTTON_CTRL

  • NCURSES_BUTTON_ALT

  • NCURSES_ALL_MOUSE_EVENTS

  • NCURSES_REPORT_MOUSE_POSITION

Voir aussi
 ncurses_getmouse(),
 ncurses_ungetmouse() et
 ncurese_getch().

Exemple 1. Exemple avec ncurses_mousemask()

$newmask = NCURSES_BUTTON1_CLICKED + NCURSES_BUTTON1_RELEASED;
$mask = ncurses_mousemask($newmask, &$oldmask);
if ($mask & $newmask){
  printf ("Toutes les options de souris sp&eacute;cifi&eacute;es sont support&eacute;es\n");
}

Précédent | Sommaire | Suivant
ncurses_mouseinterval | Niveau supérieur | ncurses_move_panel


ncurses_move_panel

(PHP 4 >= 4.3.0)

ncurses_move_panel -- Déplace un conteneur pour que son coin supérieur gauche soit aux coordonnées [startx, starty]

Description

int ncurses_move_panel ( resource panel, int startx, int starty)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mousemask | Niveau supérieur | ncurses_move


ncurses_move

(PHP 4 >= 4.1.0)

ncurses_move -- Déplace la position d'affichage

Description

int ncurses_move ( int y, int x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_move_panel | Niveau supérieur | ncurses_mvaddch


ncurses_mvaddch

(PHP 4 >= 4.2.0)

ncurses_mvaddch -- Déplace la position courante et ajoute un caractère

Description

int ncurses_mvaddch ( int y, int x, int c)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_move | Niveau supérieur | ncurses_mvaddchnstr


ncurses_mvaddchnstr

(PHP 4 >= 4.2.0)

ncurses_mvaddchnstr -- Déplace la position et ajoute la chaîne attribuée avec la taille donnée

Description

int ncurses_mvaddchnstr ( int y, int x, string s, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvaddch | Niveau supérieur | ncurses_mvaddchstr


ncurses_mvaddchstr

(PHP 4 >= 4.2.0)

ncurses_mvaddchstr -- Déplace la position et ajoute une chaîne attribuée

Description

int ncurses_mvaddchstr ( int y, int x, string s)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvaddchnstr | Niveau supérieur | ncurses_mvaddnstr


ncurses_mvaddnstr

(PHP 4 >= 4.2.0)

ncurses_mvaddnstr -- Déplace la position et ajoute une chaîne de taille donnée

Description

int ncurses_mvaddnstr ( int y, int x, string s, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvaddchstr | Niveau supérieur | ncurses_mvaddstr


ncurses_mvaddstr

(PHP 4 >= 4.2.0)

ncurses_mvaddstr -- Déplace la position et ajoute une chaîne

Description

int ncurses_mvaddstr ( int y, int x, string s)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvaddnstr | Niveau supérieur | ncurses_mvcur


ncurses_mvcur

(PHP 4 >= 4.2.0)

ncurses_mvcur -- Déplace immédiatement le curseur

Description

int ncurses_mvcur ( int old_y, int old_x, int new_y, int new_x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvaddstr | Niveau supérieur | ncurses_mvdelch


ncurses_mvdelch

(PHP 4 >= 4.2.0)

ncurses_mvdelch -- Déplace la position et efface le caractère, puis décale le reste de la ligne à gauche

Description

int ncurses_mvdelch ( int y, int x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvcur | Niveau supérieur | ncurses_mvgetch


ncurses_mvgetch

(PHP 4 >= 4.2.0)

ncurses_mvgetch -- Déplace la position et lit le caractère à la nouvelle position

Description

int ncurses_mvgetch ( int y, int x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvdelch | Niveau supérieur | ncurses_mvhline


ncurses_mvhline

(PHP 4 >= 4.2.0)

ncurses_mvhline -- Choisi une nouvelle position et dessine une ligne horizontale avec le caractère donné, et de taille maximale donnée

Description

int ncurses_mvhline ( int y, int x, int attrchar, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvgetch | Niveau supérieur | ncurses_mvinch


ncurses_mvinch

(PHP 4 >= 4.2.0)

ncurses_mvinch -- Déplace la position et lit le caractère la nouvelle position

Description

int ncurses_mvinch ( int y, int x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvhline | Niveau supérieur | ncurses_mvvline


ncurses_mvvline

(no version information, might be only in CVS)

ncurses_mvvline -- Modifie la position et dessine une ligne verticale avec le caractère donné, de taille maximale donnée

Description

int ncurses_mvvline ( int y, int x, int attrchar, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvinch | Niveau supérieur | ncurses_mvwaddstr


ncurses_mvwaddstr

(PHP 4 >= 4.2.0)

ncurses_mvwaddstr -- Ajoute une chaîne à une nouvelle position dans la fenêtre

Description

int ncurses_mvwaddstr ( resource window, int y, int x, string text)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvvline | Niveau supérieur | ncurses_napms


ncurses_napms

(PHP 4 >= 4.1.0)

ncurses_napms -- Fait une pause

Description

int ncurses_napms ( int milliseconds)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_mvwaddstr | Niveau supérieur | ncurses_new_panel


ncurses_new_panel

(PHP 4 >= 4.3.0)

ncurses_new_panel -- Créée un nouveau conteneur et l'associe à une fenêtre

Description

resource ncurses_new_panel ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_napms | Niveau supérieur | ncurses_newpad


ncurses_newpad

(PHP 4 >= 4.3.0)

ncurses_newpad -- Crée une nouveau pad (fenêtre)

Description

resource ncurses_newpad ( int rows, int cols)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_new_panel | Niveau supérieur | ncurses_newwin


ncurses_newwin

(PHP 4 >= 4.1.0)

ncurses_newwin -- Crée une nouvelle fenêtre

Description

int ncurses_newwin ( int rows, int cols, int y, int x)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_newpad | Niveau supérieur | ncurses_nl


ncurses_nl

(PHP 4 >= 4.1.0)

ncurses_nl -- Convertit les nouvelles lignes et retour chariot en saut de ligne

Description

bool ncurses_nl ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_newwin | Niveau supérieur | ncurses_nocbreak


ncurses_nocbreak

(PHP 4 >= 4.1.0)

ncurses_nocbreak -- Passe le terminal en mode cooked

Description

bool ncurses_nocbreak ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_nocbreak() retourne le terminal en mode normal (cooked). Initialement, le terminal peut ou peut ne pas eter en mode cbreak, comme mode hérité. Par conséquent, un program doit appeler ncurses_cbreak() et ncurses_nocbreak() explicitement. ncurses_nocbreak() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_cbreak().

Précédent | Sommaire | Suivant
ncurses_nl | Niveau supérieur | ncurses_noecho


ncurses_noecho

(PHP 4 >= 4.1.0)

ncurses_noecho -- Désactive l'écho clavier

Description

bool ncurses_noecho ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_noecho() annule l'effet d'écho des caractères tapés à l'écrant. ncurses_noecho() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_echo() et ncurses_getch()

Précédent | Sommaire | Suivant
ncurses_nocbreak | Niveau supérieur | ncurses_nonl


ncurses_nonl

(PHP 4 >= 4.1.0)

ncurses_nonl -- Ne convertit par les nouvelles lignes et retour chariot en saut de ligne

Description

bool ncurses_nonl ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_noecho | Niveau supérieur | ncurses_noqiflush


ncurses_noqiflush

(PHP 4 >= 4.1.0)

ncurses_noqiflush -- Ne vide pas les buffers sur reception des caractères de signaux

Description

int ncurses_noqiflush ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_nonl | Niveau supérieur | ncurses_noraw


ncurses_noraw

(PHP 4 >= 4.1.0)

ncurses_noraw -- Déconfigure le mode brut du terminal

Description

bool ncurses_noraw ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_noraw() déconfigure le mode brut du terminal. Le mode brut est similaire au mode cbreak, car les caractères tapés sont immédiatement passé au programme. La différence est qu'en mode brut, les caractères d'interruption, de fin de programme, de suspension et de suivi du flux de caractères sont passés sans être interprété. ncurses_noraw() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi
ncurses_raw(),
ncurses_cbreak() et
ncurses_nocbreak()

Précédent | Sommaire | Suivant
ncurses_noqiflush | Niveau supérieur | ncurses_pair_content


ncurses_pair_content

(PHP 4 >= 4.3.0)

ncurses_pair_content -- Retourne la valeur RGB d'une couleur

Description

int ncurses_pair_content ( int pair, int &f, int &b)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_noraw | Niveau supérieur | ncurses_panel_above


ncurses_panel_above

(PHP 4 >= 4.3.0)

ncurses_panel_above -- Retourne le conteneur au dessus du conteneur. Si ce dernier est null, retourne le dernier conteneur de la pile

Description

int ncurses_panel_above ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_pair_content | Niveau supérieur | ncurses_panel_below


ncurses_panel_below

(PHP 4 >= 4.3.0)

ncurses_panel_below -- Retour le conteneur sous le conteneur. Si ce dernier est null, le premier conteneur de la pile est retourné

Description

int ncurses_panel_below ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_panel_above | Niveau supérieur | ncurses_panel_window


ncurses_panel_window

(PHP 4 >= 4.3.0)

ncurses_panel_window -- Retourne la fenêtre associée avec un conteneur

Description

int ncurses_panel_window ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_panel_below | Niveau supérieur | ncurses_pnoutrefresh


ncurses_pnoutrefresh

(PHP 4 >= 4.3.0)

ncurses_pnoutrefresh -- Copie une région depuis un pad dans un écran virtuel

Description

int ncurses_pnoutrefresh ( resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_panel_window | Niveau supérieur | ncurses_prefresh


ncurses_prefresh

(PHP 4 >= 4.3.0)

ncurses_prefresh -- Copie une région depuis un pad dans l'écran virtuel

Description

int ncurses_prefresh ( resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_pnoutrefresh | Niveau supérieur | ncurses_putp


ncurses_putp

(PHP 4 >= 4.2.0)

ncurses_putp -- ncurses_putp (???)

Description

int ncurses_putp ( string text)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_prefresh | Niveau supérieur | ncurses_qiflush


ncurses_qiflush

(PHP 4 >= 4.1.0)

ncurses_qiflush -- Vide les buffers après détection d'un caractèer de signal

Description

int ncurses_qiflush ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_putp | Niveau supérieur | ncurses_raw


ncurses_raw

(PHP 4 >= 4.1.0)

ncurses_raw -- Passe le terminal en mode brut (raw)

Description

bool ncurses_raw ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_raw() place le terminal en mode brut. Le mode brut est similaire au mode cbreak, car les caractères tapés sont immédiatement passé au programme. La différence est qu'en mode brut, les caractères d'interruption, de fin de programme, de suspension et de suivi du flux de caractères sont passés sans être interprété. ncurses_raw() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi
ncurses_noraw(),
ncurses_cbreak() et
ncurses_nocbreak()

Précédent | Sommaire | Suivant
ncurses_qiflush | Niveau supérieur | ncurses_refresh


ncurses_refresh

(PHP 4 >= 4.1.0)

ncurses_refresh -- Rafraichit l'écran

Description

int ncurses_refresh ( int ch)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_raw | Niveau supérieur | ncurses_replace_panel


ncurses_replace_panel

(PHP 4 >= 4.3.0)

ncurses_replace_panel -- Remplace la fenêtre associée à un conteneur

Description

int ncurses_replace_panel ( resource panel, resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_refresh | Niveau supérieur | ncurses_reset_prog_mode


ncurses_reset_prog_mode

(PHP 4 >= 4.3.0)

ncurses_reset_prog_mode -- Restaure le mode prog sauvé par def_prog_mode

Description

int ncurses_reset_prog_mode ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_replace_panel | Niveau supérieur | ncurses_reset_shell_mode


ncurses_reset_shell_mode

(PHP 4 >= 4.3.0)

ncurses_reset_shell_mode -- Restaure le mode shell mode sauvé ar def_shell_mode

Description

int ncurses_reset_shell_mode ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_reset_prog_mode | Niveau supérieur | ncurses_resetty


ncurses_resetty

(PHP 4 >= 4.1.0)

ncurses_resetty -- Rétablit le terminal sauvé

Description

bool ncurses_resetty ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_resetty() rétablit le
terminal sauvé par la fonction ncurses_savetty().
ncurses_resetty() retourne toujours FALSE.

Voir aussi ncurses_savetty().

Précédent | Sommaire | Suivant
ncurses_reset_shell_mode | Niveau supérieur | ncurses_savetty


ncurses_savetty

(PHP 4 >= 4.1.0)

ncurses_savetty -- Sauve l'état du terminal

Description

bool ncurses_savetty ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_savetty() sauve l'état courant du terminal. L'état courant du terminal peut être rétablit avec la fonction ncurses_resetty(). ncurses_savetty() retourne toujours FALSE.

Voir aussi ncurses_resetty().

Précédent | Sommaire | Suivant
ncurses_resetty | Niveau supérieur | ncurses_scr_dump


ncurses_scr_dump

(PHP 4 >= 4.2.0)

ncurses_scr_dump -- Sauve un écran dans un fichier

Description

int ncurses_scr_dump ( string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_savetty | Niveau supérieur | ncurses_scr_init


ncurses_scr_init

(PHP 4 >= 4.2.0)

ncurses_scr_init -- Initilise un écran depuis un fichier de sauvegarde

Description

int ncurses_scr_init ( string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_scr_dump | Niveau supérieur | ncurses_scr_restore


ncurses_scr_restore

(PHP 4 >= 4.2.0)

ncurses_scr_restore -- Rétablit un écran depuis une fichier de sauvegarde

Description

int ncurses_scr_restore ( string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_scr_init | Niveau supérieur | ncurses_scr_set


ncurses_scr_set

(PHP 4 >= 4.2.0)

ncurses_scr_set -- Configure un écran depuis un fichier de sauvegarde

Description

int ncurses_scr_set ( string filename)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_scr_restore | Niveau supérieur | ncurses_scrl


ncurses_scrl

(PHP 4 >= 4.1.0)

ncurses_scrl -- Scrolle le contenu de la fenêtre vers le haut ou le bas, dans changer la position courante

Description

int ncurses_scrl ( int count)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_scr_set | Niveau supérieur | ncurses_show_panel


ncurses_show_panel

(PHP 4 >= 4.3.0)

ncurses_show_panel -- Place un conteneur invisible en haut de la pile, pour le rendre visible

Description

int ncurses_show_panel ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_scrl | Niveau supérieur | ncurses_slk_attr


ncurses_slk_attr

(PHP 4 >= 4.1.0)

ncurses_slk_attr -- Retourne l'attribut de la clé soft label courante

Description

bool ncurses_slk_attr ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_attr() retourne l'attribut de la clé soft label. ncurses_slk_attr() retourne FALSE en cas de succès, et TRUE sinon.

Précédent | Sommaire | Suivant
ncurses_show_panel | Niveau supérieur | ncurses_slk_attroff


ncurses_slk_attroff

(PHP 4 >= 4.1.0)

ncurses_slk_attroff -- ncurses_slk_attroff

Description

int ncurses_slk_attroff ( int intarg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_attr | Niveau supérieur | ncurses_slk_attron


ncurses_slk_attron

(PHP 4 >= 4.1.0)

ncurses_slk_attron -- ncurses_slk_attron

Description

int ncurses_slk_attron ( int intarg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_attroff | Niveau supérieur | ncurses_slk_attrset


ncurses_slk_attrset

(PHP 4 >= 4.1.0)

ncurses_slk_attrset -- ncurses_slk_attrset

Description

int ncurses_slk_attrset ( int intarg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_attron | Niveau supérieur | ncurses_slk_clear


ncurses_slk_clear

(PHP 4 >= 4.1.0)

ncurses_slk_clear -- Efface les soft labels de l'écran

Description

bool ncurses_slk_clear ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_clear() efface les clés label keys de l'écran. ncurses_slk_clear() retourne FALSE en cas de succès, et TRUE sinon.

Précédent | Sommaire | Suivant
ncurses_slk_attrset | Niveau supérieur | ncurses_slk_color


ncurses_slk_color

(PHP 4 >= 4.1.0)

ncurses_slk_color -- Configure la couleur des clés soft label

Description

int ncurses_slk_color ( int intarg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_clear | Niveau supérieur | ncurses_slk_init


ncurses_slk_init

(PHP 4 >= 4.1.0)

ncurses_slk_init -- Initialises les fonctions de clés soft label

Description

bool ncurses_slk_init ( int format)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_init() doit êre appelée avant que ncurses_initscr() et ncurses_newterm() soit utilisées. Si ncurses_initscr() utilisent une ligne de stdscr pour émuler les soft labels, alors le paramètre format détermins comment les labels seront arrangés sur l'écran. En donnant au paramètre format la valeur de 0, vous utiliserez un arrangement de type 3-2-3; la valeur de 1 indiquera un arrangement 4-4; la valeur de 2 indiquera un mode 4-4-4, mais une ligne d'index sera créée en plus.

Précédent | Sommaire | Suivant
ncurses_slk_color | Niveau supérieur | ncurses_slk_noutrefresh


ncurses_slk_noutrefresh

(PHP 4 >= 4.1.0)

ncurses_slk_noutrefresh -- Copie toutes les clés soft label à l'écran virtuel

Description

bool ncurses_slk_noutrefresh ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_init | Niveau supérieur | ncurses_slk_refresh


ncurses_slk_refresh

(PHP 4 >= 4.1.0)

ncurses_slk_refresh -- Copie les clés soft label à l'écran

Description

bool ncurses_slk_refresh ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_refresh() copie les clés soft label de l'écran virtuel vers l'écran physique. ncurses_slk_refresh() retourne FALSE en cas de succès, et TRUE sinon.

Précédent | Sommaire | Suivant
ncurses_slk_noutrefresh | Niveau supérieur | ncurses_slk_restore


ncurses_slk_restore

(PHP 4 >= 4.1.0)

ncurses_slk_restore -- Rétablit les clés soft label

Description

bool ncurses_slk_restore ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_restore() rétablit les clés soft label après l'utilisation de ncurses_slk_clear().

Précédent | Sommaire | Suivant
ncurses_slk_refresh | Niveau supérieur | ncurses_slk_set


ncurses_slk_set

(PHP 4 >= 4.2.0)

ncurses_slk_set -- Modifie les étiquettes de clé de fonction (function key labels)

Description

bool ncurses_slk_set ( int labelnr, string label, int format)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_restore | Niveau supérieur | ncurses_slk_touch


ncurses_slk_touch

(PHP 4 >= 4.1.0)

ncurses_slk_touch -- Force l'affichage lorsque ncurses_slk_noutrefresh est utilisé

Description

bool ncurses_slk_touch ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_slk_touch() force l'affichage de tous les soft labels dès la prochaine utilisation de ncurses_slk_noutrefresh().

Précédent | Sommaire | Suivant
ncurses_slk_set | Niveau supérieur | ncurses_standend


ncurses_standend

(PHP 4 >= 4.1.0)

ncurses_standend -- Cesse l'utilisation de l'attribut 'standout'

Description

int ncurses_standend ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_slk_touch | Niveau supérieur | ncurses_standout


ncurses_standout

(PHP 4 >= 4.1.0)

ncurses_standout -- Commence l'utilisation de l'attribut 'standout'

Description

int ncurses_standout ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_standend | Niveau supérieur | ncurses_start_color


ncurses_start_color

(PHP 4 >= 4.1.0)

ncurses_start_color -- Active les couleurs

Description

int ncurses_start_color ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_standout | Niveau supérieur | ncurses_termattrs


ncurses_termattrs

(PHP 4 >= 4.1.0)

ncurses_termattrs -- Retourne toutes les options supportées par le terminal, combinées ensemble par l'opérateur OR

Description

bool ncurses_termattrs ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_start_color | Niveau supérieur | ncurses_termname


ncurses_termname

(PHP 4 >= 4.2.0)

ncurses_termname -- Retourne le nom court du terminal

Description

string ncurses_termname ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_termname() retourne le nom court du terminal. Le nom court est tronqué à 14 caractères. En cas d'erreur, ncurses_termname() retourne NULL.

Voir aussi ncurses_longname().

Précédent | Sommaire | Suivant
ncurses_termattrs | Niveau supérieur | ncurses_timeout


ncurses_timeout

(PHP 4 >= 4.1.0)

ncurses_timeout -- Configure le temps d'expiration des des séquences clavier spéciales

Description

void ncurses_timeout ( int millisec)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_termname | Niveau supérieur | ncurses_top_panel


ncurses_top_panel

(PHP 4 >= 4.3.0)

ncurses_top_panel -- Place un conteneur visible sur le haut de la pile

Description

int ncurses_top_panel ( resource panel)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_timeout | Niveau supérieur | ncurses_typeahead


ncurses_typeahead

(PHP 4 >= 4.1.0)

ncurses_typeahead -- Spécifie un autre descripteur de fichier pour la vérification à la volée des donneés saisies

Description

int ncurses_typeahead ( int fd)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_top_panel | Niveau supérieur | ncurses_ungetch


ncurses_ungetch

(PHP 4 >= 4.1.0)

ncurses_ungetch -- Replace un caractère dans la queue d'entrée

Description

int ncurses_ungetch ( int keycode)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_typeahead | Niveau supérieur | ncurses_ungetmouse


ncurses_ungetmouse

(PHP 4 >= 4.2.0)

ncurses_ungetmouse -- Ajoute un événement souris dans la queue

Description

bool ncurses_ungetmouse ( array mevent)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ncurses_getmouse() ajoute un événement souris dans la queue d'entré, et associe cet événement avec l'état du terminal, et les coordonnées relatives (en caractères) de la souris, spécifié dans mevent. Les options d'événement sont spécifiées dans le tableau associatif mevent :

  • "id" : Identifiant permettant de distinguer plusieurs périphériques

  • "x" : Position à l'écran, en absisse relative, et comptée en caractères

  • "y" : Position à l'écran, en ordonnée relative, et comptée en caractères

  • "z" : Actuellement non supporté

  • "mmask" : Action de souris

ncurses_ungetmouse() retourne FALSE en cas de succès, et TRUE sinon.

Voir aussi ncurses_getmouse().

Précédent | Sommaire | Suivant
ncurses_ungetch | Niveau supérieur | ncurses_update_panels


ncurses_update_panels

(PHP 4 >= 4.3.0)

ncurses_update_panels -- Rafraîchit l'écran virtuel pour prendre en compte les relations entre les conteneurs de la pile

Description

void ncurses_update_panels ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_ungetmouse | Niveau supérieur | ncurses_use_default_colors


ncurses_use_default_colors

(PHP 4 >= 4.1.0)

ncurses_use_default_colors -- Assigne la couleur de terminal pour l'index -1

Description

bool ncurses_use_default_colors ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_update_panels | Niveau supérieur | ncurses_use_env


ncurses_use_env

(PHP 4 >= 4.1.0)

ncurses_use_env -- Contrôle l'utilisation des informations d'environnement concernant la taille du terminal

Description

void ncurses_use_env ( bool flag)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_use_default_colors | Niveau supérieur | ncurses_use_extended_names


ncurses_use_extended_names

(PHP 4 >= 4.1.0)

ncurses_use_extended_names -- Controle l'utilisation des noms étendus dans les descriptions terminfo

Description

int ncurses_use_extended_names ( bool flag)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_use_env | Niveau supérieur | ncurses_vidattr


ncurses_vidattr

(PHP 4 >= 4.1.0)

ncurses_vidattr -- ncurses_vidattr

Description

int ncurses_vidattr ( int intarg)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_use_extended_names | Niveau supérieur | ncurses_vline


ncurses_vline

(PHP 4 >= 4.2.0)

ncurses_vline -- Dessine une ligne verticale à la position courante en utilisant un caractère donnée, pour une taille donnée

Description

int ncurses_vline ( int charattr, int n)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_vidattr | Niveau supérieur | ncurses_waddch


ncurses_waddch

(PHP 4 >= 4.3.0)

ncurses_waddch -- Ajoute un caractère à la position courante, dans une fenêtre, et avance le curseur

Description

int ncurses_waddch ( resource window, int ch)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_vline | Niveau supérieur | ncurses_waddstr


ncurses_waddstr

(PHP 4 >= 4.2.0)

ncurses_waddstr -- Affiche le texte à la position courante dans la fenêtre

Description

int ncurses_waddstr ( resource window, string str [, int n])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_waddch | Niveau supérieur | ncurses_wattroff


ncurses_wattroff

(PHP 4 >= 4.3.0)

ncurses_wattroff -- Désactive les attributs d'une fenêtre

Description

int ncurses_wattroff ( resource window, int attrs)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_waddstr | Niveau supérieur | ncurses_wattron


ncurses_wattron

(PHP 4 >= 4.3.0)

ncurses_wattron -- Efface les attributs de la fenêtre

Description

int ncurses_wattron ( resource window, int attrs)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wattroff | Niveau supérieur | ncurses_wattrset


ncurses_wattrset

(PHP 4 >= 4.3.0)

ncurses_wattrset -- Modifie les attributs d'une fenêtre

Description

int ncurses_wattrset ( resource window, int attrs)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wattron | Niveau supérieur | ncurses_wborder


ncurses_wborder

(PHP 4 >= 4.3.0)

ncurses_wborder -- Dessine le bord d'une fenêtre avec un caractère qualifié

Description

int ncurses_wborder ( resource window, int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wattrset | Niveau supérieur | ncurses_wclear


ncurses_wclear

(PHP 4 >= 4.2.0)

ncurses_wclear -- Efface la fenêtre

Description

int ncurses_wclear ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wborder | Niveau supérieur | ncurses_wcolor_set


ncurses_wcolor_set

(PHP 4 >= 4.2.0)

ncurses_wcolor_set -- Modifie les paires de couleurs de la fenêtre

Description

int ncurses_wcolor_set ( resource window, int color_pair)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wclear | Niveau supérieur | ncurses_werase


ncurses_werase

(PHP 4 >= 4.3.0)

ncurses_werase -- Efface le contenu de la fenêtre

Description

long ncurses_werase ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wcolor_set | Niveau supérieur | ncurses_wgetch


ncurses_wgetch

(PHP 4 >= 4.2.0)

ncurses_wgetch -- Lit un caractère depuis le clavier (fenêtre)

Description

int ncurses_wgetch ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_werase | Niveau supérieur | ncurses_whline


ncurses_whline

(PHP 4 >= 4.3.0)

ncurses_whline -- Dessine une ligne horizontale à partir de la position courante, avec un caractère qualifié, et d'une taille maximale

Description

int ncurses_whline ( resource window, int charattr, int n)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wgetch | Niveau supérieur | ncurses_wmouse_trafo


ncurses_wmouse_trafo

(PHP 4 >= 4.2.0)

ncurses_wmouse_trafo -- Transforme les coordonnées d'une fenêtre

Description

bool ncurses_wmouse_trafo ( resource window, int &y, int &x, bool toscreen)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_whline | Niveau supérieur | ncurses_wmove


ncurses_wmove

(PHP 4 >= 4.2.0)

ncurses_wmove -- Déplace le position d'affichage de la fenêtre

Description

int ncurses_wmove ( resource window, int y, int x)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wmouse_trafo | Niveau supérieur | ncurses_wnoutrefresh


ncurses_wnoutrefresh

(PHP 4 >= 4.2.0)

ncurses_wnoutrefresh -- Copie la fenêtre dans l'écran virtuel

Description

int ncurses_wnoutrefresh ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wmove | Niveau supérieur | ncurses_wrefresh


ncurses_wrefresh

(PHP 4 >= 4.2.0)

ncurses_wrefresh -- Rafraichit la fenêtre sur l'écran du terminal

Description

int ncurses_wrefresh ( resource window)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wnoutrefresh | Niveau supérieur | ncurses_wstandend


ncurses_wstandend

(PHP 4 >= 4.3.0)

ncurses_wstandend -- Termine le mode standout de la fenêtre

Description

int ncurses_wstandend ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wrefresh | Niveau supérieur | ncurses_wstandout


ncurses_wstandout

(PHP 4 >= 4.3.0)

ncurses_wstandout -- Passe une fenêtre en mode standout

Description

int ncurses_wstandout ( resource window)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wstandend | Niveau supérieur | ncurses_wvline


ncurses_wvline

(PHP 4 >= 4.3.0)

ncurses_wvline -- Dessine une ligne verticale dans une fenêtre, à la position courante, en utilisant un caractère qualifié, avec une taille maximale

Description

int ncurses_wvline ( resource window, int charattr, int n)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ncurses_wstandout | Niveau supérieur | Lotus Notes


Lotus Notes

Manuel PHP
Précédent Suivant

LXIX. Lotus Notes

Introduction

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Table des matières
notes_body -- Ouvre le message msg_number dans la boîte aux lettres et le serveur précisés
notes_copy_db -- Crée une note à partir du formulaire form_name
notes_create_db -- Crée une base Lotus Notes
notes_create_note -- Crée une note à partir du formulaire form_name
notes_drop_db -- Supprime une base Lotus Notes
notes_find_note -- Retourne un identifiant de note, dans le serveur database_name. Spécifie le nom de la note.
notes_header_info -- Ouvre le message msg_number dans la boîte aux lettres et le serveur spécifié
notes_list_msgs -- Retourne les notes rangées dans database_name
notes_mark_read -- Marque la note note_id comme lue par l'utilisateur user_name
notes_mark_unread -- Marque la note note_id comme non lue pour l'utilisateur user_name
notes_nav_create -- Crée un nom de navigateur dans database_name
notes_search -- Cherche les notes par mots clés dans database_name
notes_unread -- Retourne l'identifiant de la note non lue pour l'utilisateur user_name
notes_version -- Lit la version de Lotus Notes

Précédent | Sommaire | Suivant
ncurses_wvline | Niveau supérieur | notes_body


notes_body

(PHP 4 >= 4.0.5)

notes_body -- Ouvre le message msg_number dans la boîte aux lettres et le serveur précisés

Description

array notes_body ( string server, string mailbox, int msg_number)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Lotus Notes | Niveau supérieur | notes_copy_db


notes_copy_db

(PHP 4 >= 4.0.5)

notes_copy_db -- Crée une note à partir du formulaire form_name

Description

string notes_copy_db ( string from_database_name, string to_database_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_body | Niveau supérieur | notes_create_db


notes_create_db

(PHP 4 >= 4.0.5)

notes_create_db -- Crée une base Lotus Notes

Description

bool notes_create_db ( string database_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_copy_db | Niveau supérieur | notes_create_note


notes_create_note

(PHP 4 >= 4.0.5)

notes_create_note -- Crée une note à partir du formulaire form_name

Description

string notes_create_note ( string database_name, string form_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_create_db | Niveau supérieur | notes_drop_db


notes_drop_db

(PHP 4 >= 4.0.5)

notes_drop_db -- Supprime une base Lotus Notes

Description

bool notes_drop_db ( string database_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_create_note | Niveau supérieur | notes_find_note


notes_find_note

(PHP 4 >= 4.0.5)

notes_find_note -- Retourne un identifiant de note, dans le serveur database_name. Spécifie le nom de la note.

Description

bool notes_find_note ( string database_name, string name [, string type])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_drop_db | Niveau supérieur | notes_header_info


notes_header_info

(PHP 4 >= 4.0.5)

notes_header_info -- Ouvre le message msg_number dans la boîte aux lettres et le serveur spécifié

Description

object notes_header_info ( string server, string mailbox, int msg_number)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_find_note | Niveau supérieur | notes_list_msgs


notes_list_msgs

(PHP 4 >= 4.0.5)

notes_list_msgs -- Retourne les notes rangées dans database_name

Description

bool notes_list_msgs ( string db)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_header_info | Niveau supérieur | notes_mark_read


notes_mark_read

(PHP 4 >= 4.0.5)

notes_mark_read -- Marque la note note_id comme lue par l'utilisateur user_name

Description

string notes_mark_read ( string database_name, string user_name, string note_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_list_msgs | Niveau supérieur | notes_mark_unread


notes_mark_unread

(PHP 4 >= 4.0.5)

notes_mark_unread -- Marque la note note_id comme non lue pour l'utilisateur user_name

Description

string notes_mark_unread ( string database_name, string user_name, string note_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_mark_read | Niveau supérieur | notes_nav_create


notes_nav_create

(PHP 4 >= 4.0.5)

notes_nav_create -- Crée un nom de navigateur dans database_name

Description

bool notes_nav_create ( string database_name, string name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_mark_unread | Niveau supérieur | notes_search


notes_search

(PHP 4 >= 4.0.5)

notes_search -- Cherche les notes par mots clés dans database_name

Description

string notes_search ( string database_name, string keywords)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_nav_create | Niveau supérieur | notes_unread


notes_unread

(PHP 4 >= 4.0.5)

notes_unread -- Retourne l'identifiant de la note non lue pour l'utilisateur user_name

Description

string notes_unread ( string database_name, string user_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_search | Niveau supérieur | notes_version


notes_version

(PHP 4 >= 4.0.5)

notes_version -- Lit la version de Lotus Notes

Description

string notes_version ( string database_name)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
notes_unread | Niveau supérieur | Netscape Server API


Netscape Server API

Manuel PHP
Précédent Suivant

LXX. Netscape Server API

Introduction

Ces fonctions ne sont disponibles que lorsque vous utilisez PHP comme module NSAPI avec les serveurs Netscape/iPlanet/SunONE.

Installation

Pour l'installation de PHP sur les serveurs Netscape/iPlanet/SunONE voyez la section NSAPI dans le chapitre d'installation.

Configuration à l'exécution

Le comportement du module PHP NSAPI PHP est affecté par le fichier de configuration php.ini. Les configurations du fichier php.ini peuvent être remplacées par d'autres paramètres de la fonction php4_execute dans obj.conf

Tableau 1. Options de configuration NSAPI

Nom | Par défaut | Modifiable | Fonction
nsapi.read_timeout | 60 | PHP_INI_ALL | Configure la durée d'attende des données de POST envoyées par le client.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Voir aussi

NSAPI implémente un sous ensemble des fonctions du module Apache, pour un maximum de compatibilité.

Tableau 2. Fonctions Apache implémentés par NSAPI

Fonction Apache (uniquement un alias) | Fonction NSAPI | Description
apache_request_headers() | nsapi_request_headers() | Lit tous les entêtes de requête HTTP
apache_response_headers() | nsapi_response_headers() | Lit tous les entêtes de réponse HTTP
getallheaders() | nsapi_request_headers() | Lit tous les entêtes de requête HTTP
virtual() | nsapi_virtual() | Fait une sous requête NSAPI

Table des matières
nsapi_request_headers -- Lit tous les entêtes de requête HTTP sur un serveur Netscape
nsapi_response_headers -- Lit tous les entêtes de réponse HTTP sur Netscape serveur
nsapi_virtual -- Effectue une sous-requête NSAPI

Précédent | Sommaire | Suivant
notes_version | Niveau supérieur | nsapi_request_headers


nsapi_request_headers

(no version information, might be only in CVS)

nsapi_request_headers -- Lit tous les entêtes de requête HTTP sur un serveur Netscape

Description

array nsapi_request_headers ( void )

nsapi_request_headers() retourne un tableau associatif avec tous les entêtes HTTP de la requête courante. C'est uniquement disponible si PHP fonctionne en tant que module NSAPI.

Exemple 1. Exemple avec nsapi_request_headers()

<?php
$headers = nsapi_request_headers();

foreach ($headers as $header => $value) {
    echo "$header: $value <br />\n";
}
?>

Note : Avant PHP 4.3.3, getallheaders() n'était disponible que pour les serveurs Apaches. Depuis PHP 4.3.3, getallheaders() est un alias de nsapi_request_headers() si vous utilisez ce module.

Note : Vous pouvez aussi obtenir une valeur des variables CGI communes en lisant dans la variable $_SERVER, qui fonctionne, que vous utilisez PHP en tant que module NSAPI ou non.

Précédent | Sommaire | Suivant
Netscape Server API | Niveau supérieur | nsapi_response_headers


nsapi_response_headers

(no version information, might be only in CVS)

nsapi_response_headers -- Lit tous les entêtes de réponse HTTP sur Netscape serveur

Description

array nsapi_response_headers ( void )

nsapi_response_headers() retourne un tableau contenant tous les entêtes de réponse HTTP sur un serveur Netscape. Cette fonctionnalité n,est disponible que depuis PHP 4.3.3 et plus récent.

Voir aussi nsapi_request_headers() et headers_sent().

Précédent | Sommaire | Suivant
nsapi_request_headers | Niveau supérieur | nsapi_virtual


nsapi_virtual

(no version information, might be only in CVS)

nsapi_virtual -- Effectue une sous-requête NSAPI

Description

int nsapi_virtual ( string uri)

virtual() est une fonction spécifique NSAPI, qui est l'équivalent de <!--#include virtual...--> en SSI (fichiers .shtml). Elle effectue une sous-requête NSAPI. C'est pratique pour inclure des scripts CGI ou .shtml ou d'autres choses que vous voulez faire analyser par le serveur web.

Pour exécuter une sous-requête, tous les buffers doivent être vidés vers le navigateur, ainsi que les entêtes.

Vous ne pouvez pas faire de requêtes récursives avec cette fonction, vers un autre scripts PHP. Si vous voulez inclure des scripts PHP utilisez la fonction include() ou require().

Note : Cette fonction dépend d'une fonctionnalité non documentée de Netscape/iPlanet/SunONE. Utilisez phpinfo() pour vérifier si elle est disponible. En environnement Unix, cela devrait toujours fonctionner, sous Windows, cela dépend du nom du fichier ns-httpdXX.dll. Il se peut que les nouveaux serveurs disposent d'une nouvelle version de cette DLL, qui n'est pas détectée. Contactez nous si vous avez des problèmes avec.

Précédent | Sommaire | Suivant
nsapi_response_headers | Niveau supérieur | ODBC unifié


ODBC unifié

Manuel PHP
Précédent Suivant

LXXI. ODBC unifié

Introduction

En plus du support de l'ODBC normal, 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. Au lieu de maintenir de multiples pilotes qui sont similaires, ces pilotes ont été rassemblés dans un jeu de fonctions ODBC uniques.

Les bases de données suivantes sont supportées par l'ODBC unifié : Adabas D, IBM DB2, iODBC, Solid, et Sybase SQL Anywhere.

Note : Il n'y a pas d'ODBC utilisé lors des connexions aux bases de données ci-dessus. Les fonctions que vous utiliserez portent des noms évocateurs, et utilisent les mêmes syntaxes que leurs cousines d'ODBC. L'exception à ceci est iODBC. En compilant PHP avec le support iODBC, vous pourrez utiliser n'importe quel pilote compatible ODBC avec vos applications PHP. iODBC est mis à jour sur OpenLink Software. Plus d'informations sur iODBC, ainsi qu'un HOWTO (en anglais), sont disponibles sur www.iodbc.org.

Pré-requis

Pour accéder à l'une des bases de données supportées, il faut que les librairies équivalentes soient installées.

Installation

--with-adabas[=dir]

Inclut le support Adabas D. DIR est le dossier d'installation d'Adabas D. Par défaut, c'est /usr/local.

--with-sapdb[=dir]

Inclut le support SAP DB. DIR est le dossier d'installation de SAP DB. Par défaut, c'est /usr/local.

--with-solid[=dir]

Inclut le support Solid. DIR est le dossier d'installation de Solid. Par défaut, c'est /usr/local/solid.

--with-ibm-db2[=dir]

Inclut le support IBM DB2. DIR est le dossier d'installation de DB2. Par défaut, c'est /home/db2inst1/sqllib.

--with-empress[=dir]

Inclut le support Empress. DIR est le dossier d'installation de Empress. Par défaut, c'est $EMPRESSPATH. Depuis PHP4, cette option ne supporte que Empress Version 8.60 et plus récent.

--with-empress-bcs[=dir]

Inclut le support Empress Local Access. DIR est le dossier d'installation de Empress. Par défaut, c'est $EMPRESSPATH. Depuis PHP4, cette option ne supporte que Empress Version 8.60 et plus récent.

--with-birdstep[=dir]

Inclut le support Birdstep. DIR est le dossier d'installation de Birdstep. Par défaut, c'est /usr/local/birdstep.

--with-custom-odbc[=dir]

Inclut le support a user defined ODBC. DIR est le dossier d'installation d'ODBC. Par défaut, c'est /usr/local. Assurez vous que la variable CUSTOM_ODBC_LIBS est définie, et que le fichier odbc.h est dans votre chemin d'inclusion, c'est à dire que vous devriez définir les lignes suivantes pour Sybase SQL Anywhere 5.5.00 sous QNX, avant d'utiliser le script de configuration : CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc".

--with-iodbc[=dir]

Inclut le support iODBC. DIR est le dossier d'installation de iODBC. Par défaut, c'est /usr/local.

--with-esoob[=dir]

Inclut le support Easysoft OOB. DIR est le dossier d'installation de OOB. Par défaut, c'est /usr/local/easysoft/oob/client.

--with-unixodbc[=dir]

Inclut le support unixODBC. DIR est le dossier d'installation d'unixODBC. Par défaut, c'est /usr/local.

--with-openlink[=dir]

Inclut le support OpenLink ODBC. DIR est le dossier d'installation OpenLink. Par défaut, c'est /usr/local. C'est le même que pour iODBC.

--with-dbmaker[=dir]

Inclut le support DBMaker. DIR est le dossier d'installation DBMaker. Par défaut, c'est le chemin de la dernière installation de DBMaker (par exemple /home/dbmaker/3.6).

To disable unified ODBC support in PHP 3 add --disable-unified-odbc to your configure line. Only applicable if iODBC, Adabas, Solid, Velocis or a custom ODBC interface is enabled.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
odbc.default_db * | NULL | PHP_INI_ALL
odbc.default_user * | NULL | PHP_INI_ALL
odbc.default_pw * | NULL | PHP_INI_ALL
odbc.allow_persistent | "1" | PHP_INI_SYSTEM
odbc.check_persistent | "1" | PHP_INI_SYSTEM
odbc.max_persistent | "-1" | PHP_INI_SYSTEM
odbc.max_links | "-1" | PHP_INI_SYSTEM
odbc.defaultlrl | "4096" | PHP_INI_ALL
odbc.defaultbinmode | "1" | PHP_INI_ALL

Note : Les entrées marquées avec une étoile ne sont pas encore implémentées.

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

odbc.default_db chaîne de caractères

La source de données ODBC si aucune n'est spécifiée dans les fonctions odbc_connect() ou odbc_pconnect().

odbc.default_user chaîne de caractères

Nom d'utilisateur à utiliser si aucun n'est spécifié dans les fonctions odbc_connect() ou odbc_pconnect().

odbc.default_pw chaîne de caractères

Mot de passe à utiliser si aucun n'est spécifié dans les fonctions odbc_connect() ou odbc_pconnect().

odbc.allow_persistent booléen

Est ce que les connexions ODBC persistantes sont autorisées ou pas.

odbc.check_persistent booléen

Vérifie que la connexion est valide avant de l'utiliser.

odbc.max_persistent entier

Nombre maximum de connexions persistantes par processus.

odbc.max_links entier

Le nombre maximum de connexions ODBC par processus, y compris les connexions persistantes.

odbc.defaultlrl entier

Gestion des champs de type LONG. Spécifie le nombre d'octets retournés dans les variables.

odbc.defaultbinmode entier

Gestion des données binaires.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

ODBC_TYPE (entier)

ODBC_BINMODE_PASSTHRU (entier)

ODBC_BINMODE_RETURN (entier)

ODBC_BINMODE_CONVERT (entier)

SQL_ODBC_CURSORS (entier)

SQL_CUR_USE_DRIVER (entier)

SQL_CUR_USE_IF_NEEDED (entier)

SQL_CUR_USE_ODBC (entier)

SQL_CONCURRENCY (entier)

SQL_CONCUR_READ_ONLY (entier)

SQL_CONCUR_LOCK (entier)

SQL_CONCUR_ROWVER (entier)

SQL_CONCUR_VALUES (entier)

SQL_CURSOR_TYPE (entier)

SQL_CURSOR_FORWARD_ONLY (entier)

SQL_CURSOR_KEYSET_DRIVEN (entier)

SQL_CURSOR_DYNAMIC (entier)

SQL_CURSOR_STATIC (entier)

SQL_KEYSET_SIZE (entier)

SQL_CHAR (entier)

SQL_VARCHAR (entier)

SQL_LONGVARCHAR (entier)

SQL_DECIMAL (entier)

SQL_NUMERIC (entier)

SQL_BIT (entier)

SQL_TINYINT (entier)

SQL_SMALLINT (entier)

SQL_INTEGER (entier)

SQL_BIGINT (entier)

SQL_REAL (entier)

SQL_FLOAT (entier)

SQL_DOUBLE (entier)

SQL_BINARY (entier)

SQL_VARBINARY (entier)

SQL_LONGVARBINARY (entier)

SQL_DATE (entier)

SQL_TIME (entier)

SQL_TIMESTAMP (entier)

SQL_TYPE_DATE (entier)

SQL_TYPE_TIME (entier)

SQL_TYPE_TIMESTAMP (entier)

SQL_BEST_ROWID (entier)

SQL_ROWVER (entier)

SQL_SCOPE_CURROW (entier)

SQL_SCOPE_TRANSACTION (entier)

SQL_SCOPE_SESSION (entier)

SQL_NO_NULLS (entier)

SQL_NULLABLE (entier)

SQL_INDEX_UNIQUE (entier)

SQL_INDEX_ALL (entier)

SQL_ENSURE (entier)

SQL_QUICK (entier)

Table des matières
odbc_autocommit -- Active le mode auto-validation
odbc_binmode -- Modifie la gestion des colonnes de données binaires
odbc_close_all -- Ferme toutes les connexions ODBC
odbc_close -- Ferme une connexion ODBC
odbc_columnprivileges -- Liste les colonnes et leurs droits associés
odbc_columns -- Liste les colonnes d'une table
odbc_commit -- Valide une transaction ODBC
odbc_connect -- Connexion à une source
odbc_cursor -- Lecture du pointeur de fiche courante (cursorname)
odbc_data_source -- Retourne des informations sur la connexion courante
odbc_do -- Synonyme de odbc_exec()
odbc_error -- Lit le dernier code d'erreur
odbc_errormsg -- Lit le dernier message d'erreur
odbc_exec -- Prépare et exécute une requête SQL
odbc_execute -- Exécute une requête SQL préparée.
odbc_fetch_array -- Lit une ligne de résultat dans un tableau associatif
odbc_fetch_into -- Lit une ligne de résultat, et la place dans un tableau.
odbc_fetch_object -- Lit une ligne de résultat dans un objet
odbc_fetch_row -- Lit une ligne de résultat
odbc_field_len -- Lit la longueur d'un champ
odbc_field_name -- Lit le nom de la colonne
odbc_field_num -- Numéro de colonne
odbc_field_precision -- Alias de odbc_field_len()
odbc_field_scale -- Lit l'échelle d'un champ
odbc_field_type -- Type de données d'un champ
odbc_foreignkeys -- Liste les clés étrangères
odbc_free_result -- Libère les ressources associées à un résultat
odbc_gettypeinfo -- Liste les types de données supportés par une source
odbc_longreadlen -- Gestion des colonnes de type LONG
odbc_next_result -- Vérifie si plusieurs résultats sont disponibles
odbc_num_fields -- Nombre de colonnes dans un résultat
odbc_num_rows -- Nombre de lignes dans un résultat
odbc_pconnect -- Ouvre une connexion persistante à une source de données.
odbc_prepare -- Prépare une commande pour l'exécution
odbc_primarykeys -- Liste les colonnes utilisées dans une clé primaire
odbc_procedurecolumns -- Liste les paramètres des procédures
odbc_procedures -- Liste les procédure stockées
odbc_result_all -- Affiche le résultat sous la forme d'une table HTML.
odbc_result -- Lit un champ de résultat UODBC
odbc_rollback -- Annule une transaction
odbc_setoption -- Modifie les paramètres ODBC.
odbc_specialcolumns -- Retourne l'ensemble optimal de colonnes, qui permet de définir uniquement une ligne dans une table
odbc_statistics -- Calcule des statistiques sur une table
odbc_tableprivileges -- Liste les tables et leurs privilèges
odbc_tables -- Liste les tables d'une source.

Précédent | Sommaire | Suivant
nsapi_virtual | Niveau supérieur | odbc_autocommit


odbc_autocommit

(PHP 3>= 3.0.6, PHP 4 )

odbc_autocommit -- Active le mode auto-validation

Description

bool odbc_autocommit ( resource connection_id [, bool onoff])

Sans le paramètre onoff, odbc_autocommit() retourne le statut d'auto-validation de la connexion connection_id. TRUE si le mode est activé, FALSE s'il ne l'est pas, ou si une erreur survient.

Si onoff vaut TRUE, l'auto-validation est activée. S'il est FALSE, l'auto-validation est désactivée. odbc_autocommit() retourne TRUE en cas de succès, FALSE en cas d'échec.

Par défaut, l'auto-validation est activée. Désactiver l'auto-validation est équivalent à démarrer une transaction.

Voir aussi odbc_commit() et odbc_rollback().

Précédent | Sommaire | Suivant
ODBC unifié | Niveau supérieur | odbc_binmode


odbc_binmode

(PHP 3>= 3.0.6, PHP 4 )

odbc_binmode -- Modifie la gestion des colonnes de données binaires

Description

int odbc_binmode ( resource result_id, int mode)

Types ODBC SQL affectés: BINARY, VARBINARY, LONGVARBINARY.

  • ODBC_BINMODE_PASSTHRU: Mode Passthru

  • ODBC_BINMODE_RETURN: Retourne tel quel.

  • ODBC_BINMODE_CONVERT: Convertit en char et retourne la valeur.

Lorsqu'une donnée SQL est convertie en caractère C, les 8 bits du caractère source sont représentés par deux caractères ASCII. Ces caractères sont des représentations ASCII des nombres au format hexadécimal. Par exemple, le binaire 00000001 est converti en "01" et le binaire 11111111 est converti en "FF".

Tableau 1. Conversion des LONGVARBINARY

mode | longueur | résultat
ODBC_BINMODE_PASSTHRU | 0 | passthru
ODBC_BINMODE_RETURN | 0 | passthru
ODBC_BINMODE_CONVERT | 0 | passthru
ODBC_BINMODE_PASSTHRU | 0 | passthru
ODBC_BINMODE_PASSTHRU | >0 | passthru
ODBC_BINMODE_RETURN | >0 | Tel quel
ODBC_BINMODE_CONVERT | >0 | Caractère

Si odbc_fetch_into() est utilisé, passthru signifie qu'une chaîne vide sera retournée pour ces colonnes.

Si result_id vaut 0, ces paramètres seront appliqués aux nouveaux résultats.

Note : La valeur par défaut de longreadlen est 4096 et la valeur par défaut de odbc_binmode est ODBC_BINMODE_RETURN. La gestion des colonnes binaires est aussi modifiée par odbc_longreadlen().

Précédent | Sommaire | Suivant
odbc_autocommit | Niveau supérieur | odbc_close_all


odbc_close_all

(PHP 3>= 3.0.6, PHP 4 )

odbc_close_all -- Ferme toutes les connexions ODBC

Description

void odbc_close_all ( void )

odbc_close_all() ferme toutes les connexions ODBC à des sources de données.

Note : odbc_close_all() échouera s'il y a des transactions en cours sur cette connexion. Dans ce cas, la connexion restera ouverte.

Précédent | Sommaire | Suivant
odbc_binmode | Niveau supérieur | odbc_close


odbc_close

(PHP 3>= 3.0.6, PHP 4 )

odbc_close -- Ferme une connexion ODBC

Description

void odbc_close ( resource connection_id)

odbc_close() ferme la connexion avec la source de données représentée par l'identifiant de connexion connection_id.

Note : odbc_close() échouera s'il y a des transactions en cours sur cette connexion. Dans ce cas, la connexion restera ouverte.

Précédent | Sommaire | Suivant
odbc_close_all | Niveau supérieur | odbc_columnprivileges


odbc_columnprivileges

(PHP 4 )

odbc_columnprivileges -- Liste les colonnes et leurs droits associés

Description

int odbc_columnprivileges ( resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])

odbc_columnprivileges() liste les colonnes et leurs droits associés pour la table table_name. odbc_columnprivileges() retourne un identifiant de résultat ODBC, ou bien FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • GRANTOR

  • GRANTEE

  • PRIVILEGE

  • IS_GRANTABLE

Le résultat est ordonné par TABLE_QUALIFIER, TABLE_OWNER et TABLE_NAME.

Le paramètre column_name accepte des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Précédent | Sommaire | Suivant
odbc_close | Niveau supérieur | odbc_columns


odbc_columns

(PHP 4 )

odbc_columns -- Liste les colonnes d'une table

Description

resource odbc_columns ( resource connection_id [, string qualifier [, string schema [, string table_name [, string column_name]]]])

odbc_columns() liste toutes les colonnes de la source de données. odbc_columns() retourne un identifiant de résultat ODBC, ou bien FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • COLUMN_NAME

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • RADIX

  • NULLABLE

  • REMARKS

Le résultat est ordonné par TABLE_QUALIFIER, TABLE_OWNER et TABLE_NAME.

Les paramètres owner, column_name et table_name acceptent des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Voir aussi odbc_columnprivileges() pour connaître les droits associés.

Précédent | Sommaire | Suivant
odbc_columnprivileges | Niveau supérieur | odbc_commit


odbc_commit

(PHP 3>= 3.0.6, PHP 4 )

odbc_commit -- Valide une transaction ODBC

Description

bool odbc_commit ( resource connection_id)

odbc_commit() valide toutes les transactions en cours sur la connexion connection_id. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
odbc_columns | Niveau supérieur | odbc_connect


odbc_connect

(PHP 3>= 3.0.6, PHP 4 )

odbc_connect -- Connexion à une source

Description

resource odbc_connect ( string dsn, string user, string password [, int cursor_type])

odbc_connect() retourne un identifiant de connexion ODBC ou 0 (FALSE) en cas d'erreur.

L'identifiant de connexion retourné par cette fonction est nécessaire pour toutes les autres fonctions ODBC. Vous pouvez avoir de multiples connexions en même temps. Le quatrième paramètre fixe le type de pointeur de résultat utilisé pour cette connexion. Ce paramètre n'est généralement pas nécessaire, mais il peut être utile pour contourner certains problèmes ODBC.

Avec certains pilotes ODBC, l'exécution de procédures enregistrées complexes peut produire l'erreur suivante : "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it", ce qui signifie : "Impossible de créer un pointeur de résultat dans une procédure enregistrée qui est réduite à une simple sélection (SELECT)). Utiliser l'option SQL_CUR_USE_ODBC permet d'éviter cette erreur. De plus, certains pilotes ne supportent pas le paramètre optionnel de numéro de ligne dans odbc_fetch_row(). SQL_CUR_USE_ODBC peut aussi permettre de résoudre ces problèmes.

Les constantes suivantes sont définies comme types de pointeur :

  • SQL_CUR_USE_IF_NEEDED

  • SQL_CUR_USE_ODBC

  • SQL_CUR_USE_DRIVER

  • SQL_CUR_DEFAULT

Pour les connexions persistantes, reportez-vous à odbc_pconnect().

Précédent | Sommaire | Suivant
odbc_commit | Niveau supérieur | odbc_cursor


odbc_cursor

(PHP 3>= 3.0.6, PHP 4 )

odbc_cursor -- Lecture du pointeur de fiche courante (cursorname)

Description

string odbc_cursor ( resource result_id)

odbc_cursor() lit le pointeur de fiche courante (cursorname) pour le résultat result_id.

Précédent | Sommaire | Suivant
odbc_connect | Niveau supérieur | odbc_data_source


odbc_data_source

(PHP 4 >= 4.3.0)

odbc_data_source -- Retourne des informations sur la connexion courante

Description

resource odbc_data_source ( resource connection_id, constant fetch_type)

odbc_data_source() retourne FALSE en cas d'erreur, et un tableau en cas de réussite.

odbc_data_source() retourne des informations sur la connexion identifiée par la ressource connection_id, suivies d'informations sur le DSN. Le paramètre connection_id est une connexion ODBC valide. Le paramètre fetch_type peut être l'une des deux constantes suivantes : SQL_FETCH_FIRST ou SQL_FETCH_NEXT. Utilisez SQL_FETCH_FIRST la première fois que la fonction est appelée, et puis SQL_FETCH_NEXT.

Précédent | Sommaire | Suivant
odbc_cursor | Niveau supérieur | odbc_do


odbc_do

(PHP 3>= 3.0.6, PHP 4 )

odbc_do -- Synonyme de odbc_exec()

Description

resource odbc_do ( resource conn_id, string query)

odbc_do() exécute la requête query sur la connexion connection_id.

Précédent | Sommaire | Suivant
odbc_data_source | Niveau supérieur | odbc_error


odbc_error

(PHP 4 >= 4.0.5)

odbc_error -- Lit le dernier code d'erreur

Description

string odbc_error ( [resource connection_id])

odbc_error() retourne un état ODBC sur 6 chiffres, ou une chaîne vide s'il n'y avait plus d'erreurs. Si connection_id est spécifié, le dernier état ODBC de cette connexion est retourné. Si connection_id est omis, c'est le dernier état de n'importe quelle connexion qui est retourné.

Voir aussi odbc_errormsg() et odbc_exec().

Précédent | Sommaire | Suivant
odbc_do | Niveau supérieur | odbc_errormsg


odbc_errormsg

(PHP 4 >= 4.0.5)

odbc_errormsg -- Lit le dernier message d'erreur

Description

string odbc_errormsg ( [resource connection_id])

odbc_errormsg() retourne une chaîne contenant le dernier message d'erreur ODBC, ou une chaîne vide s'il n'y avait pas d'erreur. Si connection_id est spécifié, le dernier état ODBC de cette connexion est retourné. Si connection_id est omis, c'est le dernier état de n'importe quelle connexion qui est retourné.

Voir aussi odbc_error() et odbc_exec().

Précédent | Sommaire | Suivant
odbc_error | Niveau supérieur | odbc_exec


odbc_exec

(PHP 3>= 3.0.6, PHP 4 )

odbc_exec -- Prépare et exécute une requête SQL

Description

resource odbc_exec ( resource connection_id, string query_string)

odbc_exec() retourne FALSE en cas d'erreur, ou bien retourne un identifiant de résultat ODBC en cas d'exécution réussie.

odbc_exec() envoie une commande SQL à la source de données représentée par connection_id. Ce paramètre doit être un identifiant valide de connexion, retourné par odbc_connect() ou odbc_pconnect().

Voir aussi odbc_prepare() et odbc_execute() pour les exécutions multiples de requêtes SQL.

Précédent | Sommaire | Suivant
odbc_errormsg | Niveau supérieur | odbc_execute


odbc_execute

(PHP 3>= 3.0.6, PHP 4 )

odbc_execute -- Exécute une requête SQL préparée.

Description

bool odbc_execute ( resource result_id [, array parameters_array])

odbc_execute() exécute une requête SQL préparée par odbc_prepare(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Le tableau de paramètres parameters_array ne sert que si vous avez besoin de paramètrer votre requête.

Les valeurs du paramètre parameter_array seront substituées dans les variables de requêtes de la requête préparée.

Tout paramètre de parameter_array qui commence et termine par des guillements simples sera considéré comme un nom de fichier à lire et envoyer à la base de données, avec la variable de requête appropriée.

Note : Depuis PHP 4.1.1, cette fonction de lecture de fichier a les limitations suivantes :

  • La lecture du fichier n'est pas sujette à aucune restriction de la page du safe mode ou de la directive open-basedir. Cela a été corrigé en PHP 4.2.0.

  • Les fichiers distants ne sont pas supportés.

  • Si vous voulez stocker une chaîne de caractères qui commence et se finit réellement par des guillemets, vous devez les protéger avec des anti slash, ou bien en ajoutant un espace au début ou à la fin de la chaîne, pour éviter que ce paramètre soit confondu avec un nom de fichier. Si ce n'est pas possible dans le cadre de votre application, vous devrez passer par la fonction odbc_exec().

Précédent | Sommaire | Suivant
odbc_exec | Niveau supérieur | odbc_fetch_array


odbc_fetch_array

(PHP 4 >= 4.0.2)

odbc_fetch_array -- Lit une ligne de résultat dans un tableau associatif

Description

array odbc_fetch_array ( resource result [, int rownumber])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
odbc_execute | Niveau supérieur | odbc_fetch_into


odbc_fetch_into

(PHP 3>= 3.0.6, PHP 4 )

odbc_fetch_into -- Lit une ligne de résultat, et la place dans un tableau.

Description

bool odbc_fetch_into ( resource result_id [, int rownumber, array result_array])

resource odbc_fetch_into ( resource result_id, array result_array [, int rownumber])

odbc_fetch_into() retourne le nombre de colonnes dans le résultat, ou FALSE en cas d'erreur. result_array doit avoir été passé par référence, mais il peut être de n'importe quel type, étant donné qu'il sera converti en tableau. Le tableau contiendra les valeurs des colonnes, ces dernières étant numérotées à partir de 0.

Exemple 1. Exemple avec odbc_fetch_into() (avant PHP 4.0.6)

<?php
  $rc = odbc_fetch_into($res_id, $my_array);
?>

ou

<?php
  $rc = odbc_fetch_into($res_id, $row, $my_array);
  $rc = odbc_fetch_into($res_id, 1, $my_array);
?>

Jusqu'en PHP 4.0.5, le paramètre result_array n'a plus besoin d'être passé par référence.

Depuis PHP 4.0.6, le paramètre rownumber ne peut pas être passé comme une constante, mais comme une variable.

Depuis PHP 4.2.0, les paramètres result_array et rownumber ont été inversés. Cela permet à rownumber d'être à nouveau une constante. Cette modification est la dernière pour cette fonction.

Exemple 2. Exemple avec odbc_fetch_into() (après PHP 4.0.6)

<?php
  $rc = odbc_fetch_into($res_id, $my_array);
?>

ou

<?php
  $row = 1;
  $rc = odbc_fetch_into($res_id, $row, $my_array);
?>

Exemple 3. Exemple avec odbc_fetch_into() en PHP 4.2.0

<?php
  $rc = odbc_fetch_into($res_id, $my_array);
?>

ou

<?php
  $rc = odbc_fetch_into($res_id,$my_array, 2);
?>

Précédent | Sommaire | Suivant
odbc_fetch_array | Niveau supérieur | odbc_fetch_object


odbc_fetch_object

(PHP 4 >= 4.0.2)

odbc_fetch_object -- Lit une ligne de résultat dans un objet

Description

object odbc_fetch_object ( resource result [, int rownumber])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
odbc_fetch_into | Niveau supérieur | odbc_fetch_row


odbc_fetch_row

(PHP 3>= 3.0.6, PHP 4 )

odbc_fetch_row -- Lit une ligne de résultat

Description

bool odbc_fetch_row ( resource result_id [, int row_number])

Si odbc_fetch_row() a réussi, TRUE est retourné. S'il n'y avait plus de ligne, ou en cas d'erreur, FALSE est retourné.

odbc_fetch_row() lit une ligne dans le résultat identifié par result_id et retourné par odbc_do() ou odbc_exec(). Après odbc_fetch_row(), les champs seront accessibles avec la fonction odbc_result().

Si row_number est omis, row_number va tenter de lire la prochaine ligne dans le résultat. Des appels répétés à odbc_fetch_row() avec et sans paramètre row_number peuvent être combinés librement.

Pour passer en revue toutes les lignes d'un résultat plusieurs fois, vous pouvez appeler odbc_fetch_row() avec row_number = 1, puis continue à appeler odbc_fetch_row() sans le paramètre row_number pour passer en revue tout le résultat. Si un pilote ne supporte pas la lecture des lignes par numéro, le paramètre sera ignoré.

Précédent | Sommaire | Suivant
odbc_fetch_object | Niveau supérieur | odbc_field_len


odbc_field_len

(PHP 3>= 3.0.6, PHP 4 )

odbc_field_len -- Lit la longueur d'un champ

Description

int odbc_field_len ( resource result_id, int field_number)

odbc_field_len() retourne la longueur du champ référence par le nombre field_number, dans la connexion ODBC result_id. Les numéros de champs commencent à 1.

Précédent | Sommaire | Suivant
odbc_fetch_row | Niveau supérieur | odbc_field_name


odbc_field_name

(PHP 3>= 3.0.6, PHP 4 )

odbc_field_name -- Lit le nom de la colonne

Description

string odbc_field_name ( resource result_id, int field_number)

odbc_field_name() lit le nom de la colonne dont l'index est field_number. La numérotation des colonnes commence à 1. FALSE est retourné en cas d'erreur.

Précédent | Sommaire | Suivant
odbc_field_len | Niveau supérieur | odbc_field_num


odbc_field_num

(PHP 3>= 3.0.6, PHP 4 )

odbc_field_num -- Numéro de colonne

Description

int odbc_field_num ( resource result_id, string field_name)

odbc_field_num() retourne le numéro de la colonne nommée field_name. Ce numéro correspond à l'index du champ dans le résultat ODBC. La numérotation commence à 1. FALSE est retourné en cas d'erreur.

Précédent | Sommaire | Suivant
odbc_field_name | Niveau supérieur | odbc_field_precision


odbc_field_precision

(PHP 4 )

odbc_field_precision -- Alias de odbc_field_len()

Description

string odbc_field_precision ( resource result_id, int field_number)

odbc_field_precision() retourne la précision du champ référencé par son numéro field_number, dans le résultat ODBC result_id.

Voir aussi : odbc_field_scale() pour connaître l'échelle d'un nombre à virgule flottante.

Précédent | Sommaire | Suivant
odbc_field_num | Niveau supérieur | odbc_field_scale


odbc_field_scale

(PHP 4 )

odbc_field_scale -- Lit l'échelle d'un champ

Description

string odbc_field_scale ( resource result_id, int field_number)

odbc_field_precision() retourne l'échelle du champ référencé par son numéro de champ field_number dans le résultat ODBC result_id.

Précédent | Sommaire | Suivant
odbc_field_precision | Niveau supérieur | odbc_field_type


odbc_field_type

(PHP 3>= 3.0.6, PHP 4 )

odbc_field_type -- Type de données d'un champ

Description

string odbc_field_type ( resource result_id, int field_number)

odbc_field_type() retourne le type de données SQL d'un champ, identifié par son index. La numérotation des champs commence à 1.

Précédent | Sommaire | Suivant
odbc_field_scale | Niveau supérieur | odbc_foreignkeys


odbc_foreignkeys

(PHP 4 )

odbc_foreignkeys -- Liste les clés étrangères

Description

resource odbc_foreignkeys ( resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)

odbc_foreignkeys() liste les clés étrangères utilisées dans la table pk_table. odbc_foreignkeys() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • PKTABLE_QUALIFIER

  • PKTABLE_OWNER

  • PKTABLE_NAME

  • PKCOLUMN_NAME

  • FKTABLE_QUALIFIER

  • FKTABLE_OWNER

  • FKTABLE_NAME

  • FKCOLUMN_NAME

  • KEY_SEQ

  • UPDATE_RULE

  • DELETE_RULE

  • FK_NAME

  • PK_NAME

Si pk_table contient un nom de table, odbc_foreignkeys() retourne la clé primaire de la table pk_table, et toutes les clés étrangères qui y font référence.

Si fk_table contient un nom de table, odbc_foreignkeys() retourne la liste des clés étrangères de la table fk_table, et les clés primaires (d'autres tables) qui y font référence.

Si pk_table et fk_table contiennent des noms de tables, odbc_foreignkeys() retourne la liste des clés étrangères de la table fk_table qui utilisent la clé primaire de la table pk_table. Cette liste devrait ne contenir qu'une clé au mieux.

Précédent | Sommaire | Suivant
odbc_field_type | Niveau supérieur | odbc_free_result


odbc_free_result

(PHP 3>= 3.0.6, PHP 4 )

odbc_free_result -- Libère les ressources associées à un résultat

Description

bool odbc_free_result ( resource result_id)

odbc_free_result() retourne toujours TRUE.

odbc_free_result() n'est nécessaire que si vous craignez d'utiliser trop de mémoire lors de l'exécution de votre script. Tous les résultats en mémoire seront libérés dès la fin du script. Mais, si vous êtes sûr que vous n'aurez plus besoin d'un résultat jusqu'à la fin de votre script, vous pouvez appeler odbc_free_result(), et la mémoire associée à result_id sera libérée.

Note : Si l'auto-validation est désactivée (voir odbc_autocommit()) et que vous appelez odbc_free_result() avant de valider vos requêtes, toutes les transactions préparées seront annulées.

Précédent | Sommaire | Suivant
odbc_foreignkeys | Niveau supérieur | odbc_gettypeinfo


odbc_gettypeinfo

(PHP 4 )

odbc_gettypeinfo -- Liste les types de données supportés par une source

Description

int odbc_gettypeinfo ( resource connection_id [, int data_type])

odbc_gettypeinfo() liste les types de données qui sont supportées par une source. odbc_gettypeinfo() retourne un identifiant de résultat, ou FALSE en cas d'erreur. L'argument optionnel data_type peut être utilisé pour restreindre les informations à un seul type de données.

Le résultat possède les colonnes suivantes :

  • TYPE_NAME

  • DATA_TYPE

  • PRECISION

  • LITERAL_PREFIX

  • LITERAL_SUFFIX

  • CREATE_PARAMS

  • NULLABLE

  • CASE_SENSITIVE

  • SEARCHABLE

  • UNSIGNED_ATTRIBUTE

  • MONEY

  • AUTO_INCREMENT

  • LOCAL_TYPE_NAME

  • MINIMUM_SCALE

  • MAXIMUM_SCALE

Le résultat est ordonné par DATA_TYPE et TYPE_NAME.

Précédent | Sommaire | Suivant
odbc_free_result | Niveau supérieur | odbc_longreadlen


odbc_longreadlen

(PHP 3>= 3.0.6, PHP 4 )

odbc_longreadlen -- Gestion des colonnes de type LONG

Description

int odbc_longreadlen ( resource result_id, int length)

Types ODBC SQL affectés: LONG, LONGVARBINARY.

Le nombre d'octets retournés à PHP est contrôlé par le paramètre length. Si sa valeur est 0, les colonnes de type Long seront transformées en chaînes vides.

Note : La gestion des types LONGVARBINARY est aussi affectée par odbc_binmode().

Précédent | Sommaire | Suivant
odbc_gettypeinfo | Niveau supérieur | odbc_next_result


odbc_next_result

(PHP 4 >= 4.0.5)

odbc_next_result -- Vérifie si plusieurs résultats sont disponibles

Description

bool odbc_next_result ( resource result_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
odbc_longreadlen | Niveau supérieur | odbc_num_fields


odbc_num_fields

(PHP 3>= 3.0.6, PHP 4 )

odbc_num_fields -- Nombre de colonnes dans un résultat

Description

int odbc_num_fields ( resource result_id)

odbc_num_fields() retourne le nombre de colonnes dans un résultat ODBC. odbc_num_fields() retournera -1 en cas d'erreur. L'argument est un identifiant de résultat valide, retourné par odbc_exec().

Précédent | Sommaire | Suivant
odbc_next_result | Niveau supérieur | odbc_num_rows


odbc_num_rows

(PHP 3>= 3.0.6, PHP 4 )

odbc_num_rows -- Nombre de lignes dans un résultat

Description

int odbc_num_rows ( resource result_id)

odbc_num_rows() retourne le nombre de lignes dans un résultat ODBC. odbc_num_rows() retournera -1 en cas d'erreur. Pour les commandes INSERT, UPDATE et DELETE, odbc_num_rows() retourne le nombre de ligne affectées. Pour les commandes SELECT, cela PEUT être le nombre de lignes disponibles, mais ce n'est pas certain.

Note: odbc_num_rows() après un SELECT retournera -1 avec de nombreux pilotes.

Précédent | Sommaire | Suivant
odbc_num_fields | Niveau supérieur | odbc_pconnect


odbc_pconnect

(PHP 3>= 3.0.6, PHP 4 )

odbc_pconnect -- Ouvre une connexion persistante à une source de données.

Description

resource odbc_pconnect ( string dsn, string user, string password [, int cursor_type])

odbc_pconnect() retourne un identifiant de connexion ODBC ou 0 (FALSE) en cas d'erreur. odbc_pconnect() se comporte de manière similaire à odbc_connect(), mais la connexion ouverte n'est pas vraiment terminée lorsque le script est terminé. Les prochaines requêtes qui se feront sur une connexion dont les dsn, user, password sont les mêmes que celle-ci (avec odbc_connect() et odbc_pconnect()) réutiliseront la connexion ouverte.

Note : Les connexions persistantes n'ont aucun effet si PHP est utilisé comme CGI.

Pour plus de détails sur le paramètre optionnel cursor_type, voyez odbc_connect(). Pour plus de détails sur les connexions persistantes, reportez-vous à la FAQ PHP.

Précédent | Sommaire | Suivant
odbc_num_rows | Niveau supérieur | odbc_prepare


odbc_prepare

(PHP 3>= 3.0.6, PHP 4 )

odbc_prepare -- Prépare une commande pour l'exécution

Description

resource odbc_prepare ( resource connection_id, string query_string)

odbc_prepare() prépare une commande pour l'exécution.

odbc_prepare() retourne un identifiant de résultat ODBC si la commande SQL a été préparée avec succès. L'identifiant peut être utilisé plus tard pour exécuter la commande avec odbc_execute().

Précédent | Sommaire | Suivant
odbc_pconnect | Niveau supérieur | odbc_primarykeys


odbc_primarykeys

(PHP 4 )

odbc_primarykeys -- Liste les colonnes utilisées dans une clé primaire

Description

resource odbc_primarykeys ( resource connection_id, string qualifier, string owner, string table)

odbc_primarykeys() liste les colonnes utilisées dans une clé primaire de la table table. odbc_primarykeys() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • COLUMN_NAME

  • KEY_SEQ

  • PK_NAME

Précédent | Sommaire | Suivant
odbc_prepare | Niveau supérieur | odbc_procedurecolumns


odbc_procedurecolumns

(PHP 4 )

odbc_procedurecolumns -- Liste les paramètres des procédures

Description

resource odbc_procedurecolumns ( resource connection_id [, string qualifier [, string owner [, string proc [, string column]]]])

odbc_procedurecolumns() liste les paramètres d'entrée et de sortie, ainsi que les colonnes utilisées dans les procédures désignées par les paramètres. odbc_procedurecolumns() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • PROCEDURE_QUALIFIER

  • PROCEDURE_OWNER

  • PROCEDURE_NAME

  • COLUMN_NAME

  • COLUMN_TYPE

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • RADIX

  • NULLABLE

  • REMARKS

Le résultat est ordonné par PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME et COLUMN_TYPE.

Les paramètres owner, proc et column acceptent des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Précédent | Sommaire | Suivant
odbc_primarykeys | Niveau supérieur | odbc_procedures


odbc_procedures

(PHP 4 )

odbc_procedures -- Liste les procédure stockées

Description

resource odbc_procedures ( resource connection_id [, string qualifier [, string owner [, string name]]])

odbc_procedures() liste toutes les procédures stockées dans la source de données. odbc_procedures() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • PROCEDURE_QUALIFIER

  • PROCEDURE_OWNER

  • PROCEDURE_NAME

  • NUM_INPUT_PARAMS

  • NUM_OUTPUT_PARAMS

  • NUM_RESULT_SETS

  • REMARKS

  • PROCEDURE_TYPE

Les paramètres owner et name acceptent des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Précédent | Sommaire | Suivant
odbc_procedurecolumns | Niveau supérieur | odbc_result_all


odbc_result_all

(PHP 3>= 3.0.6, PHP 4 )

odbc_result_all -- Affiche le résultat sous la forme d'une table HTML.

Description

int odbc_result_all ( resource result_id [, string format])

odbc_result_all() retourne le nombre de lignes dans le résultat, ou FALSE en cas d'erreur.

odbc_result_all() affiche toutes les lignes d'un résultat. L'affichage se fait au format HTML. Avec l'option format, il est possible de modifier l'aspect global de la table.

Précédent | Sommaire | Suivant
odbc_procedures | Niveau supérieur | odbc_result


odbc_result

(PHP 3>= 3.0.6, PHP 4 )

odbc_result -- Lit un champ de résultat UODBC

Description

string odbc_result ( resource result_id, mixed field)

odbc_result() retourne le contenu d'un champ.

field peut être aussi bien un entier, contenant le numéro de colonne du champ, dans le résultat, ou bien une chaîne de caractère, qui représente le nom du champ. Par exemple :

Exemple 1. Exemple avec odbc_result()

<?php
  $item_3 = odbc_result($Query_ID, 3 );
  $item_val = odbc_result($Query_ID, "val");
?>

Le premier appel à odbc_result() retourne la valeur du troisième champ de la ligne courante, du résultat result_id. Le deuxième appel à odbc_result() retourne la valeur du troisième champ dont le nom est "val" de la ligne courante, du résultat result_id. Une erreur survient si le paramètre de colonne est inférieur à 1, ou dépasse le nombre de colonnes du résultat. De la même manière, une erreur survient si le nom du champ passé ne correspond à aucun champ dans le résultat.

Les index de champs commencent à 1. Pour plus d'informations sur la façon de lire des colonnes de type binaire ou long, reportez-vous à odbc_binmode() et odbc_longreadlen().

Précédent | Sommaire | Suivant
odbc_result_all | Niveau supérieur | odbc_rollback


odbc_rollback

(PHP 3>= 3.0.6, PHP 4 )

odbc_rollback -- Annule une transaction

Description

int odbc_rollback ( resource connection_id)

odbc_rollback() annule toutes les transactions sur la connexion connection_id. odbc_rollback() retourne TRUE en cas de succès, et FALSE en cas d'échec.

Précédent | Sommaire | Suivant
odbc_result | Niveau supérieur | odbc_setoption


odbc_setoption

(PHP 3>= 3.0.6, PHP 4 )

odbc_setoption -- Modifie les paramètres ODBC.

Description

int odbc_setoption ( resource id, int function, int option, int param)

odbc_setoption() donne accès aux options ODBC pour une connexion particulière ou un résultat de requête. Elle a été écrite pour aider à la résolution de problèmes liés aux pilotes ODBC récalcitrants. Vous aurez sûrement à utiliser odbc_setoption() si vous êtes un programmeur ODBC et que vous comprenez les divers effets des options disponibles. Vous aurez aussi besoin d'un bon manuel de référence pour comprendre les options et leur usage. Différentes versions de pilotes supportent différentes versions d'options.

Etant donné que les effets peuvent varier d'un pilote à l'autre, l'utilisation de odbc_setoption() dans des scripts voués à être livrés au public est très fortement déconseillée. De plus, certaines options ODBC ne sont pas disponibles car elles doivent être fixées avant l'établissement de la connexion. Cependant, si dans un cas bien spécifique, odbc_setoption() vous permet d'utiliser PHP sans que votre patron ne vous pousse à utiliser un produit commercial, alors cela n'a pas d'importance.

id est un identifiant de connexion, ou un identifiant de résultat, pour lequel vous souhaitez modifier des options. Pour SQLSetConnectOption(), c'est un identifiant de connexion. Pour SQLSetStmtOption(), c'est un identifiant de résultat.

function est la fonction ODBC à utiliser. La valeur doit être de 1 pour utiliser SQLSetConnectOption() et 2 pour SQLSetStmtOption().

Le paramètre option est l'option à modifier.

Le paramètre param est la valeur de l'option option.

Exemple 1. Exemple de modification d'option ODBC

<?php
// 1. L'option 102 de SQLSetConnectOption() est SQL_AUTOCOMMIT.
// 1 de SQL_AUTOCOMMIT est SQL_AUTOCOMMIT_ON.
//    Cet exemple a le meme effet que
//    odbc_autocommit($conn, true);
odbc_setoption($conn, 1, 102, 1);
// 2. Option 0 de SQLSetStmtOption() est SQL_QUERY_TIMEOUT.
//    Cet exemple fixe le d&eacute;lai d'expiration &agrave; 30 secondes.
$result = odbc_prepare($conn, $sql);
odbc_setoption($result, 2, 0, 30);
odbc_execute($result);
?>

Précédent | Sommaire | Suivant
odbc_rollback | Niveau supérieur | odbc_specialcolumns


odbc_specialcolumns

(PHP 4 )

odbc_specialcolumns -- Retourne l'ensemble optimal de colonnes, qui permet de définir uniquement une ligne dans une table

Description

resource odbc_specialcolumns ( resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)

Lorsque le type est SQL_BEST_ROWID, odbc_specialcolumns() retourne la ou les colonnes qui permettent de repérer uniquement chaque ligne d'une table.

Lorsque le type type est SQL_ROWVER, odbc_specialcolumns() retourne l'ensemble optimal de colonnes tel qu'en lisant les valeurs de ces colonnes, on puisse spécifier n'importe quelle ligne de manière unique.

odbc_specialcolumns() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • SCOPE

  • COLUMN_NAME

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • PSEUDO_COLUMN

Le résultat est ordonné par SCOPE.

Précédent | Sommaire | Suivant
odbc_setoption | Niveau supérieur | odbc_statistics


odbc_statistics

(PHP 4 )

odbc_statistics -- Calcule des statistiques sur une table

Description

resource odbc_statistics ( resource connection_id, string qualifier, string owner, string table_name, int unique, int accuracy)

odbc_statistics() effectue quelques statistiques sur une table et ses index. odbc_statistics() retourne un identifiant de résultat, ou FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • NON_UNIQUE

  • INDEX_QUALIFIER

  • INDEX_NAME

  • TYPE

  • SEQ_IN_INDEX

  • COLUMN_NAME

  • COLLATION

  • CARDINALITY

  • PAGES

  • FILTER_CONDITION

Le résultat est ordonné par NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME et SEQ_IN_INDEX.

Précédent | Sommaire | Suivant
odbc_specialcolumns | Niveau supérieur | odbc_tableprivileges


odbc_tableprivileges

(PHP 4 )

odbc_tableprivileges -- Liste les tables et leurs privilèges

Description

int odbc_tableprivileges ( resource connection_id [, string qualifier [, string owner [, string name]]])

odbc_tableprivileges() liste les tables de la source et leurs droits associés. odbc_tableprivileges() retourne un identifiant de résultat ODBC, ou bien FALSE en cas d'erreur.

Le résultat possède les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • GRANTOR

  • GRANTEE

  • PRIVILEGE

  • IS_GRANTABLE

Le résultat est ordonné par TABLE_QUALIFIER, TABLE_OWNER et TABLE_NAME.

Les paramètres owner et name acceptent des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Précédent | Sommaire | Suivant
odbc_statistics | Niveau supérieur | odbc_tables


odbc_tables

(PHP 3>= 3.0.17, PHP 4 )

odbc_tables -- Liste les tables d'une source.

Description

int odbc_tables ( resource connection_id [, string qualifier [, string owner [, string name [, string types]]]])

odbc_tables() liste toutes les tables de la source et retourne un identifiant de résultat ODBC, ou bien FALSE en cas d'erreur.

Le résultat contient les colonnes suivantes :

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • TABLE_TYPE

  • REMARKS

Le résultat est ordonné grâce aux options TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER et TABLE_NAME.

Les paramètres owner et name acceptent des masques de recherche ('%' pour remplacer zéro ou plus caractères, et '_' pour n'en remplacer qu'un seul).

Pour supporter les énumérations de qualificateurs propriétaires et types de table, la sémantique suivante pour les paramètres qualifier, owner, name et table_type sont disponibles :

  • Si qualifier est un signe de pourcentage (%), et owner et name sont des chaînes vides, alors le résultat contient la liste des qualifiers valides pour la source. (toutes les colonnes hormis TABLE_QUALIFIER contiennent NULL).

  • Si owner est un signe de pourcentage (%), et qualifier et name sont des chaînes vides, alors le résultat contient la liste des propriétaires de la source (toutes les colonnes hormis TABLE_OWNER contiennent NULL).

  • Si table_type est un signe de pourcentage (%), et qualifier, owner et name sont des chaînes vides, alors le résultat contient la liste des types de tables de la source (toutes les colonnes hormis TABLE_TYPE contiennent NULL).

Si table_type n'est pas une chaîne vide, il doit contenir une liste de valeurs, séparées par des virgules, qui representent les types recherchés. Chaque valeur peut être insérée entre guillemets simples ('), ou sans guillemets. Par exemple "'TABLE','VIEW'" ou "TABLE, VIEW". Si la source de données ne supporte pas un type de table donné, odbc_tables() ne retournera aucun résultat pour ce type.

Voir aussi odbc_tableprivileges() pour connaître les droits associés.

Précédent | Sommaire | Suivant
odbc_tableprivileges | Niveau supérieur | Aggregation d'objets/Composition de fonctions


Aggregation d'objets/Composition de fonctions

Manuel PHP
Précédent Suivant

LXXII. Aggregation d'objets/Composition de fonctions

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Introduction

En programmation objet, il est courant de rencontrer la combinaison de classes simples (et de leurs instances) en une classe plus complexe. C'est une strategie habile pour mettre en place des objets complexes, et des hierarchies d'objets. Ce système peut fonctionne comme une alternative dynamique à l'héritage multiple. Il y a deux solutions pour combiner deux classes, suivant la relation de leurs éléments constitutifs : L'Association et l'Aggregation.

Une Association est une combinaison d'éléments construits indépendamment et visibles à l'extérieur. Lorsque nous associons des classes ou objets, chacun garde une référence à l'autre partie de l'association. Lorsque nous associons des classes statiquement, une classe contient une référence à une instance de l'autre classe. Par exemple :

Exemple 1. Association de classes

<?php
class DateTime {

   function DateTime() {
       // constructeur vide
   }

   function now() {
       return date("Y-m-d H:i:s");
   }
}

class Report {
   var $_dt = new DateTime();
   // autres propri&eacute;t&eacute;s ...

   function Report() {
       // initialisation du code ...
   }

   function generateReport() {
       $dateTime = $_dt->now();
       // autre code
   }

   // autres m&eacute;thodes ...
}

$rep = new Report();
?>
Nous pouvons aussi associer des instances dynamiquement, en passant une référence au constructeur (ou par une autre méthode), ce qui permet de gérer dynamiquement l'association entre les objets. Nous allons modifier l'exemple ci-dessus pour illustrer ce point :

Exemple 2. Association d'objets

<?php
class DateTime {
   // identique au pr&eacute;c&eacute;dent exemple
}

class DateTimePlus {
   var $_format;

   function DateTimePlus($format="Y-m-d H:i:s") {
       $this->_format = $format;
   }

   function now() {
       return date($this->_format);
   }
}

class Report {
   var $_dt;    // Nous allons garder la r&eacute;f&eacute;rence &agrave; DateTime ici
   // autre propri&eacute;t&eacute;s

   function Report() {
       // initialisation
   }

   function setDateTime(&$dt) {
       $this->_dt =& $dt;
   }

   function generateReport() {
       $dateTime = $this->_dt->now();
       // autre code ...
   }

   // autres m&eacute;thodes ...
}

$rep = new Report();
$dt = new DateTime();
$dtp = new DateTimePlus("l, F j, Y (h:i:s a, T)");

// G&eacute;n&eacute;ratino du rapport avec une simple date
$rep->setDateTime(&$dt);
echo $rep->generateReport();

// plus loin dans le code

// generation du rapport avec une date design&eacute;e
$rep->setDateTime(&$dtp);
$output = $rep->generateReport();
// sauvegarde pour affichage dans la base
// ... etc ...
?>

L'Aggregation, d'un autre coté, implique l'encapsulation et le masquage des parties de la combinaison. Nous pouvons aggréger des classes en utilisant une méthode statique, grâce aux sous-classes (mais PHP ne supporte pas bien les sous classes), et dans ce cas, la définition de la classe aggrégée n'est pas accessible, sauf via les méthodes de la classe contenant. L'aggregation d'instances (aggrégation d'objets) implique la création dynamique de sous-objets à l'intérieur d'un autre objet, et dans le même temps, l'extension des capacités de l'objet principal (en terme de méthodes accessibles).

L'aggrégation d'object est une méthode naturelle pour représenter des relation de type tout-partie (par exemple, une molécule est une aggrégation d'atomes), ou bien peut être utilisée pour obtenir un effet équivalent à l'héritage multiple, sans avoir à lier plusieurs classes et leurs interfaces. En fait, les aggrégations d'objets sont plus souples, car nous pouvons alors sélectionner les méthodes et les propriétés qui sont transmises à l'objet aggrégé.

Exemples

Nous définissons trois classes, qui implémentent chacune une méthode de stockage différente :

Exemple 3. storage_classes.inc

<?php
class FileStorage {
    var $data;

    function FileStorage($data) {
        $this->data = $data;
    }
    function write($name) {
        $fp = fopen(name, "w");
        fwrite($fp, $this->data);
        fclose($data);
    }
}

class WDDXStorage {
    var $data;
    var $version = "1.0";
    var $_id; // variable "priv&eacute;e"

    function WDDXStorage($data) {
        $this->data = $data;
        $this->_id = $this->_genID();
    }

    function store() {
        if ($this->_id) {
            $pid = wddx_packet_start($this->_id);
            wddx_add_vars($pid, "this->data");
            $packet = wddx_packet_end($pid);
        } else {
            $packet = wddx_serialize_value($this->data);
        }
        $dbh = dba_open("varstore", "w", "gdbm");
        dba_insert(md5(uniqid("",true)), $packet, $dbh);
        dba_close($dbh);
    }

    // m&eacute;thode priv&eacute;e
    function _genID() {
        return md5(uniqid(rand(),true));
    }
}

class DBStorage {
    var $data;
    var $dbtype = "mysql";

    function DBStorage($data) {
        $this->data = $data;
    }

    function save() {
        $dbh = mysql_connect();
        mysql_select_db("storage", $dbh);
        $serdata = serialize($this->data);
        mysql_query("insert into vars ('$serdata',now())", $dbh);
        mysql_close($dbh);
    }
}

?>

Puis, nous instantion quelques objets issue de ces classes, et nous réalisons des aggrégations et désaggrégations, tout en affichant quelques résultats :

Exemple 4. test_aggregation.php

<?php
include "storageclasses.inc";

// quelques utilitaires

function p_arr($arr) {
    foreach($arr as $k=>$v)
        $out[] = "\t$k => $v";
    return implode("\n", $out);
}

function object_info($obj) {
    $out[] = "Classe : ".get_class($obj);
    foreach(get_object_vars($obj) as $var=>$val)
        if (is_array($val))
            $out[] = "propri&eacute;t&eacute; : $var (array)\n".p_arr($val);
        else
            $out[] = "propri&eacute;t&eacute; : $var = $val";
    foreach(get_class_methods($obj) as $method)
        $out[] = "m&eacute;thode : $method";
    return implode("\n", $out);
}

$data = array(M_PI, "kludge != cruft");

// cr&eacute;ons quelques objets simples
$fs = new FileStorage($data);
$ws = new WDDXStorage($data);

// affichons des informations sur ces objets
echo "\$fs object\n";
echo object_info($fs)."\n";
echo "\n\$ws object\n";
echo object_info($ws)."\n";

// maintenant, quelques aggr&eacute;gations

echo "\nAggr&eacute;geons \$fs avec la classe WDDXStorage\n";
aggregate($fs, "WDDXStorage");
echo "L'objet \$fs \n";
echo object_info($fs)."\n";

echo "\nAggr&eacute;geons le r&eacute;sultat avec la classe DBStorage \n";
aggregate($fs, "DBStorage");
echo "L'objet \$fs \n";
echo object_info($fs)."\n";

echo "\nEt finalement, d&eacute;saggr&eacute;geons WDDXStorage\n";
deaggregate($fs, "WDDXStorage");
echo "L'objet \$fs \n";
echo object_info($fs)."\n";

?>

Etudions maintenant le résultat du script pour comprendre les effets secondaires et les limitations des aggrégations d'objets en PHP. D'abord, nous avons créé $fs et $ws et ils fournissent le bon résultat (suivant la définition de leur classe). Notez que dans le but de l'aggrégation d'objets, les éléments privés d'une classe ou d'un objet doivent commencer par un souligné ("_"), même si il n'y a pas de distinction réelle entre un objet privé et un objet public.

Exemple 5. Agregation d'objets

L'objet $fs
Classe : filestorage
propri&eacute;t&eacute; : data (array)
    0 => 3.1415926535898
    1 => kludge != cruft
m&eacute;thode : filestorage
m&eacute;thode : write

L'objet $ws
Classe : wddxstorage
propri&eacute;t&eacute; : data (array)
    0 => 3.1415926535898
    1 => kludge != cruft
propri&eacute;t&eacute; : version = 1.0
propri&eacute;t&eacute; : _id = ID::9bb2b640764d4370eb04808af8b076a5
m&eacute;thode : wddxstorage
m&eacute;thode : store
m&eacute;thode : _genid

Nous aggrégeons alors $fs avec la classe WDDXStorage, et nous affichons les informations. Nous pouvons aussi voir que même si l'objet $fs est toujours du type FileStorage, il a maintenant la propriété $version, et la méthode store(), qui sont définies dans WDDXStorage. Une chose importante à noter est que les éléments privés n'ont pas été agrégés, même si ils sont présents dans l'objet $ws. Un autre absent est le constructeur de WDDXStorage, qu'il n'est pas logique d'aggréger.

Exemple 6. Résultat d'agrégation

Aggr&eacute;geons \$fs avec la classe WDDXStorage
L'objet $fs
Classe : filestorage
propri&eacute;t&eacute; : data (array)
    0 => 3.1415926535898
    1 => kludge != cruft
propri&eacute;t&eacute; : version = 1.0
m&eacute;thode : filestorage
m&eacute;thode : write
m&eacute;thode : store

Le processus d'aggrégation est cumulatif, ce qui fait que lorsque nous aggrégeons $fs avec la classe DBStorage, nous générons un objet qui peut utiliser n'importe laquelle des méthodes de stockage de ces classes.

Exemple 7. Accumuliation dans une agrégation

Aggr&eacute;geons le r&eacute;sultat avec la classe DBStorage
L'objet $fs
Classe : filestorage
propri&eacute;t&eacute; : data (array)
    0 => 3.1415926535898
    1 => kludge != cruft
propri&eacute;t&eacute; : version = 1.0
propri&eacute;t&eacute; : dbtype = mysql
m&eacute;thode : filestorage
m&eacute;thode : write
m&eacute;thode : store
m&eacute;thode : save

Finalement, de la même façon que nous avons aggrégés les méthodes et propriétés dynamiquement, nous pouvons aussi les désaggrégéer. Si vous désaggrégeons la classe WDDXStorage de l'objet $fs, nous allons obtenir :

Exemple 8. Désagrégation d'objets

Et finalement, d&eacute;saggr&eacute;geons WDDXStorage
L'objet $fs
Classe : filestorage
propri&eacute;t&eacute; : data (array)
    0 => 3.1415926535898
    1 => kludge != cruft
propri&eacute;t&eacute; : dbtype = mysql
m&eacute;thode : filestorage
m&eacute;thode : write
m&eacute;thode : save

Un point que nous n'avons pas mentionnéé ci-dessus et que l'aggrégation ne va pas écraser les méthodes ou propriétés déjà existantes dans l'objet principal. Par exemple, la classe FileStorage définit une propriété $data, et la classe WDDXStorage aussi. Mais cette dernière ne sera pas impliquée dans l'aggrégation.

Table des matières
aggregate_info -- Retourne un tableau associatif avec les méthodes et propriétés de chaque classe qui a été aggrégée
aggregate_methods_by_list -- Aggrège sélectivement les méthodes d'une classe grâce à une liste
aggregate_methods_by_regexp -- Aggrège sélectivement les méthodes d'une classe grâce à une expression régulière
aggregate_methods -- Aggrège dynamiquement les méthodes d'une classe à un objet
aggregate_properties_by_list -- Aggrège sélectivement les propriétés d'une classe grâce à une liste
aggregate_properties_by_regexp -- Aggrège sélectivement les propriétés d'une classe grâce à une expression régulière
aggregate_properties -- Aggrège dynamiquement les propriétés d'une classe à un objet
aggregate -- Aggrège dynamiquemetn des classes et objets
aggregation_info -- Retourne un tableau associatif décrivant les classes aggrégées
deaggregate -- Desaggrège un objet

Précédent | Sommaire | Suivant
odbc_tables | Niveau supérieur | aggregate_info


aggregate_info

(PHP 5 CVS only)

aggregate_info -- Retourne un tableau associatif avec les méthodes et propriétés de chaque classe qui a été aggrégée

Description

array aggregate_info ( object object)

aggregate_info() retourne un tableau associatif avec les méthodes et propriétés de chaque classe qui a été aggrégée pour former l'objet object. La clé du tableau principal est le nom de la classe aggrégée.

Pour un exemple, voir le code ci-dessous.

Exemple 1. Exemple avec aggregate_info()

<?php

class Slicer {
    var $vegetable;

    function Slicer($vegetable) {
        $this->vegetable = $vegetable;
    }

    function slice_it($num_cuts) {
        echo "Doing some simple slicing\n";
        for ($i=0; $i < $num_cuts; $i++) {
            // do some slicing
        }
    }
}

class Dicer {
    var $vegetable;
    var $rotation_angle = 90;   // degrees

    function Dicer($vegetable) {
        $this->vegetable = $vegetable;
    }

    function dice_it($num_cuts) {
        echo "Cutting in one direction\n";
        for ($i=0; $i < $num_cuts; $i++) {
            // do some cutting
        }
        $this->rotate($this->rotation_angle);
        echo "Cutting in a second direction\n";
        for ($i=0; $i < $num_cuts; $i++) {
            // do some more cutting
        }
    }

    function rotate($deg) {
        echo "Now rotating {$this->vegetable} {$deg} degrees\n";
    }

    function _secret_super_dicing($num_cuts) {
        // so secret we cannot show you ;-)
    }
}

$obj = new Slicer('onion');
aggregate($obj, 'Dicer');
print_r(aggregate_info($obj));
?>

va produire l'affichage :

Array
(
    [dicer] => Array
        (
            [methods] => Array
                (
                    [0] => dice_it
                    [1] => rotate
                )

            [properties] => Array
                (
                    [0] => rotation_angle
                )

        )

)
Comme vous pouvez le voir, toutes les méthodes et propriétés de la classe dicer ont été aggrégée dans notre nouvel objet, à l'exception de la classe constructeur et de la méthode privée _secret_super_dicing

Voir aussi
aggregate(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
deaggregate()

Précédent | Sommaire | Suivant
Aggregation d'objets/Composition de fonctions | Niveau supérieur | aggregate_methods_by_list


aggregate_methods_by_list

(PHP 4 >= 4.2.0)

aggregate_methods_by_list -- Aggrège sélectivement les méthodes d'une classe grâce à une liste

Description

void aggregate_methods_by_list ( object object, string class_name, array methods_list [, bool exclude])

aggregate_methods_by_list() aggrège les méthodes de la classe class_name avec l'objet object, en filtrant les méthodes aggrégées grâce à la liste methods_list, appliquée au nom de la méthode. Le paramètre optionnel exclude sert à décider si l'expression régulière sélectionne les méthodes ( exclude vaut FALSE sa valeur par défaut), ou bien si elle sert à identifier les méthodes qui doivent être exclues (exclude vaut TRUE).

Le constructeur de classe et les méthodes dont le nom commence par un caractère souligné ("_"), qui sont considérées comme privées, sont toujours exclues.

Voir aussi
aggregate(),
aggregate_info(),
aggregate_methods(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_info | Niveau supérieur | aggregate_methods_by_regexp


aggregate_methods_by_regexp

(PHP 4 >= 4.2.0)

aggregate_methods_by_regexp -- Aggrège sélectivement les méthodes d'une classe grâce à une expression régulière

Description

void aggregate_methods_by_regexp ( object object, string class_name, string regexp [, bool exclude])

aggregate_methods_by_regexp() aggrège les méthodes de la classe class_name avec l'objet object, en filtrant les méthodes aggrégées grâce à l'expression régulière regexp, appliquée au nom de la méthode. Le paramètre optionnel exclude sert à décider si l'expression régulière sélectionne les méthodes ( exclude vaut FALSE sa valeur par défaut), ou bien si elle sert à identifier les méthodes qui doivent être exclues (exclude vaut TRUE).

Le constructeur de classe et les méthodes dont le nom commence par un caractère souligné ("_"), qui sont considérées comme privées, sont toujours exclues.

Voir aussi
aggregate(),
aggregate_info(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_methods_by_list | Niveau supérieur | aggregate_methods


aggregate_methods

(PHP 4 >= 4.2.0)

aggregate_methods -- Aggrège dynamiquement les méthodes d'une classe à un objet

Description

void aggregate_methods ( object object, string class_name)

aggregate_methods() aggège toutes les méthodes de la classe class_name avec l'objet object, sauf les méthodes dont le nom commence par un souligné ("_"), qui sont considérées commes privées, et donc ignorées.

Voir aussi
aggregate(),
aggregate_info(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_methods_by_regexp | Niveau supérieur | aggregate_properties_by_list


aggregate_properties_by_list

(PHP 4 >= 4.2.0)

aggregate_properties_by_list -- Aggrège sélectivement les propriétés d'une classe grâce à une liste

Description

void aggregate_properties_by_list ( object object, string class_name, array properties_list [, bool exclude])

aggregate_properties_by_list() aggrège les propriétés de la classe class_name avec l'objet object, en filtrant les propriétés aggrégées grâce à la liste methods_list, appliquée au nom de la propriété. Le paramètre optionnel exclude sert à décider si l'expression régulière sélectionne les propriétés ( exclude vaut FALSE sa valeur par défaut), ou bien si elle sert à identifier les propriétés qui doivent être exclues (exclude vaut TRUE).

Les propriétés dont le nom commence par un caractère souligné ("_"), qui sont considérées comme privées, sont toujours exclues.

Voir aussi
aggregate(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_regexp(),
aggregate_info(),
deaggregate()

Précédent | Sommaire | Suivant
aggregate_methods | Niveau supérieur | aggregate_properties_by_regexp


aggregate_properties_by_regexp

(PHP 4 >= 4.2.0)

aggregate_properties_by_regexp -- Aggrège sélectivement les propriétés d'une classe grâce à une expression régulière

Description

void aggregate_properties_by_regexp ( object object, string class_name, string regexp [, bool exclude])

aggregate_properties_by_regexp() aggrège les propriétés de la classe class_name avec l'objet object, en filtrant les propriétés aggrégées grâce à l'expression régulière regexp, appliquée au nom de la propriétés. Le paramètre optionnel exclude sert à décider si l'expression régulière sélectionne les propriétés (exclude vaut FALSE sa valeur par défaut), ou bien si elle sert à identifier les propriétés qui doivent être exclues (exclude vaut TRUE).

Les propriétés dont le nom commence par un caractère souligné ("_"), qui sont considérées comme privées, sont toujours exclues.

Voir aussi
aggregate(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_info() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_properties_by_list | Niveau supérieur | aggregate_properties


aggregate_properties

(PHP 4 >= 4.2.0)

aggregate_properties -- Aggrège dynamiquement les propriétés d'une classe à un objet

Description

void aggregate_properties ( object object, string class_name)

aggregate_properties() aggège toutes les propriétés de la classe class_name avec l'objet object, sauf les propriétés dont le nom commence par un souligné ("_"), qui sont considérées commes privées, et donc ignorées.

Voir aussi
aggregate(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp(),
aggregate_info() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_properties_by_regexp | Niveau supérieur | aggregate


aggregate

(PHP 4 >= 4.2.0)

aggregate -- Aggrège dynamiquemetn des classes et objets

Description

void aggregate ( object object, string class_name)

aggregate() aggrège les méthodes et propriétés de la classe class_name dans l'objet object. Les méthodes et propriétés commençant par un souligné ("_") sont considérées comme privées et ignorées dans le processus d'aggrégation. Les constructeurs sont aussi exclus de l'aggrégation.

Voir aussi
aggregate_info(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
deaggregate()

Précédent | Sommaire | Suivant
aggregate_properties | Niveau supérieur | aggregation_info


aggregation_info

(PHP 4 >= 4.2.0)

aggregation_info -- Retourne un tableau associatif décrivant les classes aggrégées

Description

array aggregation_info ( object object)

aggregation_info() retourne les informations d'aggrégation pour l'objet object, sous la forme d'un tableau associatif.

Précédent | Sommaire | Suivant
aggregate | Niveau supérieur | deaggregate


deaggregate

(PHP 4 >= 4.2.0)

deaggregate -- Desaggrège un objet

Description

void deaggregate ( object object [, string class_name])

deaggregate() supprime les méthodes et propriétés de la classe class_name, qui ont été aggrégées dans l'objet object. Si le paramètre optionnel class_name est passé, seules les méthodes et propriétés de cette classe sont désaggrégées. Sinon, toutes les méthodes et propriétés aggrégées sont retirées.

Voir aussi
aggregate(),
aggregate_methods(),
aggregate_methods_by_list(),
aggregate_methods_by_regexp(),
aggregate_properties(),
aggregate_properties_by_list(),
aggregate_properties_by_regexp() et
aggregate_info()

Précédent | Sommaire | Suivant
aggregation_info | Niveau supérieur | Oracle 8


Oracle 8

Manuel PHP
Précédent Suivant

LXXIII. Oracle 8

Introduction

Ces fonctions vous permettront d'accéder aux serveurs Oracle8 et Oracle7. Elles utilisent l'interface Oracle8 Call-Interface (oci8). Vous aurez donc besoin des librairies clientes Oracle8 pour pouvoir les utiliser.

Il faut noter que cette extension est plus souple que l'extension Oracle officielle. Elle supporte notamment les liaisons entre les variables globales et locales de PHP avec des emplacements Oracle; elle supporte complètement les types LOB, FILE et ROWID et vous permet d'utiliser des variables de définitions personnalisables.

Pré-requis

Avant d'utiliser cette extension, assurez-vous que vous avez bien paramétré vos variables d'environnement Oracle, ainsi que votre démon utilisateur. Les variables dont vous pouvez avoir besoin sont :

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

  • ORA_NLS33

Après avoir configuré ces variables pour votre utilisateur "serveur web", assurez-vous aussi d'ajouter cet utilisateur (nobody, www) au group Oracle.

Si votre serveur web ne démarre pas, ou crashe au démarrage : Vérifiez que Apache a bien été compilé avec la librairie pthread :

Exemple 1. Configuration Apache avec pthread

# ldd /www/apache/bin/httpd
    libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
    libm.so.6 => /lib/libm.so.6 (0x4002f000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
    libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
    libc.so.6 => /lib/libc.so.6 (0x4007e000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Si la libpthread n'est pas listée, vous devez réinstaller Apache :

Exemple 2. Reinstaller Apache avec pthread

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install

Notez bien que sur certains systèmes comme UnixWare il faut utiliser libthread au lieu de libpthread. PHP et Apache doivent alors être configurés avec EXTRA_LIBS=-lthread.

Installation

Vous devez compiler PHP avec l'option --with-oci8[=DIR], où DIR vaut par défaut la variable d'environnement ORACLE_HOME.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

OCI_DEFAULT (entier)

OCI_DESCRIBE_ONLY (entier)

OCI_COMMIT_ON_SUCCESS (entier)

OCI_EXACT_FETCH (entier)

SQLT_BFILEE (entier)

SQLT_CFILEE (entier)

SQLT_CLOB (entier)

SQLT_BLOB (entier)

SQLT_RDD (entier)

OCI_B_SQLT_NTY (entier)

OCI_SYSDATE (entier)

OCI_B_BFILE (entier)

OCI_B_CFILEE (entier)

OCI_B_CLOB (entier)

OCI_B_BLOB (entier)

OCI_B_ROWID (entier)

OCI_B_CURSOR (entier)

OCI_B_BIN (entier)

OCI_FETCHSTATEMENT_BY_COLUMN (entier)

OCI_FETCHSTATEMENT_BY_ROW (entier)

OCI_ASSOC (entier)

OCI_NUM (entier)

OCI_BOTH (entier)

OCI_RETURN_NULLS (entier)

OCI_RETURN_LOBS (entier)

OCI_DTYPE_FILE (entier)

OCI_DTYPE_LOB (entier)

OCI_DTYPE_ROWID (entier)

OCI_D_FILE (entier)

OCI_D_LOB (entier)

OCI_D_ROWID (entier)

Exemples

Exemple 3. Exemple avec OCI8

<?php
// par sergo@bacup.ru

// Utilisez l'option: OCI_DEFAULT pour ex&eacute;cuter la commande avec ex&eacute;cution
// retard&eacute;e.
OCIExecute($stmt, OCI_DEFAULT);

// pour lire les donn&eacute;es, apr&egrave;s un fetch :

$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();

// Pour les commandes INSERT et UPDATE utilisez :

$sql = "insert into table (field1, field2) values (field1 = 'value',
 field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);

?>

Vous pouvez facilement accéder aux procédures stockées, de la même façon que vous le feriez par ligne de commande :

Exemple 4. Utilisation de procédures stockées

<?php
// par webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
 '$lastname', '$company', '$address1', '$address2', '$city', '$state',
 '$postalcode', '$country', :error_code );end;" );

// Cela appelle la proc&eacute;dure stock&eacute;e sp_newaddress, avec la variable :address_id
// pour les entr&eacute;es/sorties et :error_code comme variable de sortie.
// Ensuite, vous faites les liaisons suivantes :

   OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
   OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
   OCIExecute ( $sth );

?>

Table des matières
ocibindbyname -- Lie une variable PHP à une variable SQL d'Oracle
ocicancel -- Termine la lecture de ressources Oracle
ocicloselob -- Ferme un descripteur de lob
ocicollappend -- Ajoute un objet à une collection Oracle
ocicollassign -- Assigne une collection depuis une autre collection Oracle
ocicollassignelem -- Assigne l'élément val à une collection Oracle à l'index ndx
ocicollgetelem -- Lit la valeur d'un élément d'une collection Oracle à l'index ndx
ocicollmax -- Retourne la plus grande valeur d'une collection Oracle
ocicollsize -- Retourne la taille d'une collection Oracle
ocicolltrim -- Supprime num éléments à la fin de la collection Oracle
ocicolumnisnull -- Teste si la valeur d'une colonne Oracle est NULL
ocicolumname -- Retourne le nom d'une colonne Oracle
ocicolumnprecision -- Lit la précision d'une colonne Oracle
ocicolumnscale -- Lit la taille d'une colonne Oracle
ocicolumnsize -- Retourne la taille d'une colonne Oracle
ocicolumntype -- Retourne le type de données d'une colonne Oracle
ocicolumntyperaw -- Lit directement le type de colonne Oracle
ocicommit -- Valide les transactions Oracle en cours
ocidefinebyname -- Utilise une variable PHP pour la phase de définition, dans une commande SELECT Oracle
ocierror -- Retourne la dernière erreur de stmt|conn|global sur Oracle
ociexecute -- Exécute une commande SQL Oracle
ocifetch -- Lit la prochaine ligne dans le résultat Oracle
ocifetchinto -- Retourne la ligne suivante d'un résultat Oracle dans un tableau
ocifetchstatement -- Retourne toutes les lignes d'un résultat Oracle
ocifreecollection -- Supprime une collection Oracle
ocifreecursor -- Libère toutes les ressources réservées par un résultat Oracle
ocifreedesc -- Détruit un pointeur de LOB Oracle
ocifreestatement -- Libère toutes les ressources occupées par une commande Oracle
ociinternaldebug -- Active ou désactive l'affichage des données de déboggage Oracle
ociloadlob -- Charge un LOB Oracle
ocilogoff -- Déconnecte d'un serveur Oracle
ocilogon -- Etablit une connexion à un serveur Oracle
ocinewcollection -- Initialise une nouvelle collection
ocinewcursor -- Retourne un nouveau pointeur à utiliser pour lier les pointeurs de références
ocinewdescriptor -- Initialise un nouveau pointeur vide de LOB/FILE
ocinlogon -- Etablit une nouvelle correction avec un serveur Oracle
ocinumcols -- Retourne le nombre de colonnes dans un résultat
ociparse -- Analyse une requête SQL avec Oracle
ociplogon -- Ouvre une connexion persistante à un serveur Oracle
ociresult -- Retourne la valeur d'une colonne dans un résultat Oracle
ocirollback -- Annule les transactions Oracle en cours
ocirowcount -- Retourne le nombre de lignes affectées par Oracle
ocisavelob -- Sauve un LOB Oracle
ocisavelobfile -- Sauve un fichier LOB Oracle
ociserverversion -- Retourne une chaîne contenant les informations de version du serveur Oracle
ocisetprefetch -- Indique le nombre de lignes qui doivent être pré-lues par Oracle
ocistatementtype -- Retourne le type de commande OCI
ociwritelobtofile -- Ecrit un LOB Oracle dans un fichier
ociwritetemporarylob -- Ecrit un blob temporaire

Précédent | Sommaire | Suivant
deaggregate | Niveau supérieur | ocibindbyname


ocibindbyname

(PHP 3>= 3.0.4, PHP 4 )

ocibindbyname -- Lie une variable PHP à une variable SQL d'Oracle

Description

bool ocibindbyname ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]])

ocibindbyname() relie la variable PHP variable à l'emplacement Oracle ph_name. Son utilisation (comme entrée ou comme sortie) sera définie à l'exécution, et l'espace nécessaire sera alloué. Le paramètre de longueur length fixe la taille maximum pour la liaison. Si vous affectez une longueur de -1, ocibindbyname() utilisera la longueur de variable comme maximum.

Si vous devez lier des types abstraits de données (LOB/ROWID/BFILE), vous devrez l'allouer dans un premier temps, avec ocinewdescriptor(). La longueur length ne sert pas pour ces types et devrait être fixée à -1. La variable type indique au serveur Oracle, quel type de pointeur va être utilisé. Les valeurs possibles sont : OCI_B_FILE (Fichiers binaires), OCI_B_CFILE (Fichiers texte), OCI_B_CLOB (LOB de texte), OCI_B_BLOB (LOB binaire) et OCI_B_ROWID (ROWID).

Exemple 1. Exemple avec ocibindbyname()

<?php
/* Exemple ociBindByPos par thies@thieso.net (980221)
  Ins&egrave;re 3 lignes dans emp, et utilise ROWID pour mettre &agrave; jour
  les lignes, juste apr&egrave;s l'insertion.
*/

$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"insert into emp (empno, ename) ".
                       "values (:empno,:ename) ".
                       "returning ROWID into :rid");

$data = array(1111 => "Larry", 2222 => "Bill", 3333 => "Jim");

$rowid = OCINewDescriptor($conn,OCI_D_ROWID);

OCIBindByName($stmt,":empno",&$empno,32);
OCIBindByName($stmt,":ename",&$ename,32);
OCIBindByName($stmt,":rid",&$rowid,-1,OCI_B_ROWID);

$update = OCIParse($conn,"update emp set sal = :sal where ROWID = :rid");
OCIBindByName($update,":rid",&$rowid,-1,OCI_B_ROWID);
OCIBindByName($update,":sal",&$sal,32);

$sal = 10000;

while (list($empno,$ename) = each($data)) {
    OCIExecute($stmt);
    OCIExecute($update);
}

$rowid->free();

OCIFreeStatement($update);
OCIFreeStatement($stmt);

$stmt = OCIParse($conn,"select * from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
while (OCIFetchInto($stmt,&$arr,OCI_ASSOC)) {
    var_dump($arr);
}
OCIFreeStatement($stmt);

/* Effacement des lignes inutiles dans la table emp */
$stmt = OCIParse($conn,"delete from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
OCIFreeStatement($stmt);

OCILogoff($conn);
?>

Avertissement

C'est une mauvaise idée que d'utiliser les magic quotes et la fonction ocibindbyname() simultanément, car aucun ajout de guillemets n'est nécessaire sur les variables citées, et tout guillemets magiques sera inscrit dans votre base de données car ocibindbyname() n'est pas capable de faire la différence entre les guillemets et ceux qui ont été ajoutés dynamiquement.

Précédent | Sommaire | Suivant
Oracle 8 | Niveau supérieur | ocicancel


ocicancel

(PHP 3>= 3.0.8, PHP 4 )

ocicancel -- Termine la lecture de ressources Oracle

Description

bool ocicancel ( resource stmt)

ocicancel() détruit les ressources liées au dernier résultat stmt. Si vous ne souhaitez plus lire d'informations dans ce résultat, utilisez cette fonction.

Précédent | Sommaire | Suivant
ocibindbyname | Niveau supérieur | ocicloselob


ocicloselob

(no version information, might be only in CVS)

ocicloselob -- Ferme un descripteur de lob

Description

bool ocicloselob ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicancel | Niveau supérieur | ocicollappend


ocicollappend

(PHP 4 >= 4.0.6)

ocicollappend -- Ajoute un objet à une collection Oracle

Description

bool ocicollappend ( string value)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicloselob | Niveau supérieur | ocicollassign


ocicollassign

(PHP 4 >= 4.0.6)

ocicollassign -- Assigne une collection depuis une autre collection Oracle

Description

bool ocicollassign ( object from)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicollappend | Niveau supérieur | ocicollassignelem


ocicollassignelem

(PHP 4 >= 4.0.6)

ocicollassignelem -- Assigne l'élément val à une collection Oracle à l'index ndx

Description

bool ocicollassignelem ( int ndx, string val)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicollassign | Niveau supérieur | ocicollgetelem


ocicollgetelem

(PHP 4 >= 4.0.6)

ocicollgetelem -- Lit la valeur d'un élément d'une collection Oracle à l'index ndx

Description

string ocicollgetelem ( int ndx)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicollassignelem | Niveau supérieur | ocicollmax


ocicollmax

(PHP 4 >= 4.0.6)

ocicollmax -- Retourne la plus grande valeur d'une collection Oracle

Description

int ocicollmax ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Pour un varray, c'est la taille maximale du tableau.

Précédent | Sommaire | Suivant
ocicollgetelem | Niveau supérieur | ocicollsize


ocicollsize

(PHP 4 >= 4.0.6)

ocicollsize -- Retourne la taille d'une collection Oracle

Description

int ocicollsize ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicollmax | Niveau supérieur | ocicolltrim


ocicolltrim

(PHP 4 >= 4.0.6)

ocicolltrim -- Supprime num éléments à la fin de la collection Oracle

Description

bool ocicolltrim ( int num)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicollsize | Niveau supérieur | ocicolumnisnull


ocicolumnisnull

(PHP 3>= 3.0.4, PHP 4 )

ocicolumnisnull -- Teste si la valeur d'une colonne Oracle est NULL

Description

bool ocicolumnisnull ( resource stmt, mixed col)

ocicolumnisnull() retourne TRUE si la colonne column du résultat stmt est NULL. Vous pouvez utiliser le numéro de colonne (l'indexation des colonnes commence à 1) ou le nom de la colonne, pour le paramètre column.

Précédent | Sommaire | Suivant
ocicolltrim | Niveau supérieur | ocicolumname


ocicolumname

(no version information, might be only in CVS)

ocicolumname -- Retourne le nom d'une colonne Oracle

Description

string ocicolumnname ( resource stmt, int col)

ocicolumnname() retourne le nom de la colonne numéro col (l'indexation des colonnes commence à 1).

Exemple 1. Exemple avec ocicolumnname()

<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Nom</TH>";
    print "<TH>Type</TH>";
    print "<TH>Taille</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

Voir aussi
ocinumcols(),
ocicolumntype() et
ocicolumnsize().

Précédent | Sommaire | Suivant
ocicolumnisnull | Niveau supérieur | ocicolumnprecision


ocicolumnprecision

(PHP 4 )

ocicolumnprecision -- Lit la précision d'une colonne Oracle

Description

int ocicolumnprecision ( resource stmt, int col)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicolumname | Niveau supérieur | ocicolumnscale


ocicolumnscale

(PHP 4 )

ocicolumnscale -- Lit la taille d'une colonne Oracle

Description

int ocicolumnscale ( resource stmt, int col)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicolumnprecision | Niveau supérieur | ocicolumnsize


ocicolumnsize

(PHP 3>= 3.0.4, PHP 4 )

ocicolumnsize -- Retourne la taille d'une colonne Oracle

Description

int ocicolumnsize ( resource stmt, mixed column)

ocicolumnsize() retourne la taille de la colonne. Vous pouvez utiliser l'index de colonne (l'indexation commence à 1) ou le nom de la colonne dans le paramètre column.

Exemple 1. Exemple avec ocicolumnsize()

<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Name</TH>";
    print "<TH>Type</TH>";
    print "<TH>Length</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

Voir aussi
ocinumcols(),
ocicolumnname() et
ocicolumnsize().

Précédent | Sommaire | Suivant
ocicolumnscale | Niveau supérieur | ocicolumntype


ocicolumntype

(PHP 3>= 3.0.4, PHP 4 )

ocicolumntype -- Retourne le type de données d'une colonne Oracle

Description

mixed ocicolumntype ( resource stmt, int col)

ocicolumntype() retourne le type de données de la colonne correspondant au numéro de colonne col dans le résultat stmt (les colonnes sont indexées à partir de 1).

Exemple 1. Exemple avec ocicolumntype()

<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Nom</TH>";
    print "<TH>Type</TH>";
    print "<TH>Longueur</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

Voir aussi
ocinumcols(),
ocicolumnname() et
ocicolumnsize().

Précédent | Sommaire | Suivant
ocicolumnsize | Niveau supérieur | ocicolumntyperaw


ocicolumntyperaw

(PHP 4 )

ocicolumntyperaw -- Lit directement le type de colonne Oracle

Description

mixed ocicolumntyperaw ( resource stmt, int col)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocicolumntype | Niveau supérieur | ocicommit


ocicommit

(PHP 3>= 3.0.7, PHP 4 )

ocicommit -- Valide les transactions Oracle en cours

Description

bool ocicommit ( resource connection)

ocicommit() valide toutes les transactions en cours sur la connexion Oracle connection. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

This example demonstrates how OCICommit is used.

Exemple 1. OCICommit

<?php
    // Connexion au serveur Oracle
    $conn = OCILogon('scott', 'tiger');

    // Analyse de la requ&ecirc;te SQL
    $stmt = OCIParse($conn, "INSERT INTO employees (name, surname) VALUES ('Maxim', 'Maletsky')");

    // Ex&eacute;cution de la requ&ecirc;te
    OCIExecute($stmt);

    // Validation de la transaction
    $committed = OCICommit($conn);

    // V&eacute;rification de la validation : si une erreur est survenue, afficher
    // le message d'erreur
    if(!$committed) {
        $error = OCIError($conn);
        echo 'Lavalidation a &eacute;chou&eacute;. Oracle dit : ' . $error['message'];
    }

    // Fermeture de la connexion
    OCILogoff($conn);
?>

Voir aussi ocirollback().

Précédent | Sommaire | Suivant
ocicolumntyperaw | Niveau supérieur | ocidefinebyname


ocidefinebyname

(PHP 3>= 3.0.7, PHP 4 )

ocidefinebyname -- Utilise une variable PHP pour la phase de définition, dans une commande SELECT Oracle

Description

bool ocidefinebyname ( resource stmt, string column_name, mixed &variable [, int type])

ocidefinebyname() copie les valeurs issues de colonnes SQL column-name dans les variables PHP. Méfiez-vous des colonnes Oracle qui sont toutes en majuscule, tandis que dans les SELECT, vous pouvez aussi les écrire en minuscules. ocidefinebyname() s'attends à ce que column-name soit en majuscules. Si vous définissez une variable qui n'existe pas dans la commande SELECT, vous ne serez pas prévenu par une erreur.

Si vous avez besoin de définir un type de données abstrait, tel que (LOB/ROWID/BFILE), vous devez lui allouer la mémoire avec ocinewdescriptor(). Reportez-vous aussi à ocibindbyname().

Exemple 1. Exemple avec ocidefinebyname()

<?php
$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"select empno, ename from emp");

/* La d&eacute;finition DOIT intervenir AVANT l'ex&eacute;cution! */

OCIDefineByName($stmt,"EMPNO",$empno);
OCIDefineByName($stmt,"ENAME",$ename);

OCIExecute($stmt);

while (OCIFetch($stmt)) {
    echo "empno :".$empno."\n";
    echo "ename :".$ename."\n";
}

OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Précédent | Sommaire | Suivant
ocicommit | Niveau supérieur | ocierror


ocierror

(PHP 3>= 3.0.7, PHP 4 )

ocierror -- Retourne la dernière erreur de stmt|conn|global sur Oracle

Description

array ocierror ( [resource stmt|conn|global])

ocierror() retourne la dernière erreur trouvée. Si l'option stmt|conn n'est pas fournie, la dernière erreur rencontrée est retournée. Si aucune erreur n'est trouvée, ocierror() retourne FALSE. ocierror() retourne l'erreur sous la forme d'un tableau associatif. Dans ce tableau, l'élément code contient le numéro d'erreur Oracle et message contient le message d'erreur.

Précédent | Sommaire | Suivant
ocidefinebyname | Niveau supérieur | ociexecute


ociexecute

(PHP 3>= 3.0.4, PHP 4 )

ociexecute -- Exécute une commande SQL Oracle

Description

bool ociexecute ( resource stmt [, int mode])

ociexecute() exécute une commande déjà préparée (voir ociparse()). L'option mode vous permet de spécifier le mode d'exécution (par défaut, il est à OCI_COMMIT_ON_SUCCESS). Si vous ne voulez pas que la commande soit automatiquement validée, utilisez le mode OCI_DEFAULT.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ocierror | Niveau supérieur | ocifetch


ocifetch

(PHP 3>= 3.0.4, PHP 4 )

ocifetch -- Lit la prochaine ligne dans le résultat Oracle

Description

bool ocifetch ( resource stmt)

ocifetch() lit la prochaine ligne (d'une commande SELECT) et la place dans le buffer interne de résultat. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ociexecute | Niveau supérieur | ocifetchinto


ocifetchinto

(PHP 3>= 3.0.4, PHP 4 )

ocifetchinto -- Retourne la ligne suivante d'un résultat Oracle dans un tableau

Description

int ocifetchinto ( resource stmt, array &result [, int mode])

ocifetchinto() retourne la ligne suivante (pour une commande SELECT) dans le tableau result. ocifetchinto() écrasera le contenu de result. Par défaut, result sera un tableau à index numérique, commençant à 1, et qui contiendra toute les colonnes qui ne sont pas NULL.

L'option mode vous permet de modifier le comportement par défaut de la fonction. Vous pouvez passer plusieurs modes simplement en les additionnant (i.e. OCI_ASSOC+OCI_RETURN_NULLS). Les modes valides sont :

OCI_ASSOC retourne un tableau associatif.
OCI_NUM retourne un tableau à index numérique (DEFAULT, valeur par défaut)
OCI_RETURN_NULLS retourne les colonnes vides.
OCI_RETURN_LOBS retourne la valeur des objets LOB plutôt que leur descripteur.

Exemple 1. Exemple avec ocifetchinto()

<?php
$conn = ocilogon("username","password");

$query = "SELECT pommes FROM arbre";

$statement = OCIParse ($conn, $query);
OCIExecute ($statement);

while (OCIFetchInto ($statement, $row, OCI_ASSOC)) {
    print $row['pommes'];
}
?>

Voir aussi ocifetch() et ociexecute().

Précédent | Sommaire | Suivant
ocifetch | Niveau supérieur | ocifetchstatement


ocifetchstatement

(PHP 3>= 3.0.8, PHP 4 )

ocifetchstatement -- Retourne toutes les lignes d'un résultat Oracle

Description

int ocifetchstatement ( resource stmt, array &output [, int skip [, int maxrows [, int flags]]])

ocifetchstatement() retourne toutes les lignes d'un résultat dans le tableau variable. ocifetchstatement() retourne le nombre de lignes retournées. skip est le nombre de lignes initiales à ignorer (par défaut, 0). maxrows est le nombre de lignes à lire, en commençant à la skip-ième ligne (par défaut, -1, qui représente toute les lignes).

flags représente les options disponibles pour cette fonction, et qui peuvent être la combinaison des constantes suivantes :

OCI_FETCHSTATEMENT_BY_ROW
OCI_FETCHSTATEMENT_BY_COLUMN (valeur par défaut)
OCI_NUM
OCI_ASSOC

Exemple 1. Exemple avec ocifetchstatement()

<?php
$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"select * from emp");

OCIExecute($stmt);

$nrows = OCIFetchStatement($stmt,$results);
if ( $nrows > 0 ) {
   print "<TABLE BORDER=\"1\">\n";
   print "<TR>\n";
   while ( list( $key, $val ) = each( $results ) ) {
      print "<TH>$key</TH>\n";
   }
   print "</TR>\n";

   for ( $i = 0; $i < $nrows; $i++ ) {
      reset($results);
      print "<TR>\n";
      while ( $column = each($results) ) {
         $data = $column['value'];
         print "<TD>$data[$i]</TD>\n";
      }
      print "</TR>\n";
   }
   print "</TABLE>\n";
} else {
   echo "Aucune donn&eacute;es trouv&eacute;es<BR>\n";
}
print "$nrows lignes lues<BR>\n";

OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Précédent | Sommaire | Suivant
ocifetchinto | Niveau supérieur | ocifreecollection


ocifreecollection

(PHP 4 >= 4.1.0)

ocifreecollection -- Supprime une collection Oracle

Description

bool ocifreecollection ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocifetchstatement | Niveau supérieur | ocifreecursor


ocifreecursor

(PHP 3>= 3.0.8, PHP 4 )

ocifreecursor -- Libère toutes les ressources réservées par un résultat Oracle

Description

bool ocifreecursor ( resource stmt)

ocifreecursor() libère toutes les ressources réservées par le résultat Oracle stmt. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ocifreecollection | Niveau supérieur | ocifreedesc


ocifreedesc

(PHP 4 )

ocifreedesc -- Détruit un pointeur de LOB Oracle

Description

bool ocifreedesc ( void )

ocifreedesc() détruit le pointeur de LOB lob. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ocifreecursor | Niveau supérieur | ocifreestatement


ocifreestatement

(PHP 3>= 3.0.5, PHP 4 )

ocifreestatement -- Libère toutes les ressources occupées par une commande Oracle

Description

bool ocifreestatement ( resource stmt)

ocifreestatement() libère toutes les ressources occupées par la commande stmt. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ocifreedesc | Niveau supérieur | ociinternaldebug


ociinternaldebug

(PHP 3>= 3.0.4, PHP 4 )

ociinternaldebug -- Active ou désactive l'affichage des données de déboggage Oracle

Description

void ociinternaldebug ( int onoff)

ociinternaldebug() active ou désactive l'affichage des informations de déboggage. Pour les afficher, mettez onoff à 1, ou sinon mettez onoff à 0 pour les masquer.

Précédent | Sommaire | Suivant
ocifreestatement | Niveau supérieur | ociloadlob


ociloadlob

(PHP 4 )

ociloadlob -- Charge un LOB Oracle

Description

string ociloadlob ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ociinternaldebug | Niveau supérieur | ocilogoff


ocilogoff

(PHP 3>= 3.0.4, PHP 4 )

ocilogoff -- Déconnecte d'un serveur Oracle

Description

bool ocilogoff ( resource connection)

ocilogoff() ferme la connexion Oracle connection.

Utiliser ocilogoff() n'est pas nécessaire, car les connexions non persistantes seront automatiquement fermées à la fin du script. Voyez aussi le chapitre sur la libération des ressources.

Précédent | Sommaire | Suivant
ociloadlob | Niveau supérieur | ocilogon


ocilogon

(PHP 3>= 3.0.4, PHP 4 )

ocilogon -- Etablit une connexion à un serveur Oracle

Description

resource ocilogon ( string username, string password [, string db])

ocilogon() retourne un identifiant de connexion, nécessaire à la plupart des fonctions oci. Le paramètre optionnel db peut contenir le nom local du serveur Oracle, ou bien son nom dans la table d'entrées tnsnames.ora à laquelle vous voulez vous connecter. Si le troisième paramètre n'est pas spécifié, PHP utilisera la variable d'environnement ORACLE_SID (instance Oracle) ou TWO_TASK (tnsnames.ora) pour déterminer la base à laquelle se connecter.

Les connexions sont partagées, à l'intérieur d'une même page avec ocilogon(). Cela signifie que COMMIT et ROLLBACK s'appliquent à toutes les transactions commencées à l'intérieur d'une même page, même si vous avez créé de multiples connexions.

Les connexions sont partagées au niveau de la page, lorsque vous utilisez ocilogon(). Cela signifie que les validations et annulations s'appliquent à toutes les transactions de la page, même si vous avez créé de multiples connexions à un même serveur Oracle.

Cet exemple montre comment les connexions sont partagées :

Exemple 1. Exemple avec ocilogon()

<?php
print "<HTML><PRE>";
$db = "";

$c1 = ocilogon("scott","tiger",$db);
$c2 = ocilogon("scott","tiger",$db);

function create_table($conn)
{ $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))");
  ociexecute($stmt);
  echo $conn." a cr&eacute;&eacute; une table\n\n";
}

function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." a effac&eacute; une table\n\n";
}

function insert_data($conn)
{ $stmt = ociparse($conn,"insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." a ins&eacute;r&eacute; dans hallo\n\n";
}

function delete_data($conn)
{ $stmt = ociparse($conn,"delete from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." a effac&eacute; dans hallo\n\n";
}

function commit($conn)
{ ocicommit($conn);
  echo $conn." valid&eacute;\n\n";
}

function rollback($conn)
{ ocirollback($conn);
  echo $conn." annul&eacute;\n\n";
}

function select_data($conn)
{ $stmt = ociparse($conn,"select * from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn."----selection\n\n";
  while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
  echo $conn."----fin\n\n";
}

create_table($c1);
insert_data($c1);   // Insertion avec c1
insert_data($c2);   // Insertion avec c2

select_data($c1);   // Resultats des insertions
select_data($c2);

rollback($c1);      // Annulation sur c1

select_data($c1);   // Les deux insertions ont &eacute;t&eacute; annul&eacute;es
select_data($c2);

insert_data($c2);   // Insertion avec c2
commit($c2);        // Validation avec c2

select_data($c1);   // Le r&eacute;sultat de l'insertion via c2

delete_data($c1);   // Effacement de toutes les lignes avec c1
select_data($c1);   // Aucune ligne lue
select_data($c2);   // Aucune ligne lue
commit($c1);        // Validation avec c1

select_data($c1);   // Aucune ligne lue
select_data($c2);   // Aucune ligne lue

drop_table($c1);
print "</PRE></HTML>";
?>

Voir aussi ociplogon() et ocinlogon().

Précédent | Sommaire | Suivant
ocilogoff | Niveau supérieur | ocinewcollection


ocinewcollection

(PHP 4 >= 4.0.6)

ocinewcollection -- Initialise une nouvelle collection

Description

object ocinewcollection ( resource connection, string tdo [, string schema])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocilogon | Niveau supérieur | ocinewcursor


ocinewcursor

(PHP 3>= 3.0.8, PHP 4 )

ocinewcursor -- Retourne un nouveau pointeur à utiliser pour lier les pointeurs de références

Description

resource ocinewcursor ( resource conn)

ocinewcursor() alloue un nouveau pointeur de commande, pour la connexion conn.

Exemple 1. Utiliser un REF CURSOR issue d'une procédure enregistrée

<?php
// supposons que votre proc&eacute;dure stock&eacute;e info.output retourne un curseur de r&eacute;f&eacute;rence dans :data

$conn = OCILogon("scott","tiger");
$curs = OCINewCursor($conn);
$stmt = OCIParse($conn,"begin info.output(:data); end;");

ocibindbyname($stmt,"data",&$curs,-1,OCI_B_CURSOR);
ociexecute($stmt);
ociexecute($curs);

while (OCIFetchInto($curs,&$data)) {
    var_dump($data);
}

OCIFreeStatement($stmt);
OCIFreeCursor($curs);
OCILogoff($conn);
?>

Exemple 2. Utiliser un REF CURSOR issue d'une commande SELECT

<?php
print "<HTML><BODY>";
$conn = OCILogon("scott","tiger");
$count_cursor = "CURSOR(select count(empno) num_emps from emp " .
                "where emp.deptno = dept.deptno) as EMPCNT from dept";
$stmt = OCIParse($conn,"select deptno,dname,$count_cursor");

ociexecute($stmt);
print "<TABLE BORDER=\"1\">";
print "<TR>";
print "<TH>DEPT NAME</TH>";
print "<TH>DEPT #</TH>";
print "<TH># EMPLOYEES</TH>";
print "</TR>";

while (OCIFetchInto($stmt,&$data,OCI_ASSOC)) {
    print "<TR>";
    $dname  = $data["DNAME"];
    $deptno = $data["DEPTNO"];
    print "<TD>$dname</TD>";
    print "<TD>$deptno</TD>";
    ociexecute($data["EMPCNT"]);
    while (OCIFetchInto($data["EMPCNT"],&$subdata,OCI_ASSOC)) {
        $num_emps = $subdata["NUM_EMPS"];
        print  "<TD>$num_emps</TD>";
    }
    print "</TR>";
}
print "</TABLE>";
print "</BODY></HTML>";
OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Précédent | Sommaire | Suivant
ocinewcollection | Niveau supérieur | ocinewdescriptor


ocinewdescriptor

(PHP 3>= 3.0.7, PHP 4 )

ocinewdescriptor -- Initialise un nouveau pointeur vide de LOB/FILE

Description

object ocinewdescriptor ( resource connection [, int type])

ocinewdescriptor() alloue l'espace nécessaire pour stocker un descripteur, ou un pointeur de LOB. Les valeurs acceptées pour type sont OCI_D_FILE, OCI_D_LOB et OCI_D_ROWID. Pour les pointeurs de LOB, les méthodes load, save, et savefile sont associées avec le pointeur. Pour les pointeurs de type BFILE, seule la méthode load existe. Voyez le second exemple pour une illustration.

Exemple 1. ocinewdescriptor

<?php
    /* Ce script est fait pour &ecirc;tre appel&eacute; dans un formulaire HTML
     * Il attends les variables $user, $password, $table, $where, et $commitsize
     * Le script efface alors les lignes s&eacute;lectionn&eacute;es avec ROWID et valide
     * l'effacement apr&egrave;s chaque groupe de $commitsize lignes.
     * (Utilisez avec prudence, car il n'y a pas d'annulation possible).
     */
    $conn = OCILogon($user, $password);
    $stmt = OCIParse($conn,"select rowid from $table $where");
    $rowid = OCINewDescriptor($conn,OCI_D_ROWID);
    OCIDefineByName($stmt,"ROWID",&$rowid);
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
       $nrows = OCIRowCount($stmt);
       $delete = OCIParse($conn,"delete from $table where ROWID = :rid");
       OCIBindByName($delete,":rid",&$rowid,-1,OCI_B_ROWID);
       OCIExecute($delete);
       print "$nrows\n";
       if ( ($nrows % $commitsize) == 0 ) {
           OCICommit($conn);
       }
    }
    $nrows = OCIRowCount($stmt);
    print "$nrows deleted...\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
?>
<?php
    /* Ce script est fait pour &ecirc;tre appel&eacute; depuis un formulaire HTML.
     * Il attends les variables $user, $password, $table, $where, et $commitsize,
     * donn&eacute;es par le formulaire. Le script efface
     * les lignes s&eacute;lectionn&eacute;es avec ROWID est valide les transactions
     * &agrave; chaque jeu de $commitsize lignes. (Attention : il n'y plus d'annulation) */
  if(!isset($lob_upload) || $lob_upload == 'none'){
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
Fichier &agrave; t&eacute;l&eacute;charger : <input type="file" name="lob_upload"><br>
<input type="submit" value="Envoyer"> - <input type="reset">
</form>
<?php
  } else {

     // $lob_upload contient le nom temporaire du fichier t&eacute;l&eacute;charg&eacute;

     // voir aussi la section fonctionnalit&eacute;s sur les t&eacute;l&eacute;chargements de
     // fichiers si vous voulez utiliser des t&eacute;l&eacute;chargements s&eacute;curis&eacute;s

     $conn = OCILogon($user, $password);
     $lob = OCINewDescriptor($conn, OCI_D_LOB);
     $stmt = OCIParse($conn,"insert into $table (id, the_blob)
               values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob");
     OCIBindByName($stmt, ':the_blob', &$lob, -1, OCI_B_BLOB);
     OCIExecute($stmt, OCI_DEFAULT);
     if($lob->savefile($lob_upload)){
        OCICommit($conn);
        echo "Blob bien t&eacute;l&eacute;charg&eacute;\n";
     }else{
        echo "Impossible de t&eacute;l&eacute;charger le Blob\n";
     }
     OCIFreeDesc($lob);
     OCIFreeStatement($stmt);
     OCILogoff($conn);
  }
?>

Exemple 2. Exemple avec ocinewdescriptor()

<?php
    /* Appel d'une proc&eacute;dure PL/SQL stock&eacute;e qui prend un clobs
     * en entr&eacute;e (PHP 4 >= 4.0.6).
     * Exemple de signateure de proc&eacute;dure stock&eacute;e PL/SQL :
     *
     * PROCEDURE save_data
     *   Nom de l'argument              Type                    In/Out Default?
     *   ------------------------------ ----------------------- ------ --------
     *   KEY                            NUMBER(38)              IN
     *   DATA                           CLOB                    IN
     *
     */

    $conn = OCILogon($user, $password);
    $stmt = OCIParse($conn, "begin save_data(:key, :data); end;");
    $clob = OCINewDescriptor($conn, OCI_D_LOB);
    OCIBindByName($stmt, ':key', $key);
    OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB);
    $clob->WriteTemporary($data);
    OCIExecute($stmt, OCI_DEFAULT);
    OCICommit($conn);
    $clob->close();
    $clob->free();
    OCIFreeStatement($stmt);
?>

Précédent | Sommaire | Suivant
ocinewcursor | Niveau supérieur | ocinlogon


ocinlogon

(PHP 3>= 3.0.8, PHP 4 )

ocinlogon -- Etablit une nouvelle correction avec un serveur Oracle

Description

resource ocinlogon ( string username, string password [, string db])

ocinlogon() crée une nouvelle connexion à un serveur Oracle et s'identifie. Le paramètre optionnel db peut contenir le nom local du serveur Oracle, ou bien son nom dans la table d'entrées tnsnames.ora à laquelle vous voulez vous connecter. Si le troisième paramètre n'est pas spécifié, PHP utilisera la variable d'environnement ORACLE_SID (instance Oracle) ou TWO_TASK (tnsnames.ora) pour déterminer la base à laquelle se connecter.

ocinlogon() force le serveur à établir une nouvelle connexion. Cette fonction ne doit être utilisée que si vous voulez isoler un ensemble de transactions. Par défaut, les connexions sont partagées au niveau de la page, si vous utilisez la fonction ocinlogon() ou bien au niveau du processus web, si vous utilisez ociplogon(). Si vous avez de multiples connexions ouvertes avec ocinlogon(), les validations et annulations ne s'appliquent qu'à la connexion spécifée.

L'exemple ci-dessous montre l'utilisation des connexions séparées.

Exemple 1. Exemple avec ocinlogon()

<?php
print "<HTML><PRE>";
$db = "";

$c1 = ocilogon("scott","tiger",$db);
$c2 = ocinlogon("scott","tiger",$db);

function create_table($conn)
{ $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))");
  ociexecute($stmt);
  echo $conn." a cr&eacute;&eacute; une table\n\n";
}

function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." a effac&eacute; une table\n\n";
}

function insert_data($conn)
{ $stmt = ociparse($conn,"insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." a ins&eacute;r&eacute; dans hallo\n\n";
}

function delete_data($conn)
{ $stmt = ociparse($conn,"delete from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." a effac&eacute; dans hallo\n\n";
}

function commit($conn)
{ ocicommit($conn);
  echo $conn." valid&eacute;\n\n";
}

function rollback($conn)
{ ocirollback($conn);
  echo $conn." annul&eacute;\n\n";
}

function select_data($conn)
{ $stmt = ociparse($conn,"select * from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn."----selection\n\n";
  while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
  echo $conn."----fin\n\n";
}

create_table($c1);
insert_data($c1);

select_data($c1);
select_data($c2);

rollback($c1);

select_data($c1);
select_data($c2);

insert_data($c2);
commit($c2);

select_data($c1);

delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);

select_data($c1);
select_data($c2);

drop_table($c1);
print "</PRE></HTML>";
?>

Voir aussi ocilogon() et ociplogon().

Précédent | Sommaire | Suivant
ocinewdescriptor | Niveau supérieur | ocinumcols


ocinumcols

(PHP 3>= 3.0.4, PHP 4 )

ocinumcols -- Retourne le nombre de colonnes dans un résultat

Description

int ocinumcols ( resource stmt)

ocinumcols() retourne le nombre de colonnes dans le résultat stmt.

Exemple 1. Exemple avec ocinumcols()

<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
        print "\n";
        $ncols = OCINumCols($stmt);
        for ( $i = 1; $i <= $ncols; $i++ ) {
            $column_name  = OCIColumnName($stmt,$i);
            $column_value = OCIResult($stmt,$i);
            print $column_name . ': ' . $column_value . "\n";
        }
        print "\n";
    }
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

Précédent | Sommaire | Suivant
ocinlogon | Niveau supérieur | ociparse


ociparse

(PHP 3>= 3.0.4, PHP 4 )

ociparse -- Analyse une requête SQL avec Oracle

Description

resource ociparse ( resource conn, string query)

ociparse() analyse la requête query sur la connexion conn, et retourne TRUE si la requête query est valide, et FALSE, si ce n'est pas le cas. query peut être n'importe quelle requête SQL.

Précédent | Sommaire | Suivant
ocinumcols | Niveau supérieur | ociplogon


ociplogon

(PHP 3>= 3.0.8, PHP 4 )

ociplogon -- Ouvre une connexion persistante à un serveur Oracle

Description

resource ociplogon ( string username, string password [, string db])

ociplogon() crée une connexion persistante à un serveur Oracle 8 et s'authentifie. Le paramètre optionnel db peut contenir le nom local du serveur Oracle, ou bien son nom dans la table d'entrées tnsnames.ora à laquelle vous voulez vous connecter. Si le troisième paramètre n'est pas spécifié, PHP utilisera la variable d'environnement ORACLE_SID (instance Oracle) ou TWO_TASK (tnsnames.ora) pour déterminer la base à laquelle se connecter.

Voir aussi ocilogon() et ocinlogon().

Précédent | Sommaire | Suivant
ociparse | Niveau supérieur | ociresult


ociresult

(PHP 3>= 3.0.4, PHP 4 )

ociresult -- Retourne la valeur d'une colonne dans un résultat Oracle

Description

mixed ociresult ( resource statement, mixed col)

ociresult() retourne les données de la colonne column dans la ligne courante (voir ocifetch()). ocifetch() retournera tout les types, sauf les types abstraits (ROWIDs, LOBs et FILEs).

Précédent | Sommaire | Suivant
ociplogon | Niveau supérieur | ocirollback


ocirollback

(PHP 3>= 3.0.7, PHP 4 )

ocirollback -- Annule les transactions Oracle en cours

Description

bool ocirollback ( resource connection)

ocirollback() annule les transactions en cours sur la connexion Oracle connection. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi ocicommit().

Précédent | Sommaire | Suivant
ociresult | Niveau supérieur | ocirowcount


ocirowcount

(PHP 3>= 3.0.7, PHP 4 )

ocirowcount -- Retourne le nombre de lignes affectées par Oracle

Description

int ocirowcount ( resource stmt)

ocirowcount() retourne le nombre de lignes affectées par la commande de modification (UPDATE) statement. Cette fonction ne vous indiquera pas le nombre de lignes retournées par un SELECT : il faut que les lignes aient été modifiées.

Exemple 1. Exemple avec ocirowcount()

<?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $stmt = OCIParse($conn,"create table emp2 as select * from emp");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows inserted.<BR>";
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"delete from emp2");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows deleted.<BR>";
    OCICommit($conn);
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"drop table emp2");
    OCIExecute($stmt);
    OCIFreeStatement($stmt);
    OCILogOff($conn);
    print "</PRE></HTML>";
?>

Précédent | Sommaire | Suivant
ocirollback | Niveau supérieur | ocisavelob


ocisavelob

(PHP 4 )

ocisavelob -- Sauve un LOB Oracle

Description

bool ocisavelob ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocirowcount | Niveau supérieur | ocisavelobfile


ocisavelobfile

(PHP 4 )

ocisavelobfile -- Sauve un fichier LOB Oracle

Description

bool ocisavelobfile ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocisavelob | Niveau supérieur | ociserverversion


ociserverversion

(PHP 3>= 3.0.4, PHP 4 )

ociserverversion -- Retourne une chaîne contenant les informations de version du serveur Oracle

Description

string ociserverversion ( resource conn)

ociserverversion() retourne une chaîne contenant les informations de version du serveur Oracle, identifié par la connexion conn.

Exemple 1. Exemple avec ociserverversion()

<?php
   $conn = OCILogon("scott","tiger");
   print "Version du serveur Oracle : " . OCIServerVersion($conn);
   OCILogOff($conn);
?>

Précédent | Sommaire | Suivant
ocisavelobfile | Niveau supérieur | ocisetprefetch


ocisetprefetch

(PHP 3>= 3.0.12, PHP 4 )

ocisetprefetch -- Indique le nombre de lignes qui doivent être pré-lues par Oracle

Description

bool ocisetprefetch ( resource stmt, int rows)

ocisetprefetch() spécifie le nombre des premières lignes qui doivent être pré-lues à rows pour la connexion Oracle stmt. La valeur par défaut de rows est 1 ligne.

Précédent | Sommaire | Suivant
ociserverversion | Niveau supérieur | ocistatementtype


ocistatementtype

(PHP 3>= 3.0.5, PHP 4 )

ocistatementtype -- Retourne le type de commande OCI

Description

string ocistatementtype ( resource stmt)

ocistatementtype() retourne une des valeurs suivantes :

  1. SELECT

  2. UPDATE

  3. DELETE

  4. INSERT

  5. CREATE

  6. DROP

  7. ALTER

  8. BEGIN

  9. DECLARE

  10. UNKNOWN

Exemple 1. Exemple avec ocistatementtype()

<?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $sql  = "delete from emp where deptno = 10";

    $stmt = OCIParse($conn,$sql);
    if ( OCIStatementType($stmt) == "DELETE" ) {
        die "Nous n'&ecirc;tes pas autoris&eacute;s &agrave; effacer des lignes dans cette table<BR>";
    }

    OCILogoff($conn);
    print "</PRE></HTML>";
?>

Précédent | Sommaire | Suivant
ocisetprefetch | Niveau supérieur | ociwritelobtofile


ociwritelobtofile

(PHP 4 )

ociwritelobtofile -- Ecrit un LOB Oracle dans un fichier

Description

bool ociwritelobtofile ( [string filename [, int start [, int length]]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ocistatementtype | Niveau supérieur | ociwritetemporarylob


ociwritetemporarylob

(no version information, might be only in CVS)

ociwritetemporarylob -- Ecrit un blob temporaire

Description

bool ociwritetemporarylob ( string var [, int lob_type])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
ociwritelobtofile | Niveau supérieur | OpenSSL


OpenSSL

Manuel PHP
Précédent Suivant

LXXIV. OpenSSL

Introduction

Cette extension utilise les fonctions de OpenSSL pour générer et vérifier les signatures, ainsi que pour sceller (chiffrer) et ouvrir (déchiffrer) les données. Vous avez besoin de OpenSSL >= 0.9.5 pour utiliser ce module.

Pré-requis

Afin de pouvoir utiliser les fonctions OpenSSL, vous devez installer les fonctions OpenSSL. PHP-4.0.4pl1 requiert OpenSSL >= 0.9.6, mais PHP-4.0.5 est plus récent fonctionneront aussi avec OpenSSL >= 0.9.5.

Installation

Pour utiliser le support OpenSSL de PHP, vous devez aussi compiler PHP avec l'option de configuration --with-openssl[=DIR].

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies libeay32.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32).

De plus, si vous envisagez de générer des clés et de signer des messages, vous devez installer un fichier openssl.cnf valide sur votre système. Depuis PHP 4.3.0, une configuration simple est incluse dans le dossier openssl de la distribution Windows. Si vous utilisez PHP PHP 4.2.0 ou plus ancien, et que ces fichiers manquent, vous pouvez les télécharger sur le site d'OpenSSL ou en téléchargeant les fichiers de configuration de PHP 4.3.0.

Note aux utilisateurs Win32 : PHP va rechercher le fichier openssl.cnf suivant la tactique suivante :

  • La variable d'environnement OPENSSL_CONF, si elle est définie, sera utilisée comme chemin (comprenant le fichier) vers le fichier de configuration.

  • La variable d'environnement SSLEAY_CONF, si elle est définie, sera utilisée comme chemin (comprenant le fichier) vers le fichier de configuration.

  • Le fichier openssl.cnf sera suppoé se trouver dans le dossier des certificats, tel que configuré lors de la compilation de la librairie openssl. Cela signifie généralement c:\usr\local\ssl\openssl.cnf.

Dans votre installation, vous devrez décider si vous allez installer le fichier dans c:\usr\local\ssl\openssl.cnf ou si vous allez l'installer ailleurs et configurer une variable d'environnement (possiblement par site virtuel). Notez qu'il est possible de remplacer le chemin par défaut en utilisant le paramètre configargs des fonctions qui requièrent un fichier de configuration.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Options de validations générales

X509_PURPOSE_SSL_CLIENT entier

X509_PURPOSE_SSL_SERVER entier

X509_PURPOSE_NS_SSL_SERVER entier

X509_PURPOSE_SMIME_SIGN entier

X509_PURPOSE_SMIME_ENCRYPT entier

X509_PURPOSE_CRL_SIGN entier

X509_PURPOSE_ANY entier

Options de remplissage (Padding)

OPENSSL_PKCS1_PADDING entier

OPENSSL_SSLV23_PADDING entier

OPENSSL_NO_PADDING entier

OPENSSL_PKCS1_OAEP_PADDING entier

Types de clés

OPENSSL_KEYTYPE_RSA entier

OPENSSL_KEYTYPE_DSA entier

OPENSSL_KEYTYPE_DH entier

Constantes/options PKCS7

Les fonctions S/MIME utilisent des options qui sont spécifiés par un champ de bits. Les valeurs valides sont :

Tableau 1. Constantes PKCS7

Constante | Description
PKCS7_TEXT | Ajoute le texte plein en clair dans les en-têtes du message signé/chiffré. Lors du déchiffrement ou la vérification, il supprime purement et simplement ces données. Si le message chiffré ou signé n'est pas du type MIME, une erreur surviendra.
PKCS7_BINARY | Normalement, le message est converti au format canonique qui utilise effectivement des CR et LF comme fin de ligne, comme demandé dans les spécification de S/MIME. Lorsque cette option est activée, le message ne sera pas converti. Cela sert lorsque vous manipulez des données binaires qui ne sont pas au format MIME.
PKCS7_NOINTERN | Lors de la vérification d'un message, les certificats (s'il y en a) inclus dans le message sont normalement utilisé pour rechercher le certificat de signature. Avec cette option, seul le certificat spécifié par le paramètre extracerts de la fonction openssl_pkcs7_verify() est utilisé. Les certificats fournis peuvent toujours être utilisé, avec un niveau de confiance réduit.
PKCS7_NOVERIFY | Ne vérifie pas les certificats des signataires d'un message signé.
PKCS7_NOCHAIN | N'enchaîne pas les vérifications des signataires de certificats. C'est-à-dire, n'utilise pas les certificats contenu dans le message.
PKCS7_NOCERTS | Lors de la signature d'un message, le certificat du signataire est normalement inclus. Avec cette option, c'est désactivé. Cela va réduire la taille du message, mais le vérificateur devra avoir une copie local du certificat du signataire (passée au paramètre extracerts, avec la fonction openssl_pkcs7_verify()).
PKCS7_NOATTR | Normalement, lorsqu'un message est signé, un jeu d'attributs contenant l'heure de signature et l'algorithme symétrique supporté, est inclus dans le message. Avec cette option, il n'est pas inclus.
PKCS7_DETACHED | Lors de la signature d'un message, utilise la signature en texte claire, avec le type MIME "multipart/signed". C'est la valeur par défaut du paramètre flags pour la fonction openssl_pkcs7_sign(). Si vous annulez cette option, le message sera signé de manière opaque, ce qui résiste mieux à la traduction des relais emails (certains serveurs mail anciens corrompent les messages), mais empêche la lecture par les client emails qui ne connaissent pas S/MIME.
PKCS7_NOSIGS | Ne vérifie pas les signatures d'une message

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Paramètres clés/certificats

Un bon nombre de fonctions OpenSSL demandent une clé et un certificat comme paramètres. PHP 4.0.5 et plus récent utilisait des clés ou certificats sous forme de ressource, retournée par l'une des fonctions openssl_get_xxx(). Les versions ultérieures utilisent l'une des méthodes suivantes :

  • Certificats

    1. Une ressource X.509 retournée par openssl_x509_read()

    2. Une chaîne au format file://path/to/cert.pem; Le fichier ainsi repéré doit contenir un certificat, encodé au format PEM

    3. Une chaîne contenant le contenu d'un certificat, encodé au format PEM.

  • Clés publiques/privée

    1. Une ressource clé, retournée par la fonction openssl_get_publickey() ou openssl_get_privatekey()

    2. Pour les clés publiques seulement : une ressource X.509

    3. Une chaîne avec le format : file://path/to/file.pem. Le fichier doit contenir une clé privé ou un certificat, encodé au format PEM (il peut contenir les deux).

    4. Une chaîne contenant une clé ou un certificat encodé au format PEM

    5. Pour les clés privées, vous pouvez aussi utiliser la syntaxe array($key, $passphrase), où $key représente une clé spécifiée par un fichier ou une représentation textuelle comme cité ci-dessus, et $passphrase représente une chaîne contenant la passe-phrase de cette clé privée.

Vérification de certificats

Lorsque vous appelez une fonction qui va vérifier une signature ou un certificat, le paramètre cainfo doit être un tableau contenant les noms d'un dossier et d'un fichier contenant les tiers de confiance. Si un dossier est spécifié, il doit être correct, car openssl va l'utiliser.

Table des matières
openssl_csr_export_to_file -- Exporte une CSR vers un fichier
openssl_csr_export -- Exporte un CSR vers un fichier ou une variable
openssl_csr_new -- Génère une clé privée et un CSR
openssl_csr_sign -- Signe un certificat avec un autre certificat
openssl_error_string -- Retourne le message d'erreur OpenSSL
openssl_free_key -- Libère les ressources
openssl_get_privatekey -- Prépare une clé privée au format PEM
openssl_get_publickey -- Extrait une clé publique d'un certificat
openssl_open -- Ouvre des données scellées
openssl_pkcs7_decrypt -- Déchiffre un message S/MIME
openssl_pkcs7_encrypt -- Chiffre un message S/MIME
openssl_pkcs7_sign -- Signe un message S/MIME
openssl_pkcs7_verify -- Vérifie la signature d'un message S/MIME
openssl_pkey_export_to_file -- Sauve une clé au format ASCII dans un fichier
openssl_pkey_export -- Lit une représentation exportable de la clé dans une chaîne ou un fichier
openssl_pkey_get_private -- Lit une clé privée
openssl_pkey_get_public -- Extrait une clé privée d'un certificat, et la prépare
openssl_pkey_new -- Génère une nouvelle clé privée
openssl_private_decrypt -- Déchiffre des données avec une clé privée
openssl_private_encrypt -- Chiffre des données avec une clé privée
openssl_public_decrypt -- Déchiffre des données avec une clé publique
openssl_public_encrypt -- Chiffre des données avec une clé publique
openssl_seal -- Scelle des données
openssl_sign -- Signe les données
openssl_verify -- Vérifie une signature
openssl_x509_check_private_key -- Vérifie si une clé privée correspon à un CERT
openssl_x509_checkpurpose -- Vérifie l'usage d'un certificat
openssl_x509_export_to_file -- Exporte un CERT vers un fichier ou une variable
openssl_x509_export -- Exporte un CERT vers une variable
openssl_x509_free -- Libère les ressources prises par un certificat
openssl_x509_parse -- Analyse un certificat X509
openssl_x509_read -- Analyse un certificat X.509 et retourne une ressource

Précédent | Sommaire | Suivant
ociwritetemporarylob | Niveau supérieur | openssl_csr_export_to_file


openssl_csr_export_to_file

(PHP 4 >= 4.2.0)

openssl_csr_export_to_file -- Exporte une CSR vers un fichier

Description

bool openssl_csr_export_to_file ( resource csr, string outfilename [, bool notext])

openssl_csr_export_to_file() prend la CSR représentée par le paramètre csr et le sauve dans le fichier nommé outfilename.

Le paramètre optionnel notext affecte le niveau de détails du résultat. Si il vaut FALSE, alors des informations supplémentaires lisibles seront inclues dans le résultat. La valeur par défaut de notext est TRUE.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi
openssl_csr_export(),
openssl_csr_new() et
openssl_csr_sign().

Précédent | Sommaire | Suivant
OpenSSL | Niveau supérieur | openssl_csr_export


openssl_csr_export

(PHP 4 >= 4.2.0)

openssl_csr_export -- Exporte un CSR vers un fichier ou une variable

Description

bool openssl_csr_export ( resource csr, string &out [, bool notext])

openssl_csr_export() convertit la requête de signature de certificat représentée par csr au format ASCII et la stocke dans la variable out, qui est passée par référence.

Le paramètre optionnel notext affecte le niveau de détails du résultat. Si il vaut FALSE, alors des informations supplémentaires lisibles seront inclues dans le résultat. La valeur par défaut de notext est TRUE.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le paramètre optionnel notext affecte la quantité de données affichées par l'opération : si ce paramètre vaut FALSE, alors des informations supplémentaires et compréhensibles sont ajoutées dans l'affichage. La valeur par défaut de notext est TRUE

Voir aussi
openssl_csr_export_to_file(),
openssl_csr_new() et
openssl_csr_sign().

Précédent | Sommaire | Suivant
openssl_csr_export_to_file | Niveau supérieur | openssl_csr_new


openssl_csr_new

(PHP 4 >= 4.2.0)

openssl_csr_new -- Génère une clé privée et un CSR

Description

bool openssl_csr_new ( array dn, resource privkey [, array configargs [, array extraattribs]])

openssl_csr_new() génère une nouvelle CSR (Certificate Signing Request, requête de signature de certificat), basé sur les informations fournies par dn, qui représente le nom distingué (Distinguished Name) qui doit être utilisé pour ce certificat.

privkey doit être une clé privée qui a été générée par openssl_pkey_new() (ou obtenue autrement par l'une des fonctions de la famille openssl_pkey) La clé publique sera utilisée pour signer la CSR.

extraattribs est utilisé pour spécifier des options de configuration supplémentaires pour la CSR. Les deux paramètres dn et extraattribs sont des tableaux associatifs dont les clés sont converties en OIDs et appliquées aux parties appropriées de la requête.

Note : Vous devez installer un fichier openssl.cnf valide pour que cette fonction opère correctement. Voyez les notes dans la section installation pour plus d'informations.

Par défaut, les informations du fichier openssl.conf de votre système sont utilisées pour initialiser la requête; vous pouvez spécifier une section du fichier de configuration en utilisant l'index config_section_section du tableau configargs. Vous pouvez aussi spécifier une configuration OpenSSL alternative en utilisant l'index config, et en lui donnant la valeur du chemin à utiliser. Les index suivants, si fournis dans le paramètre configargs, se comportent comme leur équivalent du fichier openssl.conf, tel qu'indiqué ci-dessous.

Tableau 1. Adaptation des configurations

Index configargs | Type | Equivalent openssl.conf | Description
digest_alg | chaîne de caractères | default_md | Sélectionne la méthode "digest" à utiliser
x509_extensions | chaîne de caractères | x509_extensions | Sélectionne quelles extensions doivent être utilisées lors de la création du certificat x509
req_extensions | chaîne de caractères | req_extensions | Sélectionne quelles extensions doivent être utilisées lors de la création d'une CSR
private_key_bits | integer | default_bits | Spécifie le nombre de bits à utiliser lors de la génération de la clé privée
private_key_type | integer | none | Spécifie le type de clé privée à générer. Cela peut êtr l'une des constantes suivantes : OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH ou OPENSSL_KEYTYPE_RSA. La valeur par défaut est OPENSSL_KEYTYPE_RSA, ce qui est le seul type de clé actuellement supporté.
encrypt_key | booean | encrypt_key | Doit être une clée exportée (avec mot de passe) qui sera chiffrée?

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec openssl_csr_new() - création d'un certificat auto chiffré

// Assigne les valeurs du nom distingu&eacute; &agrave; utiliser avec le certificat
// Vous devez remplacer les valeurs suivantes pour qu'elles correspondent
// au nom de votre compagnie, ou, plus pr&eacute;cis&eacute;ement, le nom de la personne
// qui repr&eacute;sente le site de votre compagnie pour qui vous g&eacute;n&eacute;rez des
// cl&eacute;s. Pour les certificats SSL, le commonName est g&eacute;n&eacute;ralement le nom de domaine
// pour lequel vous installez le certificat, mais pour les certificats
// le commonName sera le nom de la personne qui utilisera le cerficat.
$dn = array(
    "countryName" => "UK",
    "stateOrProvinceName" => "Somerset",
    "localityName" => "Glastonbury",
    "organizationName" => "The Brain Room Limited",
    "organizationalUnitName" => "PHP Documentation Team",
    "commonName" => "Wez Furlong",
    "emailAddress" => "wez@php.net"
);

// G&eacute;n&egrave;re la cl&eacute; priv&eacute; et publique
$privkey = openssl_pkey_new();

// G&eacute;n&egrave;re la requ&ecirc;te de signature de certificat
$csr = openssl_csr_new($dn, $privkey);

// Vous souhaiterez g&eacute;n&eacute;ralement cr&eacute;er un certificat auto chiffr&eacute;
// une fois que votre autorit&eacute; de certification acc&egrave;de &agrave; votre requ&ecirc;te
// Cette commande cr&eacute;e une certificat auto chiffr&eacute;
$sscert = openssl_csr_sign($csr, null, $privkey, 365);

// Maintenant, vous voulez pr&eacute;server la cl&eacute; secr&ecirc;te, la CSR et le certificat
// auto-chiffr&eacute;, de fa&ccedil;on &agrave; ce qu'ils puissent &ecirc;tre install&eacute;s sur votre
// serveur web, serveur mail ou client mail (suivant l'utilisation).
// Cet exemple vous montre comment placer ces &eacute;l&eacute;ments dans des variables
// mais vous pouvez aussi les mettre directement dans des fichiers.
// Typiquement, vous allez envoyer la CSR &agrave; votre autorit&eacute; de certification
// qui vous &eacute;mettra un "vrai" certificat.
openssl_csr_export($csr, $csrout) and debug_zval_dump($csrout);
openssl_x509_export($sscert, $certout) and debug_zval_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and debug_zval_dump($pkeyout);

// Affiche les erreurs qui sont survenues
while (($e = openssl_error_string()) !== false) {
    echo $e . "\n";
}

Précédent | Sommaire | Suivant
openssl_csr_export | Niveau supérieur | openssl_csr_sign


openssl_csr_sign

(PHP 4 >= 4.2.0)

openssl_csr_sign -- Signe un certificat avec un autre certificat

Description

resource openssl_csr_sign ( mixed csr, mixed cacert, mixed priv_key, int days)

openssl_csr_sign() génère un certificat x509 (une ressource) depuis la CSR csr, générée précédemment par openssl_csr_new(), mais ce paramètre peut aussi être une CSR encodée au format PEM, et spécifiée avec file://path/to/csr ou une chaîne exportée par openssl_csr_export(). Le certificat généré sera signé par le certificat cacert. Si cacert vaut NULL, le certificat généré sera auto-signé. priv_key est la clé privée qui correspond au certificat cacert. days spécifie la durée pour laquelle le certificat est valide, en nombre de jour.

openssl_csr_sign() retourne une ressource de certificat x509 en cas de succès, et FALSE sinon.

Note : Vous devez installer un fichier openssl.cnf valide pour que cette fonction opère correctement. Voyez les notes dans la section installation pour plus d'informations.

Exemple 1. Exemple avec openssl_csr_sign() : signer une CSR (comment réaliser votre propre autorité de certification)

// Supposont que ce script est configur&eacute; pour recevoir des CSR qui ont
// &eacute;t&eacute; coll&eacute; dans un champ textarea depuis une autre page
$csrdata = $_POST["CSR"];

// Nous allons signer la requ&ecirc;te avec notre propre certificat, en tant
// qu'"autorit&eacute; de certification". Vous pouvez utiliser n'importe quel
// certificat pour en signer un autre, mais le processus est inutile &agrave; moins
// que le certificat de signature n'ai la confiance des utilisateurs
// qui utiliseront le nouveau certificat sign&eacute;.

// Nous avons besoin de notre certificat et de la cl&eacute; priv&eacute;e
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "la_cle_secrete_de_votre_certificat");

$userscert = openssl_csr_sign($csrdata, $cacert, $privkey, 365);

// Affichons maintenant le certificat g&eacute;n&eacute;r&eacute;, ce fa&ccedil;on &agrave; ce que l'utilisateur
// puisse le copier/coller dans leur configuration locale ( comme par exemple un
// fichier qui contient les certificats de leur serveur SSL)
openssl_x509_export($usercert, $certout) and echo $certout;

// Affiche toutes les erreurs survenues
while (($e = openssl_error_string()) !== false) {
    echo $e . "\n";
}

Précédent | Sommaire | Suivant
openssl_csr_new | Niveau supérieur | openssl_error_string


openssl_error_string

(PHP 4 >= 4.0.6)

openssl_error_string -- Retourne le message d'erreur OpenSSL

Description

mixed openssl_error_string ( void )

openssl_error_string() retourne un message d'erreur, sous forme de chaîne de caractères, ou FALSE s'il n'y a pas de message d'erreur.

openssl_error_string() retourne la dernière erreur de la librairie OpenSSL. Les messages d'erreurs sont empilés, et openssl_error_string() doit être appelé plusieurs fois pour afficher toutes les erreurs.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Exemple 1. Exemple avec openssl_error_string()

<?php
// Imaginons que vous avez appel&eacute; une fonction qui a &eacute;mis une erreur
  while($msg = openssl_error_string){
    echo $msg . "<BR>";
  }
?>

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_csr_sign | Niveau supérieur | openssl_free_key


openssl_free_key

(PHP 4 >= 4.0.4)

openssl_free_key -- Libère les ressources

Description

void openssl_free_key ( resource key_identifier)

openssl_free_key() libère les ressources associées à key_identifier.

Précédent | Sommaire | Suivant
openssl_error_string | Niveau supérieur | openssl_get_privatekey


openssl_get_privatekey

(PHP 4 >= 4.0.4)

openssl_get_privatekey -- Prépare une clé privée au format PEM

Description

resource openssl_get_privatekey ( mixed key [, string passphrase])

openssl_get_privatekey() retourne un identifiant de clé positif, ou FALSE en cas d'erreur.

openssl_get_privatekey() analyse la clé privée key, au format PEM, et la prépare pour à être utilisée par d'autres fonctions. Le paramètre optionnel passphrase doit être utilisé si la clé est chiffrée (protégée par un mot de passe).

Précédent | Sommaire | Suivant
openssl_free_key | Niveau supérieur | openssl_get_publickey


openssl_get_publickey

(PHP 4 >= 4.0.4)

openssl_get_publickey -- Extrait une clé publique d'un certificat

Description

resource openssl_get_publickey ( mixed certificate)

openssl_get_publickey() retourne un identifiant de clé positif, ou FALSE en cas d'erreur.

openssl_get_publickey() extrait la clé publique du certificat certificate (format X.509), et la prépare à être utilisée ultérieurement.

Précédent | Sommaire | Suivant
openssl_get_privatekey | Niveau supérieur | openssl_open


openssl_open

(PHP 4 >= 4.0.4)

openssl_open -- Ouvre des données scellées

Description

bool openssl_open ( string sealed_data, string open_data, string env_key, mixed priv_key_id)

openssl_open() ouvre (déchiffre) les données sealed_data en utilisant la clé prviée priv_key_id et la clé d'enveloppe env_key et remplis open_data avec les données déchiffrées. La clé d'enveloppe est générée lorsque les données sont scellées, et ne peut être utilisée qu'avec la clé privée spécifique. Reportez-vous à openssl_seal() pour plus d'informations.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. En cas de succès, les données déchiffrées sont placées dans open_data.

Exemple 1. Exemple avec openssl_open()

<?php
// On suppose que $sealed et $env_key contiennent les donn&eacute;es scell&eacute;es
// et la cl&eacute; d'enveloppe, fournies par l'exp&eacute;diteur
// lecture de la cl&eacute; priv&eacute;e dans un fichier
  $fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
  $priv_key = fread($fp, 8192);
  fclose($fp);
  $pkeyid = openssl_get_privatekey($priv_key);
// d&eacute;chiffrage des donn&eacute;es : elles sont plac&eacute;es dans $open
  if (openssl_open($sealed, $open, $env_key, $pkeyid)) {
    echo "Voici les donn&eacute;es d&eacute;chiffr&eacute;es : ", $open;
  } else {
    echo "Impossible de d&eacute;chiffrer les donn&eacute;es";
  }
// lib&eacute;ration des ressources
  openssl_free_key($pkeyid);
?>

Voir aussi openssl_seal().

Précédent | Sommaire | Suivant
openssl_get_publickey | Niveau supérieur | openssl_pkcs7_decrypt


openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6)

openssl_pkcs7_decrypt -- Déchiffre un message S/MIME

Description

bool openssl_pkcs7_decrypt ( string infilename, string outfilename, mixed recipcert [, mixed recipkey])

openssl_pkcs7_decrypt() déchiffre le message S/MIME contenu dans le fichier infilename, en utilisant le certificat et la clé privée spécifiés par recipcert et recipkey. Le message déchiffré sera écrit dans le fichier outfilename.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Exemple 1. Exemple avec openssl_pkcs7_decrypt()

<?php
// $cert et $key contiennent vos certificats et cl&eacute;s priv&eacute;s
// On suppose aussi que le message vous est destin&eacute;
$infilename = "message_chiffre.msg";
// Le message chiffr&eacute;
$outfilename = "message_dechiffre.msg";
// Assurez-vous de bien pouvoir &eacute;crire dans ce fichier
if (openssl_pkcs7_decrypt($infilename, $outfilename, $cert, $key))
    echo "d&eacute;chiffr&eacute;!";
else
    echo "impossible de d&eacute;chiffrer!";
?>

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_open | Niveau supérieur | openssl_pkcs7_encrypt


openssl_pkcs7_encrypt

(PHP 4 >= 4.0.6)

openssl_pkcs7_encrypt -- Chiffre un message S/MIME

Description

bool openssl_pkcs7_encrypt ( string infile, string outfile, mixed recipcerts, array headers [, int flags])

openssl_pkcs7_encrypt() prend le contenu du fichier infilename et le chiffre en utilisant un chiffrement RC2 à 40-bit, de manière à ce que le message ne puisse être lu que par le possesseur de recipcerts, qui peut être un certificat X.509, ou un tableau de certificats X.509. headers est un tableau d'en-têtes qui seront ajouté en tête de message, une fois que les données auront été chiffrées. flags peut être utilisé pour spécifier des options qui affecteront le chiffrement (voir les constantes PKCS7). headers peut être un tableau associatif, dont les clés sont les noms d'en-tête, ou bien un tableau indexé dont chaque ligne contient une en-tête complète.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Exemple 1. Exemple avec openssl_pkcs7_encrypt()

<?php
// le message que vous souhaitez chiffrer et envoyer &agrave; votre agent secret
// en mission command&eacute;e, appel&eacute; "nighthawk". Vous avez son certificat
// dans le fichier "nighthawk.pem"
$data = <<<EOD
Nighthawk,
Top secret, uniquement vous votre lecture!
L'ennemi approche! Rendez-vous au caf&eacute; &agrave; 8h30,
pour votre faux passeport.
HQ
EOD;
// sauvez le message dans un fichier
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// chiffrez le
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", "nighthawk.pem",
    array("To" => "nighthawk@agent.com", // keyed syntax
          "From: HQ <hq@cia.com>", // indexed syntax
          "Subject" => "Secret d&eacute;fense")))
{
    // message chiffr&eacute; : envoyez le!
    exec(ini_get("sendmail_path") . " < enc.txt");
}
?>

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_pkcs7_decrypt | Niveau supérieur | openssl_pkcs7_sign


openssl_pkcs7_sign

(PHP 4 >= 4.0.6)

openssl_pkcs7_sign -- Signe un message S/MIME

Description

bool openssl_pkcs7_sign ( string infilename, string outfilename, mixed signcert, mixed privkey, array headers [, int flags [, string extracerts]])

openssl_pkcs7_sign() prend le contenu du fichier infilename et le signe en utilisant le certificat et la clé privée contenus dans les arguments signcert et privkey.

headers est un tableau d'en-têtes qui seront ajouté au données chiffrées (voir la fonction openssl_pkcs7_encrypt() pour plus de détails sur le format du paramètre).

flags sert à modifier le message final. Voyez les constantes PKCS7. Par défaut, la valeur est : PKCS7_DETACHED.

extracerts spécifi le nom du fichier contenant un ensemble de certificat supplémentaires à inclure dans la signature, qui pourront aider le destinataire à vérifier les données que vous utilisez.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Exemple 1. Exemple avec openssl_pkcs7_sign()

<?php
// le message que vous voulez signer, afin que le destinataire soit s&ucirc;r qu'il
// vient bien de vous
$data = <<<EOD
Tu peux d&eacute;penser jusqu'&agrave; 10000 euros en note de frais.
Ton boss
HQ
EOD;
// sauvez le message dans un fichier
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// chiffrez le
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
    array("mycert.pem", "mypassphrase"),
    array("To" => "joes@sales.com",   // syntaxe &agrave; cl&eacute;
          "From" => "HQ <ceo@sales.com>", // syntaxe index&eacute;e
          "Subject" => "Secret d&eacute;fense"))
{
    // message signed - send it!
    exec(ini_get("sendmail_path") . " < signed.txt");
}
?>

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_pkcs7_encrypt | Niveau supérieur | openssl_pkcs7_verify


openssl_pkcs7_verify

(PHP 4 >= 4.0.6)

openssl_pkcs7_verify -- Vérifie la signature d'un message S/MIME

Description

bool openssl_pkcs7_verify ( string filename, int flags [, string outfilename [, array cainfo [, string extracerts]]])

openssl_pkcs7_verify() lit le message S/MIME contenu dans le fichier filename et examine la signature digitale. openssl_pkcs7_verify() retourne TRUE si la signature est vérifiée, et FALSE sinon (le message a été modifié, ou bien le certificat de signature est invalide). openssl_pkcs7_verify() retourne -1 en cas d'erreur de vérification (la vérification s'est mal déroulée, aucune conclusion possible).

flags sert à modifier le message final. Voyez les constantes PKCS7. Par défaut, la valeur est : PKCS7_DETACHED.

Si le paramètre outfilename est spécifié, il doit être une chaîne contenant le nom d'un fichier qui contient le certificat du signataire, au format PEM.

Si le paramètre cainfo est spécifié, il doit contenir les informations sur les tiers de certificats de confiance utilisé lors de la vérification. Voyez vérification des certificats pour plus de détails.

Si le paramètre extracerts est spécifié, il doit représenter le nom d'un fichier contenant un ensemble de certificat utilisé comme certificats de peu de confiance.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_pkcs7_sign | Niveau supérieur | openssl_pkey_export_to_file


openssl_pkey_export_to_file

(PHP 4 >= 4.2.0)

openssl_pkey_export_to_file -- Sauve une clé au format ASCII dans un fichier

Description

bool openssl_pkey_export_to_file ( mixed key, string outfilename [, string passphrase [, array configargs]])

openssl_pkey_export_to_file() sauve la clé au format ASCII (PEM) key dans le fichier outfilename. La clé peut être optionnellement protégée par le mot de passe passphrase. configargs peut être utilisé pour calibrer le processus d'exportation en spécifiant ou remplaçant les options du fichier de configuration d'OpenSSl. Voyez openssl_csr_new() pour plus d'informations sur configargs. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Vous devez installer un fichier openssl.cnf valide pour que cette fonction opère correctement. Voyez les notes dans la section installation pour plus d'informations.

Précédent | Sommaire | Suivant
openssl_pkcs7_verify | Niveau supérieur | openssl_pkey_export


openssl_pkey_export

(PHP 4 >= 4.2.0)

openssl_pkey_export -- Lit une représentation exportable de la clé dans une chaîne ou un fichier

Description

bool openssl_pkey_export ( mixed key, string &out [, string passphrase [, array configargs]])

openssl_pkey_export() exporte la clé key sous forme de chaîne au format PEM, et la stocke dans la variable out (qui est passée par référence. La clé est éventuellement protégée par le mot de passe passphrase. configargs peut être utilisé pour calibrer le processus d'exportation en spécifiant ou remplaçant les options du fichier de configuration d'OpenSSl. Voyez openssl_csr_new() pour plus d'informations sur configargs. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Vous devez installer un fichier openssl.cnf valide pour que cette fonction opère correctement. Voyez les notes dans la section installation pour plus d'informations.

Précédent | Sommaire | Suivant
openssl_pkey_export_to_file | Niveau supérieur | openssl_pkey_get_private


openssl_pkey_get_private

(PHP 4 >= 4.2.0)

openssl_pkey_get_private -- Lit une clé privée

Description

resource openssl_get_privatekey ( mixed key [, string passphrase])

openssl_get_privatekey lit une ressource de clé privée en cas de succès, et FALSE sinon.

openssl_get_privatekey() analyse la clé key et la prépare pour être utilisée par d'autres fonctions. key peut être l'une des valeurs suivantes :

  1. une chaîne au format file://path/to/file.pem. Le fichier ainsi désigné doit contenir une clé privé ou un certificat au format PEM (éventuellement, les deux).

  2. Une clé privée au format PEM.

Le paramètre optionnel passphrase doit être utilisé si la clé spécifiée est chiffrée (protégée par un mot de passe).

Précédent | Sommaire | Suivant
openssl_pkey_export | Niveau supérieur | openssl_pkey_get_public


openssl_pkey_get_public

(PHP 4 >= 4.2.0)

openssl_pkey_get_public -- Extrait une clé privée d'un certificat, et la prépare

Description

resource openssl_pkey_get_public ( mixed certificate)

openssl_pkey_get_public retourne une ressource de clé en cas de succès, et FALSE sinon.

openssl_get_publickey() extrait la clé publique du certificat certificate et la prépare pour être utilisée par les autres fonctions. certificate peut être l'une des valeurs suivantes :

  1. une chaîne au format file://path/to/file.pem. Le fichier ainsi désigné doit contenir une clé privé ou un certificat au format PEM (éventuellement, les deux).

  2. Une clé privée au format PEM.

Précédent | Sommaire | Suivant
openssl_pkey_get_private | Niveau supérieur | openssl_pkey_new


openssl_pkey_new

(PHP 4 >= 4.2.0)

openssl_pkey_new -- Génère une nouvelle clé privée

Description

resource openssl_pkey_new ( [array configargs])

openssl_pkey_new() génère une nouvelle paire de clé. La clé privée est accessible via la fonction openssl_pkey_get_public(). Vous pouvez calibrer la génération de la clée (comme par exemple le nombre de bits) en utilisant le paramètre configargs. Voyez la fonction openssl_csr_new() pour plus de détails sur configargs.

Note : Vous devez installer un fichier openssl.cnf valide pour que cette fonction opère correctement. Voyez les notes dans la section installation pour plus d'informations.

Précédent | Sommaire | Suivant
openssl_pkey_get_public | Niveau supérieur | openssl_private_decrypt


openssl_private_decrypt

(PHP 4 >= 4.0.6)

openssl_private_decrypt -- Déchiffre des données avec une clé privée

Description

bool openssl_private_decrypt ( string data, string &decrypted, mixed key [, int padding])

openssl_private_decrypt() déchiffre data qui a été chiffré précédemment avec openssl_private_encrypt(), puis stocke le résultat dans la variable decrypted. key doit être la clé privée utilisée pour chiffrer les données. padding vaut par défaut OPENSSL_PKCS1_PADDING, mais peut aussi prendre les valeurs de OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING ou OPENSSL_NO_PADDING.

Précédent | Sommaire | Suivant
openssl_pkey_new | Niveau supérieur | openssl_private_encrypt


openssl_private_encrypt

(PHP 4 >= 4.0.6)

openssl_private_encrypt -- Chiffre des données avec une clé privée

Description

bool openssl_private_encrypt ( string data, string crypted, mixed key [, int padding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
openssl_private_decrypt | Niveau supérieur | openssl_public_decrypt


openssl_public_decrypt

(PHP 4 >= 4.0.6)

openssl_public_decrypt -- Déchiffre des données avec une clé publique

Description

bool openssl_public_decrypt ( string data, string crypted, resource key [, int padding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
openssl_private_encrypt | Niveau supérieur | openssl_public_encrypt


openssl_public_encrypt

(PHP 4 >= 4.0.6)

openssl_public_encrypt -- Chiffre des données avec une clé publique

Description

bool openssl_public_encrypt ( string data, string crypted, mixed key [, int padding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
openssl_public_decrypt | Niveau supérieur | openssl_seal


openssl_seal

(PHP 4 >= 4.0.4)

openssl_seal -- Scelle des données

Description

int openssl_seal ( string data, string sealed_data, array env_keys, array pub_key_ids)

openssl_seal() retourne la longueur des données scellées en cas de succès, et FALSE sinon. En cas de succès, les données scellées sont placées dans le paramètre sealed_data, et les clés d'enveloppe dans env_keys.

openssl_seal() scelle (chiffre) les données data en utilisant l'algorithme RC4 avec une clé secrètre générée aléatoirement. La clé est chiffrée avec chaque clé publique associée à pub_key_ids et chaque clé ainsi encryptée est retournée dans env_keys. Cela signifique que vous pouvez envoyez des données scellées à plusieurs destinataires (en supposant que chacun ait recu la clé publique). Chaque destinataire doit recevoir les données encryptées et la clé d'enveloppe, qui a été encryptée avec la clé publique du destinataire.

Exemple 1. Exemple avec openssl_seal()

<?php
// On suppose que $data contient les donn&eacute;es &agrave; sceller
// lecture de la cl&eacute; publique pour chaque destinataire
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// pour le deuxi&egrave;me destinataire
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// scelle le message : seuls, les possessuers de $pk1 et $pk2 peuvent d&eacute;chiffrer
// le message $sealed avec les cl&eacute;s $ekeys[0] et $ekeys[1] (respectivement).
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));
// lib&egrave;re les cl&eacute;s de la m&eacute;moire
openssl_free_key($pk1);
openssl_free_key($pk2);
?>

Voir aussi openssl_open().

Précédent | Sommaire | Suivant
openssl_public_encrypt | Niveau supérieur | openssl_sign


openssl_sign

(PHP 4 >= 4.0.4)

openssl_sign -- Signe les données

Description

bool openssl_sign ( string data, string signature, mixed priv_key_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

openssl_sign() calcule la signature des données data en utilisant l'algorithme SHA1 (hashing) suivi du chiffrage avec la clé privée priv_key_id. Notez que les données elles-mêmes ne sont pas chiffrées.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. En cas de succès, la signature est placée dans signature.

Exemple 1. Exemple avec openssl_sign()

<?php
// On suppose que $data contient les donn&eacute;es &agrave; signer
// lecture de la cl&eacute; publique pour chaque destinataire
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// calcule de la signature
openssl_sign($data, $signature, $pkeyid);
// lib&egrave;re les cl&eacute;s de la m&eacute;moire
openssl_free_key($pkeyid);
?>

Voir aussi openssl_verify().

Précédent | Sommaire | Suivant
openssl_seal | Niveau supérieur | openssl_verify


openssl_verify

(PHP 4 >= 4.0.4)

openssl_verify -- Vérifie une signature

Description

int openssl_verify ( string data, string signature, mixed pub_key_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

openssl_verify() retourne 1 si la signature est correcte, 0 si la signature est incorrecte, et -1 en cas d'erreur.

openssl_verify() vérifie que la signature signature est correcte pour les données data, et avecd la clé publique pub_key_id. Cette clé doit être la clé publique correspondant à la clé privée utilisée lors de la signature.

Exemple 1. Exemple avec openssl_verify()

<?php
// On suppose que $data et $signature contiennent les donn&eacute;es &agrave; signer et
// la signature
// lecture de la cl&eacute; publique depuis le certificat
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
// indique si la signature est correcte
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1)
    echo "Signature valide";
elseif ($ok == 0)
    echo "Signature erron&eacute;e";
else
    echo "Erreur de v&eacute;rification de la signature";
// lib&egrave;re les cl&eacute;s de la m&eacute;moire
openssl_free_key($pubkeyid);
?>

Voir aussi openssl_sign().

Précédent | Sommaire | Suivant
openssl_sign | Niveau supérieur | openssl_x509_check_private_key


openssl_x509_check_private_key

(PHP 4 >= 4.2.0)

openssl_x509_check_private_key -- Vérifie si une clé privée correspon à un CERT

Description

bool openssl_x509_check_private_key ( mixed cert, mixed key)

openssl_x509_check_private_key() retourne TRUE si key est la clé privée qui correspond au certificat cert, ou FALSE sinon.

Précédent | Sommaire | Suivant
openssl_verify | Niveau supérieur | openssl_x509_checkpurpose


openssl_x509_checkpurpose

(PHP 4 >= 4.0.6)

openssl_x509_checkpurpose -- Vérifie l'usage d'un certificat

Description

bool openssl_x509_checkpurpose ( mixed x509cert, int purpose, array cainfo [, string untrustedfile])

openssl_x509_checkpurpose() TRUE si le certificat peut être utilisé pour un but particulier, FALSE s'il ne le peut pas, et -1 en cas d'erreur.

openssl_x509_checkpurpose() examine le certificat spécifié par x509cert, pour voir s'il peut être utilisé pour une opération particulière purpose.

cainfo doit être un tableau de dossiers/fichiers de CA de confiance comme décrit dans la Vérification des certificats.

untrustedfile, si spécifié, est le nom d'un fichier au format PEM contenant les certificats qui pourront aider lors de la vérification du certificat, même si une confiance limitée doit leur être portée.

Les paramètres et le type de retour de cette fonction risquent d'evoluer d'ici à la prochaine version de PHP.

Tableau 1. Utilisations de openssl_x509_checkpurpose()

Constante | Description
X509_PURPOSE_SSL_CLIENT | Est ce que le certificat peut être utilisé avec le client d'une connexion SSL?
X509_PURPOSE_SSL_SERVER | Est ce que le certificat peut être utilisé avec le serveur d'une connexion SSL?
X509_PURPOSE_NS_SSL_SERVER | Est ce que le certificat peut être utilisé avec un serveur Netscape d'une connexion SSL?
X509_PURPOSE_SMIME_SIGN | Est ce que le certificat peut être utilisé pour signer des courrier à la norme S/MIME?
X509_PURPOSE_SMIME_ENCRYPT | Est-ce que le certificat peut être utilisé pour chiffrer un courrier au format S/MIME?
X509_PURPOSE_CRL_SIGN | Est-ce que le certificat peut être utilisé pour chiffrer une liste de revocation de certificat? (CRL)?
X509_PURPOSE_ANY | Est-ce que le certificat peut être utilisé pour n'importe lequel de ces cas?
Ces options ne sont pas des champs de bits : vous ne pouvez en passer qu'une seule à la fois.

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_x509_check_private_key | Niveau supérieur | openssl_x509_export_to_file


openssl_x509_export_to_file

(PHP 4 >= 4.2.0)

openssl_x509_export_to_file -- Exporte un CERT vers un fichier ou une variable

Description

bool openssl_x509_export_to_file ( mixed x509, string outfilename [, bool notext])

openssl_x509_export_to_file() stocke un certificat x509 dans le fichier outfilename au format PRM. Le paramètre notext vaut par défaut TRUE. Si il est mis à FALSE, un texte supplémentaire et lisible sera aussi stocké dans le fichier output.

Le paramètre optionnel notext affecte le niveau de détails du résultat. Si il vaut FALSE, alors des informations supplémentaires lisibles seront inclues dans le résultat. La valeur par défaut de notext est TRUE.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
openssl_x509_checkpurpose | Niveau supérieur | openssl_x509_export


openssl_x509_export

(PHP 4 >= 4.2.0)

openssl_x509_export -- Exporte un CERT vers une variable

Description

bool openssl_x509_export ( mixed x509, string &output [, bool notext])

openssl_x509_export() stocke un certificat x509 dans le fichier outfilename au format PRM. Le paramètre notext vaut par défaut TRUE. Si il est mis à FALSE, un texte supplémentaire et lisible sera aussi stocké dans le fichier output.

Le paramètre optionnel notext affecte le niveau de détails du résultat. Si il vaut FALSE, alors des informations supplémentaires lisibles seront inclues dans le résultat. La valeur par défaut de notext est TRUE.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
openssl_x509_export_to_file | Niveau supérieur | openssl_x509_free


openssl_x509_free

(PHP 4 >= 4.0.6)

openssl_x509_free -- Libère les ressources prises par un certificat

Description

void openssl_x509_free ( resource x509cert)

openssl_x509_free() libère les ressources prises par le certificat x509cert

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_x509_export | Niveau supérieur | openssl_x509_parse


openssl_x509_parse

(PHP 4 >= 4.0.6)

openssl_x509_parse -- Analyse un certificat X509

Description

array openssl_x509_parse ( mixed x509cert [, bool shortnames])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

openssl_x509_parse() analyse le certificat X509 x509cert, et retourne les informations contenues dedans, y compris le sujet (subject), nom (name), émetteur (issuer name), dates de début et de fin (valid from date et valid to date), etc... shortnames contrôle l'indexation des données dans le tableau : si shortnames vaut TRUE (valeur par défaut), alors les champs seront indexés avec la forme courte des noms, sinon, les noms longs seront utilisés. (par exemple, CN est le nom court de commonName).

La structure des données retournées est (délibérément) non documentée, car elle est sujette à des changements probables.

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_x509_free | Niveau supérieur | openssl_x509_read


openssl_x509_read

(PHP 4 >= 4.0.6)

openssl_x509_read -- Analyse un certificat X.509 et retourne une ressource

Description

resource openssl_x509_read ( mixed x509certdata)

openssl_x509_read() analyse le certificat x509certdata et retourne un identifiant de ressource.

Note : Ces constantes ont été ajoutées en PHP 4.0.6.

Précédent | Sommaire | Suivant
openssl_x509_parse | Niveau supérieur | Oracle


Oracle

Manuel PHP
Précédent Suivant

LXXV. Oracle

Introduction

Cette extension ajoute le supoprt des bases de données Oracle. Voyez aussi OCI8.

Installation

Vous devez compiler PHP avec l'option --with-oracle[=DIR], où DIR est par défaut la valeur de la variable d'environnement ORACLE_HOME.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

ORA_BIND_INOUT (entier)

ORA_BIND_IN (entier)

ORA_BIND_OUT (entier)

ORA_FETCHINTO_ASSOC (entier)

ORA_FETCHINTO_NULLS (entier)

Table des matières
ora_bind -- Lie une variable PHP à un paramètre Oracle
ora_close -- Ferme un pointeur Oracle
ora_columnname -- Retourne le nom de la colonne de résultat Oracle
ora_columnsize -- Lit la taille d'une colonne Oracle
ora_columntype -- Retourne le type de la colonne de résultat Oracle
ora_commit -- Valide une transaction Oracle
ora_commitoff -- Désactive la validation automatique Oracle
ora_commiton -- Active la validation automatique Oracle
ora_do -- Analyse, exécute et lit le résultat d'une requête Oracle
ora_error -- Retourne le message d'erreur Oracle
ora_errorcode -- Retourne le code d'erreur Oracle
ora_exec -- Exécute une commande analysée sur un pointeur Oracle
ora_fetch_into -- Lit une ligne de résultat Oracle dans un tableau
ora_fetch -- Retourne une ligne de résultat
ora_getcolumn -- Retourne une donnée d'une ligne de résultat Oracle
ora_logoff -- Ferme une connexion Oracle
ora_logon -- Ouvre une connexion Oracle
ora_numcols -- Retourne le nombre de colonnes
ora_numrows -- Retourne le nombre de colonnes
ora_open -- Ouvre un pointeur Oracle
ora_parse -- Analyse une requête SQL avec Oracle
ora_plogon -- Ouvre une connexion persistante à Oracle
ora_rollback -- Annule une transaction Oracle

Précédent | Sommaire | Suivant
openssl_x509_read | Niveau supérieur | ora_bind


ora_bind

(PHP 3, PHP 4 )

ora_bind -- Lie une variable PHP à un paramètre Oracle

Description

bool ora_bind ( resource cursor, string php_variable_name, string sql_parameter_name, int length [, int type])

ora_bind() lie une variable PHP avec un paramètre SQL. Le paramètre SQL doit être de la forme ":name". Avec l'option, vous pouvez choisir si le paramètre SQL est de type entrée/sortie (0, valeur par défaut), entrée seulement (1) ou sortie seulement (2). Comme dans PHP 3.0.1, vous pouvez respectivement utiliser les constantes ORA_BIND_INOUT, ORA_BIND_IN et ORA_BIND_OUT plutôt que des nombres.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

ora_bind() doit être appelée après la fonction ora_parse() et avant ora_exec(). Les valeurs d'entrées peuvent alors être fournies par assignation des variables PHP. Après la fonction ora_exec() les variables liées contiennent les valeurs de sortie, si elles sont disponibles. Par exemple :

Exemple 1. Exemple avec ora_bind()

<?php
ora_parse($curs, "declare tmp INTEGER; begin tmp := :in; :out := tmp; :x := 7.77; end;");
ora_bind($curs, "result", ":x", $len, 2);
ora_bind($curs, "input", ":in", 5, 1);
ora_bind($curs, "output", ":out", 5, 2);
$input = 765;
ora_exec($curs);
echo "R&eacute;sultat : $result<BR>sortie : $output<BR>Entr&eacute;e : $input";
?>

Précédent | Sommaire | Suivant
Oracle | Niveau supérieur | ora_close


ora_close

(PHP 3, PHP 4 )

ora_close -- Ferme un pointeur Oracle

Description

bool ora_close ( resource cursor)

ora_close() termine les pointeurs ouverts avec la fonction ora_open().

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Précédent | Sommaire | Suivant
ora_bind | Niveau supérieur | ora_columnname


ora_columnname

(PHP 3, PHP 4 )

ora_columnname -- Retourne le nom de la colonne de résultat Oracle

Description

string ora_columnname ( resource cursor, int column)

ora_columnname() retourne le nom du champ column du pointeur cursor. Le nom retourné sera en majuscules.

Précédent | Sommaire | Suivant
ora_close | Niveau supérieur | ora_columnsize


ora_columnsize

(PHP 3, PHP 4 )

ora_columnsize -- Lit la taille d'une colonne Oracle

Description

int ora_columnsize ( resource cursor, int column)

ora_columnsize() retourne la taille de la colonne column dans le résultat cursor.

Précédent | Sommaire | Suivant
ora_columnname | Niveau supérieur | ora_columntype


ora_columntype

(PHP 3, PHP 4 )

ora_columntype -- Retourne le type de la colonne de résultat Oracle

Description

string ora_columntype ( resource cursor, int column)

ora_columntype() retourne le type de la colonne column du résultat cursor. Le type retourné prendra une des valeurs suivantes :

"VARCHAR2"
"VARCHAR"
"CHAR"
"NUMBER"
"LONG"
"LONG RAW"
"ROWID"
"DATE"
"CURSOR"

Précédent | Sommaire | Suivant
ora_columnsize | Niveau supérieur | ora_commit


ora_commit

(PHP 3, PHP 4 )

ora_commit -- Valide une transaction Oracle

Description

bool ora_commit ( resource conn)

ora_commit() valide les transactions Oracle en cours sur la connexion Oracle conn. Une transaction est définie par toutes les requêtes effectuées sur la connexion conn depuis la dernière validation ou annulation (avec auto-validation désactivée) ou depuis l'établissement de la connexion.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Voir aussi ora_commiton() et ora_commitoff().

Précédent | Sommaire | Suivant
ora_columntype | Niveau supérieur | ora_commitoff


ora_commitoff

(PHP 3, PHP 4 )

ora_commitoff -- Désactive la validation automatique Oracle

Description

bool ora_commitoff ( resource conn)

ora_commitoff() désactive la validation automatique après chaque ora_exec(), pour la connexion conn.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Voir aussi ora_commiton() et ora_commit().

Précédent | Sommaire | Suivant
ora_commit | Niveau supérieur | ora_commiton


ora_commiton

(PHP 3, PHP 4 )

ora_commiton -- Active la validation automatique Oracle

Description

bool ora_commiton ( resource conn)

ora_commiton() active la validation automatique après chaque ora_exec() pour la connexion Oracle conn.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Voir aussi ora_commitoff() et ora_commit().

Précédent | Sommaire | Suivant
ora_commitoff | Niveau supérieur | ora_do


ora_do

(PHP 3, PHP 4 )

ora_do -- Analyse, exécute et lit le résultat d'une requête Oracle

Description

resource ora_do ( resource conn, string query)

ora_do() est une combinaison de
ora_parse(), ora_exec() et
ora_fetch(). Elle va analyser la requête,
l'exécuter et lire la première ligne du
résultat.

ora_do() retourne un index de curseur, ou bien FALSE en cas d'échec. Le détails sur les erreurs est accessible avec les fonctions ora_error() et ora_errorcode().

Voir aussi
ora_parse(),
ora_exec() et
ora_fetch().

Précédent | Sommaire | Suivant
ora_commiton | Niveau supérieur | ora_error


ora_error

(PHP 3, PHP 4 )

ora_error -- Retourne le message d'erreur Oracle

Description

string ora_error ( resource cursor_or_connection)

ora_error() retourne un messages d'erreur de la forme XXX-NNNNN avec XXX qui est l'origine de l'erreur, et NNNNN qui identifie le message d'erreur.

Note : Le support des connexions a été ajouté en PHP 3.0.4.

Avec les versions UNIX d'Oracle, vous pouvez rencontrer des messages d'erreurs tels que : $ oerr ora 00001 00001, 00000, "unique constraint (%s.%s) violated" // *Cause: An update or insert statement attempted to insert a duplicate key // For Trusted ORACLE configured in DBMS MAC mode, you may see // this message if a duplicate entry exists at a different level. // *Action: Either remove the unique restriction or do not insert the key .

Précédent | Sommaire | Suivant
ora_do | Niveau supérieur | ora_errorcode


ora_errorcode

(PHP 3, PHP 4 )

ora_errorcode -- Retourne le code d'erreur Oracle

Description

int ora_errorcode ( resource cursor_or_connection)

ora_errorcode() retourne le code d'erreur numérique de la dernière commande exécuté sur la connexion ou le pointeur fourni en paramètre.

Note : Les identifiants de connexion ne sont acceptés qu'à partir de la version 3.0.4.

Précédent | Sommaire | Suivant
ora_error | Niveau supérieur | ora_exec


ora_exec

(PHP 3, PHP 4 )

ora_exec -- Exécute une commande analysée sur un pointeur Oracle

Description

bool ora_exec ( resource cursor)

ora_exec() exécute la requête préalablement analysée cursor, issue de ora_parse().

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. L'erreur générée sera alors accessible avec les fonctions ora_error() et ora_errorcode().

Voir aussi
ora_parse(),
ora_fetch() et
ora_do().

Précédent | Sommaire | Suivant
ora_errorcode | Niveau supérieur | ora_fetch_into


ora_fetch_into

(PHP 3, PHP 4 )

ora_fetch_into -- Lit une ligne de résultat Oracle dans un tableau

Description

int ora_fetch_into ( resource cursor, array result [, int flags])

ora_fetch_into() lit la ligne courante du résultat cursor dans le tableau result.

ora_fetch_into() retourne le nombre de colonnes lues.

Exemple 1. Exemple avec ora_fetch_into()

<?php
$results = array();
ora_fetch_into($cursor, $results);
echo $results[0];
echo $results[1];
$results = array();
ora_fetch_into($cursor, $results, ORA_FETCHINTO_NULLS|ORA_FETCHINTO_ASSOC);
echo $results['MyColumn'];
?>
Notez que vous devez passer le tableau par référence;

Voir aussi
ora_parse(),
ora_exec(),
ora_fetch() et
ora_do().

Précédent | Sommaire | Suivant
ora_exec | Niveau supérieur | ora_fetch


ora_fetch

(PHP 3, PHP 4 )

ora_fetch -- Retourne une ligne de résultat

Description

bool ora_fetch ( resource cursor)

ora_fetch() lit une ligne de données sur le pointeur cursor.

ora_fetch() retourne TRUE (une ligne a été lue) ou FALSE (plus de lignes à lire ou erreur). Si une erreur survient, sa valeur sera disponible dans les fonctions ora_error() et ora_errorcode().

Voir aussi
ora_parse(),
ora_exec() et
ora_do().

Précédent | Sommaire | Suivant
ora_fetch_into | Niveau supérieur | ora_getcolumn


ora_getcolumn

(PHP 3, PHP 4 )

ora_getcolumn -- Retourne une donnée d'une ligne de résultat Oracle

Description

mixed ora_getcolumn ( resource cursor, int column)

ora_getcolumn() lit les données de la colonne column dans le résultat cursor, pour la ligne courante.

ora_getcolumn() retourne la valeur de la colonne. Si une erreur survient, FALSE est retourné et ora_errorcode() aura une valeur non nulle. Notez, qu'un test à FALSE, avec cette fonction peut être \TRUE, même sans erreur : en effet, la fonction peut retourner des valeurs telles que résultat NULL, chaînes vides, nombre 0, la chaîne "0".

Précédent | Sommaire | Suivant
ora_fetch | Niveau supérieur | ora_logoff


ora_logoff

(PHP 3, PHP 4 )

ora_logoff -- Ferme une connexion Oracle

Description

bool ora_logoff ( resource connection)

ora_logoff() ferme la connexion Oracle connection.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Le détails sur les erreurs est accessible avec les fonctions ora_error() et ora_errorcode().

Voir aussi ora_logon().

Précédent | Sommaire | Suivant
ora_getcolumn | Niveau supérieur | ora_logon


ora_logon

(PHP 3, PHP 4 )

ora_logon -- Ouvre une connexion Oracle

Description

resource ora_logon ( string user, string password)

ora_logon() établit une connexion entre PHP et un serveur Oracle avec les noms d'utilisateur user et le mot de passe password.

Les connexions peut être faîtes avec SQL*Net en fournissant le nom TNS de la manière suivante :

Exemple 1. Exemple avec ora_logon()

<?php
  $conn = ora_logon("user@TNSNAME", "pass");
?>

Si vous avez des données qui ne sont pas ASCII, vous devriez vérifier que la variable NLS_LANG a été correctement configuré dans votre environnement. Pour les modules de serveur, vous devrez la configurer dans l'environnement d'exécution du serveur avant de le lancer.

ora_logon() retourne un index de connexion, en cas de succès, ou FALSE en cas d'échec. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Précédent | Sommaire | Suivant
ora_logoff | Niveau supérieur | ora_numcols


ora_numcols

(PHP 3, PHP 4 )

ora_numcols -- Retourne le nombre de colonnes

Description

int ora_numcols ( resource cursor)

ora_numcols() retourne le nombre de colonne dans le résultat cursor_ind. Cette valeur n'est significative qu'après une requête parse/exec/fetch.

Voir aussi
ora_parse(),
ora_exec(),
ora_fetch() et
ora_do().

Précédent | Sommaire | Suivant
ora_logon | Niveau supérieur | ora_numrows


ora_numrows

(PHP 3, PHP 4 )

ora_numrows -- Retourne le nombre de colonnes

Description

int ora_numrows ( resource cursor)

ora_numrows() retourne le nombre de colonnes dans le résultat cursor_ind.

Précédent | Sommaire | Suivant
ora_numcols | Niveau supérieur | ora_open


ora_open

(PHP 3, PHP 4 )

ora_open -- Ouvre un pointeur Oracle

Description

resource ora_open ( resource connection)

ora_open() ouvre un pointeur Oracle sur la connexion.

ora_open() retourne un index de curseur ou bien FALSE en cas d'échec. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Précédent | Sommaire | Suivant
ora_numrows | Niveau supérieur | ora_parse


ora_parse

(PHP 3, PHP 4 )

ora_parse -- Analyse une requête SQL avec Oracle

Description

bool ora_parse ( resource cursor, string sql_statement, int defer)

ora_parse() analyse une requête SQL ou un bloc PL/SQL et l'associe avec le pointeur cursor_ind.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Voir aussi
ora_exec(),
ora_fetch() et
ora_do().

Précédent | Sommaire | Suivant
ora_open | Niveau supérieur | ora_plogon


ora_plogon

(PHP 3, PHP 4 )

ora_plogon -- Ouvre une connexion persistante à Oracle

Description

resource ora_plogon ( string user, string password)

ora_plogon() établit une connexion persistante à un serveur Oracle, avec l'utilisateur user et le mot de passe password.

Voir aussi ora_logon().

Précédent | Sommaire | Suivant
ora_parse | Niveau supérieur | ora_rollback


ora_rollback

(PHP 3, PHP 4 )

ora_rollback -- Annule une transaction Oracle

Description

bool ora_rollback ( resource connection)

ora_rollback() annule une transaction Oracle sur la connexion connection. (Voir ora_commit() pour la définition d'une transaction).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Les erreurs sont accessibles avec les fonctions ora_error() et ora_errorcode().

Précédent | Sommaire | Suivant
ora_plogon | Niveau supérieur | Ovrimos SQL


Ovrimos SQL

Manuel PHP
Précédent Suivant

LXXVI. Ovrimos SQL

Introduction

Ovrimos SQL Server est une base de données relationnelle client/serveur et transactionnelle, combinée avec des fonctionnalités web, et des transactions rapides.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Vous devez installer la librairie sqlcli, qui est disponible dans la distribution de Ovrimos SQL Server.

Installation

Pour activer le support d'Ovrimos support en PHP, vous devez compiler PHP avec l'option --with-ovrimos[=DIR]. DIR est le chemin jusqu'au dossier d'Ovrimos qui contient la librairie libsqlcli.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Exemples

Exemple 1. Connexion au serveur Ovrimos SQL Server et sélection d'une table système

<?php
$conn = ovrimos_connect("server.domain.com", "8001", "admin", "password");
if ($conn != 0) {
    echo ("Connexion &eacute;tablie!");
    $res = ovrimos_exec($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e!";
        ovrimos_result_all($res);
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>
Cet exemple effectue une connexion.

Table des matières
ovrimos_close -- Ferme une connexion Ovrimos
ovrimos_commit -- Valide une transaction Ovrimos
ovrimos_connect -- Connexion à un serveur
ovrimos_cursor -- Retourne le nom du curseur Ovrimos
ovrimos_exec -- Exécute une requête SQL
ovrimos_execute -- Exécute une requête Ovrimos préparée
ovrimos_fetch_into -- Lit une ligne dans un résultat Ovrimos
ovrimos_fetch_row -- Lit une ligne dans un résultat Ovrimos
ovrimos_field_len -- Retourne la taille d'une colonne Ovrimos
ovrimos_field_name -- Retourne le nom d'une colonne Ovrimos
ovrimos_field_num -- Retourne le numéro de colonne Ovrimos
ovrimos_field_type -- Retourne le type numérique d'une colonne Ovrimos
ovrimos_free_result -- Libère les ressources utilisées par un résultat Ovrimos
ovrimos_longreadlen -- Indique la taille des données à lire dans une colonne de grande taille
ovrimos_num_fields -- Retourne le nombre de colonnes Ovrimos
ovrimos_num_rows -- Retourne le nombre de lignes affectées par une modification Ovrimos
ovrimos_prepare -- Prépare une requête SQL Ovrimos
ovrimos_result_all -- Affiche un résultat Ovrimos sous forme de table HTML
ovrimos_result -- Lit le contenu d'une colonne Ovrimos
ovrimos_rollback -- Annule une transaction

Précédent | Sommaire | Suivant
ora_rollback | Niveau supérieur | ovrimos_close


ovrimos_close

(PHP 4 >= 4.0.3)

ovrimos_close -- Ferme une connexion Ovrimos

Description

void ovrimos_close ( int connection)

ovrimos_close() ferme la connexion au serveur Ovrimos. Toutes les transactions non validées sont annulées.

Précédent | Sommaire | Suivant
Ovrimos SQL | Niveau supérieur | ovrimos_commit


ovrimos_commit

(PHP 4 >= 4.0.3)

ovrimos_commit -- Valide une transaction Ovrimos

Description

bool ovrimos_commit ( int connection_id)

ovrimos_commit() exécute la transaction préparée sur la connexion connection_id. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ovrimos_close | Niveau supérieur | ovrimos_connect


ovrimos_connect

(PHP 4 >= 4.0.3)

ovrimos_connect -- Connexion à un serveur

Description

int ovrimos_connect ( string host, string db, string user, string password)

ovrimos_connect() sert à se connecter à un serveur Ovrimos.

ovrimos_connect() retourne un identifiant de connexion, supérieur à 0, ou 0 en cas d'échec.host est l'adresse IP de l'hôte Ovrimos, et db est soit le nom d'une base de données, soit une chaîne contenant le numéro de port.

Exemple 1. Exemple avec ovrimos_connect()

<?php
$conn = ovrimos_connect("server.domain.com", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connexion &eacute;tablie!";
    $res=ovrimos_exec($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e!";
        ovrimos_result_all($res);
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>
L'exemple ci-dessus montre comment se connecter à une base de données et afficher le contenu d'une table.

Précédent | Sommaire | Suivant
ovrimos_commit | Niveau supérieur | ovrimos_cursor


ovrimos_cursor

(PHP 4 >= 4.0.3)

ovrimos_cursor -- Retourne le nom du curseur Ovrimos

Description

string ovrimos_cursor ( int result_id)

ovrimos_cursor() sert à lire le nom du curseur

ovrimos_cursor() retourne le nom du curseur. Pratique, lorsqu'on veut faire des modifications ou des effacements avec des curseurs déjà positionnés.

Précédent | Sommaire | Suivant
ovrimos_connect | Niveau supérieur | ovrimos_exec


ovrimos_exec

(PHP 4 >= 4.0.3)

ovrimos_exec -- Exécute une requête SQL

Description

int ovrimos_exec ( int connection_id, string query)

ovrimos_exec() sert à exécuter une requête SQL.

ovrimos_exec() exécute une requête SQL (sélection ou modification), et retourne un identifiant de résultat result_id (ou bien FALSE, en cas d'échec). Evidemment, la requête SQL ne doit pas contenir de paramètres.

Précédent | Sommaire | Suivant
ovrimos_cursor | Niveau supérieur | ovrimos_execute


ovrimos_execute

(PHP 4 >= 4.0.3)

ovrimos_execute -- Exécute une requête Ovrimos préparée

Description

bool ovrimos_execute ( int result_id [, array parameters_array])

ovrimos_execute() sert à exécuter une requête SQL. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Si la requête préparée contient des paramètres (des points d'interrogations dans la requête), un nombre correct de paramètres doit être passé dans le tableau parameters_array. Notez que ovrimos_execute() ne suit pas les conventions PHP qui placent les noms des paramètres entre crochets. L'auteur n'a pas pu s'y faire.

Précédent | Sommaire | Suivant
ovrimos_exec | Niveau supérieur | ovrimos_fetch_into


ovrimos_fetch_into

(PHP 4 >= 4.0.3)

ovrimos_fetch_into -- Lit une ligne dans un résultat Ovrimos

Description

bool ovrimos_fetch_into ( int result_id, array result_array [, string how [, int rownumber]])

ovrimos_fetch_into() lit une ligne dans un résultat SQL.

ovrimos_fetch_into() lit une ligne dans le résultat result_id, qui doit être passé en référence. La ligne qui sera lue est déterminée par les deux paramètres how et rownumber. how peut prendre les valeurs de Next (suivant, valeur par défaut), Prev (précédent), First (premier), Last (dernier), Absolute (position absolue). La casse de how n'est pas prise en compte. rownumber est optionnel, sauf dans le cas d'Absolute. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Lit un exemple

<?php
$conn=ovrimos_connect("neptune", "8001", "admin", "password");
if ($conn!=0) {
    echo "Connexion &eacute;tablie!";
    $res=ovrimos_exec($conn,"SELECT table_id, table_name FROM sys.tables");
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e!";
        if (ovrimos_fetch_into($res, &$row)) {
            list ($table_id, $table_name) = $row;
            echo "table_id=".$table_id.", table_name=".$table_name."\n";
            if (ovrimos_fetch_into($res, &$row)) {
                list ($table_id, $table_name) = $row;
                echo "table_id=".$table_id.", table_name=".$table_name."\n";
            } else {
                echo "Next: erreur\n";
            }
        } else {
            echo "First: erreur\n";
        }
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>
Cet exemple lit une ligne.

Précédent | Sommaire | Suivant
ovrimos_execute | Niveau supérieur | ovrimos_fetch_row


ovrimos_fetch_row

(PHP 4 >= 4.0.3)

ovrimos_fetch_row -- Lit une ligne dans un résultat Ovrimos

Description

bool ovrimos_fetch_row ( int result_id [, int how [, int row_number]])

ovrimos_fetch_row() lit une ligne dans un résultat. Les colonnes doivent être lues par un autre appel. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple de lecture de ligne Ovrimos

<?php
$conn = ovrimos_connect("remote.host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connexion &eacute;tablie!";
    $res=ovrimos_exec($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e!";
        if (ovrimos_fetch_row($res, "First")) {
            $table_id = ovrimos_result($res, 1);
            $table_name = ovrimos_result($res, 2);
            echo "table_id=".$table_id.", table_name=".$table_name."\n";
            if (ovrimos_fetch_row($res, "Next")) {
                $table_id = ovrimos_result($res, "table_id");
                $table_name = ovrimos_result($res, "table_name");
                echo "table_id=".$table_id.", table_name=".$table_name."\n";
            } else {
                echo "Next: erreur\n";
            }
        } else {
            echo "First: erreur\n";
        }
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>
Cet exemple lit une ligne et l'affiche.

Précédent | Sommaire | Suivant
ovrimos_fetch_into | Niveau supérieur | ovrimos_field_len


ovrimos_field_len

(PHP 4 >= 4.0.3)

ovrimos_field_len -- Retourne la taille d'une colonne Ovrimos

Description

int ovrimos_field_len ( int result_id, int field_number)

ovrimos_field_len() retourne la taille de la colonne field_number, dans le résultat field_number.

Précédent | Sommaire | Suivant
ovrimos_fetch_row | Niveau supérieur | ovrimos_field_name


ovrimos_field_name

(PHP 4 >= 4.0.3)

ovrimos_field_name -- Retourne le nom d'une colonne Ovrimos

Description

string ovrimos_field_name ( int result_id, int field_number)

ovrimos_field_name() retourne le nom d'une colonne à partir de son numéro de colonne field_number, (la première colonne est à 1).

Précédent | Sommaire | Suivant
ovrimos_field_len | Niveau supérieur | ovrimos_field_num


ovrimos_field_num

(PHP 4 >= 4.0.3)

ovrimos_field_num -- Retourne le numéro de colonne Ovrimos

Description

int ovrimos_field_num ( int result_id, string field_name)

ovrimos_field_num() retourne le numéro de la colonne field_name (la numérotation commence à 1), dans result_id.

Précédent | Sommaire | Suivant
ovrimos_field_name | Niveau supérieur | ovrimos_field_type


ovrimos_field_type

(PHP 4 >= 4.0.3)

ovrimos_field_type -- Retourne le type numérique d'une colonne Ovrimos

Description

int ovrimos_field_type ( int result_id, int field_number)

ovrimos_field_type() retourne le type numérique d'une colonne, identifiée par son numéro field_number dans le résultat field_number.

Précédent | Sommaire | Suivant
ovrimos_field_num | Niveau supérieur | ovrimos_free_result


ovrimos_free_result

(PHP 4 >= 4.0.3)

ovrimos_free_result -- Libère les ressources utilisées par un résultat Ovrimos

Description

bool ovrimos_free_result ( int result_id)

ovrimos_free_result() libère toutes les ressources prises par le résultat result_id. ovrimos_free_result() retourne TRUE.

Précédent | Sommaire | Suivant
ovrimos_field_type | Niveau supérieur | ovrimos_longreadlen


ovrimos_longreadlen

(PHP 4 >= 4.0.3)

ovrimos_longreadlen -- Indique la taille des données à lire dans une colonne de grande taille

Description

bool ovrimos_longreadlen ( int result_id, int length)

ovrimos_longreadlen() indique le nombre d'octets qui seront lus dans une colonne de grande taille (long varchar et long varbinary). Par défaut, 0. ovrimos_longreadlen() assigne cette valeur au résultat courant. ovrimos_longreadlen() retourne TRUE.

Précédent | Sommaire | Suivant
ovrimos_free_result | Niveau supérieur | ovrimos_num_fields


ovrimos_num_fields

(PHP 4 >= 4.0.3)

ovrimos_num_fields -- Retourne le nombre de colonnes Ovrimos

Description

int ovrimos_num_fields ( int result_id)

ovrimos_num_fields() indique le nombre de colonnes du résultat result_id.

Précédent | Sommaire | Suivant
ovrimos_longreadlen | Niveau supérieur | ovrimos_num_rows


ovrimos_num_rows

(PHP 4 >= 4.0.3)

ovrimos_num_rows -- Retourne le nombre de lignes affectées par une modification Ovrimos

Description

int ovrimos_num_rows ( int result_id)

ovrimos_num_rows() retourne le nombre de lignes affectées par une requête SQL d'UPDATE.

Précédent | Sommaire | Suivant
ovrimos_num_fields | Niveau supérieur | ovrimos_prepare


ovrimos_prepare

(PHP 4 >= 4.0.3)

ovrimos_prepare -- Prépare une requête SQL Ovrimos

Description

int ovrimos_prepare ( int connection_id, string query)

ovrimos_prepare() prépare une requête SQL et retourne un identifiant de résultat (ou FALSE en cas d'échec).

Exemple 1. Connexion à un serveur Ovrimos SQL Server et préparation d'une requête

<?php
$conn=ovrimos_connect("db_host", "8001", "admin", "password");
if ($conn!=0) {
    echo "Connexion &eacute;tablie!";
    $res=ovrimos_prepare($conn, "select table_id, table_name
                                  from sys.tables where table_id=1");
    if ($res != 0) {
        echo "Pr&eacute;paration faite!";
        if (ovrimos_execute($res)) {
            echo "Ex&eacute;cution r&eacute;ussie!\n";
            ovrimos_result_all($res);
        } else {
            echo "Ex&eacute;cution manqu&eacute;e!";
        }
        ovrimos_free_result($res);
    } else {
        echo "Pr&eacute;paration manqu&eacute;e!\n";
    }
    ovrimos_close($conn);
}
?>
Cet exemple montre comment se connecter à un serveur Ovrimos SQL Server, comment préparer une requête SQL et l'exécuter.

Précédent | Sommaire | Suivant
ovrimos_num_rows | Niveau supérieur | ovrimos_result_all


ovrimos_result_all

(PHP 4 >= 4.0.3)

ovrimos_result_all -- Affiche un résultat Ovrimos sous forme de table HTML

Description

int ovrimos_result_all ( int result_id [, string format])

ovrimos_result_all() affiche le résultat de la requête représentée par result_id. ovrimos_result_all() retourne le nombre de lignes générées.

Exemple 1. Prépare une requête, l'exécute sur Ovrimos et affiche le résultat

<?php
$conn = ovrimos_connect("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connexion &eacute;tablie!";
    $res = ovrimos_prepare($conn, "select table_id, table_name
                                    from sys.tables where table_id = 7");
    if ($res != 0) {
        echo "Pr&eacute;paration faite!";
        if (ovrimos_execute($res, array(3))) {
            echo "Ex&eacute;cution r&eacute;ussie!\n";
            ovrimos_result_all($res);
        } else {
            echo "Ex&eacute;cution manqu&eacute;e!";
        }
        ovrimos_free_result($res);
    } else {
        echo "Pr&eacute;paration manqu&eacute;e!\n";
    }
    ovrimos_close($conn);
}
?>
Cet exemple exécute une requête SQL et affiche le résultat sous forme d'une table HTML.

Exemple 2. ovrimos_result_all() avec meta-information

<?php
$conn = ovrimos_connect("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connexion &eacute;tablie!";
    $res = ovrimos_exec($conn, "select table_id, table_name
                                 from sys.tables where table_id = 1")
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e! cursor=".ovrimos_cursor($res)."\n";
        $colnb = ovrimos_num_fields($res);
        echo "Output columns=".$colnb."\n";
        for ($i=1; $i<=$colnb; $i++) {
            $name = ovrimos_field_name($res, $i);
            $type = ovrimos_field_type($res, $i);
            $len = ovrimos_field_len($res, $i);
            echo "Colonne ".$i." nom=".$name." type=".$type." longueur=".$len."\n";
        }
        ovrimos_result_all($res);
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>

Exemple 3. Exemple avec ovrimos_result_all()

<?php
$conn = ovrimos_connect("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connexion &eacute;tablie!";
    $res = ovrimos_exec($conn, "update test set i=5");
    if ($res != 0) {
        echo "Requ&ecirc;te effectu&eacute;e!";
        echo ovrimos_num_rows($res)." lignes affect&eacute;es\n";
        ovrimos_free_result($res);
    }
    ovrimos_close($conn);
}
?>

Précédent | Sommaire | Suivant
ovrimos_prepare | Niveau supérieur | ovrimos_result


ovrimos_result

(PHP 4 >= 4.0.3)

ovrimos_result -- Lit le contenu d'une colonne Ovrimos

Description

string ovrimos_result ( int result_id, mixed field)

ovrimos_result() lit le contenu de la colonne field dans le résultat result_id. field peut être le nom de la colonne (une chaîne) ou bien le numéro de la colonne (la première colonne est alors 1). ovrimos_result() retourne FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ovrimos_result_all | Niveau supérieur | ovrimos_rollback


ovrimos_rollback

(PHP 4 >= 4.0.3)

ovrimos_rollback -- Annule une transaction

Description

bool ovrimos_rollback ( int connection_id)

ovrimos_rollback() annule la transaction préparée sur la connexion connection_id. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
ovrimos_result | Niveau supérieur | Bufferisation de sortie


Bufferisation de sortie

Manuel PHP
Précédent Suivant

LXXVII. Bufferisation de sortie

Introduction

Les fonctions de bufferisation de sortie vous permettent de contrôler quand les données ont été envoyées par le script. Cela peut être utile dans certaines situations, notamment si vous devez envoyer des en-têtes au navigateur après avoir envoyé des données. Ces fonctions n'affectent pas les en-têtes envoyées par la fonction header() ou les cookies envoyés par setcookie(). Seules les fonctions telles que echo() et les données entre blocs PHP sont affectées.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
output_buffering | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler | NULL | PHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

output_buffering booléen/entier

Vous pouvez activer la bufferisation de sortie pour tous les fichiers avec cette directive, en lui passant la valeur de On. Si vous souhaitez limiter la taille du buffer à une certaine taille, vous pouvez alors indiquer un nombre maximum d'octets à la place de On. Par exemple, output_buffering=4096).

output_handler chaîne de caractères

Vous pouvez rediriger le résultat de tous vos scripts à une fonction avant leur envoi au navigateur. Par exemple, si vous configurez output_handler à mb_output_handler(), l'encodage des caractères sera adaptée de manière transparente. Configurer une telle fonction active automatiquement la bufferisation de sortie.

Note : Vous ne pouvez pas utiliser simultanément mb_output_handler() avec ob_inconv_handler() et non plus ob_gzhandler() et zlib.output_compression.

implicit_flush booléen

FALSE par défaut. En changeant cette valeur pour TRUE vous indiquez à PHP que le buffer de sortie doit être vidé automatiquement après chaque fonction d'affichage. Cela revient à appeler la fonction flush() après chaque appel à print() ou echo() et pour tous les blocs HTML.

Lorsque vous utilisez PHP en environnement web, activer cette option a de sérieuse implications et généralement, cela n'est conseillé que pour les débogage. Cette valeur est par défaut à TRUE lorsque PHP fonctionne en mode CLI SAPI.

Voir aussi ob_implicit_flush().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Exemple 1. Exemple de bufferisation de sortie

<?php
ob_start();
echo "Bonjour\n";
setcookie ("nom_du_cookie", "valeur_du_cookie");
ob_end_flush();
?>

Dans l'exemple ci-dessus, la fonction echo() est stockée dans un buffer jusqu'à l'appel de la fonction ob_end_flush(). Dans le même temps, l'appel à setcookie() a réussi à créer un cookie, sans générer d'erreur. (D'habitude, vous devez envoyer les en-têtes avant les données).

Note : Lorsque vous passez de PHP 4.1 ou 4.2 à 4.3, assurez vous que implict_flush est à OFF dans votre php.ini, sinon la fonction ob_start() ne masquera pas les affichages engendrés.

Voir aussi

Voir aussi header() et setcookie().

Table des matières
flush -- Vide les buffers de sortie
ob_clean -- Efface le buffer de sortie
ob_end_clean -- Détruit les données du buffer de sortie, et éteint la bufferisation de sortie
ob_end_flush -- Envoie les données du buffer de sortie, et éteint la bufferisation de sortie
ob_flush -- Envoie le buffer de sortie
ob_get_clean -- Lit le contenu courant du buffer de sortie puis l'efface
ob_get_contents -- Retourne le contenu du buffer de sortie
ob_get_length -- Retourne la longueur du contenu du buffer de sortie
ob_get_level -- Retourne le nombre de niveaux d'imbrications du système de bufferisation de sortie
ob_get_status -- Lit le statut du buffer de sortie
ob_gzhandler -- Fonction de callback pour la compression automatique des buffers
ob_implicit_flush -- Active/désactive l'envoi implicite
ob_start -- Enclenche la bufferisation de sortie

Précédent | Sommaire | Suivant
ovrimos_rollback | Niveau supérieur | flush


flush

(PHP 3, PHP 4 )

flush -- Vide les buffers de sortie

Description

void flush ( void )

flush() vide les buffers de sortie de PHP et tous ceux que PHP utilisait (CGI, un serveur web, etc.). Cette fonction envoye réellement toutes les données préparées vers l'utilsateur.

Note : flush() n'a aucun effet sur la bufferisation de votre serveur web ou du navigateur.

De nombreux serveurs, essentiellement sous Windows, continueront à bufferiser l'affichage de votre script jusqu'à ce qu'il soit terminé, avant de transmettre les résultats à l'internaute.

Des modules Apache comme mod_gzip utilisent leur propre bufferisation, ce qui fait que flush() n'enverra pas les données jusqu'au navigateur client immédiatement.

Même le navigateur peut réaliser une bufferisation avant de l'afficher. Netscape, par exemple, met en cache le texte jusqu'à ce qu'il recoive une fin de ligne, ou une nouvelle et il ne va effectuer aucun affichage tant que les balises </table> ne seront pas toutes refermées.

Certaines versions de Microsoft Internet Explorer ne commençeront l'affichage de la page qu'après avoir reçu 256 octets d'affichage. Cela vous obligera à envoyer des espaces supplémentaires pour afficher la page.

Précédent | Sommaire | Suivant
Bufferisation de sortie | Niveau supérieur | ob_clean


ob_clean

(PHP 4 >= 4.2.0)

ob_clean -- Efface le buffer de sortie

Description

void ob_clean ( void )

ob_clean() vide le buffer de sortie sans l'envoyer au navigateur.

ob_clean() ne détruit pas le contenu du buffer de sortie comme peut le faire ob_end_clean().

Voir aussi
ob_flush(),
ob_end_flush() et
ob_end_clean().

Précédent | Sommaire | Suivant
flush | Niveau supérieur | ob_end_clean


ob_end_clean

(PHP 4 )

ob_end_clean -- Détruit les données du buffer de sortie, et éteint la bufferisation de sortie

Description

bool ob_end_clean ( void )

ob_end_clean() vide le contenu du premier buffer de sortie, et désactive la bufferisation de sortie. Si vous voulez traiter le contenu du buffer, vous devrez appeler ob_get_contents() avant ob_end_clean(), car le buffer est détruit par ob_end_flush(). La fonction TRUE lorsqu'elle a réussi à détruire correctement le buffer, et FALSE sinon. Les raisons d'un tel échec sont la bufferisation de sortie pouvaient ne pas être activé, ou que pour une raison quelconque, le buffer n'a pu être détruit.

L'exemple suivant montre comment se débarraser de tous les buffers de sortie :

Exemple 1. Exemple avec ob_end_clean()

<?php
while (@ob_end_clean());
?>

Note : Si la fonction échoue, elle génère une note E_NOTICE.

La valeur booléenne retournée par la fonction a été ajoutée en PHP 4.2.0.

Voir aussi
ob_start(),
ob_flush() et
ob_get_contents().

Précédent | Sommaire | Suivant
ob_clean | Niveau supérieur | ob_end_flush


ob_end_flush

(PHP 4 )

ob_end_flush -- Envoie les données du buffer de sortie, et éteint la bufferisation de sortie

Description

bool ob_end_flush ( void )

ob_end_flush() envoie le contenu du buffer de sortie (s'il existe) et éteint la bufferisation de sortie. Si vous voulez continuer à manipuler la valeur du buffer, vous pouvez appeler ob_get_contents() avant ob_end_flush() car le contenu du buffer est détruit après un appel à ob_end_flush(). La fonction retourne TRUE lorsqu'elle a réussi à envoyer tout le buffer, et FALSE otherwise. Les raisons d'échec sont que vous pourriez avoir appelé la fonction sans avoir de buffer actif, pour que pour une raison quelconque, le buffer n'a pu être effacé (possible pour un buffer spécial).

L'exemple ci-dessous montre une méthode simple pour vider tous les buffers :

Exemple 1. Exemple avec ob_end_flush()

<?php
while (@ob_end_flush());
?>

Note : Si la fonction échoue, elle émet une note E_NOTICE.

Le booléen retourné a été ajouté en PHP 4.2.0.

Voir aussi
ob_start(),
ob_get_contents(),
ob_flush() et
ob_end_clean().

Précédent | Sommaire | Suivant
ob_end_clean | Niveau supérieur | ob_flush


ob_flush

(PHP 4 >= 4.2.0)

ob_flush -- Envoie le buffer de sortie

Description

void ob_flush ( void )

ob_flush envoie le contenu du buffer de sortie (si il y en a un). Si vous voulez contrôler le contenu du buffer, vous devez appeler la fonction ob_get_contents() avant ob_flush() car le contenu du buffer est effacé après l'appel de ob_flush().

ob_flush() ne détruit pas le contenu du buffer de sortie comme peut le faire ob_end_clean().

Voir aussi
ob_get_contents(),
ob_clean(),
ob_end_flush() et
ob_end_clean().

Précédent | Sommaire | Suivant
ob_end_flush | Niveau supérieur | ob_get_clean


ob_get_clean

(PHP 4 >= 4.3.0)

ob_get_clean -- Lit le contenu courant du buffer de sortie puis l'efface

Description

string ob_get_clean ( void )

ob_get_clean() va retourner le contenu du buffer de sortie,
et terminer la session de bufferisation. Si la bufferisation n'était pas
activée, alors ob_get_clean() retourne FALSE.
ob_get_clean() exécute successivement
ob_get_contents() et
ob_end_clean().

Exemple 1. Exemple avec ob_get_clean()

<?php

ob_start();

print "Bonjour le monde";

$out = ob_get_clean();
$out = strtolower($out);

var_dump($out);

/* Notre exemple va afficher :

string(16) "Bonjour le monde"

*/
?>

Voir aussi ob_start() et ob_get_contents().

Précédent | Sommaire | Suivant
ob_flush | Niveau supérieur | ob_get_contents


ob_get_contents

(PHP 4 )

ob_get_contents -- Retourne le contenu du buffer de sortie

Description

string ob_get_contents ( void )

ob_get_contents() retourne le contenu du buffer de sortie si la bufferisation est activée, ou FALSE sinon.

Voir aussi ob_start() et ob_get_length().

Précédent | Sommaire | Suivant
ob_get_clean | Niveau supérieur | ob_get_length


ob_get_length

(PHP 4 >= 4.0.2)

ob_get_length -- Retourne la longueur du contenu du buffer de sortie

Description

int ob_get_length ( void )

ob_get_length() retourne la longueur du contenu du buffer de sortie si la bufferisation est activée, et FALSE sinon.

Voir aussi ob_start() et ob_get_contents().

Précédent | Sommaire | Suivant
ob_get_contents | Niveau supérieur | ob_get_level


ob_get_level

(PHP 4 >= 4.2.0)

ob_get_level -- Retourne le nombre de niveaux d'imbrications du système de bufferisation de sortie

Description

int ob_get_level ( void )

ob_get_level retourne le nombre de niveaux d'imbrications du système de bufferisation de sortie.

Voir aussi ob_start() et ob_get_contents().

Précédent | Sommaire | Suivant
ob_get_length | Niveau supérieur | ob_get_status


ob_get_status

(PHP 4 >= 4.2.0)

ob_get_status -- Lit le statut du buffer de sortie

Description

array ob_get_status ( [bool full_status])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

ob_get_status() retourne le statut actuel du système de bufferisation de sortie : un tableau qui contient le statut du buffer, ou bien FALSE en cas d'erreur.

Voir aussi ob_get_level().

Précédent | Sommaire | Suivant
ob_get_level | Niveau supérieur | ob_gzhandler


ob_gzhandler

(PHP 4 >= 4.0.4)

ob_gzhandler -- Fonction de callback pour la compression automatique des buffers

Description

string ob_gzhandler ( string buffer [, int mode])

ob_gzhandler() est destinée à être utilisée comme fonction de callback par ob_start() pour faciliter l'envoi de données compressées aux navigateurs qui supportent les pages compressées. Avant que ob_gzhandler() envoie les données compressées, il détermine les types d'encodage qui sont supportés par le navigateur ("gzip", "deflate" ou aucun) et retourne le contenu des buffers de manière appropriée. Tous les navigateurs sont traités, car c'est aux navigateurs d'envoyer une en-tête indiquant les types de pages supportés.

Note : Vous ne pouvez pas utiliser simultanément ob_gzhandler() et ini.zlib.output_compression. De plus, notez bien que ini.zlib.output_compression est préférable à ob_gzhandler().

Exemple 1. Exemple d'envoi de page compressée avec ob_gzhandler()

<?php
  ob_start("ob_gzhandler");
?>
<HTML>
<BODY>
<P>Ceci devrait &ecirc;tre une page compress&eacute;e.
</HTML>
</BODY>

Voir aussi ob_start() et ob_end_flush().

Précédent | Sommaire | Suivant
ob_get_status | Niveau supérieur | ob_implicit_flush


ob_implicit_flush

(PHP 4 )

ob_implicit_flush -- Active/désactive l'envoi implicite

Description

void ob_implicit_flush ( [int flag])

ob_implicit_flush() active/désactive l'envoi implicite (si flag est fourni. Par défaut, il est activé). L'envoi implicite signifie que toute fonction qui envoie des données au navigateur verra ses données envoyées immédiatement (la fonction flush() est appelée automatiquement).

Une fois que l'envoi implicite est désactivé, le buffer de sortie ne sera envoyé qu'au moment de l'appel de ob_end_flush().

Voir aussi
flush(),
ob_start() et
ob_end_flush().

Précédent | Sommaire | Suivant
ob_gzhandler | Niveau supérieur | ob_start


ob_start

(PHP 4 )

ob_start -- Enclenche la bufferisation de sortie

Description

bool ob_start ( [callback output_callback])

ob_start() démarre la bufferisation de sortie. Tant qu'elle est enclenchée, aucune donnée, hormis les en-têtes, n'est envoyée au navigateur, mais temporairement mise en buffer.

Le contenu de ce buffer peut être copié dans une chaîne avec la fonction ob_get_contents(). Pour afficher le contenu de ce buffer, utilisez ob_end_flush(). Au contraire, ob_end_clean() effacera le contenu de ce buffer.

Une fonction optionnelle de callback peut être spécifiée en troisième argument. ob_start() prend une chaîne comme paramètre, et retourne une chaîne. Elle sera appelée par ob_end_flush() ou lorsque le buffer sera envoyé au navigateur à la fin du script et recevra le contenu du buffer de sortie. Lorsque la fonction output_callback est appelée, elle doit retourner un nouveau contenu pour le buffer de sortie : celui-ci sera envoyé au navigateur.

Note : En PHP 4.0.4, ob_gzhandler() a été introduit pour faciliter l'envoi de fichier compressé avec gz aux navigateurs web qui supportent les pages compressées. ob_gzhandler() détermine le type d'encodage accepté par un navigateur, et retourne le contenu le plus adéquat.

Les buffers de sortie sont gérés par pile, c'est-à-dire que vous pouvez appeler plusieurs fois ob_start() simultanément. Assurez-vous que vous appelez ob_end_flush() suffisamment souvent. Si plusieurs fonctions de callback sont actives, les contenus seront filtrés séquentiellement, dans l'ordre d'emboîtement.

Exemple 1. Exemple de gestion de sortie avec fonction utilisateur

<?php
function callback($buffer) {
  // remplace toutes les pommes par des carottes
  return (ereg_replace("pommes de terre", "carottes", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>C'est comme comparer des carottes et des pommes de terre.
</body>
</html>
<?php
 ob_end_flush();
?>

va afficher :

<html>
<body>
<p>C'est comme comparer des carottes et des carottes.
</body>
</html>

Voir aussi
ob_get_contents(),
ob_end_flush(),
ob_end_clean(),
ob_implicit_flush() et
ob_gzhandler().

Précédent | Sommaire | Suivant
ob_implicit_flush | Niveau supérieur | Overload


Overload

Manuel PHP
Précédent Suivant

LXXVIII. Overload

Introduction

Le but de cette extension est de permettre de maîtriser les appels aux méthodes et aux membres d'un objet. Seule une fonction est définie dans cette extension, overload() qui demande le nom de la classe qui supporte cet fonctionnalité. Cette classe doit être pourvue des méthodes nécessaires au bon fonctionnement de l'extension, c'est à dire : __get(), __set() et __call(), qui servent respectivement à lire et modifier un membre, et appeler une méthode. De cette manière, l'overloading assure un contrôle sur les fonctions appelées. A l'intérieur de ces méthodes, l'overloading est désactivé, pour que vous puissiez accéder à l'objet.

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

In order to use these functions, you must compile PHP with the --enable-overload option. Starting with PHP 4.3.0 this extension is enabled by default. You can disable overload support with --disable--overload.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Note : Builtin support for overload is available with PHP 4.3.0.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Voici un exemple simple de fonctions utilisant overload() :

Exemple 1. Overload avec une classe PHP

<?php

class OO
{
    var $a = 111;
    var $elem = array('b' => 9, 'c' => 42);

    // Fonction de callback pour la lecture de membre
    function __get($prop_name, &$prop_value)
    {
        if (isset($this->elem[$prop_name])) {
            $prop_value = $this->elem[$prop_name];
            return true;
        } else {
            return false;
        }
    }

    // Fonction de callback pour l'&eacute;criture de membre
    function __set($prop_name, $prop_value)
    {
        $this->elem[$prop_name] = $prop_value;
        return true;
    }
}

// Ici, l'initiation de l'overload
overload('OO');

$o = new OO;
print "\$o->a: $o->a\n"; // print: $o->a:
print "\$o->b: $o->b\n"; // print: $o->b: 9
print "\$o->c: $o->c\n"; // print: $o->c: 42
print "\$o->d: $o->d\n"; // print: $o->d:

// ajouter une nouvelle valeur au membre $elem, en programmation OOP
$o->x = 56;

// instantiation de la classe stdclass (elle existe par d&eacute;faut en PHP 4)
// $val n'est pas overload&eacute;e!
$val = new stdclass;
$val->prop = 555;

// Forcez "a" &agrave; &ecirc;tre un tableau avec l'&eacute;l&eacute;ment $val
// Mais _set() forcera cet &eacute;l&eacute;ment dans le tableau $elem
$o->a = array($val);
var_dump($o->a[0]->prop);

?>

Avertissement

Comme c'est une extension expérimentale, tout ne fonctionne pas encore. Il n'y a pas de support pour __call() actuellement, et nouvs ne pouvez overloader que des accesseurs. Vous ne pouvez pas appeler les fonctions d'overload de la classe, et __set() ne fonctionne que pour un seul niveau d'accesseur.

Table des matières
overload -- Active la couche de contrôle des membres et méthodes

Précédent | Sommaire | Suivant
ob_start | Niveau supérieur | overload


overload

(4.2.0 - 4.3.2 only)

overload -- Active la couche de contrôle des membres et méthodes

Description

void overload ( [string class_name])

overload() active le contrôle des accesseurs et appels de méthodes pour la classe class_name. Voir un exemple dans l'introduction de ce chapitre.

Précédent | Sommaire | Suivant
Overload | Niveau supérieur | PDF


PDF

Manuel PHP
Précédent Suivant

LXXIX. PDF

Introduction

Les fonctions PDF permettent de créer des fichiers PDF en utilisant la librairie PDFlib créée par Thomas Merz.

La documentation de cette section est uniquement destinée à être une introduction aux fonctions disponibles, et ne doit pas être considérée comme une référence exaustive. Reportez vous à la documentation inclue dans la distribution de PDFlib pour plus de détails et d'explications. Elle fournit une excellente référence des capacités de PDFlib, et contient la documentation la plus à jour.

Toutes les fonctions de la PDFlib et du module PHP ont des noms et des arguments identiques. Vous aurez à comprendre quelques concepts basiques de PDF et PostScript pour l'utiliser efficacement. Toutes les longueurs et coordonnées sont mesurées en points PostScript. Il y a généralement 72 points PostScript pour faire un pouche (2.54 cm), mais cela dépend de la résolution de sortie. Reportez vous à la documentation PDFlib inclue dans la distribution pour plus de détails sur le système de coordonnées.

Notez que la plupart des fonctions PDF requièrent une ressource pdf object comme premier paramètre. Voyez les exemples ci-dessous pour plus de détails.

Note : Si vous êtes intéressés par des alternatives gratuites pour générer des PDF, sans passer par des librairies PDF, voyez cette entrée de la FAQ.

Pré-requis

PDFlib est disponible en téléchargement à http://www.pdflib.com/products/pdflib/index.html, mais impose l'achat d'une license pour l'utiliser commercialement. Les librairies JPEG et TIFF sont nécessaires pour faire fonctionner cette librairie.

Problèmes avec les anciennes versions de PDFlib

Toutes les versions des PHP 4 éditées après le 9 Mars 2000 ne suportent pas les versions de PDFlib plus anciennes que PDFlib 3.0.

PDFlib 3.0 est plus récent est supporté par PHP 3.0.19 et plus récent.

Installation

Pour inclure le support de la PDFlib dans votre PHP, il faut compiler PHP avec l'option --with-pdflib[=DIR]. DIR est le dossier d'isntallation de PDFlib, et par défaut, il vaut /usr/local. De plus, vous pouvez aussi spécifier les dossiers des libariries jpeg, tiff, et png que vous voulez utiliser avec la PDFlib. Ceci est optionnel pour PDFlib 4.x. Pour cela, ajoutes les lignes suivantes à votre script de configuration : --with-jpeg-dir[=DIR], --with-png-dir[=DIR] et --with-tiff-dir[=DIR].

Lorsque vous utilisez les versions 3.x de PDFlib, vous devez configurer PDFlib avec l'option --enable-shared-pdflib.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Confusion entre les vieilles versions de PDFLib

Depuis le début du support de PDF sous PHP, (commençant avec la version PDFLib 0.6), il y a eu des milliers de modifications dans les API de PDFLib. La plupart de ces modifications ont été suivies par PHP, et parfois même au prix de modifications des API PHP. Depuis la version 3.x, ces API semblent s'être stabilisées, et PHP 4 a adoptée cette version comme le minimum nécessaire pour supporter PDF. En conséquence de quoi, un grand nombre de fonction vont disparaître, ou être remplacée. Le support de PDFLib 0.6 est complétement abandonné. La liste suivante indique quelles sont les fonctions obsolètes en PHP 4.02, et qui devraient être remplacées par de nouvelles versions.

Tableau 1. Fonctions obsolètes et leur remplacement

Ancienne fonction | Remplacement
pdf_put_image() | Désormais inutile.
pdf_execute_image() | Désormais inutile.
pdf_get_annotation() | pdf_get_bookmark() en utilisant les mêmes paramètres.
pdf_get_font() | pdf_get_value() en passant "font" comme second paramètre.
pdf_get_fontsize() | pdf_get_value() en passant "fontsize" comme second paramètre.
pdf_get_fontname() | pdf_get_parameter() en passant "fontname" comme second paramètre.
pdf_set_info_creator() | pdf_set_info() en passant "Creator" comme second paramètre.
pdf_set_info_title() | pdf_set_info() en passant "Title" comme second paramètre.
pdf_set_info_subject() | pdf_set_info() en passant "Subject" comme second paramètre.
pdf_set_info_author() | pdf_set_info() en passant "Author" comme second paramètre.
pdf_set_info_keywords() | pdf_set_info() en passant "Keywords" comme second paramètre.
pdf_set_leading() | pdf_set_value() en passant "leading" comme second paramètre.
pdf_set_text_rendering() | pdf_set_value() en passant "textrendering" comme second paramètre.
pdf_set_text_rise() | pdf_set_value() en passant "textrise" comme second paramètre.
pdf_set_horiz_scaling() | pdf_set_value() en passant "horizscaling" comme second paramètre.
pdf_set_text_matrix() | Désormais abandonnée.
pdf_set_char_spacing() | pdf_set_value() en passant "charspacing" comme second paramètre.
pdf_set_word_spacing() | pdf_set_value() en passant "wordspacing" comme second paramètre.
pdf_set_transition() | pdf_set_parameter() en passant "transition" comme second paramètre.
pdf_open() | pdf_new() suivi d'un appel à pdf_open_file()
pdf_set_font() | pdf_findfont() suivi d'un appel à pdf_setfont()
pdf_set_duration() | pdf_set_value() en passant "duration" comme second paramètre.
pdf_open_gif() | pdf_open_image_file() en passant "gif" comme second paramètre.
pdf_open_jpeg() | pdf_open_image_file() en passant "jpeg" comme second paramètre.
pdf_open_tiff() | pdf_open_image_file() en passant "tiff" comme second paramètre.
pdf_open_png() | pdf_open_image_file() en passant "png" comme second paramètre.
pdf_get_image_width() | pdf_get_value() en passant "imagewidth" comme second paramètre et l'image en troisième paramètre.
pdf_get_image_height() | pdf_get_value() en passant "imageheight" comme second paramètre et l'image en troisième paramètre.

Exemples

La plupart des fonctions sont simples d'emploi. Le plus difficile est probablement de créer un fichier PDF simple. L'exemple suivant devrait vous mettre sur les rails. Il crée un fichier test.pdf d'une page. La page contient du texte "Times Roman outlined", de taille de 30pt. Le texte est aussi souligné.

Exemple 1. Création d'un document PDF avec PDFlib

<?php
$pdf = pdf_new();
pdf_open_file($pdf, "test.pdf");
pdf_set_info($pdf, "Author", "Uwe Steinmann");
pdf_set_info($pdf, "Title", "Test for PHP wrapper of PDFlib 2.0");
pdf_set_info($pdf, "Creator", "See Author");
pdf_set_info($pdf, "Subject", "Testing");
pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
pdf_close($pdf);
pdf_delete($pdf);
echo "<A HREF=getpdf.php>termin&eacute;</A>";
?>

Le script getpdf.php ne fait que retourner le document PDF.

<?php
$len = filesize($filename);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
readfile($filename);
?>

La distribution de la PDFlib contient des exemples plus complexes, qui créent un page avec une horloge à aiguille. Ici, nous utilisons la création de pages en mémoire, pour éviter l'utilisation de fichiers temporaires. L'exemple a été adapté à PHP. (Cet exemple est disponible dans la documentation CLibPDF.)

Exemple 2. Exemple pdfclock de PDFlib

<?php
$radius = 200;
$margin = 20;
$pagecount = 10;

$pdf = pdf_new();

if (!pdf_open_file($pdf, "")) {
    print error;
    exit;
};

pdf_set_parameter($pdf, "warning", "true");

pdf_set_info($pdf, "Creator", "pdf_clock.php");
pdf_set_info($pdf, "Author", "Uwe Steinmann");
pdf_set_info($pdf, "Title", "Analog Clock");

while($pagecount-- > 0) {
    pdf_begin_page($pdf, 2 * ($radius + $margin), 2 * ($radius + $margin));

    pdf_set_parameter($pdf, "transition", "wipe");
    pdf_set_value($pdf, "duration", 0.5);

    pdf_translate($pdf, $radius + $margin, $radius + $margin);
    pdf_save($pdf);
    pdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);

    /* les marques des minutes */
    pdf_setlinewidth($pdf, 2.0);
    for ($alpha = 0; $alpha < 360; $alpha += 6) {
        pdf_rotate($pdf, 6.0);
        pdf_moveto($pdf, $radius, 0.0);
        pdf_lineto($pdf, $radius-$margin/3, 0.0);
        pdf_stroke($pdf);
    }

    pdf_restore($pdf);
    pdf_save($pdf);

    /* les marques des 5 minutes */
    pdf_setlinewidth($pdf, 3.0);
    for ($alpha = 0; $alpha < 360; $alpha += 30) {
        pdf_rotate($pdf, 30.0);
        pdf_moveto($pdf, $radius, 0.0);
        pdf_lineto($pdf, $radius-$margin, 0.0);
        pdf_stroke($pdf);
    }

    $ltime = getdate();

    /* l'aiguille des heures */
    pdf_save($pdf);
    pdf_rotate($pdf,-(($ltime['minutes']/60.0)+$ltime['hours']-3.0)*30.0);
    pdf_moveto($pdf, -$radius/10, -$radius/20);
    pdf_lineto($pdf, $radius/2, 0.0);
    pdf_lineto($pdf, -$radius/10, $radius/20);
    pdf_closepath($pdf);
    pdf_fill($pdf);
    pdf_restore($pdf);

    /* l'aiguille des minutes */
    pdf_save($pdf);
    pdf_rotate($pdf,-(($ltime['seconds']/60.0)+$ltime['minutes']-15.0)*6.0);
    pdf_moveto($pdf, -$radius/10, -$radius/20);
    pdf_lineto($pdf, $radius * 0.8, 0.0);
    pdf_lineto($pdf, -$radius/10, $radius/20);
    pdf_closepath($pdf);
    pdf_fill($pdf);
    pdf_restore($pdf);

    /* l'aiguille des secondes */
    pdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
    pdf_setlinewidth($pdf, 2);
    pdf_save($pdf);
    pdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
    pdf_moveto($pdf, -$radius/5, 0.0);
    pdf_lineto($pdf, $radius, 0.0);
    pdf_stroke($pdf);
    pdf_restore($pdf);

    /* Dessin d'un petit cercle dans le centre */
    pdf_circle($pdf, 0, 0, $radius/30);
    pdf_fill($pdf);

    pdf_restore($pdf);

    pdf_end_page($pdf);

    // pour voir la diff&eacute;rence
    sleep(1);
}

pdf_close($pdf);

$buf = pdf_get_buffer($pdf);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
print $buf;

pdf_delete($pdf);
?>

Voir aussi

Note : Une alternative au module module PDFlib est le module de FastIO : ClibPDF. Voyez la section ClibPDF pour plus de détails. Notez que ClibPDF disponse d'une API différente de PDFlib.

Table des matières
pdf_add_annotation -- Obsolète : Ajoute une annotation
pdf_add_bookmark -- Ajoute un signet dans la page courante
pdf_add_launchlink -- Ajoute une annotation de lancement dans la page PDF courante
pdf_add_locallink -- Ajoute une annotation de lien dans la page PDF courante
pdf_add_note -- Ajoute une annotation dans la page PDF courante
pdf_add_outline -- Obsolète : Ajoute un signet dans la page courante
pdf_add_pdflink -- Ajoute une annotation sur un lien vers un fichier dans la page PDF courante
pdf_add_thumbnail -- Ajoute une miniature sur la page PDF courante
pdf_add_weblink -- Ajoute un lien web sur la page PDF courante
pdf_arc -- Dessine un arc de cercle PDF dans le sens anti-horaire
pdf_arcn -- Dessine un arc de cercle dans le sens horaire
pdf_attach_file -- Ajoute un fichier attaché à la page PDF
pdf_begin_page -- Initialise une nouvelle page de document PDF
pdf_begin_pattern -- Initialise un nouveau pattern PDF
pdf_begin_template -- Initialise un nouveau template PDF
pdf_circle -- Dessine un cercle dans un document PDF
pdf_clip -- Modifie le chemin de clipping PDF
pdf_close_image -- Ferme une image dans un document PDF
pdf_close_pdi_page -- Ferme la page PDF
pdf_close_pdi -- Ferme le fichier PDF d'entrée
pdf_close -- Ferme le fichier PDF
pdf_closepath_fill_stroke -- Termine le chemin, dessine les bords et remplit la forme
pdf_closepath_stroke -- Termine le chemin et dessine les bords
pdf_closepath -- Termine le chemin PDF courant
pdf_concat -- Concatène une matrice avec le CTM
pdf_continue_text -- Affiche du texte à la prochaine ligne PDF
pdf_curveto -- Dessine une courbe de Bezier
pdf_delete -- Efface un objet PDF
pdf_end_page -- Termine la page PDF courante
pdf_end_pattern -- Termine le pattern PDF
pdf_end_template -- Termine le template PDF
pdf_endpath -- Obsolète : Termine le chemin courant
pdf_fill_stroke -- Remplit et passe le pinceau sur le chemin PDF courant
pdf_fill -- Remplit le chemin PDF courant avec la couleur courante
pdf_findfont -- Prépare une police pour utilisation ultérieure avec pdf_setfont()
pdf_get_buffer -- Lit le tampon contenant le fichier PDF généré
pdf_get_font -- Obsolète: charge une police
pdf_get_fontname -- Obsolète : lit le nom de la police
pdf_get_fontsize -- Obsolète : gère les polices
pdf_get_image_height -- Retourne la hauteur d'une image
pdf_get_image_width -- Retourne la largeur d'une image
pdf_get_majorversion -- Retourne le numéro de version majeur de PDFlib
pdf_get_minorversion -- Retourne le numéro de version mineure de PDFlib
pdf_get_parameter -- Lit certains paramètres
pdf_get_pdi_parameter -- Lit des paramètres textuels dans le document PDI
pdf_get_pdi_value -- Lit des paramètres numériques dans le document PDF d'entrée
pdf_get_value -- Lit des paramètres numériques
pdf_initgraphics -- Remet à zéro l'environnement graphique PDF
pdf_lineto -- Dessine une ligne PDF
pdf_makespotcolor -- Place un point de couleur PDF
pdf_moveto -- Place le point courant PDF
pdf_new -- Crée un nouvel objet PDF
pdf_open_ccitt -- Ouvre une image contenant des données brutes CCITT
pdf_open_file -- Ouvre un nouveau fichier PDF
pdf_open_gif -- Obsolète : Ouvre une image GIF
pdf_open_image_file -- Lit une image depuis un fichier
pdf_open_image -- Ouvre une image
pdf_open_jpeg -- Obsolète : Ouvre une image JPEG
pdf_open_memory_image -- Ouvre une image créée en mémoire par PHP
pdf_open_pdi_page -- Prépare une page
pdf_open_pdi -- Ouvre un fichier PDF
pdf_open_png -- Obsolète : ouvre une image PNG
pdf_open_tiff -- Obsolète : Ouvre une image TIFF
pdf_open -- Obsolète : Ouvre un nouvel objet PDF
pdf_place_image -- Place une image dans la page
pdf_place_pdi_page -- Place une page dans le document
pdf_rect -- Dessine un rectangle
pdf_restore -- Rétablit l'ancien environnement graphique PDF
pdf_rotate -- Configure la rotation
pdf_save -- Sauve l'environnement graphique courant
pdf_scale -- Configure l'échelle du document
pdf_set_border_color -- Configure la couleur des bords autour des liens et annotations
pdf_set_border_dash -- Configure le style des lignes autour des liens at annotations
pdf_set_border_style -- Choisit le style de bord autour des liens et annotations
pdf_set_char_spacing -- Obsolète : Configure l'espacement de caractàres character spacing
pdf_set_duration -- Obsolète : Configure la durée entre deux pages
pdf_set_font -- Obsolète : Sélectionne la taille et le nom d'une police
pdf_set_horiz_scaling -- Obsolète : Configure l'échelle horizontale du texte
pdf_set_info_author -- Obsolète : remplit le champ d'auteur du document
pdf_set_info_creator -- Obsolète : remplit le champ de créateur du document
pdf_set_info_keywords -- Obsolète : remplit le champ de mots clés du document
pdf_set_info_subject -- Obsolète : remplit le champ de sujet du document
pdf_set_info_title -- Obsolète : remplit le champ de titre du document
pdf_set_info -- Remplit un champ de l'en-tête de document PDF
pdf_set_leading -- Obsolète : Configure la distance entre deux lignes de texte
pdf_set_parameter -- Modifie certains paramètres
pdf_set_text_matrix -- Obsolète : configure la matrice de texte
pdf_set_text_pos -- Modifie la position du texte
pdf_set_text_rendering -- Obsolète : Détermine le rendu du texte
pdf_set_text_rise -- Obsolète : configure l'élévation de texte
pdf_set_value -- Modifie les paramètres numériques
pdf_set_word_spacing -- Obsolète : configure l'espace entre deux mots
pdf_setcolor -- Configure la couleur de dessin et de remplissage
pdf_setdash -- Configure le mode de pointillé
pdf_setflat -- Configure la position à plat (flatness)
pdf_setfont -- Configure la police courante
pdf_setgray_fill -- Configure la couleur de remplissage à un niveau de gris
pdf_setgray_stroke -- Configure la couleur de dessin à un niveau de gris
pdf_setgray -- Configure la couleur de dessin et de remplissage à un niveau de gris
pdf_setlinecap -- Configure le paramètre de linecap
pdf_setlinejoin -- Configure le paramètre de linejoin
pdf_setlinewidth -- Configure la largeur de ligne
pdf_setmatrix -- Configure la matrice de transformation
pdf_setmiterlimit -- Configure la "miter limit"
pdf_setpolydash -- Configure des pointillés complexes
pdf_setrgbcolor_fill -- Choisit la couleur utilisée pour le remplissage
pdf_setrgbcolor_stroke -- Choisit la couleur utilisée pour le dessin
pdf_setrgbcolor -- Choisit la couleur rgb de remplissage et de dessin
pdf_show_boxed -- Affiche le texte dans un cadre
pdf_show_xy -- Affiche un text à une position donnée
pdf_show -- Affiche le texte à la position courante
pdf_skew -- Incline le système de coordonnées
pdf_stringwidth -- Retourne la largeur d'un texte avec la police courante
pdf_stroke -- Dessine la ligne le long du chemin
pdf_translate -- Translate l'origine du système de coordonnées

Précédent | Sommaire | Suivant
overload | Niveau supérieur | pdf_add_annotation


pdf_add_annotation

pdf_add_annotation -- Obsolète : Ajoute une annotation

Description

pdf_add_outline() est remplacé par pdf_add_note()

Précédent | Sommaire | Suivant
PDF | Niveau supérieur | pdf_add_bookmark


pdf_add_bookmark

(PHP 4 >= 4.0.1)

pdf_add_bookmark -- Ajoute un signet dans la page courante

Description

int pdf_add_bookmark ( resource pdfdoc, string text [, int parent [, int open]])

pdf_add_bookmark() ajoute un signet imbriqué dans la page courante, sous parent, ou bien dans le signet global si parent = 0. pdf_add_bookmark() retourne une ressource de signet, qui peut servir de paramètre parent Si open vaut 1, le signet fils sera visible. Si open vaut 0, le signet fils sera invisible.

Exemple 1. Exemple avec pdf_add_bookmark()

<?php
// create a new PDF

$pdf = pdf_new();
pdf_open_file($pdf);
pdf_set_info($pdf, "Author","Bob Nijman");

// begin a new page
pdf_begin_page($pdf, 300, 300);

// add a top-level bookmark
$bookmark = pdf_add_bookmark($pdf, "People");

// add a nested bookmark
pdf_add_bookmark($pdf, "Rasmus", $bookmark);

// and some text
pdf_set_font($pdf, "Helvetica", 20, "host");
$text = "This is R's page";
$width = pdf_stringwidth($pdf, $text);
pdf_set_text_pos($pdf, (300-$width)/2, 100);
pdf_show($pdf, $text);

// close the page and the PDF
pdf_end_page($pdf);
pdf_close($pdf);

?>

Précédent | Sommaire | Suivant
pdf_add_annotation | Niveau supérieur | pdf_add_launchlink


pdf_add_launchlink

(PHP 4 >= 4.0.5)

pdf_add_launchlink -- Ajoute une annotation de lancement dans la page PDF courante

Description

bool pdf_add_launchlink ( resource pdfdoc, float llx, float lly, float urx, float ury, string filename)

pdf_add_launchlink() ajoute une annotation de lancement de fichier (type arbitraire de fichiers). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_add_locallink().

Précédent | Sommaire | Suivant
pdf_add_bookmark | Niveau supérieur | pdf_add_locallink


pdf_add_locallink

(PHP 4 >= 4.0.5)

pdf_add_locallink -- Ajoute une annotation de lien dans la page PDF courante

Description

bool pdf_add_locallink ( resource pdfdoc, float lowerleftx, float lowerlefty, float upperrightx, float upperrighty, int page, string dest)

pdf_add_locallink() ajoute une annotation de lien dans la page courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

dest est le zoom de la page de destination. Il peut valoir retain, fitpage, fitwidth, fitheight ou fitbbox.

Voir aussi pdf_add_launchlink().

Précédent | Sommaire | Suivant
pdf_add_launchlink | Niveau supérieur | pdf_add_note


pdf_add_note

(PHP 4 >= 4.0.5)

pdf_add_note -- Ajoute une annotation dans la page PDF courante

Description

bool pdf_add_note ( resource pdfdoc, float llx, float lly, float urx, float ury, string contents, string title, string icon, int open)

pdf_add_note() ajoute une annotation dans la page courante. Le paramèter icon peut prendre l'une des valeurs suivantes : "comment", "insert", "note", "paragraph", "newparagraph" "key" et "help". Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_add_locallink | Niveau supérieur | pdf_add_outline


pdf_add_outline

pdf_add_outline -- Obsolète : Ajoute un signet dans la page courante

Description

Obsolète.

Voir pdf_add_bookmark().

Précédent | Sommaire | Suivant
pdf_add_note | Niveau supérieur | pdf_add_pdflink


pdf_add_pdflink

(PHP 3>= 3.0.12, PHP 4 )

pdf_add_pdflink -- Ajoute une annotation sur un lien vers un fichier dans la page PDF courante

Description

bool pdf_add_pdflink ( resource pdfdoc, float bottom_left_x, float bottom_left_y, float up_right_x, float up_right_y, string filename, int page, string dest)

pdf_add_pdflink() ajoute une annotation sur un lien vers un fichier dans la page courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_add_locallink() et pdf_add_weblink().

Précédent | Sommaire | Suivant
pdf_add_outline | Niveau supérieur | pdf_add_thumbnail


pdf_add_thumbnail

(PHP 4 >= 4.0.5)

pdf_add_thumbnail -- Ajoute une miniature sur la page PDF courante

Description

bool pdf_add_thumbnail ( resource pdfdoc, int image)

pdf_add_thumbnail() ajoute une miniature sur la page courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_add_pdflink | Niveau supérieur | pdf_add_weblink


pdf_add_weblink

(PHP 3>= 3.0.12, PHP 4 )

pdf_add_weblink -- Ajoute un lien web sur la page PDF courante

Description

bool pdf_add_weblink ( resource pdfdoc, float lowerleftx, float lowerlefty, float upperrightx, float upperrighty, string url)

pdf_add_weblink() ajoute un lien web url sur la page courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_add_thumbnail | Niveau supérieur | pdf_arc


pdf_arc

(PHP 3>= 3.0.6, PHP 4 )

pdf_arc -- Dessine un arc de cercle PDF dans le sens anti-horaire

Description

bool pdf_arc ( resource pdfdoc, float x, float y, float r, float alpha, float beta)

pdf_arc() dessine un arc de cercle dans le sens anti-horaire, dont le centre est le point de coordonnées (x, y) et de rayon r, depuis l'angle alpha jusqu'à beta, exprimés en degrés. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_arcn() et pdf_circle().

Précédent | Sommaire | Suivant
pdf_add_weblink | Niveau supérieur | pdf_arcn


pdf_arcn

(PHP 4 >= 4.0.5)

pdf_arcn -- Dessine un arc de cercle dans le sens horaire

Description

bool pdf_arcn ( resource pdfdoc, float x, float y, float r, float alpha, float beta)

pdf_arc() dessine un arc de cercle dans le sens horaire dont le centre est le point de coordonnées (x, y) et de rayon r, depuis l'angle alpha jusqu'à beta, exprimés en degrés. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_arc() et pdf_circle().

Précédent | Sommaire | Suivant
pdf_arc | Niveau supérieur | pdf_attach_file


pdf_attach_file

(PHP 4 >= 4.0.5)

pdf_attach_file -- Ajoute un fichier attaché à la page PDF

Description

bool pdf_attach_file ( resource pdfdoc, float llx, float lly, float urx, float ury, string filename, string description, string author, string mimetype, string icon)

pdf_attach_file ajoute un fichier attaché à la page courante. icon peut prendre l'une des valeurs suivantes : graph, paperclip, pushpin ou tag. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Seule la version complète d'Acrobat sera capable d'afficher les attachements. Toutes les autres versions d'Acrobat n'afficheront qu'un point d'interrogation.

Précédent | Sommaire | Suivant
pdf_arcn | Niveau supérieur | pdf_begin_page


pdf_begin_page

(PHP 3>= 3.0.6, PHP 4 )

pdf_begin_page -- Initialise une nouvelle page de document PDF

Description

bool pdf_begin_page ( resource pdfdoc, float width, float height)

pdf_begin_page ajoute une nouvelle page au document. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Les paramètres width et height sont spécifiés en points, qui représentent 1/72 d'un pouce (2.54 cm).

Tableau 1. Tailles de pages courantes, indiquées en points

nom | taille
A0 | 2380 par 3368
A1 | 1684 par 2380
A2 | 1190 par 1684
A3 | 842 par 1190
A4 | 595 par 842
A5 | 421 par 595
A6 | 297 par 421
B5 | 501 par 709
letter (8.5" par 11") | 612 par 792
legal (8.5" par 14") | 612 par 1008
ledger (17" par 11") | 1224 par 792
11" par 17" | 792 par 1224

Voir aussi pdf_end_page().

Précédent | Sommaire | Suivant
pdf_attach_file | Niveau supérieur | pdf_begin_pattern


pdf_begin_pattern

(PHP 4 >= 4.0.5)

pdf_begin_pattern -- Initialise un nouveau pattern PDF

Description

int pdf_begin_pattern ( resource pdfdoc, float width, float height, float xstep, float ystep, int painttype)

pdf_begin_pattern initialise un nouveau pattern, et retourne une ressource. width et height définissent le cadre du pattern. xstep et ystep représentent les offsets des répétitions. painttype=1 indique que le pattern dispose de ses propres couleurs, tandis que la valeur 2 indique que la couleur courante est utilisée lorsque le pattern est appliqué.

Voir aussi pdf_end_pattern().

Précédent | Sommaire | Suivant
pdf_begin_page | Niveau supérieur | pdf_begin_template


pdf_begin_template

(PHP 4 >= 4.0.5)

pdf_begin_template -- Initialise un nouveau template PDF

Description

int pdf_begin_template ( resource pdfdoc, float width, float height)

pdf_begin_template() initialise un nouveau template.

Précédent | Sommaire | Suivant
pdf_begin_pattern | Niveau supérieur | pdf_circle


pdf_circle

(PHP 3>= 3.0.6, PHP 4 )

pdf_circle -- Dessine un cercle dans un document PDF

Description

bool pdf_circle ( resource pdfdoc, float x, float y, float r)

pdf_circle() dessine un cercle de centre (x, y) et de rayon r. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_arc() et pdf_arcn().

Précédent | Sommaire | Suivant
pdf_begin_template | Niveau supérieur | pdf_clip


pdf_clip

(PHP 3>= 3.0.6, PHP 4 )

pdf_clip -- Modifie le chemin de clipping PDF

Description

bool pdf_clip ( resource pdfdoc)

pdf_clip() utilise le chemin courant comme chemin de clipping. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_circle | Niveau supérieur | pdf_close_image


pdf_close_image

(PHP 3>= 3.0.7, PHP 4 )

pdf_close_image -- Ferme une image dans un document PDF

Description

void pdf_close_image ( resource pdfdoc, int image)

pdf_close_image() ferme l'image image,
ouverte avec l'une des fonctions images : pdf_open_image(),
pdf_open_gif(), pdf_open_jpg(),
pdf_open_png(),  pdf_open_image_file(),
pdf_open_tiff() et pdf_open_memory_image().

Précédent | Sommaire | Suivant
pdf_clip | Niveau supérieur | pdf_close_pdi_page


pdf_close_pdi_page

(PHP 4 >= 4.0.5)

pdf_close_pdi_page -- Ferme la page PDF

Description

bool pdf_close_pdi_page ( resource pdfdoc, int pagehandle)

pdf_close_pdi_page() ferme la page, et libère toutes les ressources liées à cette page. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_close_image | Niveau supérieur | pdf_close_pdi


pdf_close_pdi

(PHP 4 >= 4.0.5)

pdf_close_pdi -- Ferme le fichier PDF d'entrée

Description

bool pdf_close_pdi ( resource pdfdoc, int dochandle)

pdf_close_pdi() ferme toutes les pages ouvertes, et referme le document PDF utilsée en entrée. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_open_pdi().

Précédent | Sommaire | Suivant
pdf_close_pdi_page | Niveau supérieur | pdf_close


pdf_close

(PHP 3>= 3.0.6, PHP 4 )

pdf_close -- Ferme le fichier PDF

Description

bool pdf_close ( resource pdfdoc)

pdf_close() ferme le fichier PDF généré, et libère toutes les ressources qui y était rattachées. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_new().

Précédent | Sommaire | Suivant
pdf_close_pdi | Niveau supérieur | pdf_closepath_fill_stroke


pdf_closepath_fill_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_closepath_fill_stroke -- Termine le chemin, dessine les bords et remplit la forme

Description

bool pdf_closepath_fill_stroke ( resource pdfdoc)

pdf_closepath_fill_stroke() termine le chemin, dessine les bords et remplit la forme. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_closepath() et pdf_closepath_stroke().

Précédent | Sommaire | Suivant
pdf_close | Niveau supérieur | pdf_closepath_stroke


pdf_closepath_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_closepath_stroke -- Termine le chemin et dessine les bords

Description

bool pdf_closepath_stroke ( resource pdfdoc)

pdf_closepath_stroke() termine le chemin et dessine les bords. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_closepath() et pdf_closepath_fil_stroke().

Précédent | Sommaire | Suivant
pdf_closepath_fill_stroke | Niveau supérieur | pdf_closepath


pdf_closepath

(PHP 3>= 3.0.6, PHP 4 )

pdf_closepath -- Termine le chemin PDF courant

Description

bool pdf_closepath ( resource pdfdoc)

pdf_closepath() termine le chemin courant. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_closepath_stroke() et pdf_closepath_fil_stroke().

Précédent | Sommaire | Suivant
pdf_closepath_stroke | Niveau supérieur | pdf_concat


pdf_concat

(PHP 4 >= 4.0.5)

pdf_concat -- Concatène une matrice avec le CTM

Description

bool pdf_concat ( resource pdfdoc, float a, float b, float c, float d, float e, float f)

pdf_concat() concatène une matrice avec le CTM. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_closepath | Niveau supérieur | pdf_continue_text


pdf_continue_text

(PHP 3>= 3.0.6, PHP 4 )

pdf_continue_text -- Affiche du texte à la prochaine ligne PDF

Description

bool pdf_continue_text ( resource pdfdoc, string text)

pdf_continue_text() affiche le texte text à la prochaine ligne. L'espacement entre les lignes est déterminé avec le paramètre leading. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_concat | Niveau supérieur | pdf_curveto


pdf_curveto

(PHP 3>= 3.0.6, PHP 4 )

pdf_curveto -- Dessine une courbe de Bezier

Description

bool pdf_curveto ( resource pdfdoc, float x1, float y1, float x2, float y2, float x3, float y3)

pdf_curveto() dessine une courbe de Bezier à partir du point courant, et en utilisant trois points de contrôle. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_continue_text | Niveau supérieur | pdf_delete


pdf_delete

(PHP 4 >= 4.0.5)

pdf_delete -- Efface un objet PDF

Description

bool pdf_delete ( resource pdfdoc)

pdf_delete() efface l'objet PDF >pdf_object, et libère toutes les ressources. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_new().

Précédent | Sommaire | Suivant
pdf_curveto | Niveau supérieur | pdf_end_page


pdf_end_page

(PHP 3>= 3.0.6, PHP 4 )

pdf_end_page -- Termine la page PDF courante

Description

bool pdf_end_page ( resource pdfdoc)

pdf_end_page() termine la page courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_begin_page().

Précédent | Sommaire | Suivant
pdf_delete | Niveau supérieur | pdf_end_pattern


pdf_end_pattern

(PHP 4 >= 4.0.5)

pdf_end_pattern -- Termine le pattern PDF

Description

bool pdf_end_pattern ( resource pdfdoc)

pdf_end_pattern() termine la définition du pattern. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_begin_pattern().

Précédent | Sommaire | Suivant
pdf_end_page | Niveau supérieur | pdf_end_template


pdf_end_template

(PHP 4 >= 4.0.5)

pdf_end_template -- Termine le template PDF

Description

bool pdf_end_template ( resource pdfdoc)

pdf_end_template() termine la définition du template. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_end_pattern | Niveau supérieur | pdf_endpath


pdf_endpath

pdf_endpath -- Obsolète : Termine le chemin courant

Description

Obsolète. Utilsiez une des fonctions de pinceau, remplissage ou de clip.

Précédent | Sommaire | Suivant
pdf_end_template | Niveau supérieur | pdf_fill_stroke


pdf_fill_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_fill_stroke -- Remplit et passe le pinceau sur le chemin PDF courant

Description

bool pdf_fill_stroke ( resource pdfdoc)

pdf_fill_stroke() remplit le chemin courant avec la couleur courant, en applicant le pinceau courant (stroke). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_endpath | Niveau supérieur | pdf_fill


pdf_fill

(PHP 3>= 3.0.6, PHP 4 )

pdf_fill -- Remplit le chemin PDF courant avec la couleur courante

Description

bool pdf_fill ( resource pdfdoc)

pdf_fill_stroke() remplit le chemin courant avec la couleur courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_fill_stroke | Niveau supérieur | pdf_findfont


pdf_findfont

(PHP 4 >= 4.0.5)

pdf_findfont -- Prépare une police pour utilisation ultérieure avec pdf_setfont()

Description

int pdf_findfont ( resource pdfdoc, string fontname, string encoding [, int embed])

pdf_findfont prépare la police fontname pour utilisation ultérieure avec pdf_setfont(). Les dimensions seront chargées, et si embed est non nul, le fichier de police sera vérifié mais pas utilisé. encoding peut prendre une des valeurs suivantes : builtin,macroman, winansi, host, ou bien un encodage définit par l'utilisateur, ou encore le nom d'une CMap.

pdf_findfont() retourne une ressource de police, ou bien FALSE en cas d'erreur.

Exemple 1. Exemple avec pdf_findfont()

<?php

$font = pdf_findfont($pdf, "Times New Roman", "winansi", 1);
if ($font) {
    pdf_setfont($pdf, $font, 10);
}

?>

Précédent | Sommaire | Suivant
pdf_fill | Niveau supérieur | pdf_get_buffer


pdf_get_buffer

(PHP 4 >= 4.0.5)

pdf_get_buffer -- Lit le tampon contenant le fichier PDF généré

Description

string pdf_get_buffer ( resource pdfdoc)

pdf_get_buffer() lit le contenu du tampon PDF. Le résultat doit etre utilisé par le client avant d'appeler toute autre fonction PDFlib.

Précédent | Sommaire | Suivant
pdf_findfont | Niveau supérieur | pdf_get_font


pdf_get_font

pdf_get_font -- Obsolète: charge une police

Description

Obsolète.

Voir pdf_get_value().

Précédent | Sommaire | Suivant
pdf_get_buffer | Niveau supérieur | pdf_get_fontname


pdf_get_fontname

pdf_get_fontname -- Obsolète : lit le nom de la police

Description

Obsolète.

Voir pdf_get_parameter().

Précédent | Sommaire | Suivant
pdf_get_font | Niveau supérieur | pdf_get_fontsize


pdf_get_fontsize

pdf_get_fontsize -- Obsolète : gère les polices

Description

Obsolète.

Voir pdf_get_value().

Précédent | Sommaire | Suivant
pdf_get_fontname | Niveau supérieur | pdf_get_image_height


pdf_get_image_height

(PHP 3>= 3.0.12, PHP 4 )

pdf_get_image_height -- Retourne la hauteur d'une image

Description

string pdf_get_image_height ( int pdf_object, int image)

pdf_get_image_height() est obsolète. Utilisez plutôt pdf_get_value().

Précédent | Sommaire | Suivant
pdf_get_fontsize | Niveau supérieur | pdf_get_image_width


pdf_get_image_width

(PHP 3>= 3.0.12, PHP 4 )

pdf_get_image_width -- Retourne la largeur d'une image

Description

string pdf_get_image_width ( int pdf_object, int image)

pdf_get_image_width() est obsolète. Utilisez plutôt pdf_get_value().

Précédent | Sommaire | Suivant
pdf_get_image_height | Niveau supérieur | pdf_get_majorversion


pdf_get_majorversion

(PHP 4 >= 4.2.0)

pdf_get_majorversion -- Retourne le numéro de version majeur de PDFlib

Description

int pdf_get_majorversion ( void )

pdf_get_majorversion() retourne le numéro de version majeur de PDFlib.

Voir aussi pdf_get_minorversion().

Précédent | Sommaire | Suivant
pdf_get_image_width | Niveau supérieur | pdf_get_minorversion


pdf_get_minorversion

(PHP 4 >= 4.2.0)

pdf_get_minorversion -- Retourne le numéro de version mineure de PDFlib

Description

int pdf_get_minorversion ( void )

pdf_get_majorversion() retourne le numéro de version mineure de PDFlib.

Voir aussi pdf_get_majorversion().

Précédent | Sommaire | Suivant
pdf_get_majorversion | Niveau supérieur | pdf_get_parameter


pdf_get_parameter

(PHP 4 >= 4.0.1)

pdf_get_parameter -- Lit certains paramètres

Description

string pdf_get_parameter ( resource pdfdoc, string key [, float modifier])

pdf_get_parameter() lit certains paramètres au format textuel.

Précédent | Sommaire | Suivant
pdf_get_minorversion | Niveau supérieur | pdf_get_pdi_parameter


pdf_get_pdi_parameter

(PHP 4 >= 4.0.5)

pdf_get_pdi_parameter -- Lit des paramètres textuels dans le document PDI

Description

string pdf_get_pdi_parameter ( resource pdfdoc, string key, int document, int page, int index)

pdf_get_pdi_parameter() lit des paramètres textuels dans le document PDI.

Précédent | Sommaire | Suivant
pdf_get_parameter | Niveau supérieur | pdf_get_pdi_value


pdf_get_pdi_value

(PHP 4 >= 4.0.5)

pdf_get_pdi_value -- Lit des paramètres numériques dans le document PDF d'entrée

Description

string pdf_get_pdi_value ( resource pdfdoc, string key, int doc, int page, int index)

pdf_get_pdi_value() lit des paramètres numériques dans le document PDF d'entrée. Les paramètres lus sont de type numérique.

Précédent | Sommaire | Suivant
pdf_get_pdi_parameter | Niveau supérieur | pdf_get_value


pdf_get_value

(PHP 4 >= 4.0.1)

pdf_get_value -- Lit des paramètres numériques

Description

float pdf_get_value ( resource pdfdoc, string key [, float modifier])

pdf_get_value lit des paramètres numériques du document pdf_object, identifié par key.

Précédent | Sommaire | Suivant
pdf_get_pdi_value | Niveau supérieur | pdf_initgraphics


pdf_initgraphics

(PHP 4 >= 4.0.5)

pdf_initgraphics -- Remet à zéro l'environnement graphique PDF

Description

bool pdf_initgraphics ( resource pdfdoc)

pdf_initgraphics() remet à leur valeur intiale toutes les couleurs et les paramètres grahpiques. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_get_value | Niveau supérieur | pdf_lineto


pdf_lineto

(PHP 3>= 3.0.6, PHP 4 )

pdf_lineto -- Dessine une ligne PDF

Description

bool pdf_lineto ( resource pdfdoc, float x, float y)

pdf_lineto() dessine une ligne entre le point courant le le point de coordonnées (x, y). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_initgraphics | Niveau supérieur | pdf_makespotcolor


pdf_makespotcolor

(PHP 4 >= 4.0.5)

pdf_makespotcolor -- Place un point de couleur PDF

Description

bool pdf_makespotcolor ( resource pdfdoc, string spotname)

pdf_makespotcolor() place un point de couleur, ayant le nom de spotname et la couleur courante. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_lineto | Niveau supérieur | pdf_moveto


pdf_moveto

(PHP 3>= 3.0.6, PHP 4 )

pdf_moveto -- Place le point courant PDF

Description

bool pdf_moveto ( resource pdfdoc, float x, float y)

pdf_moveto place le point courant aux coordonnées (x,y). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Le point courant graphique et le point courant de texte sont différents. Voyez pdf_set_text_pos() pour déplacer le point courant de texte.

Précédent | Sommaire | Suivant
pdf_makespotcolor | Niveau supérieur | pdf_new


pdf_new

(PHP 4 >= 4.0.5)

pdf_new -- Crée un nouvel objet PDF

Description

resource pdf_new ( )

pdf_new() crée un nouvel objet PDF, en utilisant le système de gestion d'erreur et celui de gestion de la mémoire.

Voir aussi pdf_close().

Précédent | Sommaire | Suivant
pdf_moveto | Niveau supérieur | pdf_open_ccitt


pdf_open_ccitt

(PHP 4 >= 4.0.5)

pdf_open_ccitt -- Ouvre une image contenant des données brutes CCITT

Description

int pdf_open_ccitt ( resource pdfdoc, string filename, int width, int height, int bitreverse, int k, int blackls1)

pdf_open_ccitt() ouvre une image brute CCITT. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_new | Niveau supérieur | pdf_open_file


pdf_open_file

(PHP 4 >= 4.0.5)

pdf_open_file -- Ouvre un nouveau fichier PDF

Description

bool pdf_open_file ( resource pdfdoc [, string filename])

pdf_open_file() crée un nouveau fichier PDF dans le fichier filename. Si filename est vide, le document PDF sera envoyé en mémoire. Le résultat pourra alors être lu avec la fonction pdf_get_buffer() function. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

L'exemple suivant montre comment créer un document PDF en mémoire et comment l'afficher correctement.

Exemple 1. Création d'un document PDF en mémoire

<?php

$pdf = pdf_new();

pdf_open_file($pdf);
pdf_begin_page($pdf, 595, 842);
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "A PDF document created in memory!", 50, 750);
pdf_end_page($pdf);
pdf_close($pdf);

$data = pdf_get_buffer($pdf);

header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));

echo $data;

?>

Précédent | Sommaire | Suivant
pdf_open_ccitt | Niveau supérieur | pdf_open_gif


pdf_open_gif

pdf_open_gif -- Obsolète : Ouvre une image GIF

Description

Obsolète.

Voir pdf_open_image(),

Précédent | Sommaire | Suivant
pdf_open_file | Niveau supérieur | pdf_open_image_file


pdf_open_image_file

(PHP 3 CVS only, PHP 4 )

pdf_open_image_file -- Lit une image depuis un fichier

Description

int pdf_open_image_file ( resource pdfdoc, string imagetype, string filename [, string stringparam [, string intparam]])

pdf_open_image_file() ouvre une image depuis le fichier filename. Les formats supportés sont jpeg, tiff, gif, et png. stringparam vaut soit "", mask, masked ou page. intparam vaut soit 0, soit la ressource d'image appliquée au masque, soit la ressource de page.

Précédent | Sommaire | Suivant
pdf_open_gif | Niveau supérieur | pdf_open_image


pdf_open_image

(PHP 4 >= 4.0.5)

pdf_open_image -- Ouvre une image

Description

int pdf_open_image ( resource pdf-document, string imagetype, string source, string data, long length, int width, int height, int components, int bpc, string params)

pdf_open_image permet d'accéder à des images de différents formats. Les formats supportés sont : jpeg, ccitt, raw. Les sources supportées sont memory, fileref, url. length est uniquement utilisé si imagetype vaut raw. params est uniquement utilisé si imagetype vaut ccitt.

Précédent | Sommaire | Suivant
pdf_open_image_file | Niveau supérieur | pdf_open_jpeg


pdf_open_jpeg

pdf_open_jpeg -- Obsolète : Ouvre une image JPEG

Description

Cette fonction est obsolète, utilisez plutôt pdf_open_image().

Précédent | Sommaire | Suivant
pdf_open_image | Niveau supérieur | pdf_open_memory_image


pdf_open_memory_image

(PHP 3>= 3.0.10, PHP 4 )

pdf_open_memory_image -- Ouvre une image créée en mémoire par PHP

Description

int pdf_open_memory_image ( resource pdfdoc, resource image)

pdf_open_memory_image() prend l'image image créée par PHP avec les fonctions d'images, et l'intègre dans l'objet PDF pdf_object. Cette fonction retourne une ressource d'image PDF.

Exemple 1. Inclure une image PHP en PDF

<?php
$im = ImageCreate(100, 100);
$col = ImageColorAllocate($im, 80, 45, 190);
ImageFill($im, 10, 10, $col);
$pim = pdf_open_memory_image($pdf, $im);
ImageDestroy($im);
pdf_place_image($pdf, $pim, 100, 100, 1);
pdf_close_image($pdf, $pim);
?>

Voir aussi pdf_close_image() et pdf_place_image().

Précédent | Sommaire | Suivant
pdf_open_jpeg | Niveau supérieur | pdf_open_pdi_page


pdf_open_pdi_page

(PHP 4 >= 4.0.5)

pdf_open_pdi_page -- Prépare une page

Description

int pdf_open_pdi_page ( resource pdfdoc, int dochandle, int pagenumber, string pagelabel)

pdf_open_pdi_page() prépare une page pour utilisation ultérieure avec pdf_place_pdi_page()

Précédent | Sommaire | Suivant
pdf_open_memory_image | Niveau supérieur | pdf_open_pdi


pdf_open_pdi

(PHP 4 >= 4.0.5)

pdf_open_pdi -- Ouvre un fichier PDF

Description

int pdf_open_pdi ( resource pdfdoc, string filename, string stringparam, int intparam)

pdf_open_pdi() ouvre un fichier PDF existant, pour utilisation ultérieure.

Voir aussi pdf_close_pdi().

Précédent | Sommaire | Suivant
pdf_open_pdi_page | Niveau supérieur | pdf_open_png


pdf_open_png

pdf_open_png -- Obsolète : ouvre une image PNG

Description

Obsolète.

Reportez-vous à pdf_open_image().

Précédent | Sommaire | Suivant
pdf_open_pdi | Niveau supérieur | pdf_open_tiff


pdf_open_tiff

pdf_open_tiff -- Obsolète : Ouvre une image TIFF

Description

Cette fonction est obsolète, utilisez plutôt pdf_open_image().

Précédent | Sommaire | Suivant
pdf_open_png | Niveau supérieur | pdf_open


pdf_open

pdf_open -- Obsolète : Ouvre un nouvel objet PDF

Description

Cette fonction est obsolète, utilisez de préférence pdf_new() avec pdf_open_file().

Précédent | Sommaire | Suivant
pdf_open_tiff | Niveau supérieur | pdf_place_image


pdf_place_image

(PHP 3>= 3.0.7, PHP 4 )

pdf_place_image -- Place une image dans la page

Description

bool pdf_place_image ( resource pdfdoc, int image, float x, float y, float scale)

pdf_place_image() place l'image image, dans la page courante, au point de coordonnées (x,y), et la met à l'échelle scale. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_open | Niveau supérieur | pdf_place_pdi_page


pdf_place_pdi_page

(PHP 4 >= 4.0.6)

pdf_place_pdi_page -- Place une page dans le document

Description

bool pdf_place_pdi_page ( resource pdfdoc, int page, float x, float y, float sx, float sy)

pdf_place_pdi_page place une page PDI, dans la page courante, aux coordonnées (x, y), et la met à l'échelle. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_place_image | Niveau supérieur | pdf_rect


pdf_rect

(PHP 3>= 3.0.6, PHP 4 )

pdf_rect -- Dessine un rectangle

Description

bool pdf_rect ( resource pdfdoc, float x, float y, float width, float height)

pdf_rect dessine un rectangle de coin inférieur gauche aux coordonnées (x, y), et avec la largeur width et la hauteur height. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_place_pdi_page | Niveau supérieur | pdf_restore


pdf_restore

(PHP 3>= 3.0.6, PHP 4 )

pdf_restore -- Rétablit l'ancien environnement graphique PDF

Description

bool pdf_restore ( resource pdfdoc)

pdf_restore() rétablit l'ancien environnement graphique, sauvé avec pdf_save(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_rect | Niveau supérieur | pdf_rotate


pdf_rotate

(PHP 3>= 3.0.6, PHP 4 )

pdf_rotate -- Configure la rotation

Description

bool pdf_rotate ( resource pdfdoc, float phi)

pdf_rotate() fait pivoter le système de coordonnées de phi degrés. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_restore | Niveau supérieur | pdf_save


pdf_save

(PHP 3>= 3.0.6, PHP 4 )

pdf_save -- Sauve l'environnement graphique courant

Description

bool pdf_save ( resource pdfdoc)

pdf_save() sauve l'environnement graphique courant. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_rotate | Niveau supérieur | pdf_scale


pdf_scale

(PHP 3>= 3.0.6, PHP 4 )

pdf_scale -- Configure l'échelle du document

Description

bool pdf_scale ( resource pdfdoc, float x-scale, float y-scale)

pdf_scale() configure l'échelle du document en coordonnées horizontales et verticales. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_save | Niveau supérieur | pdf_set_border_color


pdf_set_border_color

(PHP 3>= 3.0.12, PHP 4 )

pdf_set_border_color -- Configure la couleur des bords autour des liens et annotations

Description

bool pdf_set_border_color ( resource pdfdoc, float red, float green, float blue)

pdf_set_border_color() configure la couleur des bords autour des liens et annotations; Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_scale | Niveau supérieur | pdf_set_border_dash


pdf_set_border_dash

(PHP 4 >= 4.0.1)

pdf_set_border_dash -- Configure le style des lignes autour des liens at annotations

Description

bool pdf_set_border_dash ( resource pdfdoc, float black, float white)

pdf_set_border_dash() configure le style des lignes autour des liens. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_setdash().

Précédent | Sommaire | Suivant
pdf_set_border_color | Niveau supérieur | pdf_set_border_style


pdf_set_border_style

(PHP 3>= 3.0.12, PHP 4 )

pdf_set_border_style -- Choisit le style de bord autour des liens et annotations

Description

bool pdf_set_border_style ( resource pdfdoc, string style, float width)

pdf_set_border_style() configure le style des bords de tous les liens et annotations. style peut être solid ou dashed. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_set_border_dash | Niveau supérieur | pdf_set_char_spacing


pdf_set_char_spacing

pdf_set_char_spacing -- Obsolète : Configure l'espacement de caractàres character spacing

Description

Cette fonction est obsolète. Utilisez plutôt pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_border_style | Niveau supérieur | pdf_set_duration


pdf_set_duration

pdf_set_duration -- Obsolète : Configure la durée entre deux pages

Description

Obsolète.

Voir pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_char_spacing | Niveau supérieur | pdf_set_font


pdf_set_font

pdf_set_font -- Obsolète : Sélectionne la taille et le nom d'une police

Description

Obsolète. Utilisez plutôt pdf_findfont() suivie de pdf_setfont().

Voir pdf_findfont() et pdf_setfont().

Précédent | Sommaire | Suivant
pdf_set_duration | Niveau supérieur | pdf_set_horiz_scaling


pdf_set_horiz_scaling

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_horiz_scaling -- Obsolète : Configure l'échelle horizontale du texte

Description

void pdf_set_horiz_scaling ( int pdf_object, float scale)

Cette fonction est bsolète. Utilisez plutôt pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_font | Niveau supérieur | pdf_set_info_author


pdf_set_info_author

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_info_author -- Obsolète : remplit le champ d'auteur du document

Description

bool pdf_set_info_author ( int pdfdoc, string author)

Obsolète. Utilisez pdf_set_info().

Précédent | Sommaire | Suivant
pdf_set_horiz_scaling | Niveau supérieur | pdf_set_info_creator


pdf_set_info_creator

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_info_creator -- Obsolète : remplit le champ de créateur du document

Description

bool pdf_set_info_creator ( int pdfdoc, string creator)

Obsolète. Utilisez pdf_set_info().

Précédent | Sommaire | Suivant
pdf_set_info_author | Niveau supérieur | pdf_set_info_keywords


pdf_set_info_keywords

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_info_keywords -- Obsolète : remplit le champ de mots clés du document

Description

bool pdf_set_info_keywords ( int pdfdoc, string keywords)

Obsolète. Utilisez pdf_set_info().

Précédent | Sommaire | Suivant
pdf_set_info_creator | Niveau supérieur | pdf_set_info_subject


pdf_set_info_subject

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_info_subject -- Obsolète : remplit le champ de sujet du document

Description

bool pdf_set_info_subject ( int pdfdoc, string subject)

Obsolète. Utilisez pdf_set_info().

Précédent | Sommaire | Suivant
pdf_set_info_keywords | Niveau supérieur | pdf_set_info_title


pdf_set_info_title

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_info_title -- Obsolète : remplit le champ de titre du document

Description

bool pdf_set_info_title ( int pdfdoc, string title)

Obsolète. Utilisez pdf_set_info().

Précédent | Sommaire | Suivant
pdf_set_info_subject | Niveau supérieur | pdf_set_info


pdf_set_info

(PHP 4 >= 4.0.1)

pdf_set_info -- Remplit un champ de l'en-tête de document PDF

Description

bool pdf_set_info ( resource pdfdoc, string key, string value)

pdf_set_info() remplit l'un des champs d'en-tête du document. Le paramètre key peut prendre l'une des valeurs suivantes : Subject, Title, Creator, Author, Keywords, ou une chaîne personnalisée. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_set_info_title | Niveau supérieur | pdf_set_leading


pdf_set_leading

pdf_set_leading -- Obsolète : Configure la distance entre deux lignes de texte

Description

Cette fonction est obsolète, utilisez de préférence pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_info | Niveau supérieur | pdf_set_parameter


pdf_set_parameter

(PHP 4 )

pdf_set_parameter -- Modifie certains paramètres

Description

bool pdf_set_parameter ( resource pdfdoc, string key, string value)

pdf_set_parameter() modifie les paramètres PDFlib de type texte. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_set_leading | Niveau supérieur | pdf_set_text_matrix


pdf_set_text_matrix

pdf_set_text_matrix -- Obsolète : configure la matrice de texte

Description

Voir pdf_set_paramter().

Précédent | Sommaire | Suivant
pdf_set_parameter | Niveau supérieur | pdf_set_text_pos


pdf_set_text_pos

(PHP 3>= 3.0.6, PHP 4 )

pdf_set_text_pos -- Modifie la position du texte

Description

bool pdf_set_text_pos ( resource pdfdoc, float x, float y)

pdf_set_text_pos() modifie la position du texte. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_set_text_matrix | Niveau supérieur | pdf_set_text_rendering


pdf_set_text_rendering

pdf_set_text_rendering -- Obsolète : Détermine le rendu du texte

Description

Obsolète.

Voir pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_text_pos | Niveau supérieur | pdf_set_text_rise


pdf_set_text_rise

pdf_set_text_rise -- Obsolète : configure l'élévation de texte

Description

Obsolète.

Reportez vous à pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_text_rendering | Niveau supérieur | pdf_set_value


pdf_set_value

(PHP 4 >= 4.0.1)

pdf_set_value -- Modifie les paramètres numériques

Description

bool pdf_set_value ( resource pdfdoc, string key, float value)

pdf_set_value() modifie la valeur du paramètre de la PDFlib key par la valeur de value. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_set_text_rise | Niveau supérieur | pdf_set_word_spacing


pdf_set_word_spacing

pdf_set_word_spacing -- Obsolète : configure l'espace entre deux mots

Description

Obsolète.

Reportez vous à pdf_set_value().

Précédent | Sommaire | Suivant
pdf_set_value | Niveau supérieur | pdf_setcolor


pdf_setcolor

(PHP 4 >= 4.0.5)

pdf_setcolor -- Configure la couleur de dessin et de remplissage

Description

bool pdf_setcolor ( resource pdfdoc, string type, string colorspace, float c1 [, float c2 [, float c3 [, float c4]]])

pdf_setcolor() configure la couleur de dessin et de remplissage. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Le paramètre type peut être fill, stroke, ou both pour spécifier que la couleur est utilisée pour le remplissage, le dessin ou pour les deux. Le paramètre colorspace peut être gray, rgb, cmyk, spot ou pattern. Le paramètre c1, c2, c3 et c4 représente le composant de couleur pour l'espace de couleur colorspace. Excepté si précisé, le composant de couleur est un nombre à virgule flottante, de valeur comprise entre 0 et 1.

Pour les gris, seul c1 est utilisé.

Pour les couleurs rgb, les paramètres c1, c2 et c3 spécifie le rouge, le vert, et le bleu, respectivement.

Exemple 1. Exemple avec pdf_setcolor() : couleurs RGB

// Configure le blanc pour le dessin et le remplissage
pdf_setcolor($pdf, "both", "rgb", 1, 1, 1);

Pour les couleurs cmyk, les paramètres c1, c2, c3 et c4 représentent le cyan, le magenta, le jaune et le noir, repsectivement

Exemple 2. Exemple avec pdf_setcolor() : couleurs CMYK

// Configure le noir pour le dessin et le remplissage
pdf_setcolor($pdf, "both", "cmyk", 0, 0, 0, 1);

Pour spot, c1 doit être une ressource de point de couleur, retournée par pdf_makespotcolor() et c2 est une valeur de teinte, comprise entre 0 et 1 inclus.

Pour pattern, c1 doit être une ressource de pattern, retournée par pdf_begin_pattern().

Précédent | Sommaire | Suivant
pdf_set_word_spacing | Niveau supérieur | pdf_setdash


pdf_setdash

(PHP 3>= 3.0.6, PHP 4 )

pdf_setdash -- Configure le mode de pointillé

Description

bool pdf_setdash ( resource pdfdoc, float b, float w)

pdf_setdash configure le mode de pointillé à la taille de b pour les traits noirs, et w pour les traits blancs. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setcolor | Niveau supérieur | pdf_setflat


pdf_setflat

(PHP 3>= 3.0.6, PHP 4 )

pdf_setflat -- Configure la position à plat (flatness)

Description

bool pdf_setflat ( resource pdfdoc, float flatness)

pdf_setflat() configure la position à plat, à une valeur comprise entre 0 et 100 inclus. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setdash | Niveau supérieur | pdf_setfont


pdf_setfont

(PHP 4 >= 4.0.5)

pdf_setfont -- Configure la police courante

Description

bool pdf_setfont ( resource pdfdoc, int font, float size)

pdf_setfont() configure la police courante avec la police font et la taille size. font est une ressource retournée par pdf_findfont(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pdf_findfont().

Précédent | Sommaire | Suivant
pdf_setflat | Niveau supérieur | pdf_setgray_fill


pdf_setgray_fill

(PHP 3>= 3.0.6, PHP 4 )

pdf_setgray_fill -- Configure la couleur de remplissage à un niveau de gris

Description

bool pdf_setgray_fill ( resource pdfdoc, float gray)

pdf_setgray_fill() configure la couleur de remplissage à un niveau de gris, entre 0 et 1 inclus. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète, utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setfont | Niveau supérieur | pdf_setgray_stroke


pdf_setgray_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_setgray_stroke -- Configure la couleur de dessin à un niveau de gris

Description

bool pdf_setgray_stroke ( resource pdfdoc, float gray)

pdf_setgray_stroke() configure la couleur de dessin à un niveau de gris, entre 0 et 1 inclus. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète, utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setgray_fill | Niveau supérieur | pdf_setgray


pdf_setgray

(PHP 3>= 3.0.6, PHP 4 )

pdf_setgray -- Configure la couleur de dessin et de remplissage à un niveau de gris

Description

bool pdf_setgray ( resource pdfdoc, float gray)

pdf_setgray configure la couleur de dessin et de remplissage au niveau de gris gray. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète , utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setgray_stroke | Niveau supérieur | pdf_setlinecap


pdf_setlinecap

(PHP 3>= 3.0.6, PHP 4 )

pdf_setlinecap -- Configure le paramètre de linecap

Description

void pdf_setlinecap ( resource pdfdoc, int linecap)

pdf_setlinecap configure le paramètre linecap à une valeur entre 0 et 2 inclusivement.

Précédent | Sommaire | Suivant
pdf_setgray | Niveau supérieur | pdf_setlinejoin


pdf_setlinejoin

(PHP 3>= 3.0.6, PHP 4 )

pdf_setlinejoin -- Configure le paramètre de linejoin

Description

bool pdf_setlinejoin ( resource pdfdoc, int value)

pdf_setlinejoin() configure le paramètre de linejoin à une valeur entre 0 et 2 inclus. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setlinecap | Niveau supérieur | pdf_setlinewidth


pdf_setlinewidth

(PHP 3>= 3.0.6, PHP 4 )

pdf_setlinewidth -- Configure la largeur de ligne

Description

void pdf_setlinewidth ( resource pdfdoc, float width)

pdf_setlinewidth() configure la largeur de ligne à width. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setlinejoin | Niveau supérieur | pdf_setmatrix


pdf_setmatrix

(PHP 4 >= 4.0.5)

pdf_setmatrix -- Configure la matrice de transformation

Description

bool pdf_setmatrix ( resource pdfdoc, float a, float b, float c, float d, float e, float f)

pdf_setmatrix() configure explicitement la matrice de transformation. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setlinewidth | Niveau supérieur | pdf_setmiterlimit


pdf_setmiterlimit

(PHP 3>= 3.0.6, PHP 4 )

pdf_setmiterlimit -- Configure la "miter limit"

Description

bool pdf_setmiterlimit ( resource pdfdoc, float miter)

pdf_setmiterlimit() configure la "miter limit" à une valeur supérieure ou égale à 1. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_setmatrix | Niveau supérieur | pdf_setpolydash


pdf_setpolydash

(PHP 4 >= 4.0.5)

pdf_setpolydash -- Configure des pointillés complexes

Description

void pdf_setpolydash ( int pdf_object, float * dasharray)

pdf_setpolydash() configure des modèles de pointillés complexes.

Précédent | Sommaire | Suivant
pdf_setmiterlimit | Niveau supérieur | pdf_setrgbcolor_fill


pdf_setrgbcolor_fill

(PHP 3>= 3.0.6, PHP 4 )

pdf_setrgbcolor_fill -- Choisit la couleur utilisée pour le remplissage

Description

bool pdf_setrgbcolor_fill ( resource pdfdoc, float red_value, float green_value, float blue_value)

pdf_setrgbcolor_fill() choisit la couleur utilisée pour le remplissage. Cette couleur est une couleur RGB. red_value représente le rouge, green_value représente le vert et blue_value représente le bleu. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète : utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setpolydash | Niveau supérieur | pdf_setrgbcolor_stroke


pdf_setrgbcolor_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_setrgbcolor_stroke -- Choisit la couleur utilisée pour le dessin

Description

bool pdf_setrgbcolor_stroke ( resource pdfdoc, float red_value, float green_value, float blue_value)

pdf_setrgbcolor_stroke() choisit la couleur utilisée pour le dessin. Cette couleur est une couleur RGB. red_value représente le rouge, green_value représente le vert et blue_value représente le bleu. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète : utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setrgbcolor_fill | Niveau supérieur | pdf_setrgbcolor


pdf_setrgbcolor

(PHP 3>= 3.0.6, PHP 4 )

pdf_setrgbcolor -- Choisit la couleur rgb de remplissage et de dessin

Description

bool pdf_setrgbcolor ( resource pdfdoc, float red_value, float green_value, float blue_value)

pdf_setrgbcolor() choisit la couleur utilisée pour le dessin et le remplissage. Cette couleur est une couleur RGB. red_value représente le rouge, green_value représente le vert et blue_value représente le bleu. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : PDFlib V4.0: Obsolète : utilisez pdf_setcolor().

Précédent | Sommaire | Suivant
pdf_setrgbcolor_stroke | Niveau supérieur | pdf_show_boxed


pdf_show_boxed

(PHP 4 )

pdf_show_boxed -- Affiche le texte dans un cadre

Description

int pdf_show_boxed ( resource pdfdoc, string text, float left, float top, float width, float height, string mode [, string feature])

pdf_show_boxed() formate le texte text avec la police et la taille courante, pour qu'il soit contenu dans le rectangle de coin supérieur gauche (left,top), de largeur width et de hauteur height. Le mode de formattage peut être left, right, center, justify, ou fulljustify. Si la largeur et la hauteur sont nulles, une simple ligne sera dessinée.

pdf_show_boxed() retourne le nombre de caractères qui n'ont pas pu être dessiné dans le rectangle définit. pdf_show_boxed() retourne 0 si tous les caractères ont pu être dessnié, ou si width et height sont nuls.

Précédent | Sommaire | Suivant
pdf_setrgbcolor | Niveau supérieur | pdf_show_xy


pdf_show_xy

(PHP 3>= 3.0.6, PHP 4 )

pdf_show_xy -- Affiche un text à une position donnée

Description

bool pdf_show_xy ( resource pdfdoc, string text, float x, float y)

pdf_show_xy qffiche le texte text aux coordonnées (x,y). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_show_boxed | Niveau supérieur | pdf_show


pdf_show

(PHP 3>= 3.0.6, PHP 4 )

pdf_show -- Affiche le texte à la position courante

Description

bool pdf_show ( resource pdfdoc, string text)

pdf_show() affiche le texte text à la position courante, et avec la police et sa taille courante.

Précédent | Sommaire | Suivant
pdf_show_xy | Niveau supérieur | pdf_skew


pdf_skew

(PHP 4 )

pdf_skew -- Incline le système de coordonnées

Description

bool pdf_skew ( resource pdfdoc, float alpha, float beta)

pdf_skew() incline le système de coordonnées de alpha degrés dans le sens des absisses, et de beta degrés dans le sens des coordonnées. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_show | Niveau supérieur | pdf_stringwidth


pdf_stringwidth

(PHP 3>= 3.0.6, PHP 4 )

pdf_stringwidth -- Retourne la largeur d'un texte avec la police courante

Description

float pdf_stringwidth ( resource pdfdoc, string text [, int font [, float size]])

pdf_stringwidth() retourne la largeur du texte text en utilisant la police courante, configurée avec pdf_setfont(). Si les paramètres optionnels de font et size sont spécifiés, la largeur sera calculée en utilisant cette police et cette taille. Notez que font est une ressource de police, retournée par pdf_findfont().

Note : Les paramètres font et size doivent être utilisé ensemble.

Voir aussi pdf_setfont() et pdf_findfont().

Précédent | Sommaire | Suivant
pdf_skew | Niveau supérieur | pdf_stroke


pdf_stroke

(PHP 3>= 3.0.6, PHP 4 )

pdf_stroke -- Dessine la ligne le long du chemin

Description

bool pdf_stroke ( resource pdfdoc)

pdf_stroke() dessine la ligne le long du chemin courant, avec la couleur courante et la largeur de ligne courante, puis clot le chemin. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
pdf_stringwidth | Niveau supérieur | pdf_translate


pdf_translate

(PHP 3>= 3.0.6, PHP 4 )

pdf_translate -- Translate l'origine du système de coordonnées

Description

bool pdf_translate ( resource pdfdoc, float tx, float ty)

pdf_translate() translate l'origine du système de coordonnées d'un vecteur de (tx,ty).

Précédent | Sommaire | Suivant
pdf_stroke | Niveau supérieur | Paiement par Verisign


Paiement par Verisign

Manuel PHP
Précédent Suivant

LXXX. Paiement par Verisign

Introduction

Cette extension vous permet d'effectuer des transactions avec des cartes de crédits en utilisant les services Verisign Payment Services, anciennement connu sous le nom de Signio (http://www.verisign.com/products/payflow/pro/index.html).

Ces fonctions sont utilisables dès que PHP a été compilé avec l'option --with-pfpro[=DIR]. Vous devez aussi utiliser le SDK approprié sur votre plate-forme : il est disponible l'interface du manager, une fois que vous vous êtes inscrit. Si vous avez l'intention d'utiliser cette extension sur un serveur web SSL ou avec d'autres composants SSL (tels que l'extension CURL et SSL) vous DEVEZ utiliser le SDK beta.

Ces fonctions ont été ajoutée en PHP 4.0.2.

Note : Ces fonctions ne font que fournir un accès aux services Verisign Payment Services. Assurez-vous bien de lire le "Payflow Pro Developers Guide" pour plus de détails sur les paramètres.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Une fois que vous avez téléchargé le SDK vous devez copier les fichiers depuis le dossier lib de la distribution. Copier le fichier d'en-têtes pfpro.h dans /usr/local/include et la librairie libpfpro.so dans /usr/local/lib.

Lorsque vous utilisez ces fonctions, vous pouvez omettre d'appeler les fonctions pfpro_init() et pfpro_cleanup() : l'extension se chargera de le faire automatiquement. Cependant, elles sont toujours disponibles au cas où vous auriez un grand nombre de transaction à traiter, ou que vous souhaiteriez un contrôle plus fin de la librairie. Vous pouvez effectuer autant de transaction que vous le souhaitez avec pfpro_process() lors d'une connexion.

Installation

Ces fonctions ne sont disponible que si PHP a été compilé avec l'option --with-pfpro[=DIR].

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
pfpro.defaulthost/PFPRO_VERSION < 3 | "test.signio.com" | PHP_INI_ALL
pfpro.defaulthost | "test-payflow.verisign.com" | PHP_INI_ALL
pfpro.defaultport | "443" | PHP_INI_ALL
pfpro.defaulttimeout | "30" | PHP_INI_ALL
pfpro.proxyaddress | "" | PHP_INI_ALL
pfpro.proxyport | "" | PHP_INI_ALL
pfpro.proxylogon | "" | PHP_INI_ALL
pfpro.proxypassword | "" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
pfpro_cleanup -- Eteint la librairie Payflow Pro
pfpro_init -- Initialise la librairie Payflow Pro
pfpro_process_raw -- Envoie une transaction brute à Payflow Pro
pfpro_process -- Effectue une transaction avec Payflow Pro
pfpro_version -- Lit le numéro de version de Payflow Pro

Précédent | Sommaire | Suivant
pdf_translate | Niveau supérieur | pfpro_cleanup


pfpro_cleanup

(PHP 4 >= 4.0.2)

pfpro_cleanup -- Eteint la librairie Payflow Pro

Description

void pfpro_cleanup ( void )

pfpro_cleanup() sert à terminer proprement une session avec la librairie Payflow Pro library. Elle doit être appelé après toutes les transactions, et avant la fin du script. Cependant, vous pouvez omettre cet appel : dans ce cas, cette fonction sera automatiquement appelée à la fin du script.

Voir aussi pfpro_init().

Précédent | Sommaire | Suivant
Paiement par Verisign | Niveau supérieur | pfpro_init


pfpro_init

(PHP 4 >= 4.0.2)

pfpro_init -- Initialise la librairie Payflow Pro

Description

void pfpro_init ( void )

pfpro_init() initialise la librairie Payflow Pro library. Vous pouvez omettre cet appel : dans ce cas, elle sera appelée automatiquement pfpro_init() avant la première transaction.

Voir aussi pfpro_cleanup().

Précédent | Sommaire | Suivant
pfpro_cleanup | Niveau supérieur | pfpro_process_raw


pfpro_process_raw

(PHP 4 >= 4.0.2)

pfpro_process_raw -- Envoie une transaction brute à Payflow Pro

Description

string pfpro_process_raw ( string parameters [, string address [, int port [, int timeout [, string proxy_address [, int proxy_port [, string proxy_logon [, string proxy_password]]]]]]])

pfpro_process_raw() retourne une chaîne avec une réponse.

pfpro_process_raw() envoie une transaction brute au serveur Payflow Pro. Il est vivement recommandé d'utiliser pfpro_process() à la place, car les règles de codage sont non standard.

Le premier argumentest une chaîne contenant la transaction brute. Tous les autres paramètres sont les mêmes que ceux de pfpro_process(). La valeur de retour est une chaîne contenant la réponse brute.

Note : Lisez attentivement le "Payflow Pro Developers Guide" pour connaître tous les détails des paramètres et leur règle d'encodage. Il est recommandé d'utiliser plutôt pfpro_process().

Exemple 1. Exemple avec pfpro_process_raw()

<?php
pfpro_init();
$response = pfpro_process("USER=mylogin&PWD[5]=m&ndy&TRXTYPE=S&TENDER=C&AMT=1.50&ACCT=4111111111111111&EXPDATE=0904");
if (!$response) {
  die("Impossible de contacter Verisign.\n");
}
echo "La r&eacute;ponse brute de Verisign est ".$response;
pfpro_cleanup();
?>

Précédent | Sommaire | Suivant
pfpro_init | Niveau supérieur | pfpro_process


pfpro_process

(PHP 4 >= 4.0.2)

pfpro_process -- Effectue une transaction avec Payflow Pro

Description

array pfpro_process ( array parameters [, string address [, int port [, int timeout [, string proxy_address [, int proxy_port [, string proxy_logon [, string proxy_password]]]]]]])

pfpro_process() retourne un tableau associatif, contenant la réponse à la transaction.

pfpro_process() effectue une transaction avec Payflow Pro. Le premier paramètre est un tableau associatif contenant des paires clés/valeurs, qui seront encodées, puis passées au serveur.

Le second paramètre address indique quel hôte contacter. Il est optionnel. Par défaut, il vaut "test.signio.com" : vous devrez probablement le remplacer par "connect.signio.com" pour effectuer de vraies transactions.

Le troisième paramètre port spécifie le port de connexion. Par défaut, c'est 443, le port SSL standard.

Le quatrième paramètre timeout indique le temps de timeout à utiliser. Par défaut, c'est 30 secondes. Notez que ce timeout ne prend effet que lorsqu'une connexion a été établie avec un serveur : votre script peut potentiellement attendre indéfiniment un événement DNS ou un problème de réseau.

Le cinquième paramètre proxy_address indique le nom du proxy SSL. Le sixième paramètre proxy_port indique le port à utiliser sur ce proxy.

Les septième et huitième paramètres, proxy_logon et proxy_password indique le nom de compte et le mot de passe à utiliser sur le proxy.

pfpro_process() retourne un tableau associatif.

Note : Lisez attentivement le "Payflow Pro Developers Guide" pour connaître les détails des autres paramètres.

Exemple 1. Exemple de transaction Payflow Pro

<?php
pfpro_init();
$transaction = array(USER	=> 'monlogin',
             PWD	=> 'mmotdepasse',
             TRXTYPE	=> 'S',
             TENDER	=> 'C',
             AMT	=> 1.50,
             ACCT	=> '4111111111111111',
             EXPDATE	=> '0904'
             );
$response = pfpro_process($transaction);
if (!$response) {
  die("Impossible d'&eacute;tablir un lien avec Verisign.\n");
}
echo "La r&eacute;ponse de Verisign &eacute;tait ".$response[RESULT];
echo ", c'est-&agrave;-dire : ".$response[RESPMSG]."\n";
echo "\nLa requ&ecirc;te de transaction: ";
print_r($transaction);
echo "\nLa r&eacute;ponse: ";
print_r($response);
pfpro_cleanup();
?>

Précédent | Sommaire | Suivant
pfpro_process_raw | Niveau supérieur | pfpro_version


pfpro_version

(PHP 4 >= 4.0.2)

pfpro_version -- Lit le numéro de version de Payflow Pro

Description

string pfpro_version ( void )

pfpro_version() lit la version de la librairie Payflow Pro. Au moment de rédaction de la doc, c'était L211.

Précédent | Sommaire | Suivant
pfpro_process | Niveau supérieur | Options PHP et informations


Options PHP et informations

Manuel PHP
Précédent Suivant

LXXXI. Options PHP et informations

Introduction

Ces fonctions vous donnent accès à de nombreuses informations sur PHP lui-même, comme par exemple les configurations d'exécution, les extensions chargées, les versions, etc... Vous trouverez aussi des fonctions pour modifier des options. Et vous trouverez aussi la star des fonctions PHP phpinfo().

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
assert.active | "1" | PHP_INI_ALL
assert.bail | "0" | PHP_INI_ALL
assert.warning | "1" | PHP_INI_ALL
assert.callback | NULL | PHP_INI_ALL
assert.quiet_eval | "0" | PHP_INI_ALL
enable_dl | "1" | PHP_INI_SYSTEM
max_execution_time | "30" | PHP_INI_ALL
magic_quotes_gpc | "1" | PHP_INI_PERDIR|PHP_INI_SYSTEM
magic_quotes_runtime | "0" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

assert.active boolean

Active les évaluations de type assert().

assert.bail boolean

Termine le script si une assertion échoue.

assert.warning boolean

Emet une alerte PHP pour chaque assertion échouée.

assert.callback string

Fonction définie par le programmeur, à appeler pour chaque assertion échouée.

assert.quiet_eval boolean

Utilise la configuration courante de error_reporting() durant les évaluations d'assertions. Si activée, aucune erreur n'est affichée (error_reporting(0) implicite) durant l'évaluation. Si désactivée, les erreurs sont affichées en fonction de la configuration de error_reporting()

enable_dl boolean

Cette directive est réellement utile lorsque PHP est compilé comme module PHP. Vous pouvez activer le chargement dynamique d'extension (avec la fonction dl()) au cas par cas, pour chaque serveur virtuel.

La raison principale pour désactiver ce système est la sécurité. Avec le chargement dynamique, il est possible de passer outre les configurations de safe mode et open_basedir.

Par défaut, le chargement dynamique est autorisé, sauf avec le safe mode. En safe mode, il est toujours impossible d'utiliser la fonction dl().

max_execution_time integer

Fixe le temps maximal d'exécution d'un script, en secondes. Cela permet d'éviter que des scripts en boucles infinies saturent le serveur. La configuration par défaut est de 30 secondes.

Le temps d'exécution maximum n,est pas affectés par des appels systèmes tels que sleep(). Reportez-vous à la fonction set_time_limit() pour plus de détails.

magic_quotes_gpc boolean

Fixe le mode magic_quotes pour les opérations GPC (Get/Post/Cookie). Lorsque magic_quotes est activé, tous les caractères ' (guillemets simples), " (guillemets doubles), \ (antislash) et NUL sont échappés avec un antislash. Si magic_quotes_sybase fonctionne aussi, les guillemets simples seront échappés avec un autre guillemet simple, plutôt qu'un antislash.

Voir aussi get_magic_quotes_gpc().

magic_quotes_runtime boolean

Si magic_quotes_runtime est activé, toutes les fonctions qui obtiennent des données auprès d'une source externe, y compris les bases de données et les fichiers texte, verront leur guillemets échappés avec un antislash. Si magic_quotes_sybase est aussi activé, les guillemets simples seront échappés avec un autre guillemet simple, plutôt qu'un antislash.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Les constantes listées ici sont toujours disponibles dans PHP.

Tableau 2. Pre-defined phpcredits() constants

Constant | Description
CREDITS_ALL | Tous les crédits. C'est l'équivalent de : CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE. Elle génère une page HTML complète et autonome.
CREDITS_DOCS | Les crédits de l'équipe de documentation
CREDITS_FULLPAGE | Généralement utilisé combiné avec d'autres options. Cette option indique qu'une page HTML complète doit être générée.
CREDITS_GENERAL | Crédits généraux. Design du langage, concepts, auteurs de PHP 4.0 et module SAPI.
CREDITS_GROUP | Une liste des développeurs principaux
CREDITS_MODULES | Une liste des extensions de PHP, et leurs auteurs
CREDITS_SAPI | Une liste des API de serveurs, et leurs auteurs.

Tableau 3. Constantes de phpinfo()

Constante | Valeur | Description
INFO_GENERAL | 1 | La ligne de configuration, le chemin du php.ini, la date de compilation, le système et plus encore.
INFO_CREDITS | 2 | Crédits de PHP 4. Voir aussi phpcredits().
INFO_CONFIGURATION | 4 | Valeurs locales et serveurs des directives PHP. Voyez aussi ini_get().
INFO_MODULES | 8 | Les modules chargés et leur configuration respective.
INFO_ENVIRONMENT | 16 | Les varibles d'environnement, qui sont aussi disponibles dans $_ENV.
INFO_VARIABLES | 32 | Toutes les variables prédéfinies : EGPCS (Environnement, GET, POST, Cookie, Server).
INFO_LICENSE | 64 | La licence PHP. Voir aussi la FAQ de la license.
INFO_ALL | -1 | Affiche toutes les valeurs citées ci-dessus. C'est la valeur par défaut.

ASSERT_ACTIVE (entier)

ASSERT_CALLBACK (entier)

ASSERT_BAIL (entier)

ASSERT_WARNING (entier)

ASSERT_QUIET_EVAL (entier)

Table des matières
assert_options -- Fixe et lit différentes options d'assertions
assert -- Vérifie si une assertion est fausse
dl -- Charge une extension PHP à la volée
extension_loaded -- Détermine si une extension est chargée ou non
get_cfg_var -- Retourne la valeur d'une option de PHP
get_current_user -- Retourne le nom du possesseur du script courant.
get_defined_constants -- Retourne la liste des constantes et leur valeur
get_extension_funcs -- Liste les fonctions d'une extension
get_include_path -- Lit la valeur de la directive de configuration include_path
get_included_files -- Retourne un tableau avec les noms des fichiers qui sont inclus dans un script
get_loaded_extensions -- Retourne la liste de tous les modules compilés et chargés
get_magic_quotes_gpc -- Retourne la configuration actuelle de l'option magic_quotes_gpc
get_magic_quotes_runtime -- Retourne la configuration actuelle de l'option magic_quotes_runtime
get_required_files -- Alias de get_included_files()
getenv -- Retourne la valeur d'une variable d'environnement
getlastmod -- Retourne la date de dernière modification de la page
getmygid -- Retourne le GID du propriétaire du script
getmyinode -- Retourne l'inode du script
getmypid -- Retourne le numéro de processus courant
getmyuid -- Retourne l'UID du propriétaire du script actuel
getopt -- Lit des options passés dans la ligne de commande
getrusage -- Retourne le niveau d'utilisation des ressources
ini_alter -- Alias de ini_set()
ini_get_all -- Lit toutes les valeurs de configuration
ini_get -- Lit la valeur d'une option de configuration
ini_restore -- Restaure la valeur de l'option de configuration
ini_set -- Modifie la valeur d'une option de configuration
main -- Fausse documentation pour main()
memory_get_usage -- Indique la quantité de mémoire utilisée par PHP
php_ini_scanned_files -- Retourne la liste des fichiers .ini analysés dans les dossiers de configuration supplémentaires
php_logo_guid -- Retourne l'identifiant du logo PHP
php_sapi_name -- Retourne le type d'interface utilisé entre le serveur web et PHP
php_uname -- Retourne les informations sur le système d'exploitation
phpcredits -- Imprime les crédits de PHP
phpinfo -- Affiche de nombreuses informations sur le PHP
phpversion -- Retourne le numéro de la version courante de PHP
putenv -- Fixe la valeur d'une variable d'environnement
restore_include_path -- Restaure la valeur de la directive de configuration include_path
set_include_path -- Modifie la valeur de la directive de configuration include_path
set_magic_quotes_runtime -- Active/désactive l'option magic_quotes_runtime.
set_time_limit -- Fixe le temps maximum d'exécution d'un script
version_compare -- Compare deux versions de PHP
zend_logo_guid -- Retourne le logo de Zend
zend_version -- Lit la version courante du moteur Zend

Précédent | Sommaire | Suivant
pfpro_version | Niveau supérieur | assert_options


assert_options

(PHP 4 )

assert_options -- Fixe et lit différentes options d'assertions

Description

mixed assert_options ( int what [, mixed value])

Avec assert_options() vous pouvez modifier les diverses options de la fonction assert(), ou simplement connaître la configuration actuelle.

Tableau 1. options d'assert

Option | Paramètre d'ini | Valeur par défaut | Description
ASSERT_ACTIVE | assert.active | 1 | active l'évaluation de la fonction assert()
ASSERT_WARNING | assert.warning | 1 | génère une alerte PHP pour chaque assertion fausse
ASSERT_BAIL | assert.bail | 0 | termine l'exécution en cas d'assertion fausse
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | désactive le rapport d'erreur durant l'évaluation d'une assertion
ASSERT_CALLBACK | assert_callback | (null) | fonction utilisateur de traitement des assertions fausses

assert_options() retourne la valeur originale de l'option, ou bien FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
Options PHP et informations | Niveau supérieur | assert


assert

(PHP 4 )

assert -- Vérifie si une assertion est fausse

Description

int assert ( mixed assertion)

assert() va vérifier l'assertion assertion et prendre la mesure appropriée si le résultat est FALSE.

Si assertion est donnée sous la forme d'une chaîne, elle sera évaluée comme un code PHP par la fonction assert(). Les avantages de ce type d'assertion sont d'être moins lourd si la vérification d'assertion est désactivée, et le contenu des messages lorsque l'assertion échoue.

Il est recommandé de n'utiliser les assertions que comme outil de débuggage. Vous pouvez les utiliser pour les vérifications d'usage : ces conditions doivent normalement être vraies, et indiquer une erreur de programmation si ce n'est pas le cas. Vous pouvez aussi vérifier la présence de certaines extensions ou limitations du système.

Les assertions ne doivent pas être utilisées pour faire des opérations de vérifications en production, comme par exemple des vérifications de valeur d'argument. En conditions normales, votre code doit être en état de fonctionner si la vérification d'assertion est désactivée.

Le comportement de assert() peut être configuré par assert_options() ou par .ini-settings.

La fonction assert_options() et la directive ASSERT_CALLBACK permettent de configurer une fonction qui sera appelée lorsque l'assertion échoue.

Les fonctions de callback pour assert() sont particuliérement utiles pour bâtir des suites de tests automatiques, car elles vous permettent de capturer facileent le code passé à l'assertion, ainsi que des informations sur le lieu et le moment de l'assertion. Même si ces informations peuvent être appelés par d'autres méthodes, les assertions sont plus rapides et plus faciles.

La fonction de callback doit accepter trois arguments. Le premier contient le nom du fichier qui a vu l'assertion échouer. Le second contient le numéro de ligne dans le fichier précédent. Le troisième argument contient l'expression qui a échoué (si il y en a : les valeurs litérales comme 1 ou "deux" ne seront pas passées par cet argument).

Exemple 1. Gestion des assertions avec un gestionnaire personnalisé

<?php
// Activation des assertions et mise en mode discret.
assert_options (ASSERT_ACTIVE, 1);
assert_options (ASSERT_WARNING, 0);
assert_options (ASSERT_QUIET_EVAL, 1);

// C&eacute;ration d'un gestionnaire d'assertions
function mon_assert_handler ($file, $line, $code) {
    echo "<hr>Assertion Failed:
        File '$file'<br>
        Line '$line'<br>
        Code '$code'<br><hr>";
}

// Configuration de la m&eacute;thode de callback
assert_options (ASSERT_CALLBACK, 'mon_assert_handler');

// Utilisation d'une assertion qui va &eacute;chouer
assert ('mysql_query ("")');
?>

Précédent | Sommaire | Suivant
assert_options | Niveau supérieur | dl


dl

(PHP 3, PHP 4 )

dl -- Charge une extension PHP à la volée

Description

int dl ( string library)

dl() charge l'extension PHP library à la volée. Le paramètre library est seulement le nom de fichier de l'extension, qui dépend de votre plate-forme. Par exemple l'extension sockets (si compilée comme module partagé, et non par défaut), sera appelée sockets.so sous Unix, et php_sockets.dll sous Windows.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.. Si la fonctionnalité de chargement de module n'est pas disponible (voir Note), ou a été désactivé (soit en inactivant la directive enable_dl ou en activant le safe mode dans le php.ini) une E_ERROR sera émise et l'exécution du script sera stoppée. Si la fonction dl() échoue parce que la librairie n'a pu être trouvée, dl() retournera FALSE et émettra un message d'alerte.

Utilisez la fonction extension_loaded() pour vérifier qu'une extension est chargée ou non. Cette fonction travaille aussi bien avec les extensions intégrées qu'avec les extensions dynamiquement chargées (via le php.ini, ou via dl()).

Exemple 1. Exemple avec dl()

<?php
  if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
  }

Le dossier où sont rangées les extensions dépend de votre plate forme :

Windows - Si il n'est pas explicitement indiqué dans le fichier php.ini, le dossier des extensions est c:\php4\extensions\.

Unix - Si il n'est pas explicitement indiqué dans le fichier php.ini, le dossier des extensions dépend de

  • Si PHP a été compilé avec l'option --enable-debug

  • Si PHP a été compilé avec le support (expérimental) de ZTS (Zend Thread Safety)

  • de la constante interne ZEND_MODULE_API_NO (version interne de module d'API Zend, qui est en réalité la date à laquelle une modification importante de l'API a été faite, comme par exemple 20010901)

En prenant ces paramètres en considération, le dossier des extensions vaut alors <php-install-directory>/lib/php/extension/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, i.e. /usr/local/php/lib/php/extensions/debug-non-zts-20010901 ou /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Note : dl() n'est pas supporté sur les serveur web multi-threadés. Utilisez la directive extensions dans votre fichier php.ini lorsque vous vous trouvez dans un environnement de ce type. Cependant, les versions CGI et CLI ne sont pas!

Note : dl() est sensible à la casse sur les plate-formes Unix.

Voir aussi directives de chargement d'extensions et extension_loaded().

Précédent | Sommaire | Suivant
assert | Niveau supérieur | extension_loaded


extension_loaded

(PHP 3>= 3.0.10, PHP 4 )

extension_loaded -- Détermine si une extension est chargée ou non

Description

bool extension_loaded ( string name)

extension_loaded() retourne TRUE si l'extension name a été chargée.

Exemple 1. Exemple avec extension_loaded()

<?php
if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}
?>

Vous pouvez connaître le nom des différentes extensions php en utilisant la fonction phpinfo() ou bien si vous utilisez la version CGI ou CLI de PHP, vous pouvez utiliser l'option de ligne de commande -m pour lister toutes les extensions disponibles :
$ php -m
[PHP Modules]
xml
tokenizer
standard
sockets
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

Note : extension_loaded() utilisent le nom interne de l'extension pour vérifier si une extension est disponible ou pas. La plupart des extensions ont des noms internes écrits en minuscules, mais il peut arriver que des extensions aient des noms en majuscules. Soyez donc prévenus que la comparaison effectuée par cette fonction est sensible à la casse !

Voir aussi
 get_loaded_extensions(),
 get_extension_funcs(),
 phpinfo() et
 dl().

Précédent | Sommaire | Suivant
dl | Niveau supérieur | get_cfg_var


get_cfg_var

(PHP 3, PHP 4 )

get_cfg_var -- Retourne la valeur d'une option de PHP

Description

string get_cfg_var ( string varname)

get_cfg_var() retourne la valeur courante de l'option PHP varname, ou bien FALSE en cas d'erreur.

get_cfg_var() ne retourne pas les options qui ont été choisies lors de la compilation de PHP, ni ne lit dans le fichier de configuration d'Apache.

Pour vérifier si le système utilise le fichier de configuration, essayez de lire la valeur de cfg_file_path. Si cette valeur est disponible, alors le fichier de configuration est utilisé.

Précédent | Sommaire | Suivant
extension_loaded | Niveau supérieur | get_current_user


get_current_user

(PHP 3, PHP 4 )

get_current_user -- Retourne le nom du possesseur du script courant.

Description

string get_current_user ( void )

get_current_user() retourne le nom du possesseur du script courant.

Voir aussi
getmyuid(),
getmypid(),
getmyinode() et
getlastmod().

Précédent | Sommaire | Suivant
get_cfg_var | Niveau supérieur | get_defined_constants


get_defined_constants

(PHP 4 >= 4.1.0)

get_defined_constants -- Retourne la liste des constantes et leur valeur

Description

array get_defined_constants ( void )

get_defined_constants() retourne les noms et valeurs des constantes déjà définies. Cela inclut les constantes créées par les extensions, et celles créées avec la fonction define().

Par exemple :

<?php
  print_r(get_defined_constants());
?>

affichera

Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [E_PARSE] => 4
    [E_NOTICE] => 8
    [E_CORE_ERROR] => 16
    [E_CORE_WARNING] => 32
    [E_COMPILE_ERROR] => 64
    [E_COMPILE_WARNING] => 128
    [E_USER_ERROR] => 256
    [E_USER_WARNING] => 512
    [E_USER_NOTICE] => 1024
    [E_ALL] => 2047
    [TRUE] => 1
)

Voir aussi
get_loaded_extensions(),
get_defined_functions() et
get_defined_vars().

Précédent | Sommaire | Suivant
get_current_user | Niveau supérieur | get_extension_funcs


get_extension_funcs

(PHP 4 )

get_extension_funcs -- Liste les fonctions d'une extension

Description

array get_extension_funcs ( string module_name)

get_extension_funcs() retourne le nom des fonctions définies dans le module module_name.

Par exemple, les lignes suivantes :

<?php
  print_r(get_extension_funcs("xml"));
  print_r(get_extension_funcs("gd"));
?>

vont afficher la liste des fonctions disponibles avec les modules xml et gd.

Voir aussi get_loaded_extensions().

Précédent | Sommaire | Suivant
get_defined_constants | Niveau supérieur | get_include_path


get_include_path

(PHP 4 >= 4.3.0)

get_include_path -- Lit la valeur de la directive de configuration include_path

Description

string get_include_path ( void )

get_include_path() lit la valeur de la directive de configuration include_path.

Exemple 1. Exemple avec get_include_path()

<?php
// Fonctionne depuis PHP 4.3.0
print get_include_path();

// Fonctionne sur toutes les versions
print ini_get('include_path');
?>

Voir aussi
ini_get(),
restore_include_path(),
set_include_path() et
include().

Précédent | Sommaire | Suivant
get_extension_funcs | Niveau supérieur | get_included_files


get_included_files

(PHP 4 )

get_included_files -- Retourne un tableau avec les noms des fichiers qui sont inclus dans un script

Description

array get_included_files ( void )

get_included_files() retourne un tableau contenant les noms de tous les fichiers qui ont été ajoutés au script avec les fonctions require_once() ou include_once().

L'exemple ci-dessous

Exemple 1. Affichage des fichiers inclus et requis

<?php
  require_once("local.php");
  require_once("../inc/global.php");
  for ($i=1; $i<5; $i++)
    include "util".$i.".php";
    echo "Fichiers appel&eacute;s avec required_once/included_once\n";
    print_r(get_required_files());
?>
va afficher :

Fichiers appel&eacute;s avec required_once/included_once
Array
(
  [0] => local.php
  [1] => /full/path/to/inc/global.php
  [2] => util1.php
  [3] => util2.php
  [4] => util3.php
  [5] => util4.php
)

Note : En PHP 4.0.1pl2, cette fonction supposait que required_once utilisait l'extension ".php" : les autres extensions ne fonctionnaient pas. Par ailleurs, dans cette version, le tableau retourné était un tableau associatif, et cette fonction n'était pas un alias de get_included_files()

Voir aussi
include(),
include_once(),
require(),
require_once(), et
get_required_files().

Précédent | Sommaire | Suivant
get_include_path | Niveau supérieur | get_loaded_extensions


get_loaded_extensions

(PHP 4 )

get_loaded_extensions -- Retourne la liste de tous les modules compilés et chargés

Description

array get_loaded_extensions ( void )

get_loaded_extensions() retourne un tableau contenant les noms de tous les modules compilés et chargés sur l'interpreteur PHP courant.

Par exemple, la ligne ci-dessous

<?php
print_r(get_loaded_extensions());
?>

affichera la liste suivante :

Array
(
    [0] => xml
    [1] => wddx
    [2] => standard
      [3] => session
      [4] => posix
      [5] => pgsql
      [6] => pcre
      [7] => gd
      [8] => ftp
      [9] => db
      [10] => Calendar
      [11] => bcmath
)

Voir aussi
get_extension_funcs(),
extension_loaded(),
dl() et
phpinfo().

Précédent | Sommaire | Suivant
get_included_files | Niveau supérieur | get_magic_quotes_gpc


get_magic_quotes_gpc

(PHP 3>= 3.0.6, PHP 4 )

get_magic_quotes_gpc -- Retourne la configuration actuelle de l'option magic_quotes_gpc

Description

int get_magic_quotes_gpc ( void )

get_magic_quotes_gpc() retourne la configuration actuelle de l'option magic_quotes_gpc (0 pour l'option désactivée, 1 pour l'option activée).

Note : Si la directive magic_quotes_sybase est activée, elle remplacera complètement magic_quotes_gpc. Ce qui fait que même si get_magic_quotes() retourne TRUE les guillemets doubles, les anti-slashes ou les caractères NULL ne seront pas protégés. Seul les guillemets simples le seront. Dans ce cas, ils ressembleront à ''.

Gardez en tête que magic_quotes_gpc ne peut être configuré durant l'exécution du script.

Voir aussi
addslashes(),
stripslashes(),
get_magic_quotes_runtime() et
ini_get().

Précédent | Sommaire | Suivant
get_loaded_extensions | Niveau supérieur | get_magic_quotes_runtime


get_magic_quotes_runtime

(PHP 3>= 3.0.6, PHP 4 )

get_magic_quotes_runtime -- Retourne la configuration actuelle de l'option magic_quotes_runtime

Description

int get_magic_quotes_runtime ( void )

get_magic_quotes_runtime() retourne la configuration actuelle de l'option magic_quotes_runtime. (0 pour option désactivée, 1 pour option activée).

Voir aussi get_magic_quotes_gpc() et set_magic_quotes_runtime().

Précédent | Sommaire | Suivant
get_magic_quotes_gpc | Niveau supérieur | get_required_files


get_required_files

get_required_files -- Alias de get_included_files()

Description

get_required_files() est un alias de get_included_files().

Précédent | Sommaire | Suivant
get_magic_quotes_runtime | Niveau supérieur | getenv


getenv

(PHP 3, PHP 4 )

getenv -- Retourne la valeur d'une variable d'environnement

Description

string getenv ( string varname)

getenv() retourne la valeur de la variable d'environnement varname, ou FALSE en cas d'erreur.

<?php
  $ip = getenv("REMOTE_ADDR"); // retourne l'adresse IP de l'utilisateur
?>

Vous pouvez voir une liste complète des variables d'environnement en utilisant la fonction phpinfo(). Vous pouvez trouver la signification de chacune d'entre elles en consultant le site concernant CGI specification (en anglais>, et particulièment la page concernant les variables d'environnement..

Voir aussi putenv().

Précédent | Sommaire | Suivant
get_required_files | Niveau supérieur | getlastmod


getlastmod

(PHP 3, PHP 4 )

getlastmod -- Retourne la date de dernière modification de la page

Description

int getlastmod ( void )

getlastmod() retourne la date de dernière modification de la page. La valeur retournée est un marqueur de temps UNIX, utilisable comme paramètre avec la fonction date(). getlastmod() retourne FALSE en cas d'erreur.

Exemple 1. Exemple avec getlastmod()

<?php
// affiche 'Derni&egrave;re modification: March 04 1998 20:43:59.'
  echo "Derni&egrave;re modification : ".date( "F d Y H:i:s.", getlastmod() );
?>

Voir aussi
 date(),
 getmyuid(),
 getmygid(),
 get_current_user(),
 getmyinode(),
 getmypid() et
 filemtime().

Précédent | Sommaire | Suivant
getenv | Niveau supérieur | getmygid


getmygid

(PHP 4 >= 4.1.0)

getmygid -- Retourne le GID du propriétaire du script

Description

int getmygid ( void )

getmygid() retourne le GID du propriétaire du script, ou FALSE en cas d'erreur.

Voir aussi
getmyuid(),
getmypid(),
get_current_user(),
getmyinode() et
getlastmod().

Précédent | Sommaire | Suivant
getlastmod | Niveau supérieur | getmyinode


getmyinode

(PHP 3, PHP 4 )

getmyinode -- Retourne l'inode du script

Description

int getmyinode ( void )

getmyinode() retourne l'inode du script, ou FALSE en cas d'erreur.

Voir aussi
 getmygid(),
 getmyuid(),
 get_current_user(),
 getmypid() et
 getlastmod().

Note : Cette fonction n'est pas implémentée sous Windows.

Précédent | Sommaire | Suivant
getmygid | Niveau supérieur | getmypid


getmypid

(PHP 3, PHP 4 )

getmypid -- Retourne le numéro de processus courant

Description

int getmypid ( void )

getmypid() retourne le numéro de processus actuel ou FALSE en cas d'erreur.

Avertissement

Les identifiants de processus ne sont pas uniques, et forment une source d'entropie faible. Nous recommandons de ne pas utiliser les pid pour assurer la sécurité d'un système.

Voir aussi
getmygid(),
getmyuid(),
get_current_user(),
getmyinode() et
getlastmod().

Précédent | Sommaire | Suivant
getmyinode | Niveau supérieur | getmyuid


getmyuid

(PHP 3, PHP 4 )

getmyuid -- Retourne l'UID du propriétaire du script actuel

Description

int getmyuid ( void )

getmyuid() retourne l'UID du propriétaire du script actuel ou FALSE en cas d'erreur.

Voir aussi
getmypid(),
get_current_user(),
getmyinode() et
getlastmod().

Précédent | Sommaire | Suivant
getmypid | Niveau supérieur | getopt


getopt

(PHP 4 >= 4.3.0)

getopt -- Lit des options passés dans la ligne de commande

Description

array getopt ( string options)

getopt() retourne un tableau associatif avec la liste des paire option/valeur, lues dans la ligne de commande, et basée sur le format d'option options ou bien FALSE en cas d'erreur.

Exemple 1. Exemple avec getopt()

$options = getopt("f:hp:");
// Analyse la ligne de commande (i.e. $GLOBALS['argv'])

Le paramètre options peut contenir les éléments suivants : caractères, ou caractères suivis d'un signe deux-points pour indiquer un élément optionnel. Par exemple, une option appelée x correspond à une option -x, et une chaîne x: correspond à une option de type -x argument. Cela importe peut si un argument a des espaces auparavant.

getopt() retourne un tableau avec les options et leurs valeurs. Si une option n'a pas d'argument, sa valeur sera FALSE.

Note : getopt() requiert la directive register_argc_argv activée.

Précédent | Sommaire | Suivant
getmyuid | Niveau supérieur | getrusage


getrusage

(PHP 3>= 3.0.7, PHP 4 )

getrusage -- Retourne le niveau d'utilisation des ressources

Description

array getrusage ( [int who])

getrusage() est une interface à la fonction system getrusage(2). Elle retourne un tableau associatif contenant les informations renvoyées par cet appel système. Si "who is 1", getrusage sera appelé avec le paramètre RUSAGE_CHILDREN.

Toutes les valeurs du tableau sont accessibles en utilisant leur nom dans le tableau.

Exemple 1. Exemple getrusage

<?php
  $dat = getrusage();
  echo $dat["ru_nswap"];        // Taille de la m&eacute;moire swap
  echo $dat["ru_majflt"];       // Nombre de page m&eacute;moires utilis&eacute;es
  echo $dat["ru_utime.tv_sec"]; // Temps utilisateur (en secondes)
  echo $dat["ru_utime.tv_usec"];// Temps utilisateur (en microsecondes)
?>
Consultez le manuel "man" pour plus de détails.

Note : Cette fonction n'est pas implémentée sous Windows.

Précédent | Sommaire | Suivant
getopt | Niveau supérieur | ini_alter


ini_alter

ini_alter -- Alias de ini_set()

Description

Note : ini_alter() est un alias de ini_set().

Précédent | Sommaire | Suivant
getrusage | Niveau supérieur | ini_get_all


ini_get_all

(PHP 4 >= 4.2.0)

ini_get_all -- Lit toutes les valeurs de configuration

Description

array ini_get_all ( [string extension])

ini_get_all() retourne toutes les valeurs de configuration sous la forme d'un tableau associatif. Si le paramètre optionnel extension est fourni, ini_get_all() retourne uniquement les configurations concernant cette extension.

Voir aussi
ini_alter(),
ini_restore(),
ini_get() et
ini_set()

Précédent | Sommaire | Suivant
ini_alter | Niveau supérieur | ini_get


ini_get

(PHP 4 )

ini_get -- Lit la valeur d'une option de configuration

Description

string ini_get ( string varname)

ini_get() retourne la valeur de l'option de configuration varname en cas de succès, et FALSE.

Lecture de valeurs booléennes : Une directive de configuration ayant la valeur de off sera retournée sous la forme d'une chaîne vide, tandis qu'une directive de configuration ayant une valeur de on sera retournée sous la forme de la chaîne "1".

Lors de la lecture des tailles de mémoire : Plusieurs directives traitant de taille mémoire, comme upload_max_filesize sont stockées dans le fichier php.ini avec une notation courte. ini_get() retourne la chaîne exacte stockée dans le fichier php.ini et NON PAS son équivalent entier. Appliquer des opérations arithmétiques classiques sur ces valeurs ne conduira à rien de bon.

<?php
/*
Notre fichier php.ini contient les directives suivantes :

display_errors = On
register_globals = Off
post_max_size = 8M
*/

print 'display_errors = ' . ini_get('display_errors') . "\n";
print 'register_globals = ' . ini_get('register_globals') . "\n";
print 'post_max_size = ' . ini_get('post_max_size') . "\n";
print 'post_max_size+1 = ' . (ini_get('post_max_size')+1) . "\n";

?>

Ce script va afficher :

display_errors = 1
register_globals = 0
post_max_size = 8M
post_max_size+1 = 9

Voir aussi
get_cfg_var(),
ini_get_all(),
ini_alter(),
ini_restore() et
ini_set().

Précédent | Sommaire | Suivant
ini_get_all | Niveau supérieur | ini_restore


ini_restore

(PHP 4 )

ini_restore -- Restaure la valeur de l'option de configuration

Description

string ini_restore ( string varname)

ini_restore() restaure la valeur originale de l'option de configuration varname.

Voir aussi
ini_alter(),
ini_get(),
ini_get_all() et
ini_set().

Précédent | Sommaire | Suivant
ini_get | Niveau supérieur | ini_set


ini_set

(PHP 4 )

ini_set -- Modifie la valeur d'une option de configuration

Description

string ini_set ( string varname, string newvalue)

ini_set() change la valeur de l'option de configuration varname et lui donne la valeur de newvalue. ini_set() retourne FALSE en cas d'échec, et la valeur précédente en cas de succès. La valeur de l'option de configuration sera modifiée durant toute l'exécution du script et pour ce script spécifiquement. Elle reprendra sa valeur par défaut dès la fin du script.

Toutes les options disponibles ne peuvent pas être toutes modifiées avec ini_set(). Ci-dessous, vous trouverez une liste de toutes les options (disponibles en PHP 4.2.0), et si elles peuvent être modifiées.

Tableau 1. Option de configuration

Nom | Par défaut | Modifiable
com.allow_dcom | "0" | PHP_INI_SYSTEM
com.autoregister_typelib | "0" | PHP_INI_SYSTEM
com.autoregister_verbose | "0" | PHP_INI_SYSTEM
com.autoregister_casesensitive | "1" | PHP_INI_SYSTEM
com.typelib_file | "" | PHP_INI_SYSTEM
crack.default_dictionary | NULL | PHP_INI_SYSTEM
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL
exif.encode_jis | "" | PHP_INI_ALL
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL
exif.decode_jis_intel | "JIS" | PHP_INI_ALL
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM
fbsql.autocommit | "1" | PHP_INI_SYSTEM
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM
fbsql.max_links | "128" | PHP_INI_SYSTEM
fbsql.max_connections | "128" | PHP_INI_SYSTEM
fbsql.max_results | "128" | PHP_INI_SYSTEM
fbsql.batchSize | "1000" | PHP_INI_SYSTEM
fbsql.default_host | NULL | PHP_INI_SYSTEM
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM
fbsql.default_password | "" | PHP_INI_SYSTEM
fbsql.default_database | "" | PHP_INI_SYSTEM
fbsql.default_database_password | "" | PHP_INI_SYSTEM
hwapi.allow_persistent | "0" | PHP_INI_SYSTEM
hyperwave.allow_persistent | "0" | PHP_INI_SYSTEM
hyperwave.default_port | "418" | PHP_INI_ALL
iconv.input_encoding | ICONV_INPUT_ENCODING | PHP_INI_ALL
iconv.output_encoding | ICONV_OUTPUT_ENCODING | PHP_INI_ALL
iconv.internal_encoding | ICONV_INTERNAL_ENCODING | PHP_INI_ALL
ifx.allow_persistent | "1" | PHP_INI_SYSTEM
ifx.max_persistent | "-1" | PHP_INI_SYSTEM
ifx.max_links | "-1" | PHP_INI_SYSTEM
ifx.default_host | NULL | PHP_INI_SYSTEM
ifx.default_user | NULL | PHP_INI_SYSTEM
ifx.default_password | NULL | PHP_INI_SYSTEM
ifx.blobinfile | "1" | PHP_INI_ALL
ifx.textasvarchar | "0" | PHP_INI_ALL
ifx.byteasvarchar | "0" | PHP_INI_ALL
ifx.charasvarchar | "0" | PHP_INI_ALL
ifx.nullformat | "0" | PHP_INI_ALL
ingres.allow_persistent | "1" | PHP_INI_SYSTEM
ingres.max_persistent | "-1" | PHP_INI_SYSTEM
ingres.max_links | "-1" | PHP_INI_SYSTEM
ingres.default_database | NULL | PHP_INI_ALL
ingres.default_user | NULL | PHP_INI_ALL
ingres.default_password | NULL | PHP_INI_ALL
ibase.allow_persistent | "1" | PHP_INI_SYSTEM
ibase.max_persistent | "-1" | PHP_INI_SYSTEM
ibase.max_links | "-1" | PHP_INI_SYSTEM
ibase.default_user | NULL | PHP_INI_ALL
ibase.default_password | NULL | PHP_INI_ALL
ibase.timestampformat | "%m/%d/%Y%H:%M:%S" | PHP_INI_ALL
ibase.dateformat | "%m/%d/%Y" | PHP_INI_ALL
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL
java.class.path | NULL | PHP_INI_ALL
java.home | NULL | PHP_INI_ALL
java.library.path | NULL | PHP_INI_ALL
java.library | JAVALIB | PHP_INI_ALL
java.library | NULL | PHP_INI_ALL
ldap.max_links | "-1" | PHP_INI_SYSTEM
mbstring.detect_order | NULL | PHP_INI_ALL
mbstring.http_input | NULL | PHP_INI_ALL
mbstring.http_output | NULL | PHP_INI_ALL
mbstring.internal_encoding | NULL | PHP_INI_ALL
mbstring.substitute_character | NULL | PHP_INI_ALL
mbstring.func_overload | "0" | PHP_INI_SYSTEM
mcrypt.algorithms_dir | NULL | PHP_INI_ALL
mcrypt.modes_dir | NULL | PHP_INI_ALL
mime_magic.magicfile | "/usr/share/misc/magic.mime" | PHP_INI_SYSTEM
mssql.allow_persistent | "1" | PHP_INI_SYSTEM
mssql.max_persistent | "-1" | PHP_INI_SYSTEM
mssql.max_links | "-1" | PHP_INI_SYSTEM
mssql.max_procs | "25" | PHP_INI_ALL
mssql.min_error_severity | "10" | PHP_INI_ALL
mssql.min_message_severity | "10" | PHP_INI_ALL
mssql.compatability_mode | "0" | PHP_INI_ALL
mssql.connect_timeout | "5" | PHP_INI_ALL
mssql.timeout | "60" | PHP_INI_ALL
mssql.textsize | "-1" | PHP_INI_ALL
mssql.textlimit | "-1" | PHP_INI_ALL
mssql.batchsize | "0" | PHP_INI_ALL
mssql.datetimeconvert | "1" | PHP_INI_ALL
mysql.allow_persistent | "1" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
ncurses.value | "42" | PHP_INI_ALL
ncurses.string | "foobar" | PHP_INI_ALL
odbc.allow_persistent | "1" | PHP_INI_SYSTEM
odbc.max_persistent | "-1" | PHP_INI_SYSTEM
odbc.max_links | "-1" | PHP_INI_SYSTEM
odbc.default_db | NULL | PHP_INI_ALL
odbc.default_user | NULL | PHP_INI_ALL
odbc.default_pw | NULL | PHP_INI_ALL
odbc.defaultlrl | "4096" | PHP_INI_ALL
odbc.defaultbinmode | "1" | PHP_INI_ALL
odbc.check_persistent | "1" | PHP_INI_SYSTEM
pfpro.defaulthost | "test.signio.com" |
pfpro.defaulthost | "test-payflow.verisign.com" |
pfpro.defaultport | "443" | PHP_INI_ALL
pfpro.defaulttimeout | "30" | PHP_INI_ALL
pfpro.proxyaddress | "" | PHP_INI_ALL
pfpro.proxyport | "" | PHP_INI_ALL
pfpro.proxylogon | "" | PHP_INI_ALL
pfpro.proxypassword | "" | PHP_INI_ALL
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM
pgsql.max_links | "-1" | PHP_INI_SYSTEM
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM
pgsql.ignore_notice | "0" | PHP_INI_ALL
pgsql.log_notice | "0" | PHP_INI_ALL
session.save_path | "/tmp" | PHP_INI_ALL
session.name | "PHPSESSID" | PHP_INI_ALL
session.save_handler | "files" | PHP_INI_ALL
session.auto_start | "0" | PHP_INI_ALL
session.gc_probability | "1" | PHP_INI_ALL
session.gc_maxlifetime | "1440" | PHP_INI_ALL
session.serialize_handler | "php" | PHP_INI_ALL
session.cookie_lifetime | "0" | PHP_INI_ALL
session.cookie_path | "/" | PHP_INI_ALL
session.cookie_domain | "" | PHP_INI_ALL
session.cookie_secure | "" | PHP_INI_ALL
session.use_cookies | "1" | PHP_INI_ALL
session.use_only_cookies | "0" | PHP_INI_ALL
session.referer_check | "" | PHP_INI_ALL
session.entropy_file | "" | PHP_INI_ALL
session.entropy_length | "0" | PHP_INI_ALL
session.cache_limiter | "nocache" | PHP_INI_ALL
session.cache_expire | "180" | PHP_INI_ALL
session.use_trans_sid | "1" | PHP_INI_SYSTEM|PHP_INI_PERDIR
session.encode_sources | "globals,track" | PHP_INI_ALL
extname.global_value | "42" | PHP_INI_ALL
extname.global_string | "foobar" | PHP_INI_ALL
assert.active | "1" | PHP_INI_ALL
assert.bail | "0" | PHP_INI_ALL
assert.warning | "1" | PHP_INI_ALL
assert.callback | NULL | PHP_INI_ALL
assert.quiet_eval | "0" | PHP_INI_ALL
safe_mode_protected_env_vars | SAFE_MODE_PROTECTED_ENV_VARS | PHP_INI_SYSTEM
safe_mode_allowed_env_vars | SAFE_MODE_ALLOWED_ENV_VARS | PHP_INI_SYSTEM
url_rewriter.tags | "a=href,area=href,frame=src,form=fakeentry" | PHP_INI_ALL
sybct.allow_persistent | "1" | PHP_INI_SYSTEM
sybct.max_persistent | "-1" | PHP_INI_SYSTEM
sybct.max_links | "-1" | PHP_INI_SYSTEM
sybct.min_server_severity | "10" | PHP_INI_ALL
sybct.min_client_severity | "10" | PHP_INI_ALL
sybct.hostname | NULL | PHP_INI_ALL
tokenizer.global_value | "42" | PHP_INI_ALL
tokenizer.global_string | "foobar" | PHP_INI_ALL
vpopmail.directory | "" | PHP_INI_ALL
zlib.output_compression | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR
zlib.output_compression_level | "-1" | PHP_INI_ALL
define_syslog_variables | "0" | PHP_INI_ALL
highlight.bg | HL_BG_COLOR | PHP_INI_ALL
highlight.comment | HL_COMMENT_COLOR | PHP_INI_ALL
highlight.default | HL_DEFAULT_COLOR | PHP_INI_ALL
highlight.html | HL_HTML_COLOR | PHP_INI_ALL
highlight.keyword | HL_KEYWORD_COLOR | PHP_INI_ALL
highlight.string | HL_STRING_COLOR | PHP_INI_ALL
allow_call_time_pass_reference | "1" | PHP_INI_SYSTEM|PHP_INI_PERDIR
asp_tags | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR
display_errors | "1" | PHP_INI_ALL
display_startup_errors | "0" | PHP_INI_ALL
enable_dl | "1" | PHP_INI_SYSTEM
expose_php | "1" | PHP_INI_SYSTEM
html_errors | "1" | PHP_INI_SYSTEM
xmlrpc_errors | "0" | PHP_INI_SYSTEM
xmlrpc_error_number | "0" | PHP_INI_ALL
ignore_user_abort | "0" | PHP_INI_ALL
implicit_flush | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
log_errors | "0" | PHP_INI_ALL
log_errors_max_len | "1024" | PHP_INI_ALL
ignore_repeated_errors | "0" | PHP_INI_ALL
ignore_repeated_source | "0" | PHP_INI_ALL
magic_quotes_gpc | "1" | PHP_INI_PERDIR|PHP_INI_SYSTEM
magic_quotes_runtime | "0" | PHP_INI_ALL
magic_quotes_sybase | "0" | PHP_INI_ALL
output_buffering | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler | NULL | PHP_INI_PERDIR|PHP_INI_SYSTEM
register_argc_argv | "1" | PHP_INI_PERDIR|PHP_INI_SYSTEM
register_globals | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
safe_mode | "1" | PHP_INI_SYSTEM
safe_mode | "0" | PHP_INI_SYSTEM
safe_mode_include_dir | NULL | PHP_INI_SYSTEM
safe_mode_gid | "0" | PHP_INI_SYSTEM
short_open_tag | DEFAULT_SHORT_OPEN_TAG | PHP_INI_SYSTEM|PHP_INI_PERDIR
sql.safe_mode | "0" | PHP_INI_SYSTEM
track_errors | "0" | PHP_INI_ALL
y2k_compliance | "0" | PHP_INI_ALL
unserialize_callback_func | NULL | PHP_INI_ALL
arg_separator.output | "&" | PHP_INI_ALL
arg_separator.input | "&" | PHP_INI_SYSTEM|PHP_INI_PERDIR
auto_append_file | NULL | PHP_INI_SYSTEM|PHP_INI_PERDIR
auto_prepend_file | NULL | PHP_INI_SYSTEM|PHP_INI_PERDIR
doc_root | NULL | PHP_INI_SYSTEM
default_charset | SAPI_DEFAULT_CHARSET | PHP_INI_ALL
default_mimetype | SAPI_DEFAULT_MIMETYPE | PHP_INI_ALL
error_log | NULL | PHP_INI_ALL
extension_dir | PHP_EXTENSION_DIR | PHP_INI_SYSTEM
gpc_order | "GPC" | PHP_INI_ALL
include_path | PHP_INCLUDE_PATH | PHP_INI_ALL
max_execution_time | "30" | PHP_INI_ALL
open_basedir | NULL | PHP_INI_SYSTEM
safe_mode_exec_dir | "1" | PHP_INI_SYSTEM
upload_max_filesize | "2M" | PHP_INI_SYSTEM
file_uploads | "1" | PHP_INI_SYSTEM
post_max_size | "8M" | PHP_INI_SYSTEM
upload_tmp_dir | NULL | PHP_INI_SYSTEM
user_dir | NULL | PHP_INI_SYSTEM
variables_order | NULL | PHP_INI_ALL
error_append_string | NULL | PHP_INI_ALL
error_prepend_string | NULL | PHP_INI_ALL
SMTP | "localhost" | PHP_INI_ALL
smtp_port | 25 | PHP_INI_ALL
browscap | NULL | PHP_INI_SYSTEM
error_reporting | NULL | PHP_INI_ALL
memory_limit | "8M" | PHP_INI_ALL
precision | "14" | PHP_INI_ALL
sendmail_from | NULL | PHP_INI_ALL
sendmail_path | DEFAULT_SENDMAIL_PATH | PHP_INI_SYSTEM
disable_functions | "" | PHP_INI_SYSTEM
allow_url_fopen | "1" | PHP_INI_ALL
always_populate_raw_post_data | "0" | PHP_INI_ALL
xbithack | "0" | PHP_INI_ALL
engine | "1" | PHP_INI_ALL
last_modified | "0" | PHP_INI_ALL
child_terminate | "0" | PHP_INI_ALL
async_send | "0" | PHP_INI_ALL

Tableau 2. Définition des constantes PHP_INI_*

Constante | Valeur | Signification
PHP_INI_USER | 1 | La valeur peut être modifiée dans un script
PHP_INI_PERDIR | 2 | La valeur peut être modifiée dans le fichier .htaccess et les directives d'un vhost
PHP_INI_SYSTEM | 4 | La valeur peut être modifiée dans php.ini ou httpd.conf (mais pas dans les blocs vhost de httpd.conf
PHP_INI_ALL | 7 | La valeur peut être modifiée n'importe où

Voir aussi
ini_alter(),
ini_get() et
ini_restore()

Précédent | Sommaire | Suivant
ini_restore | Niveau supérieur | main


main

main -- Fausse documentation pour main()

Description

Il n'y a pas de fonction appelée main(), hormis dans les sources PHP. En PHP 4.3.0, un nouveau type de gestion d'erreur a été introduit dans les sources de PHP : php_error_docref. Une des fonctionnalité était de fournir un lien vers la page de manuel de PHP lorsque la directive html_errors était activée (par défaut).

Certains messages d'erreur faisaient référence à une page de manuel pour la fonction main() alors que cette page n'existe pas.

Tableau 1. Erreurs connues pour diriger sur la page main()

Nom de la fonction | Ne pointe plus sur cette page depuis la version
include() | 4.3.1
include_once() | 4.3.1
require() | 4.3.1
require_once() | 4.3.1

Voir aussi html_errors et display_errors.

Précédent | Sommaire | Suivant
ini_set | Niveau supérieur | memory_get_usage


memory_get_usage

(PHP 4 >= 4.3.2)

memory_get_usage -- Indique la quantité de mémoire utilisée par PHP

Description

int memory_get_usage ( void )

memory_get_usage() retourne la quantité de mémoire allouée à PHP à cet instant.

memory_get_usage() n'est disponible que si PHP est compilé avec l'option --enable-memory-limit.

Exemple 1. Exemple avec memory_get_usage()

<?php
// Ceci n'est qu'un exemple. Les chiffres ci-dessous
// diff&eacute;reront suivant les syst&egrave;mes et les configurations

echo memory_get_usage() . "\n"; // 36640

$a = str_repeat("Salut", 4242);

echo memory_get_usage() . "\n"; // 57960

unset($a);

echo memory_get_usage() . "\n"; // 36744

?>

Voir aussi memory-limit.

Précédent | Sommaire | Suivant
main | Niveau supérieur | php_ini_scanned_files


php_ini_scanned_files

(PHP 4 >= 4.3.0)

php_ini_scanned_files -- Retourne la liste des fichiers .ini analysés dans les dossiers de configuration supplémentaires

Description

string php_ini_scanned_files ( void )

php_ini_scanned_files() retourne une liste de nom de fichiers de configuration analysés, en plus de php.ini. Cette liste est au format CSV. Ces fichiers sont situés dans un dossier défini par l'option --with-config-file-scan-dir, définie au moment de la compilation.

php_ini_scanned_files() retourne une chaîne de caractères, et les noms de fichiers sont séparés par des virgules. Si --with-config-files-scan-dir n'était pas configuré, FALSE est retourné. Si cette option était configurée, mais que le dossier était vide, une chaîne vide est retournée. Si un fichier n'est pas lisible, le nom du fichier sera inclus dans la liste, mais une erreur sera générée. Cette erreur sera visible au moment de la compilation, et lorsque vous appelerez la fonction php_ini_scanned_files().

Les fichiers retournés incluent le chemin, comme déclaré dans la directive --with-config-file-scan-dir. De plus, chaque virgule est suivi d'une nouvelle ligne.

Exemple 1. Un exemple simple de liste retournée par php_ini_scanned_files()

<?php

if ($filelist = php_ini_scanned_files()) {

    if (strlen($filelist) > 0) {

        $files = explode(',', $filelist);

        foreach ($files as $file) {
            echo "<li>" . trim($file) . "</li>\n";
        }
    }
}
?>

Voir aussi ini_set() et phpinfo().

Précédent | Sommaire | Suivant
memory_get_usage | Niveau supérieur | php_logo_guid


php_logo_guid

(PHP 4 )

php_logo_guid -- Retourne l'identifiant du logo PHP

Description

string php_logo_guid ( void )

Cette fonction retourne l'identifiant qui peut être utilisé pour afficher le logo PHP en utilisant une image incorporée dans les sources.

Note : Cette fonctionnalité a été ajoutée dans PHP 4 Beta 4.

Exemple 1. Exemple avec php_logo_guid()

<?php

  echo '<img src="' . $_SERVER['PHP_SELF'] .
  '?=' . php_logo_guid() . '" alt="Logo PHP !" />';

?>

Voir aussi
phpinfo(),
phpversion(),
phpcredits() et
zend_logo_guid().

Précédent | Sommaire | Suivant
php_ini_scanned_files | Niveau supérieur | php_sapi_name


php_sapi_name

(PHP 4 >= 4.0.1)

php_sapi_name -- Retourne le type d'interface utilisé entre le serveur web et PHP

Description

string php_sapi_name ( void )

php_sapi_name() retourne une chaîne en minuscule qui décrit le type d'interface utilisé en le serveur web et PHP (Server API, SAPI). En CGI PHP, cette chaîne est "CGI", en mod_php pour Apache, cette chaîne est "apache", etc...

Exemple 1. Exemple avec php_sapi_name()

<?php
$inter_type = php_sapi_name();
if ($inter_type == "cgi")
    print "Vous utilisez CGI PHP\n";
else
    print "Vous n'utilisez pas CGI PHP\n";
?>

Précédent | Sommaire | Suivant
php_logo_guid | Niveau supérieur | php_uname


php_uname

(PHP 4 >= 4.0.2)

php_uname -- Retourne les informations sur le système d'exploitation

Description

string php_uname ( void )

php_uname() retourne une chaîne de caractères avec des informations sur le système d'exploitation sur lequel tourne PHP. Si vous voulez juste savoir le nom du système d'exploitation, utilisez plutôt la constante PHP_OS.

Exemple 1. Exemples avec php_uname()

<?php
echo php_uname();
echo PHP_OS;

/* Affichages possibles :
Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686
Linux

FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001
FreeBSD

Windows NT XN1 5.1 build 2600
WINNT
*/

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo 'Le serveur tourne sous Windows !';
} else {
    echo 'Le serveur ne tourne pas sous Windows !';
}

?>

Il existe aussi des constantes PHP prédéfinies liées, qui peuvent s'avérer utiles, par exemple :

Exemple 2. Exemples avec quelques constantes liées au système

<?php
// *nix
echo DIRECTORY_SEPARATOR; // :
echo PHP_SHLIB_SUFFIX;    // so

// Win*
echo DIRECTORY_SEPARATOR; // ;
echo PHP_SHLIB_SUFFIX;    // dll
?>

Voir aussi
phpversion(),
php_sapi_name() et
phpinfo().

Précédent | Sommaire | Suivant
php_sapi_name | Niveau supérieur | phpcredits


phpcredits

(PHP 4 )

phpcredits -- Imprime les crédits de PHP

Description

void phpcredits ( [int flag])

phpcredits() affiche la liste des développeurs PHP, des modules, etc... Elle génère le code HTML approprié pour insérer les informations dans une page. Le paramètre flag indique les informations qui doivent être affichées. Par exemple, pour afficher les crédits généraux, vous pouvez utiliser le code suivant :

<?php
  phpcredits(CREDITS_GENERAL);
?>

Et pour afficher la liste des développeurs et du groupe de documentation dans une page séparée, vous utiliserez

<?php
  phpcredits(CREDITS_GROUP + CREDITS_DOCS + CREDITS_FULLPAGE);
?>

Si vous vous sentez l'envie de placer tous les crédits dans votre page, vous pouvez utiliser ceci :

<html>
 <head>
  <title>Ma page de cr&eacute;dits</title>
 </head>
 <body>
<?php
 // Un peu de votre code
 phpcredits(CREDITS_ALL);
 // Un autre peu de votre code
?>
 </body>
</html>

Tableau 1. Paramètre prédéfinis de phpcredits()

Nom | Description
CREDITS_ALL | Tous les crédits, équivalent à : CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE. La fonction génère alors une page HTML complète.
CREDITS_DOCS | Les crédits du groupe de documentation
CREDITS_FULLPAGE | En général, ce paramètre est utilisé avec d'autres constantes. Il indique que la page ainsi générée doit être une page HTML complète, avec toutes les balises nécessaires.
CREDITS_GENERAL | Crédits Généraux : conception et design du langage, auteurs de PHP 4.0, module SAPI.
CREDITS_GROUP | Une liste des développeurs principaux
CREDITS_MODULES | Une liste des extensions de PHP, et leurs auteurs
CREDITS_SAPI | Cette constante est définie, mais elle n'est toujours pas utilisée sous PHP 4.0.1pl2.

Voir aussi
phpinfo(),
phpversion() et
php_logo_guid().

Précédent | Sommaire | Suivant
php_uname | Niveau supérieur | phpinfo


phpinfo

(PHP 3, PHP 4 )

phpinfo -- Affiche de nombreuses informations sur le PHP

Description

int phpinfo ( [int what])

phpinfo() affiche de nombreuses informations sur le PHP, concernant sa configuration courante : options de compilation, extensions, version, informations sur le serveur, et environnement (lorsque compilé comme module), environnement PHP, chemins, utilisateur, en-têtes HTTP, et licence GNU Public License.

Comme tous les systèmes sont configurés différemment, phpinfo() sert généralement à vérifier la configuration ainsi que les variables prédéfinies, pour une plate-forme donnée. De plus, phpinfo() est un outil de débogage, car il affiche le contenu de toutes les variables EGPCS (Environnement, GET, POST, Cookie, Serveur).

L'affichage peut être personnalisé en utilisant une ou plusieurs des constantes suivantes. Elles sont combinables avec l'opérateur OR, et doivent être passées dans le paramètre what. Vous pouvez aussi les additionner.

Tableau 1. Options de phpinfo()

Nom (constant) | Valeur | Description
INFO_GENERAL | 1 | La ligne de configuration, le chemin du php.ini, la date de compilation, le serveur web, le système, etc...
INFO_CREDITS | 2 | Les crédits de PHP 4. Voir aussi phpcredits().
INFO_CONFIGURATION | 4 | Valeurs courantes locales et générales des directives PHP. Voyez aussi la fonction ini_get().
INFO_MODULES | 8 | Modules chargées et leur configuration spécifique.
INFO_ENVIRONMENT | 16 | Informations sur les environnements de variables, qui sont disponibles dans la variable $_ENV.
INFO_VARIABLES | 32 | Affiche toutes les variables prédéfinies, issues de l'environnement, la méthode GET, la méthode POST, les cookies et le serveur.
INFO_LICENSE | 64 | La licence PHP. Voir aussi la FAQ de a licence.
INFO_ALL | -1 | Affiche toutes les informations sus-citées. C'est la valeur par défaut.

Exemple 1. Exemple avec phpinfo()

<?php

// Affiche toutes les information, comme le ferait INFO_ALL
phpinfo();

// Affiche uniquement le module d'information.
// phpinfo(8) fournirait les m&ecirc;mes informations.
phpinfo(INFO_MODULES);

?>

Note : Une partie des informations affichées sont désactivées si la directive expose_php est configurée avec la valeur off. Cela inclus les logos PHP et Zend, ainsi que les crédits.

Voir aussi
phpversion(),
phpcredits(),
php_logo_guid(),
ini_get(),
ini_set() et la section sur les
variables prédéfinies.

Précédent | Sommaire | Suivant
phpcredits | Niveau supérieur | phpversion


phpversion

(PHP 3, PHP 4 )

phpversion -- Retourne le numéro de la version courante de PHP

Description

string phpversion ( void )

phpversion() retourne le numéro de la version courante de PHP.

Note : Cette information est aussi disponible via la constante prédéfinie PHP_VERSION.

Exemple 1. Exemple avec phpversion()

<?php
// affiche le num&eacute;ro de version courante du PHP.
  echo "PHP Version : ".phpversion();
?>

Voir aussi
 version_compare(),
 phpinfo(),
 phpcredits(),
 php_logo_guid() et
 zend_version().

Précédent | Sommaire | Suivant
phpinfo | Niveau supérieur | putenv


putenv

(PHP 3, PHP 4 )

putenv -- Fixe la valeur d'une variable d'environnement

Description

void putenv ( string setting)

putenv() fixe la valeur d'une variable d'environnement. Cette valeur n'existera que durant la vie du script courant, et l'environnement initial sera restauré lorsque le script sera terminé.

Modifier la valeur de certaines variables système peut être un trou de sécurité considérable. La directive de configuration safe_mode_allowed_env_vars contient une liste de préfixes, séparés par des virgules. Lorsque le Safe Mode est actif, l'utilisateur ne peut que modifier les variables qui dont le nom commence par les préfixes fournis par cette directive. Par défaut, les utilisateurs ne peuvent modifier que les variables qui commencent par PHP_ (i.e. PHP_FOO=BAR). Note: si cette directive est vide, PHP autorisera la modification de TOUTES les variables d'environnement!.

La directive de configuration safe_mode_protected_env_vars contient une liste de variables d'environnement, séparées par des virgules. Les utilisateurs ne pourront pas modifier ces variables avec la fonction putenv(). Ces variables seront protégées même si safe_mode_allowed_env_vars permet leur modification.

Exemple 1. Modification d'une variable d'environnement

<?php
  putenv("UNIQID=$uniqid");
?>

Voir aussi getenv().

Précédent | Sommaire | Suivant
phpversion | Niveau supérieur | restore_include_path


restore_include_path

(PHP 4 >= 4.3.0)

restore_include_path -- Restaure la valeur de la directive de configuration include_path

Description

void restore_include_path ( void )

restore_include_path restaure la valeur de la directive de configuration include_path à sa valeur originale de début de script, telle qu'inscrite dans le php.ini.

Exemple 1. Exemple restore_include_path()

<?php

print get_include_path();  // .:/usr/local/lib/php

set_include_path('/inc');

print get_include_path();  // /inc

// Fonctionne depuis PHP 4.3.0
restore_include_path();

// Fonctionne sur toutes les versions
ini_restore('include_path');

print get_include_path();  // .:/usr/local/lib/php

?>

Voir aussi
ini_restore(),
set_include_path(),
get_include_path() et
include().

Précédent | Sommaire | Suivant
putenv | Niveau supérieur | set_include_path


set_include_path

(PHP 4 >= 4.3.0)

set_include_path -- Modifie la valeur de la directive de configuration include_path

Description

string set_include_path ( string new_include_path)

set_include_path() modifie la valeur de la directive de configuration include_path, pour la durée du script en cours. set_include_path() retourne l'ancienne valeur de include_path en cas de succès, et FALSE sinon.

Exemple 1. Exemple avec set_include_path()

<?php
// Fonctionne depuis PHP 4.3.0
set_include_path('/inc');

// Fonctionne sur toutes les versions
ini_set('include_path', '/inc');
?>

Voir aussi
ini_set(),
get_include_path(),
restore_include_path() et
include().

Précédent | Sommaire | Suivant
restore_include_path | Niveau supérieur | set_magic_quotes_runtime


set_magic_quotes_runtime

(PHP 3>= 3.0.6, PHP 4 )

set_magic_quotes_runtime -- Active/désactive l'option magic_quotes_runtime.

Description

bool set_magic_quotes_runtime ( int new_setting)

set_magic_quotes_runtime() active/désactive l'option magic_quotes_runtime. (0 l'option est désactivée, 1 l'option est activée).

Voir aussi get_magic_quotes_gpc() et get_magic_quotes_runtime().

Précédent | Sommaire | Suivant
set_include_path | Niveau supérieur | set_time_limit


set_time_limit

(PHP 3, PHP 4 )

set_time_limit -- Fixe le temps maximum d'exécution d'un script

Description

void set_time_limit ( int seconds)

set_time_limit() fixe le délai d'expiration d'un script, en secondes. Si cette limite est atteinte, le script s'interrompt, et renvoie une erreur fatale. La valeur par défaut est 30 secondes ou, si c'est le cas, la valeur de la directive max_execution_time définie dans le php.ini. Si la valeur est zéro, il n'y a alors aucune limite imposée.

Lorsqu'elle est appelée, la fonction set_time_limit() remet le compteur de zéro. En d'autres termes, si la limite par défaut est à 30 secondes, et qu'après 25 secondes d'exécution du script l'appel set_time_limit(20) est fait, alors le script tournera pendant un total de 45 secondes avant de finir.

Notez que set_time_limit() n'a pas d'effet lorsque PHP fonctionne en mode safe mode. Il n'y a pas d'autre solution que de changer de mode, ou de modifier la durée maximale d'exécution dans le php.ini.

Précédent | Sommaire | Suivant
set_magic_quotes_runtime | Niveau supérieur | version_compare


version_compare

(PHP 4 >= 4.1.0)

version_compare -- Compare deux versions de PHP

Description

int version_compare ( string version1, string version2 [, string operator])

version_compare() compare les deux versions de PHP standardisée. Cette fonction est pratique pour les programmes qui doivent vérifier la version de PHP qui les fait tourner.

version_compare() retourne -1 si version1 est inférieure à version2, 0 si elles sont égales, et 1 dans le reste des cas.

Si vous spécifiez le troisième argument optionnel operator, vous pouvez tester une relation particulière. Les opérateurs possibles sont <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne. En utilisant cet argument, version_compare() retournera 1 si la relation est vérifiée et 0 sinon.

Exemple 1. Exemple avec version_compare()

<?php
  echo version_compare("4.0.4", "4.0.6");
// affiche -1
  echo version_compare("4.0.4", "4.0.6", "<");
  echo version_compare("4.0.6", "4.0.6", "eq");
// affichent tous 1
?>

Précédent | Sommaire | Suivant
set_time_limit | Niveau supérieur | zend_logo_guid


zend_logo_guid

(PHP 4 )

zend_logo_guid -- Retourne le logo de Zend

Description

string zend_logo_guid ( void )

Note : Cette fonctionnalité a été ajoutée en PHP 4 Beta 4.

Précédent | Sommaire | Suivant
version_compare | Niveau supérieur | zend_version


zend_version

(PHP 4 )

zend_version -- Lit la version courante du moteur Zend

Description

string zend_version ( void )

zend_version() retourne une chaîne contenant le numéro de version du moteur d'analyse Zend, pour l'exécutable PHP courant.

Exemple 1. Exemple avec zend_version()

<?php
// affiche e.g. 'Version du moteur Zend: 1.0.4'
// ou bien quelque chose d'approchant si votre version de PHP date un peu
  echo "Version du moteur Zend: ".zend_version();
?>

Voir aussi
phpinfo(),
phpcredits(),
php_logo_guid() et
phpversion().

Précédent | Sommaire | Suivant
zend_logo_guid | Niveau supérieur | POSIX


POSIX

Manuel PHP
Précédent Suivant

LXXXII. POSIX

Introduction

Ce module contient une interface avec les documents au standard IEEE 1003.1 (POSIX.1), qui ne sont pas accessibles autrement. Par exemple, POSIX.1 définit les fonctions open(), read(), write() et close(), qui ont été traditionnellement des fonctions de PHP 3. Certains fonctionnalités spécifiques ne sont pas encore disponibles, bien que ce module tâche de remédier à cette situation.

Avertissement

Des données sensibles peuvent être lues en utilisant les fonctions POSIX, comme par exemple posix_getpwnam() et compagnie. Aucune des fonctions POSIX n'est surveillée lorsque le safe mode est activé. Il est donc fortement recommandé de désactiver les fonctions POSIX (à l'aide de l'option de configuration --disable-posix) si vous travaillez dans un tel environnement.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Installation

Le support des fonctions POSIX est activé par défaut. Vous pouvez désactiver ces fonctions en compilant PHP avec l'option --disable-posix.

Voir aussi

La section sur la contrôle des processus peut aussi vous interesser.

Table des matières
posix_ctermid -- Retourne le chemin du terminal
posix_get_last_error -- Lit le dernier numéro d'erreur généré par la dernière fonction POSIX qui a échoué
posix_getcwd -- Chemin du dossier de travail courant
posix_getegid -- Retourne l'ID effectif du groupe du processus courant.
posix_geteuid -- Retourne l'UID effectif de l'utilisateur du processus courant.
posix_getgid -- Retourne l'UID du groupe du processus courant.
posix_getgrgid -- Retourne des informations sur un groupe
posix_getgrnam -- Retourne des informations sur un groupe
posix_getgroups -- Retourne les identifiants du groupe du processus courant.
posix_getlogin -- Retourne le nom de login
posix_getpgid -- Retourne l'id du groupe de processus
posix_getpgrp -- Retourne l'identifiant du groupe de processus.
posix_getpid -- Retourne l'identifiant du processus courant
posix_getppid -- Retourne l'identifiant du processus parent
posix_getpwnam -- Retourne des informations sur un utilisateur
posix_getpwuid -- Retourne des informations sur un utilisateur
posix_getrlimit -- Retourne les limites système
posix_getsid -- Retourne le sid du processus
posix_getuid -- Retourne l'ID de l'utilisateur du processus courant.
posix_isatty -- Détermine si un pointeur de fichier est un terminal interactif.
posix_kill -- Envoie un signal à un processus
posix_mkfifo -- Crée un fichier FIFO (first in, first out) (un pipe nommé)
posix_setegid -- Modifie le GID réel du processus courant
posix_seteuid -- Set the effective UID of the current process
posix_setgid -- Fixe le GID effective du processus courant.
posix_setpgid -- Fixe l'identifiant de group de processus
posix_setsid -- Fait du processus courant un chef de session
posix_setuid -- Fixe l'UID effective du processus courant.
posix_strerror -- Lit le message d'erreur associé à un numéro d'erreur POSIX
posix_times -- Utilisation des ressources
posix_ttyname -- Retourne le nom de device du terminal
posix_uname -- Retourne le nom du système

Précédent | Sommaire | Suivant
zend_version | Niveau supérieur | posix_ctermid


posix_ctermid

(PHP 3>= 3.0.13, PHP 4 )

posix_ctermid -- Retourne le chemin du terminal

Description

string posix_ctermid ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
POSIX | Niveau supérieur | posix_get_last_error


posix_get_last_error

(PHP 4 >= 4.2.0)

posix_get_last_error -- Lit le dernier numéro d'erreur généré par la dernière fonction POSIX qui a échoué

Description

int posix_get_last_error ( void )

posix_get_last_error() retourne le numéro d'erreur retourné par la dernière fonction POSIX qui a échoué. Si aucune erreur n'a été générée, 0 est retourné. Si vous le message d'erreur associé au numéro d'erreur, utilisez posix_strerror().

Voir aussi posix_strerror().

Précédent | Sommaire | Suivant
posix_ctermid | Niveau supérieur | posix_getcwd


posix_getcwd

(PHP 3>= 3.0.13, PHP 4 )

posix_getcwd -- Chemin du dossier de travail courant

Description

string posix_getcwd ( void )

posix_getcwd() retourne le chemin absolu du dossier de travail du script courant. posix_getcwd() retourne FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
posix_get_last_error | Niveau supérieur | posix_getegid


posix_getegid

(PHP 3>= 3.0.10, PHP 4 )

posix_getegid -- Retourne l'ID effectif du groupe du processus courant.

Description

int posix_getegid ( void )

posix_getegid() retourne l'ID effectif du groupe du processus courant. Reportez-vous à posix_getgrgid() pour transformer cette information en nom de groupe.

Précédent | Sommaire | Suivant
posix_getcwd | Niveau supérieur | posix_geteuid


posix_geteuid

(PHP 3>= 3.0.10, PHP 4 )

posix_geteuid -- Retourne l'UID effectif de l'utilisateur du processus courant.

Description

int posix_geteuid ( void )

posix_geteuid() retourne l'UID effectif de l'utilisateur du processus courant. Reportez-vous à posix_getpwuid() pour obtenir le nom d'utilisateur.

Précédent | Sommaire | Suivant
posix_getegid | Niveau supérieur | posix_getgid


posix_getgid

(PHP 3>= 3.0.10, PHP 4 )

posix_getgid -- Retourne l'UID du groupe du processus courant.

Description

int posix_getgid ( void )

posix_getgid() retourne l'UID du groupe du processus courant. Reportez-vous à posix_getgrgid() pour accéder au nom du groupe.

Précédent | Sommaire | Suivant
posix_geteuid | Niveau supérieur | posix_getgrgid


posix_getgrgid

(PHP 3>= 3.0.13, PHP 4 )

posix_getgrgid -- Retourne des informations sur un groupe

Description

array posix_getgrgid ( int gid)

posix_getgrgid() retourne un array d'informations sur un groupe, et FALSE en cas d'échec. Si gid n'est pas un nombre, posix_getgrgid() retourne NULL et une alerte E_WARNING est générée.

Exemple 1. Exemple avec posix_getgrgid()

<?php

$groupid   = posix_getegid();
$groupinfo = posix_getgrgid($groupid);

print_r($groupinfo);

/* Exemple d'affichage :

Array
(
    [name]    => toons
    [passwd]  => x
    [members] => Array
        (
            [0] => tom
            [1] => jerry
        )
    [gid]     => 42
)

*/
?>

Note : Depuis PHP 4.2.0, les membres sont retournés sous la forme d'un tableau de membres. Avant cela, la fonction ne retournait que le nombre de membres du groupe, et les membres étaient identifiés par leur index numérique.

Voir aussi
posix_getegid(),
filegroup(),
stat() et
safe_mode_gid.

Précédent | Sommaire | Suivant
posix_getgid | Niveau supérieur | posix_getgrnam


posix_getgrnam

(PHP 3>= 3.0.13, PHP 4 )

posix_getgrnam -- Retourne des informations sur un groupe

Description

array posix_getgrnam ( string name)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
posix_getgrgid | Niveau supérieur | posix_getgroups


posix_getgroups

(PHP 3>= 3.0.10, PHP 4 )

posix_getgroups -- Retourne les identifiants du groupe du processus courant.

Description

array posix_getgroups ( void )

posix_getgroups() retourne un tableau contenant les identifiants du groupe du processus courant. Reportez-vous à posix_getgrgid() pour pouvoir utiliser ces id.

Précédent | Sommaire | Suivant
posix_getgrnam | Niveau supérieur | posix_getlogin


posix_getlogin

(PHP 3>= 3.0.13, PHP 4 )

posix_getlogin -- Retourne le nom de login

Description

string posix_getlogin ( void )

posix_getlogin() retourne le nom de login de l'utilisateur qui possède le processus courant. Reportez-vous à posix_getpwnam() pour obtenir plus d'informations sur cet utilisateur.

Précédent | Sommaire | Suivant
posix_getgroups | Niveau supérieur | posix_getpgid


posix_getpgid

(PHP 3>= 3.0.10, PHP 4 )

posix_getpgid -- Retourne l'id du groupe de processus

Description

int posix_getpgid ( int pid)

posix_getpgid() retourne l'id du groupe de processus pour le processus pid.

Ceci n'est pas une fonction POSIX, mais elle est répandue sur les systèmes BSD et System V. Si votre système ne supporte pas cette fonction, la fonction PHP retournera toujours FALSE.

Précédent | Sommaire | Suivant
posix_getlogin | Niveau supérieur | posix_getpgrp


posix_getpgrp

(PHP 3>= 3.0.10, PHP 4 )

posix_getpgrp -- Retourne l'identifiant du groupe de processus.

Description

int posix_getpgrp ( void )

posix_getpgrp() retourne l'identifiant du groupe de processus du processus courant. Reportez-vous à POSIX.1 et à getpgrp(2) dans le manuel de votre système POSIX pour plus d'informations sur les groupes de processus.

Précédent | Sommaire | Suivant
posix_getpgid | Niveau supérieur | posix_getpid


posix_getpid

(PHP 3>= 3.0.10, PHP 4 )

posix_getpid -- Retourne l'identifiant du processus courant

Description

int posix_getpid ( void )

posix_getpid() retourne l'identifiant du processus courant.

Précédent | Sommaire | Suivant
posix_getpgrp | Niveau supérieur | posix_getppid


posix_getppid

(PHP 3>= 3.0.10, PHP 4 )

posix_getppid -- Retourne l'identifiant du processus parent

Description

int posix_getppid ( void )

posix_getppid() retourne l'identifiant du processus parent du processus courant.

Précédent | Sommaire | Suivant
posix_getpid | Niveau supérieur | posix_getpwnam


posix_getpwnam

(PHP 3>= 3.0.13, PHP 4 )

posix_getpwnam -- Retourne des informations sur un utilisateur

Description

array posix_getpwnam ( string username)

posix_getpwnam() retourne un tableau associatif qui contient des informations à propos d'un utilisateur, identifié par son nom, passé en paramètre username.

Les éléments du tableau sont :

Tableau 1. Le tableau descriptif d'un utilisateur

Elément | Déscription
name | Le nom contient le nom de l'utilisateur. Généralement, c'est un nom court, de moins de 16 caractères, mais ce n'est pas son nom réel et complet. Cette valeur devrait correspondre au paramètre username, et donc, il est redondant.
passwd | Contient le mot de passe de l'utilisateur, encrypté. Souvent, dans les systèmes utilisant les mots de passe "fantômes", un astérisque est retourné.
uid | L'UID de l'utilisateur.
gid | L'ID du groupe de l'utilisateur. Utilisez la fonction posix_getgrgid() pour connaître le nom du groupe, et ses membres.
gecos | GECOS est un terme obsolète qui fait référence aux données de finger, sur un système Honeywell. Le champ, cependant, a survécu, et son contenu a été formalisé par POSIX. Le champ contient une liste, séparée par des virgules, qui contient le nom complet de l'utilisateur, son téléphone professionnel, son numéro de téléphone bureau, et son numéro de téléphone personnel. Sur la plupart des sytèmes, seul le nom est disponible.
dir | Cet élément contient le chemin absolu jusqu'au dossier racine de l'utilisateur.
shell | Cet élément contient le chemin absolu jusqu'au dossier d'exécution du shell de l'utilisateur.

Précédent | Sommaire | Suivant
posix_getppid | Niveau supérieur | posix_getpwuid


posix_getpwuid

(PHP 3>= 3.0.13, PHP 4 )

posix_getpwuid -- Retourne des informations sur un utilisateur

Description

array posix_getpwuid ( int uid)

posix_getpwuid() retourne un tableau associatif contenant des informations sur un utilisateur repéré par son UID, passé dans le paramètre uid.

Les éléments du tableau sont :

Tableau 1. Le tableau de description d'un utilisateur

Elément | Description
name | Le nom contient le nom de l'utilisateur. Généralement, c'est un nom court, de moins de 16 caractères, mais ce n'est pas son nom réel et complet.
passwd | Contient le mot de passe de l'utilisateur, encrypté. Souvent, dans les systèmes utilisant les mots de passes "fantômes", un astérisque est retourné.
uid | Cette valeur devrait correspondre au paramètre uid, et donc, il est redondant.
gid | L'ID du groupe de l'utilisateur. Utilisez la fonction posix_getgrgid() pour connaître le nom du groupe, et ses membres.
gecos | GECOS est un terme obsolète qui fait référence aux données de finger, sur un système Honeywell. Le champ, cependant, a survécu, et son contenu a été formalisé par POSIX. Le champ contient une liste, séparée par des virgules, qui contient le nom complet de l'utilisateur, son téléphone professionne, son numéro de bureau, et son numéro de téléphone personnel. Sur la plupart des sytèmes, seul le nom est disponible.
dir | Cet élément contient le chemin absolu jusqu'au dossier racine de l'utilisateur.
shell | Cet élément contient le chemin absolu jusqu'au dossier d'exécution du shell de l'utilisateur.

Précédent | Sommaire | Suivant
posix_getpwnam | Niveau supérieur | posix_getrlimit


posix_getrlimit

(PHP 3>= 3.0.10, PHP 4 )

posix_getrlimit -- Retourne les limites système

Description

array posix_getrlimit ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
posix_getpwuid | Niveau supérieur | posix_getsid


posix_getsid

(PHP 3>= 3.0.10, PHP 4 )

posix_getsid -- Retourne le sid du processus

Description

int posix_getsid ( int pid)

posix_getsid() retourne le sid du processus pid. Si pid est à 0, le sid retourné sera celui du processus courant.

Ceci n'est pas une fonction POSIX, mais elle est répandue sur les systèmes BSD et System V. Si votre système ne supporte pas cette fonction, la fonction PHP retournera toujours FALSE.

Précédent | Sommaire | Suivant
posix_getrlimit | Niveau supérieur | posix_getuid


posix_getuid

(PHP 3>= 3.0.10, PHP 4 )

posix_getuid -- Retourne l'ID de l'utilisateur du processus courant.

Description

int posix_getuid ( void )

posix_getuid() retourne l'ID numérique de l'utilisateur du processus courant. Reportez-vous à posix_getpwuid() pour accéder au nom d'utilisateur.

Précédent | Sommaire | Suivant
posix_getsid | Niveau supérieur | posix_isatty


posix_isatty

(PHP 3>= 3.0.13, PHP 4 )

posix_isatty -- Détermine si un pointeur de fichier est un terminal interactif.

Description

bool posix_isatty ( int fd)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
posix_getuid | Niveau supérieur | posix_kill


posix_kill

(PHP 3>= 3.0.13, PHP 4 )

posix_kill -- Envoie un signal à un processus

Description

bool posix_kill ( int pid, int sig)

posix_kill() envoie le signal sig au processus pid. posix_kill() retourne FALSE, s'il n'a pas pu envoyer le signal, et TRUE sinon.

Reportez-vous à la page de manuel de kill(2) de votre système POSIX, qui contient plus de détails sur les identifiants négatifs de processus, les pid spéciaux 0 et -1, et le signal numéro 0.

Précédent | Sommaire | Suivant
posix_isatty | Niveau supérieur | posix_mkfifo


posix_mkfifo

(PHP 3>= 3.0.13, PHP 4 )

posix_mkfifo -- Crée un fichier FIFO (first in, first out) (un pipe nommé)

Description

bool posix_mkfifo ( string pathname, int mode)

posix_mkfifo() crée un fichie spécial FIFO qui existe dans le système de fichier, et sert de point de communication bidirectionnal pour les processus.

Le second paramètre mode doit être au format octal (i.e. 0644). Les droits donnés à la nouvelle pile FIFO dépendent aussi de la configuration de la fonction umask(). Les droits créées sont (mode & ~umask).

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Précédent | Sommaire | Suivant
posix_kill | Niveau supérieur | posix_setegid


posix_setegid

(PHP 4 >= 4.0.2)

posix_setegid -- Modifie le GID réel du processus courant

Description

bool posix_setegid ( int gid)

posix_setegid() modifie l'identifiant de group réel du processus courant. C'est une fonction de haut niveau, et vous aurez besoin des droits appropriés (généralement ceux du super utilisateur), sur votre système pour l'utiliser.

posix_setegid() retourne TRUE en cas de succès, et FALSE sinon.

Précédent | Sommaire | Suivant
posix_mkfifo | Niveau supérieur | posix_seteuid


posix_seteuid

(PHP 4 >= 4.0.2)

posix_seteuid -- Set the effective UID of the current process

Description

bool posix_seteuid ( int uid)

posix_seteuid() modifie l'identifiant d'utilisateur réel du processus courant. C'est une fonction de haut niveau, et vous aurez besoin des droits appropriés (généralement ceux du super utilisateur), sur votre système pour l'utiliser.

posix_seteuid() retourne TRUE en cas de succès, et FALSE sinon.

Précédent | Sommaire | Suivant
posix_setegid | Niveau supérieur | posix_setgid


posix_setgid

(PHP 3>= 3.0.13, PHP 4 )

posix_setgid -- Fixe le GID effective du processus courant.

Description

bool posix_setgid ( int gid)

posix_setgid() fixe le GID effective du processus courant. Reportez-vous à posix_getgrgid() pour transformer cette information en nom de groupe. L'ordre approprié est d'abord posix_setgid(), puis posix_setuid().

posix_setgid() retourne TRUE en cas de succès, FALSE sinon.

Précédent | Sommaire | Suivant
posix_seteuid | Niveau supérieur | posix_setpgid


posix_setpgid

(PHP 3>= 3.0.13, PHP 4 )

posix_setpgid -- Fixe l'identifiant de group de processus

Description

int posix_setpgid ( int pid, int pgid)

posix_setpgid() ajoute le processus pid au groupe d'id pgid. Reportez-vous à POSIX.1 et setsid(2) dans le manuel de votre système POSIX pour plus d'informations sur le contrôle de tâche. posix_setpgid() retourne TRUE en cas de succès, et FALSE sinon.

Précédent | Sommaire | Suivant
posix_setgid | Niveau supérieur | posix_setsid


posix_setsid

(PHP 3>= 3.0.13, PHP 4 )

posix_setsid -- Fait du processus courant un chef de session

Description

int posix_setsid ( void )

posix_setsid() fait du processus courant un chef de session. Reportez-vous à POSIX.1 et setsid(2) dans le manuel de votre système POSIX pour plus d'informations sur le contrôle de tâche. posix_setsid() retourne un identifiant de session.

Précédent | Sommaire | Suivant
posix_setpgid | Niveau supérieur | posix_setuid


posix_setuid

(PHP 3>= 3.0.13, PHP 4 )

posix_setuid -- Fixe l'UID effective du processus courant.

Description

bool posix_setuid ( int uid)

posix_setuid() fixe l'UID effective de l'utilisateur du processus courant. Vous devez avoir les privilèges nécessaires (traditionnellement ceux du root) sur votre système pour faire ceci.

posix_setuid() retourne TRUE en cas de succès, FALSE sinon. Voir aussi posix_setgid().

Précédent | Sommaire | Suivant
posix_setsid | Niveau supérieur | posix_strerror


posix_strerror

(PHP 4 >= 4.2.0)

posix_strerror -- Lit le message d'erreur associé à un numéro d'erreur POSIX

Description

string posix_strerror ( int errno)

posix_strerror() retourne le message d'erreur POSIX associé au numéro d'erreur errno. Si errno vaut 0, alors la chaîne "Success" est retourné. La fonction posix_get_last_error() est généralement avec cette fonction pour lire le dernier message d'erreur POSIX.

Voir aussi posix_get_last_error().

Précédent | Sommaire | Suivant
posix_setuid | Niveau supérieur | posix_times


posix_times

(PHP 3>= 3.0.13, PHP 4 )

posix_times -- Utilisation des ressources

Description

array posix_times ( void )

posix_times() retourne un tableau avec les informations sur l'utilisation du CPU. Les indices sont :

  • ticks - nombre de ticks depuis le dernier démarrage

  • utime - temps utilisateur utilisé par le processus courant.

  • stime - temps système utilisé par le processus courant.

  • cutime - temps utilisateur utilisé par le processus courant et ses enfants.

  • cstime - temps système utilisé par le processus courant et ses enfants.

Précédent | Sommaire | Suivant
posix_strerror | Niveau supérieur | posix_ttyname


posix_ttyname

(PHP 3>= 3.0.13, PHP 4 )

posix_ttyname -- Retourne le nom de device du terminal

Description

string posix_ttyname ( int fd)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
posix_times | Niveau supérieur | posix_uname


posix_uname

(PHP 3>= 3.0.10, PHP 4 )

posix_uname -- Retourne le nom du système

Description

array posix_uname ( void )

posix_uname() retourne un tableau associatif avec des informations sur le système. Les indices du tableau sont :

  • sysname - nom du système d'exploitation (e.g. Linux)

  • nodename - nom du système (e.g. valiant)

  • release - édition du système d'exploitation (e.g. 2.2.10)

  • version - version du système d'exploitation (e.g. #4 Tue Jul 20 17:01:36 MEST 1999)

  • machine - architecture système (e.g. i586)

Posix impose que vous n'ayez pas d'a priori sur le format des chaînes, c'est-à-dire que vous ne devez pas vous attendre à avoir forcément 3 chiffres pour la version, par exemple.

Précédent | Sommaire | Suivant
posix_ttyname | Niveau supérieur | PostgreSQL


PostgreSQL

Manuel PHP
Précédent Suivant

LXXXIII. PostgreSQL

Introduction

La base de données PostgreSQL est un produit Open Source, disponible sans frais. Postgres, développé au département de Science informatique, à UC Berkeley, mis en place la majorité des concepts des bases relationnelles, actuellement disponibles sur le marché. PostgreSQL accepte le langage SQL92/SQL3, assure l'intégrité transactionnelle, et l'extension de type. PostgreSQL est une évolution du code originale de Berkeley.

Pré-requis

Pour accéder au support PostgreSQL, vous avez besoin de PostgreSQL 6.5 ou plus récent, PostgreSQL 7.0 ou plus récent pour activer toutes les fonctionnalités du moduel PostgreSQL. PostgreSQL supporte de nombreux jeux de caractères, y compris les jeux multi-octets asiatiques. La version courante et plus de détails sur PostgreSQL sont accessibles sur le site http://www.postgresql.org/ et http://techdocs.postgresql.org/.

Installation

Afin d'activer le support PostgreSQL, l'option --with-pgsql[=DIR] est nécessaire lore de la compilation de PHP. DIR est le path du dossier d'installation de PostgreSQL, et par défaut il vaut /usr/local/pgsql. Si le module shared object est disponible, le module PostgreSQL est chargeable avec la directive du fichier php.ini ou via la fonction dl().

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM
pgsql.max_links | "-1" | PHP_INI_SYSTEM
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM
pgsql.ignore_notice | "0" | PHP_INI_ALL
pgsql.log_notice | "0" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

pgsql.allow_persistent bool

Whether to allow persistent Postgres connections.

pgsql.max_persistent integer

Le nombre maximum de connexions persistantes Postgre par processus.

pgsql.max_links integer

Le nombre maximum de connexions Postgre par processus, y compris les connexions persistantes.

Trucs et astuces d'utilisation

Avertissement

Utiliser le module PostgreSQL avec PHP 4.0.6 n'est pas recommandé à cause d'un bug dans le gestionnaire d'alerte. Utilisez plutôt la version 4.1.0 ou plus récent.

Avertissement

Le nom des fonctions PostgreSQL va changer dans la version 4.2.0 pour prendre en compte les standards actuels de programmation. La plupart des nouveaux noms recevront des soulignés, comme par exemple pg_lo_open(). Certaines fonctions sont renommées différemment, comme par exemple pg_exec() en pg_query(). Les anciens noms sont toujours utilisés pour encore quelques versions, mais ils seront bientôt supprimés définitivement.

Tableau 2. Nom des fonctions qui ont changé

Ancien nom | Nouveau nom
pg_cmdtuples() | pg_affected_rows()
pg_errormessage() | pg_last_error()
pg_exec() | pg_query()
pg_fieldname() | pg_field_name()
pg_fieldsize() | pg_field_size()
pg_fieldnum() | pg_field_num()
pg_fieldprtlen() | pg_field_prtlen()
pg_fieldisnull() | pg_field_is_null()
pg_freeresult() | pg_free_result()
pg_getlastoid() | pg_last_oid()
pg_loreadall() | pg_lo_read_all()
pg_locreate() | pg_lo_create()
pg_lounlink() | pg_lo_unlink()
pg_loopen() | pg_lo_open()
pg_loclose() | pg_lo_close()
pg_loread() | pg_lo_read()
pg_lowrite() | pg_lo_write()
pg_loimport() | pg_lo_import()
pg_loexport() | pg_lo_export()
pg_numrows() | pg_num_rows()
pg_numfields() | pg_num_fields()
pg_result() | pg_fetch_result()

Les anciennes syntaxes de pg_connect()/pg_pconnect() seront rendues obsolètes pour supporter les nouvelles connexions asynchrones. Utilisez la chaîne de connexion avec pg_connect() et pg_pconnect().

Toutes les fonctions ne sont pas supportées par toutes les compilations. Cela dépend de votre librairie libpq (la librairie C client de PostgreSQL), et comment libq est compilé. Si il y a des fonctions qui manquent, libpq ne supporte par la fonctionnalité sur laquelle reposait la fonction n'est pas disponible.

Il est aussi important que vous utilisiez une version de libpq qui soit plus récente que le serveur sur lequel vous vous connectez. Si vous utilisez une version de libq plus ancienne que le serveur, vous aurez des problèmes.

Depuis la version 6.3 (03/02/1998) PostgreSQL utilise les sockets UNIX, et une table est dédiée à ces nouvelles capacités. La socket est située dans le dossier /tmp/.s.PGSQL.5432. Cette option peut être activée avec '-i' passé au postmaster et cela s'interprète: "écoute sur les sockets TCP/IP et sur les sockets Unix".

Tableau 3. Postmaster et PHP

Postmaster | PHP | Statut
postmaster & | pg_connect("dbname=MonDbName"); | OK
postmaster -i & | pg_connect("dbname=MonDbName"); | OK
postmaster & | pg_connect("host=localhost dbname=MonDbName"); | Unable to connect to PostgreSQL server: connectDB() failed: Impossible de se connecter au serveur PostgreSQL: connectDB() a échoué. Est ce que le postmaster fonctionne, et accepte les TCP/IP (option -i) sur le port '5432'?
postmaster -i & | pg_connect("host=localhost dbname=MonDbName"); | OK

Il est possible de se connecter avec la commande suivante : $conn = pg_Connect("host=monHote port=monPort tty=monTTY options=myOptions dbname=myDB user=myUser password=myPassword");

L'ancienne syntaxe : $conn = pg_connect("host", "port", "options", "tty", "dbname") est obsolète.

Les variables environnementales affecent le comportement de PostgreSQL. Par exemple, le module PostgreSQL va rechercher PGHOST dans les variables d'environnement, si le nom du serveur hôte est omis dans la chaîne de connexion. Les variables d'environnement supportées sont différentes suivant les versions. Reportez vous au manuel du programmeur PostgreSQL (libpq - Environment Variables) pour plus de détails.

Assurez vous que vous avez bien configuré vos variables d'environnement pour le bon utilisateur. Utilisez $_ENV ou getenv() pour vérifier quelles variables d'environnement sont disponibles pour le processus courant.

Exemple 1. Configuration par défaut des paramètres

PGHOST=pgsql.example.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP

export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

PGSQL_ASSOC (entier)

PGSQL_NUM (entier)

PGSQL_BOTH (entier)

PGSQL_CONNECTION_BAD (entier)

PGSQL_CONNECTION_OK (entier)

PGSQL_SEEK_SET (entier)

PGSQL_SEEK_CUR (entier)

PGSQL_SEEK_END (entier)

PGSQL_ESCAPE_STRING (entier)

PGSQL_ESCAPE_BYTEA (entier)

PGSQL_EMPTY_QUERY (entier)

PGSQL_COMMAND_OK (entier)

PGSQL_TUPLES_OK (entier)

PGSQL_COPY_OUT (entier)

PGSQL_COPY_IN (entier)

PGSQL_BAD_RESPONSE (entier)

PGSQL_NONFATAL_ERROR (entier)

PGSQL_FATAL_ERROR (entier)

Exemples

Depuis PostgreSQL 7.1.0, vous pouvez stocker jusqu'à 1Go dans un champ de type text. Dans les anciennes versions, vous étiez limité à la taille maximale d'un bloc (qui, par défaut, valait 8 ko, et au mieux, 32 ko, suivant le choix au moment de la compilation).

Pour utiliser l'interface des grands objets (large object (lo) interface), il est nécessaire de les placer dans un bloc de transaction. Un bloc de transaction commence avec begin et si la transaction se termine avec un commit et end. Si la transaction échoue, elle doit être conclue par un abort et rollback.

Exemple 2. Utilisation des objets de grande taille (Large Objects)

<?php
    $database = pg_connect ("dbname=jacarta");
    pg_query ($database, "begin");
    $oid = pg_lo_create ($database);
    echo "$oid\n";
    $handle = pg_lo_open ($database, $oid, "w");
    echo "$handle\n";
    pg_lo_write ($handle, "large object data");
    pg_lo_close ($handle);
    pg_query ($database, "commit");
?>
Vous ne devez pas fermer la connexion au serveur PostgreSQL avant de fermer l'objet de grande taille.

Table des matières
pg_affected_rows -- Retourne le nombre de lignes affectées
pg_cancel_query -- Annule une requête asynchrone
pg_client_encoding -- Lit l'encodage du client
pg_close -- Termine une connexion PostgreSQL
pg_connect -- Ouvre une connexion PostgreSQL
pg_connection_busy -- Vérifie si la connexion PostGreSQL est occupée
pg_connection_reset -- Relance la connexion au serveur PostGresSQL
pg_connection_status -- Lit le statut de la connexion PostGreSQL
pg_convert -- Convertit un tableau associatif en une commande PostGreSQL
pg_copy_from -- Insère des lignes dans une table à partir d'un tableau
pg_copy_to -- Copie une table dans un tableau
pg_dbname -- Nom de la base de données
pg_delete -- Efface des lignes PostGreSQL
pg_end_copy -- Synchronise avec le serveur PostgreSQL
pg_escape_bytea -- Protège le caractères d'une chaîne binaire en mode bytea
pg_escape_string -- Protège une chaîne de caractères
pg_fetch_all -- Lit toutes les lignes d'un résultat
pg_fetch_array -- Lit une ligne de résultat PGSQL dans un tableau
pg_fetch_assoc -- Lit une ligne de résultat PGSQL sous forme de tableau numérique
pg_fetch_object -- Lit une ligne de résultat PGSQL dans un objet
pg_fetch_result -- Retourne les valeurs d'un résultat
pg_fetch_row -- Lit une ligne dans un tableau
pg_field_is_null -- Teste si un champ PostGreSQL est à NULL
pg_field_name -- Retourne le nom d'un champ PostGreSQL
pg_field_num -- Retourne le numéro d'une colonne
pg_field_prtlen -- Retourne la taille imprimée
pg_field_size -- Retourne la taille interne de stockage d'un champ donné.
pg_field_type -- Retourne le type d'un champ PostGreSQL donné par index
pg_free_result -- Libère la mémoire
pg_get_notify -- Lit le message de NOTIFY
pg_get_pid -- Lit l'identifiant de processus du serveur
pg_get_result -- Lit un résultat asynchrone
pg_host -- Retourne le nom d'hôte
pg_insert -- Insère un tableau dans une table
pg_last_error -- Lit le dernier message d'erreur sur la connexion
pg_last_notice -- Retourne la dernière note du serveur PostgreSQL
pg_last_oid -- Retourne l'identifiant du dernier objet
pg_lo_close -- Ferme un objet de grande taille PostgreSQL
pg_lo_create -- Crée un objet de grande taille PostgreSQL
pg_lo_export -- Exporte un objet de grande taille vers un fichier
pg_lo_import -- Importe un objet de grande taille depuis un fichier
pg_lo_open -- Ouvre un objet de grande taille PostgreSQL
pg_lo_read_all -- Lit un objet de grande taille en totalité
pg_lo_read -- Lit un objet de grande taille
pg_lo_seek -- Modifie la position dans un objet de grande taille
pg_lo_tell -- Retourne la position courante dans un objet de grande taille
pg_lo_unlink -- Efface un objet de grande taille
pg_lo_write -- Ecrit un objet de grande taille PGSQL
pg_meta_data -- Lit les données méta de la table PostGreSQL
pg_num_fields -- Retourne le nombre de champ
pg_num_rows -- Retourne le nombre de lignes PostgreSQL
pg_options -- Retourne les options PostgreSQL
pg_pconnect -- Etablit une connexion PostgreSQL persistante
pg_ping -- Pingue la connexion à la base
pg_port -- Retourne le numéro de port
pg_put_line -- Envoie une chaîne au serveur PostgreSQL
pg_query -- Exécute une requête
pg_result_error -- Lit le message d'erreur associé à un résultat
pg_result_seek -- Modifie la ligne courant dans un résultat
pg_result_status -- Lit le statut du résultat
pg_select -- Effectue une selection
pg_send_query -- Exécute une requête PostGreSQL asynchrone
pg_set_client_encoding -- Choisit l'encodage du client
pg_trace -- Active le suivi d'une connexion PostgreSQL
pg_tty -- Retourne le nom de tty
pg_unescape_bytea -- Supprime le protection d'une chaîne de type bytea
pg_untrace -- Termine le suivi d'une connexion PostgreSQL
pg_update -- Modifie les lignes d'une table

Précédent | Sommaire | Suivant
posix_uname | Niveau supérieur | pg_affected_rows


pg_affected_rows

(PHP 4 >= 4.2.0)

pg_affected_rows -- Retourne le nombre de lignes affectées

Description

int pg_affected_rows ( resource result)

pg_affected_rows() retourne le nombre de lignes affectées par les requêtes de type INSERT, UPDATE, et DELETE, exécutées par la fonction pg_query(). Si aucune ligne n'a été affectée, pg_affected_rows() retourne 0.

Exemple 1. Exemple avec pg_affected_rows()

<?php
     $result = pg_query($conn, "INSERT INTO editeur VALUES ('Auteur')");
     $cmdtuples = pg_affected_rows($result);
     echo $cmdtuples . " lignes ont &eacute;t&eacute; affect&eacute;es.";
?>

Note : Auparavant, cette fonction s'appelait pg_cmdtuples().

Voir aussi pg_query() et pg_num_rows().

Précédent | Sommaire | Suivant
PostgreSQL | Niveau supérieur | pg_cancel_query


pg_cancel_query

(PHP 4 >= 4.2.0)

pg_cancel_query -- Annule une requête asynchrone

Description

bool pg_cancel_query ( resource connection)

pg_cancel_query() annule la requête asynchrone, démarrée avec pg_send_query(), sur la connexion connection. Vous ne pouvez pas annuler une requête démarrée avec pg_query().

Voir aussi pg_send_query() et pg_connection_busy().

Précédent | Sommaire | Suivant
pg_affected_rows | Niveau supérieur | pg_client_encoding


pg_client_encoding

(PHP 3 CVS only, PHP 4 >= 4.0.3)

pg_client_encoding -- Lit l'encodage du client

Description

string pg_client_encoding ( [resource connection])

pg_client_encoding() retourne l'encodage du client. Elle retourne une des valeurs suivantes : SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.

Note : Cette fonction requiert PHP-4.0.2 ou plus récent et PostgreSQL-7.0 ou plus récent.

Jadis, pg_client_encoding() s'appelait pg_clientencoding().

Voir aussi pg_set_client_encoding().

Précédent | Sommaire | Suivant
pg_cancel_query | Niveau supérieur | pg_close


pg_close

(PHP 3, PHP 4 )

pg_close -- Termine une connexion PostgreSQL

Description

bool pg_close ( resource connection)

pg_close() ferme la connexion au serveur PostgreSQL associé à connection. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Il n'est généralement pas nécessaire de fermer une connexion non persistante, car elles sont automatiquement fermées à la fin d'un script.

pg_close() ne ferme pas les connexions persistantes ouvertes avec pg_pconnect().

Exemple 1. Exemple avec pg_close()

<?php
    $dbconn = pg_connect("host=localhost port=5432 dbname=mary")
        or die("Impossible de se connecter");
    echo "Connexion &agrave; PostGreSQL";
    pg_close($dbconn);
?>

Si des objets de grande taille ont été ouverts avec cette connexion, ne fermez pas la connexion avant d'avoir refermé les objets.

Précédent | Sommaire | Suivant
pg_client_encoding | Niveau supérieur | pg_connect


pg_connect

(PHP 3, PHP 4 )

pg_connect -- Ouvre une connexion PostgreSQL

Description

resource pg_connect ( string connection_string)

pg_connect() retourne un index de connexion en cas de succès, et FALSE sinon.

pg_connect() ouvre une connexion à un serveur PostgreSQL, grâce à la chaîne de connexion connection_string. Les arguments doivent être placé entre guillemets.

Exemple 1. Exemples avec pg_connect()

<?php
  $dbconn = pg_connect("dbname=marie");
  //connexion &agrave; une base de donn&eacute;es nomm&eacute;e "marie"
  $dbconn2 = pg_connect("host=localhost port=5432 dbname=marie");
  //connexion &agrave; une base de donn&eacute;es nomm&eacute;e "marie" sur l'h&ocirc;te "localhost" sur le port "5432"
  $dbconn3 = pg_Connect ("host=sheep port=5432 dbname=marie user=mouton password=baaaa");
  //connexion &agrave; une base de donn&eacute;es nomm&eacute;e "marie" sur le serveur "mouton" avec
  // un nom d'utilisateur et le mot de passe associ&eacute;
  $conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
  $dbconn4 = pg_connect ($conn_string);
  //connexion&agrave; une base de donn&eacute;es appel&eacute;e "test" sur l'h&ocirc;te "sheep" avec le nom d'utilisateur
?>
Les arguments disponibles comprennent notamment connection_string includes host, port, tty, options, dbname, user et password.

pg_connect() retourne un index de connexion qui sera nécessaire aux autres fonctions PostgreSQL. Vous pouvez ouvrir plusieurs connexions simultanées.

Si un deuxième appel à pg_connect() est fait avec les mêmes arguments, aucune nouvelle connexion ne sera établie, mais la connexion précédente sera retournée.

L'ancienne syntaxe $conn = pg_connect("host", "port", "options", "tty", "dbname") est obsolète.

Voir aussi
pg_pconnect(),
pg_close(),
pg_host(),
pg_port(),
pg_tty(),
pg_options() et
pg_dbname().

Précédent | Sommaire | Suivant
pg_close | Niveau supérieur | pg_connection_busy


pg_connection_busy

(PHP 4 >= 4.2.0)

pg_connection_busy -- Vérifie si la connexion PostGreSQL est occupée

Description

bool pg_connection_busy ( resource connection)

pg_connection_busy() retourne TRUE si la connexion est occupe. Si elle est occupée, une requête a déjà été lancée, et est en cours. Si pg_get_result() est appelé, elle sera alors bloquée.

Exemple 1. Exemple avec pg_connection_busy()

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Impossible de se connecter");
    $bs = pg_connection_busy($dbconn);
    if ($bs) {
        echo 'La connexion est occup&eacute;e';
    }
    else {
       echo 'La connexion est libre';
    }
?>

Voir aussi pg_connection_status() et pg_get_result().

Précédent | Sommaire | Suivant
pg_connect | Niveau supérieur | pg_connection_reset


pg_connection_reset

(PHP 4 >= 4.2.0)

pg_connection_reset -- Relance la connexion au serveur PostGresSQL

Description

bool pg_connection_reset ( resource connection)

pg_connection_reset() effectue une reconnexion au serveur, avec les mêmes paramètres que lors de la connexion précédente avec connection. Cette fonction est pratique pour le traitement des erreurs. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec pg_connection_reset()

<?php
    $dbconn = pg_connect("dbname=publisher") or die ("Impossible de se connecter");
    $dbconn2 = pg_connection_reset($dbconn);
    if ($dbconn2) {
        echo 'Red&eacute;marrage r&eacute;ussi';
    }
    else {
        echo 'Red&eacute;marrage &eacute;chou&eacute;';
    }
?>

Voir aussi
pg_connect(),
pg_pconnect() et
pg_connection_status().

Précédent | Sommaire | Suivant
pg_connection_busy | Niveau supérieur | pg_connection_status


pg_connection_status

(PHP 4 >= 4.2.0)

pg_connection_status -- Lit le statut de la connexion PostGreSQL

Description

int pg_connection_status ( resource connection)

pg_connection_status() retourne le statut de la connexion connection. Les valeurs possibles sont PGSQL_CONNECTION_OK (connexion correcte) et PGSQL_CONNECTION_BAD (connexion abandonnée). La valeur de retour entière 0 indique une connexion valide.

Exemple 1. Exemple avec pg_connection_status()

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Impossible de se connecter");
    $stat = pg_connection_status($dbconn);
    if ($stat === 0) {
        echo 'Connexion ok';
    } else {
        echo 'Connexion ko';
    }
?>

Voir aussi pg_connection_busy().

Précédent | Sommaire | Suivant
pg_connection_reset | Niveau supérieur | pg_convert


pg_convert

(PHP 4 >= 4.3.0)

pg_convert -- Convertit un tableau associatif en une commande PostGreSQL

Description

array pg_convert ( resource connection, string table_name, array assoc_array [, int options])

pg_convert() vérifie et convertit le tableau associatif assoc_array en une requête SQL valide. Pour que pg_convert() fonctionne, il faut que la table table_name existe, et contienne au moins autant de colonnes que le tableau assoc_array a d'éléments. Les noms des champs de table_name doit correspondre aux index du tableau assoc_array. pg_convert() retourne un tableau avec les valeurs converties, en cas de succès, et sinon, FALSE.

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_meta_data().

Précédent | Sommaire | Suivant
pg_connection_status | Niveau supérieur | pg_copy_from


pg_copy_from

(PHP 4 >= 4.2.0)

pg_copy_from -- Insère des lignes dans une table à partir d'un tableau

Description

bool pg_copy_from ( resource connection, string table_name, array rows [, string delimiter [, string null_as]])

pg_copy_from() insère les éléments du tableau rows dans la tableau table_name. Cette fonction utilise la commande SQL interne COPY FROM. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi pg_copy_to().

Précédent | Sommaire | Suivant
pg_convert | Niveau supérieur | pg_copy_to


pg_copy_to

(PHP 4 >= 4.2.0)

pg_copy_to -- Copie une table dans un tableau

Description

array pg_copy_to ( resource connection, string table_name [, string delimiter [, string null_as]])

pg_copy_to() copie la table table_name dans un tableau, et le retourne. Cette fonction utilise la commande interne SQL COPY TO pour insérer les tableaux. En cas d'erreur, la fonction retourne FALSE.

Voir aussi pg_copy_from()

Précédent | Sommaire | Suivant
pg_copy_from | Niveau supérieur | pg_dbname


pg_dbname

(PHP 3, PHP 4 )

pg_dbname -- Nom de la base de données

Description

string pg_dbname ( resource connection)

pg_dbname() retourne le nom de la base de données PostgreSQL associée à l'index de connexion connection, ou FALSE si connection n'est pas valide.

Exemple 1. Exemple avec pg_dbname()

<?php
    error_reporting(E_ALL);

    pg_connect ("host=localhost port=5432 dbname=mary");
    echo pg_dbname();
?>

Précédent | Sommaire | Suivant
pg_copy_to | Niveau supérieur | pg_delete


pg_delete

(PHP 4 >= 4.3.0)

pg_delete -- Efface des lignes PostGreSQL

Description

mixed pg_delete ( resource connection, string table_name, array assoc_array [, int options])

pg_delete() efface les lignes de la table table_name, spécfiées par le tableau associatif assoc_array, qui est bâti sous la forme champ=>valeur. Si option est spécifié, pg_convert() est appliqué à assoc_array avec cette option.

Exemple 1. Exemple avec pg_delete()

<?php
    $db = pg_connect ('dbname=foo');
    // C'est sans proble, car $_POST est convertit automatiquement
    $res = pg_delete($db, 'post_log', $_POST);
    if ($res) {
        echo "Les donn&eacute;es POST&eacute;es ont &eacute;t&eacute; effac&eacute;es : $res\n";
    }
    else {
        echo "Les donn&eacute;es d'entr&eacute;es sont erron&eacute;es.\n";
    }
?>

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_convert().

Précédent | Sommaire | Suivant
pg_dbname | Niveau supérieur | pg_end_copy


pg_end_copy

(PHP 4 >= 4.0.3)

pg_end_copy -- Synchronise avec le serveur PostgreSQL

Description

bool pg_end_copy ( [resource connection])

pg_end_copy() synchronise le client PostgreSQL (ici PHP) avec le serveur, après une opération de copie. Il faut utiliser cette fonction, sous peine de recevoir une erreur "out of sync" (désynchronisé). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Pour plus de détails et un exemple voyez : pg_put_line().

Précédent | Sommaire | Suivant
pg_delete | Niveau supérieur | pg_escape_bytea


pg_escape_bytea

(PHP 4 >= 4.2.0)

pg_escape_bytea -- Protège le caractères d'une chaîne binaire en mode bytea

Description

string pg_escape_bytea ( string data)

pg_escape_bytea() protège les caractères de la chaîne data avec le mode bytea. La chaîne protégée est retournée.

Note : Lorsque vous utilisez une commande SELECT avec des données de type bytea, PostgreSQL retourne des valeurs octales, préfixées avec des anti-slash \ (e.g. \032). Les utilisateurs doivent effectuer la conversion en format binaire eux-même.

pg_escape_bytea() requiert PostgreSQL 7.2 ou plus récent. Avec PostgreSQL 7.2.0 et 7.2.1, les données de type bytea doivent être transtypée lorsque vous activez le support des chaînes de caractères multi-octets. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);. PostgreSQL 7.2.2 ou plus récent ne requiert pas cette manipulation. Toutefois, si le client et le serveur n'utilisent pas le même jeux de caractères, il peut arriver des erreurs. Il faut alors forcer le transtypage manuellement.

Voir aussi pg_unescape_bytea() et pg_escape_string().

Précédent | Sommaire | Suivant
pg_end_copy | Niveau supérieur | pg_escape_string


pg_escape_string

(PHP 4 >= 4.2.0)

pg_escape_string -- Protège une chaîne de caractères

Description

string pg_escape_string ( string data)

pg_escape_string() protège la chaîne de caractères data. Elle retourne la chaîne ainsi protégée. L'utilisation de cette fonction est recommandée, à la place de addslashes().

Note : Cette fonction requiert PostgreSQL 7.2 ou plus récent.

Voir aussi pg_escape_bytea().

Précédent | Sommaire | Suivant
pg_escape_bytea | Niveau supérieur | pg_fetch_all


pg_fetch_all

(PHP 4 >= 4.3.0)

pg_fetch_all -- Lit toutes les lignes d'un résultat

Description

array pg_fetch_all ( resource result)

pg_fetch_all() retourne un tableau qui contient toutes les lignes du résultat result. Elle retourne FALSE s'il n'y a plus de lignes disponibles.

Exemple 1. Exemple avec pg_fetch_all()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}

$result = pg_query ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Une erreur est survenue.\n";
    exit;
}

$arr = pg_fetch_all ($result, 0, PGSQL_NUM);

var_dump($arr);

?>

 Voir aussi
 pg_fetch_row(),
pg_fetch_array(),
pg_fetch_object() et
pg_fetch_result().

Précédent | Sommaire | Suivant
pg_escape_string | Niveau supérieur | pg_fetch_array


pg_fetch_array

(PHP 3>= 3.0.1, PHP 4 )

pg_fetch_array -- Lit une ligne de résultat PGSQL dans un tableau

Description

array pg_fetch_array ( resource result [, int row [, int result_type]])

pg_fetch_array() retourne un tableau qui contient à la ligne demandée, dans le résultat identifiée par result, et FALSE , s'il ne reste plus de lignes.

pg_fetch_array() est une version évoluée de pg_fetch_row(). En plus de proposer un tableau à indice numérique, elle peut aussi enregistrer les données dans un tableau associatif, en utilisant les noms des champs comme clés.

L'argument optionnel result_type de pg_fetch_array() est une constante, qui peut prendre les valeurs suivantes : PGSQL_ASSOC, PGSQL_NUM et PGSQL_BOTH. pg_fetch_array() retourne un tableau associatif dont les clés sont les noms de colonnes, avec la constante PGSQL_ASSOC; les index de colonnes avec PGSQL_NUM, et les deux avec la constante PGSQL_BOTH La valeur par défaut est PGSQL_BOTH.

Note : result_type a été ajoutée en PHP 4.0.

Il est important de noter que pg_fetch_array() n'est pas significativement plus lent que pg_fetch_row(), tandis qu'elle fournit un confort d'utilisation notable.

Pour plus de détails, reportez-vous à pg_fetch_row().

Exemple 1. Exemple avec pg_fetch_array()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "Erreur de connexion.\n";
    exit;
}

$result = pg_query ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Erreur durant la requ&ecirc;te.\n";
    exit;
}

$arr = pg_fetch_array ($result, 0, PGSQL_NUM);
echo $arr[0] . " <- array\n";

$arr = pg_fetch_array ($result, 1, PGSQL_ASSOC);
echo $arr["author"] . " <- array\n";
?>

 Voir aussi
 pg_fetch_row(),
pg_fetch_object() et
pg_fetch_result().

Note : Depuis 4.1.0, row est devenu optionnel. Appeler pg_fetch_array() avec incrémenter le pointeur interne de 1.

Précédent | Sommaire | Suivant
pg_fetch_all | Niveau supérieur | pg_fetch_assoc


pg_fetch_assoc

(PHP 4 >= 4.3.0)

pg_fetch_assoc -- Lit une ligne de résultat PGSQL sous forme de tableau numérique

Description

array pg_fetch_assoc ( resource result [, int row])

pg_fetch_assoc() retourne un tableau associatif qui contient la ligne en cours dans le résultat result. pg_fetch_assoc() retourne FALSE si il n'y a plus de lignes.

pg_fetch_assoc() est une version améliorée de pg_fetch_row(). En plus de stocker les valeurs dans un tableau a index numérique, elle stocke aussi les données dans un tableau associatif, en utilisant les noms de colonnes comme index.

row est le numéro de ligne à lire. Par défaut, il vaut 0.

pg_fetch_assoc() n'est pas significativement plus lente que pg_fetch_row(), et elle apporte un confort d'utilisation apréciable.

Exemple 1. Exemple avec pg_fetch_assoc()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}

$result = pg_query ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Une erreur est survenue.\n";
    exit;
}

$arr = pg_fetch_assoc ($result, 1, PGSQL_ASSOC);
echo $arr["author"] . " <- array\n";
?>

Voir aussi
pg_fetch_row(),
pg_fetch_array(),
pg_fetch_object() et
pg_fetch_result().

Précédent | Sommaire | Suivant
pg_fetch_array | Niveau supérieur | pg_fetch_object


pg_fetch_object

(PHP 3>= 3.0.1, PHP 4 )

pg_fetch_object -- Lit une ligne de résultat PGSQL dans un objet

Description

object pg_fetch_object ( resource result [, int row [, int result_type]])

pg_fetch_object() retourne un objet dont les membres sont les champs de la ligne demandée, ou FALSE , si il n'y a plus de lignes.

pg_fetch_object() est similaire à pg_fetch_array(), avec une différence majeure : c'est un objet qui est retourné, au lieu d'un tableau. Par conséquent, cela signifie que vous ne pouvez accéder aux membres qu'avec leur nom, et non plus leur offset (les nombres ne sont pas autorisés comme nom de membre).

L'argument optionnel result_type de result_type est une constante qui peut prendre les valeurs suivantes : PGSQL_ASSOC, PGSQL_NUM et PGSQL_BOTH.

Note : result_type a été ajouté dans PHP 4.0.

Au niveau vitesse, pg_fetch_object() est aussi rapide que pg_fetch_row() et presque aussi rapide que pg_fetch_row() (la différence est non significative).

Exemple 1. Lecture d'un objet Postgres

<?php
$database = "verlag";
$db_conn = pg_connect ("host=localhost port=5432 dbname=$database");
if (!$db_conn): ?>
    <H1>Impossible de se connecter &agrave; la base PostgreSQL<?php echo $database ?></H1> <?php
    exit;
endif;

$qu = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // PostgreSQL requiert un compteur de ligne que d'autres n'ont pas

while ($data = pg_fetch_object ($qu, $row)) {
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."<BR>";
    $row++;
}
?>
<PRE>
<?php
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr",  "  Year");
$fields[] = Array ("titel", " Title");

$row= 0; // PostgreSQL requiert un compteur de ligne que d'autres n'ont pas
while ($data = pg_fetch_object ($qu, $row)) {
    echo "----------\n";
    reset ($fields);
    while (list (,$item) = each ($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
}
echo "----------\n";
?>
</PRE>
<?php
pg_free_result ($qu);
pg_close ($db_conn);
?>

Note : Depuis 4.1.0, row est devenu optionnel. Appeler pg_fetch_array() avec incrémenter le pointeur interne de 1.

Voir aussi
pg_query(),
pg_fetch_array(),
pg_fetch_assoc(),
pg_fetch_row() et
pg_fetch_result().

Précédent | Sommaire | Suivant
pg_fetch_assoc | Niveau supérieur | pg_fetch_result


pg_fetch_result

(PHP 4 >= 4.2.0)

pg_fetch_result -- Retourne les valeurs d'un résultat

Description

mixed pg_fetch_result ( resource result, int row, mixed field)

pg_fetch_result() retourne les valeurs stockées dans la ressource de résultat result, retournée par pg_query(). row est un entier. field est le nom du champ (sous forme de chaîne) ou un index de colonne (sous forme d'entier). row et field spécifie quelles cellules de la table de résultat doivent être lu. Le lignes sont numérotées à partir de 0. Au lieu de nommer le champ, vous pouvez utiliser le numéro de colonne. L'indexation des colonnes commence à 0.

PostgreSQL dispose de nombreux types, et seuls les types basiques sont supportés ici. Tous les types integer sont retournées sous forme de integer. Tous les types de float, et nombres réels sont retournées sous forme de float. Les booléens sont retournées comme des "t" ou "f". Tous les autres types, y compris les tableaux, sont retournées sous forme de chaînes formatées, de la même manière que PostgreSQL vous les afficherait dans le client psql.

Précédent | Sommaire | Suivant
pg_fetch_object | Niveau supérieur | pg_fetch_row


pg_fetch_row

(PHP 3>= 3.0.1, PHP 4 )

pg_fetch_row -- Lit une ligne dans un tableau

Description

array pg_fetch_row ( resource result, int row)

pg_fetch_row() retourne un tableau qui contient les données de la ligne demandée, ou FALSE , si il ne reste plus de lignes.

pg_fetch_row() lit une ligne dans le résultat associé à l'index result. La ligne est retournée sous la forme d'un tableau. La ligne est retournée sous la forme d'un tableau, qui commence à l'index 0.

Les appels ultérieurs à pg_fetch_row() retourneront la ligne d'après, ou bien FALSE, lorsqu'il n'y aura plus de lignes.

Exemple 1. Postgres retourne une ligne

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}
$result = pg_exec($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Une erreur est survenue.\n";
    exit;
}
$num = pg_numrows($result);
for ($i=0; $i<$num; $i++) {
  $r = pg_fetch_row($result, $i);
  for ($j=0; $j<count($r); $j++) {
    echo "$r[$j]&nbsp;";
  }
  echo "<BR>";
}
?>

Voir aussi
pg_query(),
pg_fetch_array(),
pg_fetch_object() et
pg_fetch_result().

Note : Depuis PHP 4.1.0, row est devenu un paramètre optionnel. Appeler pg_fetch_row() en l'omettant va incrémenter le pointeur interne de résultat de 1.

Précédent | Sommaire | Suivant
pg_fetch_result | Niveau supérieur | pg_field_is_null


pg_field_is_null

(PHP 4 >= 4.2.0)

pg_field_is_null -- Teste si un champ PostGreSQL est à NULL

Description

int pg_field_is_null ( resource result, int row, mixed field)

pg_field_is_null() teste si un champ est à NULL. pg_field_is_null() retourne 0 si le champ n'est pas NULL. pg_field_is_null() retourne 1 si le champ est à NULL. Le champ peut être identifié avec son nom ou son index numérique (commençant à 0).

Exemple 1. Exemple avec pg_field_is_null()

<?php
    $dbconn = pg_connect("dbname=publisher") or die ("Impossible de se connecter");
    $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
    if ($res) {
        if (pg_field_is_null($res, 0, "annee") == 1) {
            echo "La valeur du champ \"annee\" est null.\n";
        }
        if (pg_field_is_null($res, 0, "year") == 0) {
            echo "La valeur du champ \"annee\" n'est pas null.\n";
      }
   }
?>

Note : Auparavant, cette fonction s'appelait pg_fieldisnull().

Précédent | Sommaire | Suivant
pg_fetch_row | Niveau supérieur | pg_field_name


pg_field_name

(PHP 4 >= 4.2.0)

pg_field_name -- Retourne le nom d'un champ PostGreSQL

Description

string pg_field_name ( resource result, int field_number)

pg_field_name() va retourne le nom du champ qui occupe la colonne numéro field_number dans le résultat result. La numérotation des champs commence à 0.

Exemple 1. Lire des informations sur les champs PostGreSQL

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Impossible de se connecter");

    $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
    $i = pg_num_fields($res);
    for ($j = 0; $j < $i; $j++) {
        echo "column $j\n";
        $fieldname = pg_field_name($res, $j);
        echo "Champ : $fieldname\n";
        echo "Taille affich&eacute;e : ".pg_field_prtlen($res, $fieldname)." characters\n";
        echo "Taille de stockage : ".pg_field_size($res, $j)." bytes\n";
        echo "Type de champ : ".pg_field_type($res, $j)." \n\n";
}
?>

L'exemple va afficher :

column 0
Champ : author
Taille affich&eacute;e : 6 characters
Taille de stockage : -1 bytes
Type de champ : varchar

column 1
Champ : year
Taille affich&eacute;e : 4 characters
Taille de stockage : 2 bytes
Type de champ : int2

column 2
Champ : title
Taille affich&eacute;e : 24 characters
Taille de stockage : -1 bytes
Type de champ : varchar

Note : Auparavant, cette fonction s'appelait pg_fieldname().

Voir aussi pg_field_num().

Précédent | Sommaire | Suivant
pg_field_is_null | Niveau supérieur | pg_field_num


pg_field_num

(PHP 4 >= 4.2.0)

pg_field_num -- Retourne le numéro d'une colonne

Description

int pg_field_num ( resource result, string field_name)

pg_field_num() retourne le numéro de la colonne, dont le nom est field_name, dans le résultat result. La numérotation des champs commence à 0. pg_field_num() retournera -1 en cas d'erreur.

Note : Auparavant, cette fonction s'appelait pg_fieldnum().

Voir aussi pg_field_name().

Précédent | Sommaire | Suivant
pg_field_name | Niveau supérieur | pg_field_prtlen


pg_field_prtlen

(PHP 4 >= 4.2.0)

pg_field_prtlen -- Retourne la taille imprimée

Description

int pg_field_prtlen ( resource result, int row_number, string field_name)

pg_field_prtlen() retourne la taille imprimée (nombre de caractères) d'une valeur donnée dans un résultat PostgreSQL. La numérotation des lignes commence à 0. pg_field_prtlen() retourne -1 en cas d'erreur.

Note : Auparavant, cette fonction s'appelait pg_fieldprtlen().

Voir aussi pg_field_size().

Précédent | Sommaire | Suivant
pg_field_num | Niveau supérieur | pg_field_size


pg_field_size

(PHP 4 >= 4.2.0)

pg_field_size -- Retourne la taille interne de stockage d'un champ donné.

Description

int pg_field_size ( resource result, int field_number)

pg_field_size() retourne la taille interne de stockage d'un champ donné, en octets. pg_field_size() retourne -1 si la taille est variable. pg_field_size() retourne FALSE en cas d'erreur. La numérotation des colonnes commence à 0.

Note : Auparavant, cette fonction s'appelait pg_fieldsize().

Voir aussi pg_field_prtlen() et pg_field_type().

Précédent | Sommaire | Suivant
pg_field_prtlen | Niveau supérieur | pg_field_type


pg_field_type

(PHP 4 >= 4.2.0)

pg_field_type -- Retourne le type d'un champ PostGreSQL donné par index

Description

string pg_field_type ( resource result, int field_number)

pg_field_type() retourne une chaîne contenant le type du champ donné par son index field_number. La numérotation des champ commence à 0.

Note : Auparavant, cette fonction s'appelait pg_fieldtype().

Voir aussi pg_field_prtlen() et pg_field_name().

Précédent | Sommaire | Suivant
pg_field_size | Niveau supérieur | pg_free_result


pg_free_result

(PHP 4 >= 4.2.0)

pg_free_result -- Libère la mémoire

Description

bool pg_free_result ( resource result)

pg_free_result() n'est vraiment utile que si vous risquez d'utiliser trop de mémoire durant votre script. La mémoire occupée par les résultats est automatiquement libérée à la fin du script. Mais, si vous êtes sûr de ne pas avoir besoin du résultat ultérieurement, vous pouvez appeler pg_free_result() avec l'index de résultat comme argument, et la mémoire sera libérée. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Auparavant, cette fonction s'appelait pg_freeresult().

Voir aussi pg_query().

Précédent | Sommaire | Suivant
pg_field_type | Niveau supérieur | pg_get_notify


pg_get_notify

(PHP 4 >= 4.3.0)

pg_get_notify -- Lit le message de NOTIFY

Description

array pg_get_notify ( resource connection [, int result_type])

pg_get_notify() reçoit le message de NOTIFY envoyé par une commande SQL NOTIFY. Pour lire le message associé, utilisez la commande LISTEN. Si il y a un message de notification avec cette connexion, un tableau sera retourné avec le message et le PID du serveur. Si il n'y a pas de message, pg_get_notify() retourne FALSE.

Exemple 1. Exemple avec pg_get_notify()

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}

// ecoute le message 'author_updated' des autres processus
pg_query($conn, 'LISTEN author_updated;');
$notify = pg_get_notify($conn);
if (!$notify)
    echo "Aucun message\n";
else
    print_r($notify);
?>

Voir aussi pg_get_pid().

Précédent | Sommaire | Suivant
pg_free_result | Niveau supérieur | pg_get_pid


pg_get_pid

(PHP 4 >= 4.3.0)

pg_get_pid -- Lit l'identifiant de processus du serveur

Description

int pg_get_pid ( resource connection)

pg_get_pid() lit l'identifiant de processus du serveur PostGreSQL. Le PID est pratique pour vérifier si un message de NOTIFY a été envoyé par un autre processus ou pas.

Exemple 1. Exemple avec pg_get_pid()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}

// PID du serveur. Utilisez alors le PID avec pg_get_notify()
$pid = pg_get_pid($conn);
?>

Voir aussi pg_get_notify().

Précédent | Sommaire | Suivant
pg_get_notify | Niveau supérieur | pg_get_result


pg_get_result

(PHP 4 >= 4.2.0)

pg_get_result -- Lit un résultat asynchrone

Description

resource pg_get_result ( [resource connection])

pg_get_result() lit le résultat asynchrone d'une requête exécutée par pg_send_query(). pg_send_query() peut envoyer plusieurs requêtes à PostgreSQLet pg_get_result() sert à lire les résultats un par un. pg_get_result() retourne une ressource de résultat. Si il n'y a pas de résultat, pg_get_result() retourne FALSE.

Précédent | Sommaire | Suivant
pg_get_pid | Niveau supérieur | pg_host


pg_host

(PHP 3, PHP 4 )

pg_host -- Retourne le nom d'hôte

Description

string pg_host ( resource connection)

pg_host() retourne le nom d'hôte associé à l'index de connexion PostgreSQL.

Voir aussi pg_connect() et pg_pconnect().

Précédent | Sommaire | Suivant
pg_get_result | Niveau supérieur | pg_insert


pg_insert

(PHP 4 >= 4.3.0)

pg_insert -- Insère un tableau dans une table

Description

bool pg_insert ( resource connection, string table_name, array assoc_array [, int options])

pg_insert() insère le tableau assoc_array (bâtit sur le modèle champ=>valeur dans la table table_name. Si options est spécifié, pg_convert() est appliqué à assoc_array avec cette option. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Si options est spécifiée, pg_insert() s'applique à assoc_array avec l'option spécifiée.

Exemple 1. Exemple avec pg_insert()

<?php
    $db = pg_connect ('dbname=foo');
    // C'est correct, car $_POST est convertit automatiquement
    $res = pg_insert($db, 'post_log', $_POST);
    if ($res) {
        echo "Les donn&eacute;es POST&eacute;es ont pu &ecirc;tre enregistr&eacute;e avec succ&egrave;s.\n";
    }
    else {
        echo "Il y a un probl&egrave;me avec les donn&eacute;es.\n";
    }
?>

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_convert().

Précédent | Sommaire | Suivant
pg_host | Niveau supérieur | pg_last_error


pg_last_error

(PHP 4 >= 4.2.0)

pg_last_error -- Lit le dernier message d'erreur sur la connexion

Description

string pg_last_error ( [resource connection])

pg_last_error() retourne le dernier message d'erreur qui a été enregistré sur la connexion connection.

Les messages d'erreur peuvent être écrasé par des appels internes à l'extension PostgreSQL(libpq) : il se peut que le message retourné ne soit pas approprié, notamment si plusieurs erreurs ont eu lieu dans le module.

Utilisez pg_result_error(),
pg_result_status() et
pg_connection_status() pour améliorer la gestion
des erreurs.

Note : pg_last_error() s'appelait pg_errormessage().

Voir aussi pg_result_error().

Précédent | Sommaire | Suivant
pg_insert | Niveau supérieur | pg_last_notice


pg_last_notice

(PHP 4 >= 4.0.6)

pg_last_notice -- Retourne la dernière note du serveur PostgreSQL

Description

string pg_last_notice ( resource connection)

pg_last_notice() retourne la dernière note du serveur PostgreSQL, spécifiée par connection. Le serveur PostgreSQL envoie des notes dans plusieurs cas, comme par exemple si la transaction ne peut être continuée. Avec pg_last_notice(), vous pouvez éviter des requêtes inutiles en vérifiant si des notes liées à votre transaction ont été émises.

Avertissement

Cette fonction est EXPERIMENTALE et elle n'est pas complètement implémentée. pg_last_notice() a été ajoutée en PHP 4.0.6. Cependant, PHP 4.0.6 avait un problème avec la gestion des notes. L'utilisation du module PostgreSQL avec PHP 4.0.6 n'est pas recommandé, même si vous n'utilisez pas pg_last_notice().

Cette fonction est totaltement implémentée en PHP 4.3.0. Les versions plus ancienne de PHP ignore les données de connexion au serveur.

Le suivi des notes peut être rendu optionnel en mettant à 1 la directive de configuration pgsql.ignore_notice du php.ini à partir de PHP 4.3.0.

L'enregistrement des notes peut être rendu optionnel en mettant la directive de configuration pgsql.log_notice du php.ini à 0, à partir de PHP 4.3.0. A moins que pgsql.ignore_notice ne soit à 0, les notes ne seront pas enregistrées.

Voir aussi pg_query() et pg_last_error().

Précédent | Sommaire | Suivant
pg_last_error | Niveau supérieur | pg_last_oid


pg_last_oid

(PHP 4 >= 4.2.0)

pg_last_oid -- Retourne l'identifiant du dernier objet

Description

int pg_last_oid ( resource result)

pg_last_oid() sert à lire le dernier oid assigné à un ligne, qui est stocké dans la ressource result, obtenu lors de la dernière commande pg_query(). Il faut que cette commande ait été un INSERT. pg_last_oid() retourne un entier positif si il y a eu un oid valide. pg_last_oid() retourne FALSE si une erreur est survenue,, ou si la commande utilisée avec pg_query() n'était pas un INSERT, ou que cette commande a échoué.

Le champ OID est devenu optionnel depuis PostgreSQL 7.2. Lorsque le champ OID n'est pas défini dans la table, le programmeur doit utiliser pg_result_status() pour vérifier si la ligne a été correctement insérée.

Note : pg_last_oid() s'appelaitpg_getlastoid().

Voir aussi pg_query() et pg_result_status().

Précédent | Sommaire | Suivant
pg_last_notice | Niveau supérieur | pg_lo_close


pg_lo_close

(PHP 4 >= 4.2.0)

pg_lo_close -- Ferme un objet de grande taille PostgreSQL

Description

bool pg_lo_close ( resource large_object)

pg_lo_close() ferme un objet de type Inversion Large Object. fd est un descripteur de fichier, obtenu avec pg_lo_open().

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_loclose().

Voir aussi
pg_lo_open(),
pg_lo_create() et
pg_lo_import().

Précédent | Sommaire | Suivant
pg_last_oid | Niveau supérieur | pg_lo_create


pg_lo_create

(PHP 4 >= 4.2.0)

pg_lo_create -- Crée un objet de grande taille PostgreSQL

Description

int pg_lo_create ( resource connection)

pg_lo_create() crée un objet de type Inversion Large Object et retourne son Oid. conn doit être une connexion valide avec une base de données PostgreSQL. Les modes d'accès PostgreSQL INV_READ, INV_WRITE, et INV_ARCHIVE ne sont pas supportés : l'objet peut toujours être créé, avec des droits d'accès en lecture et écriture. Le mode INV_ARCHIVE a été supprimé des bases PostgreSQL (version 6.3 et ultérieur).

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_locreate().

Précédent | Sommaire | Suivant
pg_lo_close | Niveau supérieur | pg_lo_export


pg_lo_export

(PHP 4 >= 4.2.0)

pg_lo_export -- Exporte un objet de grande taille vers un fichier

Description

bool pg_lo_export ( int oid, string pathname [, resource connection])

pg_lo_export() exporte un objet de grande taille dans un fichier. oid est un identifiant d'objet de grande taille qui sera exporté dans le fichier filename, qui spécifie son chemin. RetourneFALSEsi une erreur survient, et TRUE en cas de succès. N'oubliez pas que la manipulation d'un objet de grande taille dans PostgreSQL doit intervenir dans une transaction.

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_loexport().

Voir aussi pg_lo_import().

Précédent | Sommaire | Suivant
pg_lo_create | Niveau supérieur | pg_lo_import


pg_lo_import

(PHP 4 >= 4.2.0)

pg_lo_import -- Importe un objet de grande taille depuis un fichier

Description

int pg_lo_import ( [resource connection, string pathname])

Dans les versions antérieures à PHP 4.2.0, la syntaxe de cette fonction était différente. Voici la définition :

int pg_lo_import ( string pathname [, resource connection])

pathname est le chemin jusqu'à un fichier qui servira de source pour créer un objet de grande taille. pg_lo_import() retourne FALSE en cas d'erreur, et sinon un identifiant d'objet, créé directement à la bonne taille.

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_loimport().

Note : Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Voir aussi pg_lo_export() et pg_lo_open().

Précédent | Sommaire | Suivant
pg_lo_export | Niveau supérieur | pg_lo_open


pg_lo_open

(PHP 4 >= 4.2.0)

pg_lo_open -- Ouvre un objet de grande taille PostgreSQL

Description

resource pg_lo_open ( resource connection, int oid, string mode)

pg_lo_open() ouvre un objet de type Inversion Large Object et retourne un descripteur de fichier pour cet objet. Le descripteur de fichier contient les informations de connexion. Ne refermez pas la connexion avant d'avoir fermé l'objet. objoid est un Oid valide de Large Object, et mode peut prendre es valeurs suivantes : "r", "w", ou "rw".

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_loopen().

Voir aussi pg_lo_close() et pg_lo_create().

Précédent | Sommaire | Suivant
pg_lo_import | Niveau supérieur | pg_lo_read_all


pg_lo_read_all

(PHP 4 >= 4.2.0)

pg_lo_read_all -- Lit un objet de grande taille en totalité

Description

int pg_lo_read_all ( resource large_object)

pg_lo_read_all() lit un objet de grande taille en totalité et le passe directement au client, après les en-têtes adéquates. Cette fonction est prévue pour transmettre des sons ou des images.

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_loreadall().

Voir aussi pg_lo_read().

Précédent | Sommaire | Suivant
pg_lo_open | Niveau supérieur | pg_lo_read


pg_lo_read

(PHP 4 >= 4.2.0)

pg_lo_read -- Lit un objet de grande taille

Description

string pg_lo_read ( resource large_object, int len)

pg_lo_read() lit au plus len octets d'un objet de grande taille, et retourne les données sous la forme d'une chaîne. large_object est un identifiant valide d'objet de grande taille, et len indique la taille maximale de mémoire alloué à l'objet de grande taille.

Note : Auparavant, cette fonction s'appelait pg_loread().

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Voir aussi pg_lo_read_all().

Précédent | Sommaire | Suivant
pg_lo_read_all | Niveau supérieur | pg_lo_seek


pg_lo_seek

(PHP 4 >= 4.2.0)

pg_lo_seek -- Modifie la position dans un objet de grande taille

Description

bool pg_lo_seek ( resource large_object, int offset [, int whence])

pg_lo_seek() modifie la position du pointeur dans l'objet de grande taille large_object. Le paramètre whence peut prendre les valeurs de PGSQL_SEEK_SET, PGSQL_SEEK_CUR ou PGSQL_SEEK_END.

Voir aussi pg_lo_tell().

Précédent | Sommaire | Suivant
pg_lo_read | Niveau supérieur | pg_lo_tell


pg_lo_tell

(PHP 4 >= 4.2.0)

pg_lo_tell -- Retourne la position courante dans un objet de grande taille

Description

int pg_lo_tell ( resource large_object)

pg_lo_tell() retourne la position courante du pointeur de lecture sur l'objet de grande taille large_object. C'est le nombre d'octets depuis le dédut du fichier.

Voir aussi pg_lo_seek().

Précédent | Sommaire | Suivant
pg_lo_seek | Niveau supérieur | pg_lo_unlink


pg_lo_unlink

(PHP 4 >= 4.2.0)

pg_lo_unlink -- Efface un objet de grande taille

Description

bool pg_lo_unlink ( resource connection, int oid)

pg_lo_unlink() efface l'objet de grande taille dont l'identifiant est oid, pour la connexion connection. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.

Note : Auparavant, cette fonction s'appelait pg_lounlink().

Voir aussi pg_lo_create() et pg_lo_import().

Précédent | Sommaire | Suivant
pg_lo_tell | Niveau supérieur | pg_lo_write


pg_lo_write

(PHP 4 >= 4.2.0)

pg_lo_write -- Ecrit un objet de grande taille PGSQL

Description

int pg_lo_write ( resource large_object, string data)

pg_lo_write() écrit dans l'objet de grande taille autant de données possible, issues de la variable buf et retourne le nombre d'octets réellement écrits, ou FALSEen cas d'erreur. fd est un descripteut d'objet de grande taille, obtenu avec pg_lo_open().

Pour manipuler un objet de grande taille (lo), il est néessaire de placer les opérations dans un bloc de transaction.

Voir aussi pg_lo_create() et pg_lo_open().

Note : Auparavant, cette fonction s'appelait pg_lowrite().

Précédent | Sommaire | Suivant
pg_lo_unlink | Niveau supérieur | pg_meta_data


pg_meta_data

(PHP 4 >= 4.3.0)

pg_meta_data -- Lit les données méta de la table PostGreSQL

Description

array pg_meta_data ( resource connection, string table_name)

pg_meta_data() retourne la définition de la table table_name sous forme de tableau. Si une erreur survient, pg_meta_data() retourne FALSE.

Exemple 1. Lire les méta-données d'une table PostGreSQL

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Impossible de se connecter");

    $meta = pg_meta_data($dbconn,'authors');
    if (is_array ($meta)) {
        echo '<pre>';
        var_dump ($meta);
        echo '</pre>';
    }
?>

L'exemple ci-dessus pourrait afficher :

array(3) {
  ["author"]=>
  array(5) {
    ["num"]=>
    int(1)
    ["type"]=>
    string(7) "varchar"
    ["len"]=>
    int(-1)
    ["not null"]=>
    bool(false)
    ["has default"]=>
    bool(false)
  }
  ["year"]=>
  array(5) {
    ["num"]=>
    int(2)
    ["type"]=>
    string(4) "int2"
    ["len"]=>
    int(2)
    ["not null"]=>
    bool(false)
    ["has default"]=>
    bool(false)
  }
  ["title"]=>
  array(5) {
    ["num"]=>
    int(3)
    ["type"]=>
    string(7) "varchar"
    ["len"]=>
    int(-1)
    ["not null"]=>
    bool(false)
    ["has default"]=>
    bool(false)
  }
}

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_convert().

Précédent | Sommaire | Suivant
pg_lo_write | Niveau supérieur | pg_num_fields


pg_num_fields

(PHP 4 >= 4.2.0)

pg_num_fields -- Retourne le nombre de champ

Description

int pg_num_fields ( resource result)

pg_num_fields() retourne le nombre de champs (ou colonnes) d'un résultat PostgreSQL. L'argument doit être un identifiant de résultat valide retourné par pg_exec(). Cette fonction retournera -1 en cas d'erreur.

Note : Auparavant, cette fonction s'appelait pg_numfields().

Voir aussi pg_num_rows() et pg_affected_rows().

Précédent | Sommaire | Suivant
pg_meta_data | Niveau supérieur | pg_num_rows


pg_num_rows

(PHP 4 >= 4.2.0)

pg_num_rows -- Retourne le nombre de lignes PostgreSQL

Description

int pg_num_rows ( resource result)

pg_num_rows() retourne le nombre de lignes d'un résultat PostgreSQL. L'argument doit être un identifiant de résultat valide retourné par pg_exec(). Cette fonction retournera -1 en cas d'erreur.

Note : Utilisez la fonction pg_affected_rows() pour connaître le nombre de lignes affectées par les commandes SQL INSERT, UPDATE et DELETE.

Note : Auparavant, cette fonction s'appelait pg_numrows().

Voir aussi pg_num_fields() et pg_affected_rows().

Précédent | Sommaire | Suivant
pg_num_fields | Niveau supérieur | pg_options


pg_options

(PHP 3, PHP 4 )

pg_options -- Retourne les options PostgreSQL

Description

string pg_options ( resource connection)

pg_options() retourne une chaîne contenant les options de la connexion PostgreSQL connection.

Précédent | Sommaire | Suivant
pg_num_rows | Niveau supérieur | pg_pconnect


pg_pconnect

(PHP 3, PHP 4 )

pg_pconnect -- Etablit une connexion PostgreSQL persistante

Description

resource pg_pconnect ( string connection_string)

pg_pconnect() retourne une ressource de connexion persistante en cas de succès, ou FALSE en cas d'erreur.

Pour une description détaillée de la chaîne connection_string, voyez pg_connect().

Pour activer les connexions persistantes, la directive de configuration pgsql.allow_persistent du php.ini doit être mise à "On" (ce qui est sa valeur par défaut). Le nombre maximal de connexions peut être limité grâce à la directive de configuration pgsql.max_persistent dans le fichier php.ini (par défaut, elle vaut -1, c'est à dire pas de limite). Le nombre total de connexions peut être configuré avec la directive pgsql.max_links du fichier php.ini.

pg_close() ne referemera pas les connexions persistantes générées par pg_pconnect().

Voir aussi pg_connect() et la section sur les connexions persistante pour plus d'informations.

Précédent | Sommaire | Suivant
pg_options | Niveau supérieur | pg_ping


pg_ping

(PHP 4 >= 4.3.0)

pg_ping -- Pingue la connexion à la base

Description

bool pg_ping ( resource connection)

pg_ping() pingue la connexion à la base de données, et essaie de se reconnecter si la connexion est perdue. pg_ping() retourne TRUE si la connexion est active, et FALSE sinon.

Exemple 1. Exemple avec pg_ping()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}

if (!pg_ping($conn))
    die("La connexion est morte\n");
?>

Voir aussi pg_connection_status() et pg_connection_reset().

Précédent | Sommaire | Suivant
pg_pconnect | Niveau supérieur | pg_port


pg_port

(PHP 3, PHP 4 )

pg_port -- Retourne le numéro de port

Description

int pg_port ( resource connection)

pg_port() retourne le numéro de port de la connexion identifiée connection.

Précédent | Sommaire | Suivant
pg_ping | Niveau supérieur | pg_put_line


pg_put_line

(PHP 4 >= 4.0.3)

pg_put_line -- Envoie une chaîne au serveur PostgreSQL

Description

bool pg_put_line ( [resource connection, string data])

pg_put_line() envoie une chaîne (terminée par NULL) au serveur PostgreSQL. Ceci est pratique pour effectuer des insertions très rapides dans une table, initiée par une opération de copie PostgreSQL copy-operation. Le caractère final NULL est automatiquement ajouté. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec..

Note : Notez que l'application doit explicitement ajouter les deux caractères "\." à la fin de la chaîne pour indiquer au serveur qu'elle a finit d'envoyer des données.

Exemple 1. Insertion à grande vitesse dans une table

<?php
    $conn = pg_pconnect("dbname=foo");
    pg_exec($conn, "create table bar (a int4, b char(16), d float8)");
    pg_exec($conn, "copy bar from stdin");
    pg_put_line($conn, "3\tBonjour le monde\t4.5\n");
    pg_put_line($conn, "4\tAu revoir le monde\t7.11\n");
    pg_put_line($conn, "\\.\n");
    pg_end_copy($conn);
?>

Voir aussi pg_end_copy().

Précédent | Sommaire | Suivant
pg_port | Niveau supérieur | pg_query


pg_query

(PHP 4 >= 4.2.0)

pg_query -- Exécute une requête

Description

resource pg_query ( resource connection, string query)

pg_query() retourne une ressource de résultat si la requête a pu être exécutée. Elle retourne FALSE en cas d'échec, ou si la connexion n'est pas valide. Le détails sur les erreurs rencontrées est accessible via la fonction pg_last_error(), si la connexion est valide. pg_last_error() émet une requête SQL au serveur PostgreSQL, spécifé avec le paramètre connection. connection doit être une connexion valide, retournée par la fonction pg_connect() ou pg_pconnect(). La valeur retournée par cette fonction est une ressource de résultat. Pour accéder aux lignes lues, il faudra utiliser les autres fonctions PostgreSQL, telles que pg_fetch_array().

Note : connection est un paramètre optionnel de pg_query(). Si connection est omis, la connexion par défaut sera utilisée. La connexion par défaut est la dernière connexion ouverte avec pg_connect() ou pg_pconnect().

Bien que connection puisse être omis, il n'est pas recommandé de le faire, car il peut se révéler difficile de retrouver la connexion dans un script.

Note : Cette fonction s'appelait pg_exec(). pg_exec() est toujours disponible pour des raisons de compatibilité, mais les utilisateurs sont encouragés à utiliser le nouveau nom.

Voir aussi
pg_connect(),
pg_pconnect(),
pg_fetch_array(),
pg_fetch_object(),
pg_num_rows() et
pg_affected_rows().

Précédent | Sommaire | Suivant
pg_put_line | Niveau supérieur | pg_result_error


pg_result_error

(PHP 4 >= 4.2.0)

pg_result_error -- Lit le message d'erreur associé à un résultat

Description

string pg_result_error ( resource result)

pg_result_error() retourne le message d'erreur associé au résultat result. Par conséquent, l'utilisateur a des chances d'obtenir un message d'erreur plus approprié que via pg_last_error().

Voir aussi
pg_query(),
pg_send_query(),
pg_get_result(),
pg_last_error() et
pg_last_notice()

Précédent | Sommaire | Suivant
pg_query | Niveau supérieur | pg_result_seek


pg_result_seek

(PHP 4 >= 4.3.0)

pg_result_seek -- Modifie la ligne courant dans un résultat

Description

array pg_result_seek ( resource result, int offset)

pg_result_seek() choisit la ligne offset comme ligne courante dans le résultat result. pg_result_seek() retourne FALSE, en cas d'erreur.

 Voir aussi
pg_fetch_row(),
pg_fetch_assoc(),
pg_fetch_array(),
pg_fetch_object() et
pg_fetch_result().

Précédent | Sommaire | Suivant
pg_result_error | Niveau supérieur | pg_result_status


pg_result_status

(PHP 4 >= 4.2.0)

pg_result_status -- Lit le statut du résultat

Description

int pg_result_status ( resource result)

pg_result_status() lit le statut du résultat result. Les valeurs retournée possibles sont PGSQL_EMPTY_QUERY, PGSQL_COMMAND_OK, PGSQL_TUPLES_OK, PGSQL_COPY_TO, PGSQL_COPY_FROM, PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR et PGSQL_FATAL_ERROR.

Voir aussi pg_connection_status().

Précédent | Sommaire | Suivant
pg_result_seek | Niveau supérieur | pg_select


pg_select

(PHP 4 >= 4.3.0)

pg_select -- Effectue une selection

Description

array pg_select ( resource connection, string table_name, array assoc_array [, int options])

pg_select() effectue une requête de SELECT avec les lignes spécifiées par le tableau assoc_array, au format champ=>valeur. Lorsque la requête réussit, pg_select() retouren un tableau contenant toutes les lignes et champs qui vérifient la condition spécifiée par assoc_array. Si options est spécifiée, pg_convert() est appliquée à assoc_array avec l'option spécifiée.

Exemple 1. Exemple avec pg_select()

<?php
    $db = pg_connect ('dbname=foo');
    // C'est correct, car $_POST est convertit automatiquement
    $rec = pg_select($db, 'post_log', $_POST);
    if ($rec) {
        echo "Lignes lues\n";
        var_dump($rec);
    }
    else {
        echo "Probl&egrave;me dans les donn&eacute;es utilisateur\n";
    }
?>

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_convert().

Précédent | Sommaire | Suivant
pg_result_status | Niveau supérieur | pg_send_query


pg_send_query

(PHP 4 >= 4.2.0)

pg_send_query -- Exécute une requête PostGreSQL asynchrone

Description

bool pg_send_query ( resource connection, string query)

bool pg_send_query ( string query)

pg_send_query() exécute la requête query sur la connexion connection, de manière asynchrone. Contrairement à pg_query(), cette fonction permet d'envoyer plusieurs requêtes à un serveur PostgreSQL et de lire les résultats un par un, avec la fonction pg_get_result(). L'exécution du script n'est pas bloquée durant l'exécution de la requête. Utilisez pg_connection_busy() pour vérifier si la connexion est encore occupée. Les requêtes peuvent être annulées avec pg_cancel_query().

Bien que l'on puiss envoyer plusieurs requêtes en même temps, il n'est pas possible d'envoyer plusieurs requêtes sur une connexion occupée. Si une requête est envoyée alors que la connexion est occupée, elle attendra que la requête précédente soit finie.

Exemple 1. Exécute une requête PostGreSQL asynchrone

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Impossible de se connecter");

    if (!pg_connection_busy($dbconn)) {
        pg_send_query($dbconn,"select * from authors; select count(*) from authors;");
    }

    $res1 = pg_get_result($dbconn);
    echo "Premier appel &agrave; pg_get_result() : $res1\n";
    $rows1 = pg_num_rows($res1);
    echo "$res1 has $rows1 records\n\n";

    $res2 = pg_get_result($dbconn);
    echo "Second appel &agrave; pg_get_result() : $res2\n";
    $rows2 = pg_num_rows($res2);
    echo "$res2 has $rows2 records\n";
?>

L'exemple ci-dessus pourrait afficher :

Premier appel &agrave; pg_get_result() : Resource id #3
Resource id #3 has 3 records

Second appel &agrave; pg_get_result() : Resource id #4
Resource id #4 has 1 records

Voir aussi
pg_query(),
pg_cancel_query(),
pg_get_result() et
pg_connection_busy().

Précédent | Sommaire | Suivant
pg_select | Niveau supérieur | pg_set_client_encoding


pg_set_client_encoding

(PHP 3 CVS only, PHP 4 >= 4.0.3)

pg_set_client_encoding -- Choisit l'encodage du client

Description

int pg_set_client_encoding ( [resource connection, string encoding])

pg_set_client_encoding() fixe l'encodage du client. Elle retourne 0 en cas de succès, et -1 sinon.

encoding est l'encodage du client, et peut être SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.

Note : Cette fonction requiert PHP-4.0.2 ou plus récent et PostgreSQL-7.0 ou plus récent.

Jadis, pg_set_client_encoding() s'appelait pg_setclientencoding().

Voir aussi pg_client_encoding().

Précédent | Sommaire | Suivant
pg_send_query | Niveau supérieur | pg_trace


pg_trace

(PHP 4 >= 4.0.1)

pg_trace -- Active le suivi d'une connexion PostgreSQL

Description

bool pg_trace ( string pathname [, string mode [, resource connection]])

pg_trace() active le suivi des communications entre PHP et le serveur PostgreSQL. Cet historique sera enregistré dans un fichier. Pour comprendre ces lignes, il faut être familier avec le protocole de communication interne à PostgreSQL. Pour ceux qui le ne sont pas, elles peuvent être utiles pour suivre les requêtes et les erreurs : avec la commande grep '^To backend' trace.log, vous pourrez voir les requêtes réellement envoyées au serveur PostgreSQL.

pathname et mode sont les mêmes arguments que pour la fonction fopen() (mode par défaut à 'w'), connection indique la connexion à suivre. Par défaut, c'est la dernière ouverte.

pg_trace() retourne TRUE si pathname a pu être ouvert en écriture, etFALSEsinon.

Voir aussi fopen() et pg_untrace().

Précédent | Sommaire | Suivant
pg_set_client_encoding | Niveau supérieur | pg_tty


pg_tty

(PHP 3, PHP 4 )

pg_tty -- Retourne le nom de tty

Description

string pg_tty ( resource connection)

pg_tty() retourne le nom de tty de la connexion associée à connection.

Précédent | Sommaire | Suivant
pg_trace | Niveau supérieur | pg_unescape_bytea


pg_unescape_bytea

(PHP 4 >= 4.3.0)

pg_unescape_bytea -- Supprime le protection d'une chaîne de type bytea

Description

string pg_unescape_bytea ( string data)

pg_unescape_bytea() supprime la proctection des caractères de type bytea, mis dans la chaîne data par la fonction pg_unescape_bytea(). La chaîne originale est ainsi retournée.

Note : Lorsque vous utilisez une commande SELECT avec des données de type bytea, PostgreSQL retourne des valeurs octales, préfixées avec des anti-slash \ (e.g. \032). Les utilisateurs doivent effectuer la conversion en format binaire eux-même.

pg_escape_bytea() requiert PostgreSQL 7.2 ou plus récent. Avec PostgreSQL 7.2.0 et 7.2.1, les données de type bytea doivent être transtypée lorsque vous activez le support des chaînes de caractères multi-octets. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);. PostgreSQL 7.2.2 ou plus récent ne requiert pas cette manipulation. Toutefois, si le client et le serveur n'utilisent pas le même jeux de caractères, il peut arriver des erreurs. Il faut alors forcer le transtypage manuellement.

Voir aussi pg_escape_bytea() et pg_escape_string()

Précédent | Sommaire | Suivant
pg_tty | Niveau supérieur | pg_untrace


pg_untrace

(PHP 4 >= 4.0.1)

pg_untrace -- Termine le suivi d'une connexion PostgreSQL

Description

bool pg_untrace ( [resource connection])

pg_untrace() termine le suivi d'une connexion PostgreSQL, initiée avec pg_trace(). connection indique la connexion à suivre. Par défaut, c'est la dernière ouverte.

pg_untrace() retourne toujours TRUE.

Voir aussi pg_trace().

Précédent | Sommaire | Suivant
pg_unescape_bytea | Niveau supérieur | pg_update


pg_update

(PHP 4 >= 4.3.0)

pg_update -- Modifie les lignes d'une table

Description

mixed pg_update ( resource connection, string table_name, array data, array condition [, int options])

pg_update() modifie les lignes de la table table_name, qui vérifient la condition condition, et leur donne la valeur de data. Si options est spécifié, pg_convert() est appliqué à data avec les options spécifiées.

Exemple 1. Exemple avec pg_update()

<?php
    $db = pg_connect ('dbname=foo');
    $data = array('field1'=>'AA', 'field2'=>'BB');
    // C'est correct, car $_POST est convertit automatiquement
    $res = pg_update($db, 'post_log', $_POST, $data);
    if ($res) {
        echo "Les donn&eacute;es ont &eacute;t&eacute; modifi&eacute;es : $res\n";
    }
    else {
        echo "Probl&egrave;me dans les donn&eacute;es utilisateur\n";
    }
?>

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Voir aussi pg_convert().

Précédent | Sommaire | Suivant
pg_untrace | Niveau supérieur | Contrôle des processus


Contrôle des processus

Manuel PHP
Précédent Suivant

LXXXIV. Contrôle des processus

Introduction

Le système de contrôle des processus de PHP implémente un système de création, gestion et terminaison des processus comme sous Unix. Cette extension ne doit pas être activée pour une utilisation en serveur web, car les résultats pourraient être inattendus.

Cettte documentation explique l'utilisation générale des fonctions du gestionaire de processus. Pour des informations plus détaillées sur le contrôle des processus Unix, nous vous encourageons à consulter votre documentation système, incluant notamment fork(2), waitpid(2) and signal(2), ou bien à compulser un ouvrage de référence comme "Advanced Programming in the UNIX Environment" par W. Richard Stevens (Addison-Wesley).

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Le support du contrôle des processus n'est pas activé par défaut en PHP. Pour cela, vous devez utiliser l'option de compilation --enable-pcntl.

Note : Actuellement, ce module ne fonctionne pas sur les environnement non Unix comme Windows.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

La liste suivante représente les signaux supportés par les fonctions de gestion des processus. Reportez vous au manuel de votre système (signal(7)) pour plus de détails sur ces signaux.

WNOHANG (entier)

WUNTRACED (entier)

SIG_IGN (entier)

SIG_DFL (entier)

SIG_ERR (entier)

SIGHUP (entier)

SIGINT (entier)

SIGQUIT (entier)

SIGILL (entier)

SIGTRAP (entier)

SIGABRT (entier)

SIGIOT (entier)

SIGBUS (entier)

SIGFPE (entier)

SIGKILL (entier)

SIGUSR1 (entier)

SIGSEGV (entier)

SIGUSR2 (entier)

SIGPIPE (entier)

SIGALRM (entier)

SIGTERM (entier)

SIGSTKFLT (entier)

SIGCLD (entier)

SIGCHLD (entier)

SIGCONT (entier)

SIGSTOP (entier)

SIGTSTP (entier)

SIGTTIN (entier)

SIGTTOU (entier)

SIGURG (entier)

SIGXCPU (entier)

SIGXFSZ (entier)

SIGVTALRM (entier)

SIGPROF (entier)

SIGWINCH (entier)

SIGPOLL (entier)

SIGIO (entier)

SIGPWR (entier)

SIGSYS (entier)

SIGBABY (entier)

Exemples

Cet exemple forke un processus démon, avec un gestionnaire de signaux.

Exemple 1. Exemple de contrôle de processus

<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die("impossible de forker");
} else if ($pid) {
     exit(); // nous sommes le processus p&egrave;re
} else {
     //nous sommes le processus fils
}

// d&eacute;tachons le processus du terminal
if (!posix_setsid()) {
    die("impossible de se d&eacute;tacher du terminal
}

// configuration des gestinnaires de signaux
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");

// boucle infinie
while(1) {
    // ex&eacute;cution de quelque chose
}

function sig_handler($signo) {

     switch($signo) {
         case SIGTERM:
             // gestion des t&acirc;ches de terminaison
             exit;
             break;
         case SIGHUP:
             // gestion des t&acirc;ches de red&eacute;marrage
             break;
         default:
             // gestion des autres t&acirc;ches
     }

}

?>

Voir aussi

Jetez un oeil à la section sur les fonctions POSIX.

Table des matières
pcntl_exec -- Exécute le programmee indiqué dans l'espace courant de processus
pcntl_fork -- Forks the currently running process
pcntl_signal -- Installe un gestionnaire de signaux
pcntl_waitpid -- Attend la fin de l'exécution d'un processus fils
pcntl_wexitstatus -- Retourne le code d'un processus fils terminé
pcntl_wifexited -- Retourne TRUE si le code de retour représente une fin normale
pcntl_wifsignaled -- Returns TRUE if status code represents a termination due to a signal
pcntl_wifstopped -- Returns TRUE if child process is currently stopped
pcntl_wstopsig -- Returns the signal which caused the child to stop
pcntl_wtermsig -- Returns the signal which caused the child to terminate

Précédent | Sommaire | Suivant
pg_update | Niveau supérieur | pcntl_exec


pcntl_exec

(PHP 4 >= 4.2.0)

pcntl_exec -- Exécute le programmee indiqué dans l'espace courant de processus

Description

bool pcntl_exec ( string path [, array args [, array envs]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Contrôle des processus | Niveau supérieur | pcntl_fork


pcntl_fork

(PHP 4 >= 4.1.0)

pcntl_fork -- Forks the currently running process

Description

int pcntl_fork ( void )

pcntl_fork() crée un processus fils, qui ne diffère du processus père que par l'identifiant de processus et l'identifiant PPID. Reportez vous à la page de man fork(2) pour avoir des détails sur le comportement de cette fonction sur votre système.

En cas de succès, le PID (identifiant de processus) du fils est retourné dans le processus père, et 0 est retourné dans le processus fils. En cas d'échec, -1 est retourné dans le contexte du père, aucun processu fils ne sera créé et PHP générera une erreur.

Exemple 1. Exemple avec pcntl_fork()

<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     // we are the parent
} else {
     // we are the child
}

?>

Voir aussi pcntl_waitpid() et pcntl_signal().

Précédent | Sommaire | Suivant
pcntl_exec | Niveau supérieur | pcntl_signal


pcntl_signal

(PHP 4 >= 4.1.0)

pcntl_signal -- Installe un gestionnaire de signaux

Description

bool pcntl_signal ( int signo, callback handle [, bool restart_syscalls])

pcntl_signal() installe un nouveau gestionnaire de signaux opur le signal indiqué par le paramètre signo. Le gestionnaire de signaux est affecté à handler qui peut être le nom d'une fonction utilisateur, ou bien l'une des deux constantes globales SIG_IGN et SIG_DFL. Le paramètre optionnel restart_syscalls spécifie si l'appel système de redémarrage (restarting) doit être utilisé lorsque ce signal arrive, et par défaut, ce paramètre vaut TRUE.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : La possibilité d'utiliser une méthode d'objet comme fonction de callback est disponible depuis PHP 4.3.0. Notez que lorsque vous configurez le gestionnaire avec une méthode d'objet, le compteur de référence de l'objet est incrémenté, ce qui le rend persistant jusqu'à ce que vous changiez le gestionaire de signeux pour un autre, ou que le script se termine.

Exemple 1. Exemple avec pcntl_signal()

<?php
// l'usage des tick est n&eacute;cessaire depuis PHP 4.3.0
declare (ticks = 1);

// gestionnaire de siganux syst&egrave;me
function sig_handler($signo) {

     switch($signo) {
         case SIGTERM:
             // gestion de l'extinction
             exit;
             break;
         case SIGHUP:
             // gestion du red&eacute;marrage
             break;
         case SIGUSR1:
             print "Re&ccedil;u le signe SIGUSR1...\n";
             break;
         default:
             // gestion des autres signaux
     }

}

print "Installation du gestionnaire de signaux...\n";

// Installation des gestionnaires de signaux
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

// ou bien utilisez un objet (disponible depuis PHP 4.3.0)
// pcntl_signal(SIGUSR1, array($obj, "faire_quelquechose");

print "G&eacute;n&eacute;ration d'un signal SIGTERM &agrave; moi m&ecirc;me...\n";

// envoi de SIGUSR1 &agrave; l'identifiant de processus courant
posix_kill(posix_getpid(), SIGUSR1);

print "Done\n"

?>

Voir aussi pcntl_fork() et pcntl_waitpid().

Précédent | Sommaire | Suivant
pcntl_fork | Niveau supérieur | pcntl_waitpid


pcntl_waitpid

(PHP 4 >= 4.1.0)

pcntl_waitpid -- Attend la fin de l'exécution d'un processus fils

Description

int pcntl_waitpid ( int pid, int &status, int options)

pcntl_waitpid() suspend l'exécution du processus courant jusqu'à ce que un processus fils spécifié par le paramètre pid ait terminé, ou bien qu'un signal ait mis fin à ce processus ou qu'un signal ait appelé un gestionnaire de signaux. Si le processus fils identifié par pid est déjà terminé au moment de l'appel de cette fonction (on les appelle des processus "zombie"), la fonction se termine immédiatement. Toute ressource système utilisé par le processus fils est libérée. Reportez vous à la page de man waitpid(2) pour avoir des détails sur le comportement de cette fonction sur votre système.

pcntl_waitpid() retourne l'identifiant de processus du processus fils qui s'est terminé, ou bien -1 en cas d'erreur ou encore zéro si WNOHANG a été utilisée et qu'aucun processus fils n'était disponible.

Le paramètre pid peut prendre l'une des valeurs suivantes :

Tableau 1. Valeurs possibles de pid

< -1 | attend que tous les processus fils dont l'identifiant de groupe est égal à la valeur absolue de pid soient terminés.
-1 | attend que tous les processus fils soient terminés. Ceci est le même comportement que celui de la fonction wait().
0 | attend que tous les processus fils dont l'identifiant de groupe est égal à celui du processus courant soient terminés.
> 0 | attend que le processus fils dont l'identifiant est égal à pid soit terminé.

pcntl_waitpid() enregistrera des informations sur
le statut courant du processus dans le paramètre
status, qui peut être accédé avec les
fonctions suivantes :
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig() et
pcntl_wstopsig().

Le paramètre options peut prendre la valeur de zéro, ou plusieurs des constantes globales suivantes (combinez les avec l'opérateur OR) :

Tableau 2. Valeurs possibles de options

WNOHANG | retourne immédiatement si aucun processus fils ne s'est terminé.
WUNTRACED | retourne lorsque les processus fils sont arrêtés et que leur status n'a pas été mis à jour.

Voir aussi
pcntl_fork(),
pcntl_signal(),
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig() et
pcntl_wstopsig().

Précédent | Sommaire | Suivant
pcntl_signal | Niveau supérieur | pcntl_wexitstatus


pcntl_wexitstatus

(PHP 4 >= 4.1.0)

pcntl_wexitstatus -- Retourne le code d'un processus fils terminé

Description

int pcntl_wexitstatus ( int status)

pcntl_wexitstatus() retourne le code de retour du processus fils. Cette fonction n'est utile que si la fonction pcntl_wifexited() a retourné TRUE.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi pcntl_waitpid() et pcntl_wifexited().

Précédent | Sommaire | Suivant
pcntl_waitpid | Niveau supérieur | pcntl_wifexited


pcntl_wifexited

(PHP 4 >= 4.1.0)

pcntl_wifexited -- Retourne TRUE si le code de retour représente une fin normale

Description

int pcntl_wifexited ( int status)

pcntl_wifexited() retourne TRUE si le processus fils a retourné un code qui représente une fin normale.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi pcntl_waitpid() et pcntl_wexitstatus().

Précédent | Sommaire | Suivant
pcntl_wexitstatus | Niveau supérieur | pcntl_wifsignaled


pcntl_wifsignaled

(PHP 4 >= 4.1.0)

pcntl_wifsignaled -- Returns TRUE if status code represents a termination due to a signal

Description

int pcntl_wifsignaled ( int status)

Returns TRUE if the child process exited because of a signal which was not caught.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi pcntl_waitpid() et pcntl_signal().

Précédent | Sommaire | Suivant
pcntl_wifexited | Niveau supérieur | pcntl_wifstopped


pcntl_wifstopped

(PHP 4 >= 4.1.0)

pcntl_wifstopped -- Returns TRUE if child process is currently stopped

Description

int pcntl_wifstopped ( int status)

Returns TRUE if the child process which caused the return is currently stopped; this is only possible if the call to pcntl_waitpid() was done using the option WUNTRACED.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi pcntl_waitpid().

Précédent | Sommaire | Suivant
pcntl_wifsignaled | Niveau supérieur | pcntl_wstopsig


pcntl_wstopsig

(PHP 4 >= 4.1.0)

pcntl_wstopsig -- Returns the signal which caused the child to stop

Description

int pcntl_wstopsig ( int status)

Returns the number of the signal which caused the child to stop. This function is only useful if pcntl_wifstopped() returned TRUE.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi pcntl_waitpid() et pcntl_wifstopped().

Précédent | Sommaire | Suivant
pcntl_wifstopped | Niveau supérieur | pcntl_wtermsig


pcntl_wtermsig

(PHP 4 >= 4.1.0)

pcntl_wtermsig -- Returns the signal which caused the child to terminate

Description

int pcntl_wtermsig ( int status)

Returns the number of the signal that caused the child process to terminate. This function is only useful if pcntl_wifsignaled() returned TRUE.

Le paramètre status est le paramètre fourni à la fonction pcntl_waitpid(), qui avait réussi.

Voir aussi
pcntl_waitpid(),
pcntl_signal() et
pcntl_wifsignaled().

Précédent | Sommaire | Suivant
pcntl_wstopsig | Niveau supérieur | Exécution de programmes externes


Exécution de programmes externes

Manuel PHP
Précédent Suivant

LXXXV. Exécution de programmes externes

Introduction

Ces fonctions fournissent la possibilité de passer directement des commandes au système, mais aussi de protéger le système des commandes passées.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Voir aussi

Ces fonctions sont complétées par l'opérateur guillemets obliques. De plus, lorsque le safe mode est activé, vous devez configurer l'option safe_mode_exec_dir.

Table des matières
escapeshellarg -- Protège une chaîne de caractères pour utilisation en ligne de commande
escapeshellcmd -- Protège les caractères spéciaux du Shell
exec -- Exécute un programme externe
passthru -- Exécute un programme externe et affiche le résultat brut.
proc_close -- Ferme un processus ouvert par proc_open() et retourne le code de sortie du processus.
proc_get_status -- Lit les informations concernant un processus
proc_nice -- Change la priorité d'exécution du processus courant
proc_open -- Exécute une commande et ouvre les pointeurs de fichiers pour les entrées sorties
proc_terminate -- Termine un processus ouvert par proc_open()
shell_exec -- Exécute une commande via le shell et retourne le résultat sous forme de chaîne.
system -- Exécute un programme externe et affiche le résultat.

Précédent | Sommaire | Suivant
pcntl_wtermsig | Niveau supérieur | escapeshellarg


escapeshellarg

(PHP 4 >= 4.0.3)

escapeshellarg -- Protège une chaîne de caractères pour utilisation en ligne de commande

Description

string escapeshellarg ( string arg)

escapeshellarg() ajoute des guillemets simples autour des chaînes de caractères, et ajoute des guillemets puis échappe les guillemets simples de la chaîne. Cela permet de faire passer directement une chaîne comme argument shell, tout en assurant un maximum de sécurité. escapeshellarg() doit être utilisée pour traiter individuellement chacun des arguments à passer au shell. Les fonctions shell sont exec(), system() et les opérateurs guillemets obliques. Une utilisation typique est :

Exemple 1. Exemple avec escapeshellarg()

<?php
  system("ls ".escapeshellarg($dir));
?>

Voir aussi exec(), popen(), escapeshellcmd(), system() et les opérateurs guillemets obliques.

Précédent | Sommaire | Suivant
Exécution de programmes externes | Niveau supérieur | escapeshellcmd


escapeshellcmd

(PHP 3, PHP 4 )

escapeshellcmd -- Protège les caractères spéciaux du Shell

Description

string escapeshellcmd ( string command)

escapeshellcmd() échappe tous les caractères de la chaîne command qui pourraient avoir une signification spéciale dans une commande shell. Cette fonction permet de s'assurer que la commande sera correctement passée à l'exécuteur de commande shell exec() et system(), ou encore à guillemets obliques. Généralement, cette fonction est utilisée comme ceci :

Exemple 1. Exemple avec escapeshellcmd()

<?php
  system(escapeshellcmd($cmd));
?>

Voir aussi escapeshellarg(), exec(), popen(), system() et les opérateurs guillemets obliques.

Précédent | Sommaire | Suivant
escapeshellarg | Niveau supérieur | exec


exec

(PHP 3, PHP 4 )

exec -- Exécute un programme externe

Description

string exec ( string command [, array output [, int return_var]])

exec() execute la commande command, mais ne renvoie rien comme retour, hormis la dernière ligne du résultat de la commande. Pour exécuter une commande et obtenir le résultat sans aucun traitement, il faut utiliser la fonction passthru().

Si l'argument output est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().

Si l'argument return_var est présent en plus du tableau output, alors le statut de retour d'exécution sera inscrit dans cette variable.

Notez que si vous allez fournir des commandes qui proviennent d'un utilisateur, il est avisé d'utiliser la fonction escapeshellcmd() pour s'assurer que l'utilisateur n'essaie pas de profiter des caractères spéciaux pour tromper le système.

Note : Si vous démarrez un programme en utilisant cette fonction, et que vous voulez qu'il continue de fonctionner en tâche de fond, vous devez vous assurez que le résultat de ce programme est redirigé vers un fichier ou une autre méthode d'archivage, car sinon, PHP va attendre la fin de l'exécution du programme.

Voir aussi system(),
passthru(),
popen(),
escapeshellcmd() et les opérateurs
guillemets obliques.

Précédent | Sommaire | Suivant
escapeshellcmd | Niveau supérieur | passthru


passthru

(PHP 3, PHP 4 )

passthru -- Exécute un programme externe et affiche le résultat brut.

Description

void passthru ( string command [, int return_var])

La fonction passthru() est similaire à la fonction exec() car les deux exécutent la commande command. Si l'argument return_var est présent, le code de statut de réponse UNIX y sera placé. Cette fonction doit être utilisée de préférence aux commandes exec() ou system() lorsque le résultat attendu est de type binaire, et doit être passé tel quel à un navigateur. Une utilisation classique de cette fonction est l'exécution de l'utilitaire pbmplus qui peut retourner une image. En fixant le résultat du contenu (Content-Type) à "image/gif" puis en appelant pbmplus pour obtenir une image gif, vous pouvez créer des scripts PHP qui retourne des images.

Voir aussi exec(), system(), popen(), escapeshellcmd(), et les opérateurs guillemets obliques.

Précédent | Sommaire | Suivant
exec | Niveau supérieur | proc_close


proc_close

(PHP 4 >= 4.3.0)

proc_close -- Ferme un processus ouvert par proc_open() et retourne le code de sortie du processus.

Description

int proc_close ( resource process)

proc_close() est similaire à pclose() hormis le fait qu'elle fonctionne avec les processus ouverts par proc_open(). proc_close() attend que le processus se termine, puis retourne son code de sortie. Si vous avez des pipes ouverts avec ce processus, il faut les fermer avec fclose() avant d'appler cette fonction pour éviter des verrouillages : le processus peut ne pas pouvoir sortir tant que les pipes sont ouverts.

Précédent | Sommaire | Suivant
passthru | Niveau supérieur | proc_get_status


proc_get_status

(PHP 5 CVS only)

proc_get_status -- Lit les informations concernant un processus

Description

array proc_get_status ( resource process)

proc_get_status() lit les données concernant le processus process, créé avec la fonction proc_open(). Les informations collectés sont retournées dans un tableau, avec les éléments suivants :

élément | type | description
command | string |
pid | int | identifiant du processus
running | bool | TRUE si le processus fonctionne toujours, et FALSE si il est terminé
signaled | bool | Non documenté
stopper | bool | Non documenté
exitcode | int | Le code retourné par le processu (uniquement si l'élément running vaut FALSE)
termsig | int | Non documenté
stopsig | int | Non documenté

Précédent | Sommaire | Suivant
proc_close | Niveau supérieur | proc_nice


proc_nice

(PHP 5 CVS only)

proc_nice -- Change la priorité d'exécution du processus courant

Description

bool proc_nice ( int priority)

proc_nice() modifie la priorité d'exécution du processus courant en lui donnant la nouvelle valeur de priority. Si une erreur survient, comme par exemple l'impossibilité pour l'utilisateur de changer la priorité, une erreur de niveau E_WARNING est générée et FALSE est retournée. Sinon, TRUE est retournée.

Note : proc_nice() n'est disponible que sur les systèmes qui disposent de capacités NICE. NICE est compatible avec : SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. Par exemple, proc_nice() n'est pas disponible sous Windows.

Voir aussi proc_open() et proc_terminate().

Précédent | Sommaire | Suivant
proc_get_status | Niveau supérieur | proc_open


proc_open

(PHP 4 >= 4.3.0)

proc_open -- Exécute une commande et ouvre les pointeurs de fichiers pour les entrées sorties

Description

resource proc_open ( string cmd, array descriptorspec, array pipes)

proc_open() est similaire à popen() mais fournie un plus grand degré de contrôle sur l'exécution du programme. cmd est la commande qui doit être exécutée par le shell. descriptorspec est un tableau indexé, dont les clés représentent le numéro de descripteur, et la valeur représente la méthode avec laquelle PHP va passer ce descripteur au processus fils. pipes recevra un tableau indexé de pointeurs de fichiers, qui correspondent aux sorties dans PHP de tous les pipes qui sont créés. La valeur retournée est une ressource, qui représente le processus. Il faudra la détuire avec la fonction proc_close() lorsque vous aurez fini.

Exemple 1. Exemple avec proc_open()

<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin est un pipe o&ugrave; le processus va lire
   1 => array("pipe", "w"),  // stdout est un pipe o&ugrave; le processus va &eacute;crire
   2 => array("file", "/tmp/error-output.txt", "a"), // stderr est un fichier
);
$process = proc_open("php", $descriptorspec, $pipes);
if (is_resource($process)) {
    // $pipes ressemble &agrave; :
    // 0 => fichier accessible en &eacute;criture, connect&eacute; &agrave; l'entr&eacute;e standard du prcessus fils
    // 1 => fichier accessible en lecture, connect&eacute; &agrave; la sortie standard du prcessus fils
    // Toute erreur sera ajout&eacute;e au fichier /tmp/error-output.txt

    fwrite($pipes[0], "<?php echo \"Bonjour le monde!\"; ?>");
    fclose($pipes[0]);

    while(!feof($pipes[1])) {
        echo fgets($pipes[1], 1024);
    }
    fclose($pipes[1]);
    // Il est important que vous fermiez les pipes avant d'appeler
    // proc_close() afin d'&eacute;viter un verrouillage.
    $return_value = proc_close($process);

    echo "La commande a retourn&eacute;e $return_value\n";
}
?>

Les numéros de descripteurs de fichiers de descriptorspec ne sont pas limitées à 0, 1 et 2 : vous pouvez spécifier n'importe quel numéro de descripteur valide, et il sera passé au processus fils. Cela permettra à votre script d'inter opérer avec d'autres scripts, et d'être exécuté comme "co-processus". En particulier, c'est très pratique pour passer des mots de passes à des programmes comme PGP, GPG et openssl, avec une méthode très protégée. C'est aussi pratique pour lire des informations de statut fournies par ces programmes, sur des descripteurs auxiliaires.

Note : Compatibilité Windows : les descripteurs au-dela de 2 (stderr) sont accessibles au processus fils, sous la forme de pointeurs héritables, mais comme l'architecture Windows n'associe pas de nombre aux descripteurs de bas niveau, le processus fils n'a (actuellement) aucun moyen d'y accéder. Stdin, stdout et stderr fonctionnent comme d'habitude.

Note : Cette fonction a été introduite en PHP 4.3.0.

Note : Si vous n'avez besoin que d'un processus uni-directionnel, popen() sera plus pratique, car plus simple à utiliser.

Voir aussi
exec(),
system(),
passthru(),
popen(),
escapeshellcmd(), et
l'opérateur de backticks.

Précédent | Sommaire | Suivant
proc_nice | Niveau supérieur | proc_terminate


proc_terminate

(PHP 5 CVS only)

proc_terminate -- Termine un processus ouvert par proc_open()

Description

int proc_terminate ( resource process [, int signal])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Voir aussi
proc_open(),
proc_close() et
proc_nice().

Précédent | Sommaire | Suivant
proc_open | Niveau supérieur | shell_exec


shell_exec

(PHP 4 )

shell_exec -- Exécute une commande via le shell et retourne le résultat sous forme de chaîne.

Description

string shell_exec ( string cmd)

shell_exec() exécute la commande cmd via le shell et retourne le résultat sous forme de chaîne.

shell_exec() est identique aux opérateurs de backtick.

Précédent | Sommaire | Suivant
proc_terminate | Niveau supérieur | system


system

(PHP 3, PHP 4 )

system -- Exécute un programme externe et affiche le résultat.

Description

string system ( string command [, int return_var])

system() est la version PHP de la fonction C qui exécute la commande command et retourne le résultat. Si une variable est fournie comme second argument, alors le code de statut de la commande y sera affecté.

Notez que si vous allez fournir des commandes qui proviennent d'un utilisateur, il est avisé d'utiliser la fonction escapeshellcmd() pour s'assurer que l'utilisateur n'essaie pas de profiter des caractères spéciaux pour tromper le système.

system() essaie automatiquement de vider les tampons du serveur web après chaque ligne de résultat PHP, lorsque ce dernier fonctionne comme un module.

system() retourne la dernière ligne du retour, en cas de succès, et FALSEen cas d'échec.

Si vous devez exécuter une commande et récupérer tout le résultat sans aucune intervention, utilisez la fonction passthru().

Voir aussi exec(), passthru(), popen(), escapeshellcmd() et les opérateurs guillemets obliques.

Précédent | Sommaire | Suivant
shell_exec | Niveau supérieur | Impression


Impression

Manuel PHP
Précédent Suivant

LXXXVI. Impression

Introduction

Ces fonctions ne sont disponibles que sous Windows 9.x, ME, NT4 et 2000. Elles ont été ajoutées en PHP 4.0.4.

Installation

Ajoutez la ligne extension=php_printer.dll dans votre fichier php.ini.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
printer.default_printer | "" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Table des matières
printer_abort -- Efface la file d'attente de l'imprimante
printer_close -- Ferme une connexion à une imprimante
printer_create_brush -- Crée une nouvelle brosse
printer_create_dc -- Crée un contexte d'imprimante
printer_create_font -- Crée une nouvelle police
printer_create_pen -- Crée un nouveau stylo
printer_delete_brush -- Efface une brosse
printer_delete_dc -- Efface un contexte d'imprimante
printer_delete_font -- Efface une police
printer_delete_pen -- Efface un stylo
printer_draw_bmp -- Dessine un fichier BMP
printer_draw_chord -- Dessine un arc de cercle
printer_draw_elipse -- Dessine une ellipse
printer_draw_line -- Dessine une ligne
printer_draw_pie -- Dessine un secteur angulaire
printer_draw_rectangle -- Dessine un rectangle
printer_draw_roundrect -- Dessine un rectangle, avec des coins arrondis
printer_draw_text -- Dessine un texte
printer_end_doc -- Ferme le document
printer_end_page -- Ferme la page active
printer_get_option -- Lit les informations de configuration de l'imprimante
printer_list -- Retourne la liste des imprimantes attachées à un serveur
printer_logical_fontheight -- Lit la taille logique de la police
printer_open -- Ouvre une connexion à une imprimante
printer_select_brush -- Sélectionne une brosse
printer_select_font -- Sélectionne une police de caractères
printer_select_pen -- Sélectionne un stylo
printer_set_option -- Configure la connexion à l'imprimante
printer_start_doc -- Commence un nouveau document
printer_start_page -- Commence une nouvelle page
printer_write -- Ecrit des données sur l'imprimante

Précédent | Sommaire | Suivant
system | Niveau supérieur | printer_abort


printer_abort

(no version information, might be only in CVS)

printer_abort -- Efface la file d'attente de l'imprimante

Description

void printer_abort ( resource handle)

printer_abort efface la file d'attente de l'imprimante.

handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_abort()

<?php
  $handle = printer_open();
  printer_abort($handle);
  printer_close($handle);
?>

Précédent | Sommaire | Suivant
Impression | Niveau supérieur | printer_close


printer_close

(no version information, might be only in CVS)

printer_close -- Ferme une connexion à une imprimante

Description

void printer_close ( resource handle)

printer_close() ferme la connexion avec l'imprmante représentée par la ressource handle. printer_close() ferme aussi le contexte d'imprimante actif.

handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_close()

<?php
  $handle = printer_open();
  printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_abort | Niveau supérieur | printer_create_brush


printer_create_brush

(no version information, might be only in CVS)

printer_create_brush -- Crée une nouvelle brosse

Description

mixed printer_create_brush ( int style, string color)

printer_create_brush crée une nouvelle brosse et retourne une ressource de brosse. Une brosse est utilisée pour remplir des surfaces. Pour un exemple, voyez la fonction printer_select_brush(). color doit être une couleur au format RGB hexadécimal, c'est à dire "000000" pour le noir. style doit prendre la valeur de l'une des constantes suivantes :

  • PRINTER_BRUSH_SOLID : crée une brosse avec une couleur pleine.

  • PRINTER_BRUSH_DIAGONAL : crée une brosse avec une direction diagonale ascendante, de droite à gauche ( / ).

  • PRINTER_BRUSH_CROSS : crée une brosse avec une forme de croix ( + ).

  • PRINTER_BRUSH_DIAGCROSS : crée une brosse avec une forme de croix diagonale ( x ).

  • PRINTER_BRUSH_FDIAGONAL : crée une brosse avec une direction diagonale ascendante, de gauche à droite ( \ ).

  • PRINTER_BRUSH_HORIZONTAL : crée une brosse avec une direction horizontale ( - ).

  • PRINTER_BRUSH_VERTICAL : crée une brosse avec une direction horizontale ( | ).

  • PRINTER_BRUSH_CUSTOM : crée une brosse à partir d'un fichier BMP. Le second paramètre est alors utilisé pour spécifier le chemin jusqu'au fichier BMP, au lieu d'être une couleur.

Précédent | Sommaire | Suivant
printer_close | Niveau supérieur | printer_create_dc


printer_create_dc

(no version information, might be only in CVS)

printer_create_dc -- Crée un contexte d'imprimante

Description

void printer_create_dc ( resource handle)

printer_create_dc() crée un nouveau contexte d'imprimante pour l'imprimante handle. Un contexte d'imprimante est utilisé pour paramétrer les objets graphiques d'un document. handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_create_dc()

$handle = printer_open();
printer_start_doc($handle);
printer_start_page($handle);

printer_create_dc($handle);
/* Exploitation du contexte */
printer_set_option($handle, PRINTER_TEXT_COLOR, "333333");
printer_draw_text($handle, 1, 1, "text");
printer_delete_dc($handle);

/* Cr&eacute;ation d'un autre contexte */
printer_create_dc($handle);
printer_set_option($handle, PRINTER_TEXT_COLOR, "000000");
printer_draw_text($handle, 1, 1, "text");
/* Exploitation du contexte */

printer_delete_dc($handle);

printer_endpage($handle);
printer_end_doc($handle);
printer_close($handle);

Précédent | Sommaire | Suivant
printer_create_brush | Niveau supérieur | printer_create_font


printer_create_font

(no version information, might be only in CVS)

printer_create_font -- Crée une nouvelle police

Description

mixed printer_create_font ( string face, int height, int width, int font_weight, bool italic, bool underline, bool strikeout, int orientaton)

printer_create_font crée une nouvelle ressource de police. Pour un exemple, voir la fonction printer_select_font(). face est le nom de la police. height est sa taille et width sa largeur. Le paramètre font_weight spécifie le poids de la police (400 est normal), et peut prendre comme valeur l'une des constantes suivantes :

  • PRINTER_FW_THIN : fixe un poids de police mince (100).

  • PRINTER_FW_ULTRALIGHT : fixe un poids de police très léger (200).

  • PRINTER_FW_LIGHT : fixe un poids de police léger (300).

  • PRINTER_FW_NORMAL : fixe un poids de police normal (400).

  • PRINTER_FW_MEDIUM : fixe un poids de police moyen (500).

  • PRINTER_FW_BOLD : fixe un poids de police gras (700).

  • PRINTER_FW_ULTRABOLD : fixe un poids de police très gras (800).

  • PRINTER_FW_HEAVY : fixe un poids de police lourd (900).

italic vaut TRUE pour indiquer que la police est en italique, et FALSE sinon.

underline vaut TRUE pour indiquer que la police est soulignée, et FALSE sinon.

strikeout vaut TRUE pour indiquer que la police est barrée, et FALSE sinon.

orientation spécifie l'orientaton. Pour un exemple, voyez la fonction printer_select_font().

Précédent | Sommaire | Suivant
printer_create_dc | Niveau supérieur | printer_create_pen


printer_create_pen

(no version information, might be only in CVS)

printer_create_pen -- Crée un nouveau stylo

Description

mixed printer_create_pen ( int style, int width, string color)

printer_create_pen() crée un nouveau stylo et retourne une ressource. Un stylo est utilisé pour dessiner des lignes et des courbes. Pour un exemple, voyez la fonction printer_select_pen(). color doit être une couleur au format RGB hexadécimal, "000000" pour le noir. width spécifie la largeur du stylo. style doit être l'une des constantes suivantes :

  • PRINTER_PEN_SOLID: crée un stylo plein.

  • PRINTER_PEN_DASH: crée un stylo pointillé avec des tirets.

  • PRINTER_PEN_DOT: crée un stylo pointillé avec des points.

  • PRINTER_PEN_DASHDOT: crée un stylo pointillé avec des tirets et des points.

  • PRINTER_PEN_DASHDOTDOT: crée un stylo pointillé avec des tirets et des doubles points.

  • PRINTER_PEN_INVISIBLE: crée un stylo invisible.

Précédent | Sommaire | Suivant
printer_create_font | Niveau supérieur | printer_delete_brush


printer_delete_brush

(no version information, might be only in CVS)

printer_delete_brush -- Efface une brosse

Description

bool printer_delete_brush ( resource handle)

printer_delete_brush() efface la brosse représentée par sa ressource handle. Pour un exemple, voyez la fonction printer_select_brush(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. handle doit être une ressource de brosse valide.

Précédent | Sommaire | Suivant
printer_create_pen | Niveau supérieur | printer_delete_dc


printer_delete_dc

(no version information, might be only in CVS)

printer_delete_dc -- Efface un contexte d'imprimante

Description

bool printer_delete_dc ( resource handle)

printer_delete_dc() efface le contexte représenté par sa ressource handle. Pour un exemple, voyez la fonction printer_create_dc(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. handle doit être une ressource de contexte d'imprimante valide.

Précédent | Sommaire | Suivant
printer_delete_brush | Niveau supérieur | printer_delete_font


printer_delete_font

(no version information, might be only in CVS)

printer_delete_font -- Efface une police

Description

bool printer_delete_font ( resource handle)

printer_delete_font() efface la police représentée par sa ressource handle. Pour un exemple, voyez la fonction printer_select_font(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. handle doit être une ressource de police valide.

Précédent | Sommaire | Suivant
printer_delete_dc | Niveau supérieur | printer_delete_pen


printer_delete_pen

(no version information, might be only in CVS)

printer_delete_pen -- Efface un stylo

Description

bool printer_delete_pen ( resource handle)

printer_delete_pen() efface le stylo représenté par sa ressource handle. Pour un exemple, voyez la fonction printer_select_pen(). Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. handle doit être une ressource de stylo valide.

Précédent | Sommaire | Suivant
printer_delete_font | Niveau supérieur | printer_draw_bmp


printer_draw_bmp

(no version information, might be only in CVS)

printer_draw_bmp -- Dessine un fichier BMP

Description

void printer_draw_bmp ( resource handle, string filename, int x, int y)

printer_draw_bmp() dessine simplement l'image BMP filename, à la position x, y. handle doit être une ressource d'imprimante valide.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec printer_draw_bmp()

<?php
  $handle = printer_open();
  printer_start_doc($handle, "Mon Document");
  printer_start_page($handle);

  printer_draw_bmp($handle, "c:\\image.bmp", 1, 1);

  printer_end_page($handle);
  printer_end_doc($handle);
  printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_delete_pen | Niveau supérieur | printer_draw_chord


printer_draw_chord

(no version information, might be only in CVS)

printer_draw_chord -- Dessine un arc de cercle

Description

void printer_draw_chord ( resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad_x, int rad_y, int rad_x1, int rad_y1)

printer_draw_chord() dessine simplement un arc de cercle. handle doit être une ressource d'imprimante valide.

rec_x est l'abscisse supérieure gauche du rectangle d'encadrement.

rec_y est l'ordonnée supérieure gauche du rectangle d'encadrement.

rec_x1 est l'abscisse inférieure droite du rectangle d'encadrement.

rec_y1 est l'ordonnée inférieure droite du rectangle d'encadrement.

rad_x est l'abscisse du point de début de l'arc.

rad_y est l'ordonnée du point de début de l'arc.

rad_x1 est l'abscisse du point de fin de l'arc.

rad_y1 est l'ordonnée du point de fin de l'arc.

Exemple 1. Exemple avec printer_draw_chord()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_chord($handle, 1, 1, 500, 500, 1, 1, 500, 1);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_bmp | Niveau supérieur | printer_draw_elipse


printer_draw_elipse

(no version information, might be only in CVS)

printer_draw_elipse -- Dessine une ellipse

Description

void printer_draw_elipse ( resource handle, int ul_x, int ul_y, int lr_x, int lr_y)

printer_draw_elipse() dessine une ellipse. handle doit être une ressource d'imprimante valide.

ul_x est l'abscisse supérieure gauche de l'ellipse.

ul_y est l'ordonnée supérieure gauche de l'ellipse.

lr_x est l'abscisse inférieure droite de l'ellipse.

lr_y est l'ordonnée inférieure droite de l'ellipse.

Exemple 1. Exemple avec printer_draw_elipse()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_elipse($handle, 1, 1, 500, 500);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_chord | Niveau supérieur | printer_draw_line


printer_draw_line

(no version information, might be only in CVS)

printer_draw_line -- Dessine une ligne

Description

void printer_draw_line ( resource printer_handle, int from_x, int from_y, int to_x, int to_y)

printer_draw_line dessine une ligne entre les points de coordonnées from_x, from_y et to_x, to_y en utilisant le stylo courant. printer_handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_draw_line()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 30, "000000");
printer_select_pen($handle, $pen);

printer_draw_line($handle, 1, 10, 1000, 10);
printer_draw_line($handle, 1, 60, 500, 60);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_elipse | Niveau supérieur | printer_draw_pie


printer_draw_pie

(no version information, might be only in CVS)

printer_draw_pie -- Dessine un secteur angulaire

Description

void printer_draw_pie ( resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad1_x, int rad1_y, int rad2_x, int rad2_y)

printer_draw_pie() dessine un secteur angulaire. handle doit être une ressource d'imprimante valide.

rec_x est l'abscisse supérieure gauche du rectangle d'encadrement.

rec_y est l'ordonnée supérieure gauche du rectangle d'encadrement.

rec_x1 est l'abscisse inférieure droite du rectangle d'encadrement.

rec_y1 est l'ordonnée inférieure droite du rectangle d'encadrement.

rad_x est l'abscisse du point de début de l'arc.

rad_y est l'ordonnée du point de début de l'arc.

rad_x1 est l'abscisse du point de fin de l'arc.

rad_y1 est l'ordonnée du point de fin de l'arc.

Exemple 1. Exemple avec printer_draw_pie()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_pie($handle, 1, 1, 500, 500, 1, 1, 500, 1);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_line | Niveau supérieur | printer_draw_rectangle


printer_draw_rectangle

(no version information, might be only in CVS)

printer_draw_rectangle -- Dessine un rectangle

Description

void printer_draw_rectangle ( resource handle, int ul_x, int ul_y, int lr_x, int lr_y)

printer_draw_rectangle() dessine un rectangle.

handle doit être une ressource d'imprimante valide.

ul_x est l'abscisse du coin supérieur gauche du rectangle.

ul_y est l'ordonnée du coin supérieur gauche du rectangle.

lr_x est l'abscisse du coin inférieur droit du rectangle.

lr_y est l'ordonnée du coin inférieur droit du rectangle.

Exemple 1. Exemple avec printer_draw_rectangle()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_rectangle($handle, 1, 1, 500, 500);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_pie | Niveau supérieur | printer_draw_roundrect


printer_draw_roundrect

(no version information, might be only in CVS)

printer_draw_roundrect -- Dessine un rectangle, avec des coins arrondis

Description

void printer_draw_roundrect ( resource handle, int ul_x, int ul_y, int lr_x, int lr_y, int width, int height)

printer_draw_roundrect() dessine un rectangle, avec des coins arrondis.

handle doit être une ressource d'imprimante valide.

ul_x est l'abscisse du coin supérieur gauche du rectangle.

ul_y est l'ordonnée du coin supérieur gauche du rectangle.

lr_x est l'abscisse du coin inférieur droit du rectangle.

lr_y est l'ordonnée du coin inférieur droit du rectangle.

width est la largeur de l'ellipse.

height est la longueur de l'ellipse.

Exemple 1. Exemple avec printer_draw_roundrect()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_roundrect($handle, 1, 1, 500, 500, 200, 200);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_rectangle | Niveau supérieur | printer_draw_text


printer_draw_text

(no version information, might be only in CVS)

printer_draw_text -- Dessine un texte

Description

void printer_draw_text ( resource printer_handle, string text, int x, int y)

printer_draw_text() dessine le texte text à la position x, y, en utilisant la police de caractères courante. printer_handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_draw_text()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$font = printer_create_font("Arial",72,48,400,false,false,false,0);
printer_select_font($handle, $font);
printer_draw_text($handle, "test", 10, 10);
printer_delete_font($font);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_draw_roundrect | Niveau supérieur | printer_end_doc


printer_end_doc

(no version information, might be only in CVS)

printer_end_doc -- Ferme le document

Description

bool printer_end_doc ( resource handle)

printer_end_doc ferme le document dans la file d'attente de l'imprimante. Il est maintenant prêt à être imprimé. Pour un exemple, voyez la fonction printer_start_doc(). handle doit être une ressource d'imprimante valide.

Précédent | Sommaire | Suivant
printer_draw_text | Niveau supérieur | printer_end_page


printer_end_page

(no version information, might be only in CVS)

printer_end_page -- Ferme la page active

Description

bool printer_end_page ( resource handle)

printer_end_page() ferme la page active du document en cours. Pour un exemple, voyez la fonction printer_start_doc(). handle doit être une ressource d'imprimante valide.

Précédent | Sommaire | Suivant
printer_end_doc | Niveau supérieur | printer_get_option


printer_get_option

(no version information, might be only in CVS)

printer_get_option -- Lit les informations de configuration de l'imprimante

Description

mixed printer_get_option ( resource handle, string option)

printer_get_option() lit la configuration de l'option option. handle doit être une ressource d'imprimante valide. Lisez la documentation de printer_set_option() pour connaître les valeurs possibles du paramètre option. De plus, les valeurs options suivantes sont accessibles en lecture :

  • PRINTER_DEVICENAME retourne le nom de device de l'imprimante.

  • PRINTER_DRIVERVERSION retourne la version du pilote de l'imprimante.

Exemple 1. Exemple avec printer_get_option()

<?php
$handle = printer_open();
print printer_get_option($handle, PRINTER_DRIVERVERSION);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_end_page | Niveau supérieur | printer_list


printer_list

(no version information, might be only in CVS)

printer_list -- Retourne la liste des imprimantes attachées à un serveur

Description

array printer_list ( int enumtype [, string name [, int level]])

printer_list() liste les imprimantes disponibles et leur fonctionnalités. level représente le niveau d'information demandé. Il peut prendre les valeurs de 1,2,4 ou 5. enumtype doit être l'une des constantes suivantes :

  • PRINTER_ENUM_LOCAL: liste les imprimantes locales.

  • PRINTER_ENUM_NAME: liste des imprimantes de name, qui peut être un serveur, un domaine ou un fournisseur d'impression.

  • PRINTER_ENUM_SHARED: ce paramètre ne peut être utilisé seul, il doit être combiné avec d'autres paramètres, grâce à l'opérateur OR. PRINTER_ENUM_SHARED détecte les imprimantes localement partagées.

  • PRINTER_ENUM_DEFAULT: (Win9.x uniquement) liste l'imprimante par défaut.

  • PRINTER_ENUM_CONNECTIONS: (WinNT/2000 uniquement) liste les imprimantes avec lesquelles l'utilisateur a établit une connexion.

  • PRINTER_ENUM_NETWORK: (WinNT/2000 uniquement) liste les imprimantes réseau du domaine de l'ordinateur. Valide uniquement si level vaut 1.

  • PRINTER_ENUM_REMOTE: (WinNT/2000 uniquement) liste les imprimantes réseau et les serveurs d'impression du domaine de l'ordinateur. Valide uniquement si level vaut 1.

Exemple 1. Exemple avec printer_list()

<?php
/* liste les imprimantes partag&eacute;es locales */
var_dump( printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED) );
?>

Précédent | Sommaire | Suivant
printer_get_option | Niveau supérieur | printer_logical_fontheight


printer_logical_fontheight

(no version information, might be only in CVS)

printer_logical_fontheight -- Lit la taille logique de la police

Description

int printer_logical_fontheight ( resource handle, int height)

printer_logical_fontheight() calcule la taille logique de la police pour la taille de height. handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_logical_fontheight()

<?php
$handle = printer_open();
print printer_logical_fontheight($handle, 72);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_list | Niveau supérieur | printer_open


printer_open

(no version information, might be only in CVS)

printer_open -- Ouvre une connexion à une imprimante

Description

mixed printer_open ( [string devicename])

printer_open() tente d'ouvrir une connexion à l'imprimante devicename, puir retourne une ressource en cas de succès, et FALSE sinon.

Si aucun paramètre n'est fourni, printer_open() tente d'ouvrir une connexion avec l'imprimante par défaut. Si elle n'est pas détectée dans le fichier php.ini avec la directive printer.default_printer, PHP essaie de la détecter.

printer_open() initialise aussi un contexte d'impression.

Exemple 1. Exemple avec printer_open()

<?php
$handle = printer_open("HP Deskjet 930c");
$handle = printer_open();
?>

Précédent | Sommaire | Suivant
printer_logical_fontheight | Niveau supérieur | printer_select_brush


printer_select_brush

(no version information, might be only in CVS)

printer_select_brush -- Sélectionne une brosse

Description

void printer_select_brush ( resource printer_handle, resource brush_handle)

printer_select_brush() sélectionne la brosse brush_handle comme brosse active pour la connexion à l'imprimante printer_handle. Une brosse est utilisée pour remplir des surfaces. Si vous dessinez un rectangle, une brosse sera nécessaire pour dessiner le contenu, et un stylo pour dessiner les bords. Si vous n'avez pas sélectionné de brosse avant de dessiner des formes, elles ne seront pas remplies. printer_handle doit être une ressource d'imprimante valide. brush_handle doit être une ressource de brosse valide.

Exemple 1. Exemple avec printer_select_brush()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);
$brush = printer_create_brush(PRINTER_BRUSH_CUSTOM, "c:\\brush.bmp");
printer_select_brush($handle, $brush);

printer_draw_rectangle($handle, 1,1,500,500);

printer_delete_brush($brush);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "000000");
printer_select_brush($handle, $brush);
printer_draw_rectangle($handle, 1,501,500,1001);
printer_delete_brush($brush);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_open | Niveau supérieur | printer_select_font


printer_select_font

(no version information, might be only in CVS)

printer_select_font -- Sélectionne une police de caractères

Description

void printer_select_font ( resource printer_handle, resource font_handle)

printer_select_font() sélectionne la police font_handle pour écrire le texte sur la connexion à l'imprimante printer_handle. printer_handle doit être une ressource d'imprimante valide. font_handle doit être une ressource de police de caractères valide.

Exemple 1. Exemple avec printer_select_font()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$font = printer_create_font("Arial", 148, 76, PRINTER_FW_MEDIUM, false, false, false, -50);
printer_select_font($handle, $font);
printer_draw_text($handle, "PHP est tout simplement g&eacute;nial", 40, 40);
printer_delete_font($font);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_select_brush | Niveau supérieur | printer_select_pen


printer_select_pen

(no version information, might be only in CVS)

printer_select_pen -- Sélectionne un stylo

Description

void printer_select_pen ( resource printer_handle, resource pen_handle)

printer_select_pen() sélectionne le stylo pen_handle comme stylo actif pour la connexion à l'imprimante printer_handle. Un stylo est utilisé pour dessiner des lignes et des courbes. Autrement dit, si vous dessinez une ligne, le stylo sera utilisé. Si vous dessinez un rectangle, le style sera utilisé pour dessiner les contours tandis que la brosse sera utilisée pour remplir le contenu. Si vous n'avez pas sélectionné de stylo avant de dessiner des formes, elles ne seront pas tracées. printer_handle doit être une ressource d'imprimante valide. pen_handle doit être une ressource de stylo valide.

Exemple 1. Exemple avec printer_select_pen()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 30, "2222FF");
printer_select_pen($handle, $pen);

printer_draw_line($handle, 1, 60, 500, 60);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_select_font | Niveau supérieur | printer_set_option


printer_set_option

(no version information, might be only in CVS)

printer_set_option -- Configure la connexion à l'imprimante

Description

bool printer_set_option ( resource handle, int option, mixed value)

printer_set_option modifie les options suivantes pour la connexion à l'imprimante handle. handle doit être une ressource d'imprimante valide. option peut être l'une des constantes suivantes :

  • PRINTER_COPIES : indique le nombre de copie à imprimer. value doit être un entier.

  • PRINTER_MODE : spécifie le type de data ("text", "raw' ou "emf"), valuedoit être une chaîne de caractères.

  • PRINTER_TITLE : spécifie le nom du document, value doit être une chaîne de caractères.

  • PRINTER_ORIENTATION : spécifie l'orientation du papier, value peut être PRINTER_ORIENTATION_PORTRAIT ou PRINTER_ORIENTATION_LANDSCAPE

  • PRINTER_RESOLUTION_Y : spécifie la résolution en ordonnées, en DPI, value doit être un entier.

  • PRINTER_RESOLUTION_X : spécifie la résolution en abscisse, en DPI, value doit être un entier.

  • PRINTER_PAPER_FORMAT : spécifie un format de papier prédéfini : donnez à value la valeur de PRINTER_FORMAT_CUSTOM si vous souhaitez utiliser un format de papier personnalisé, grâce aux constantes PRINTER_PAPER_WIDTH et PRINTER_PAPER_LENGTH. value peut alors être l'une des constantes suivantes :

    • PRINTER_FORMAT_CUSTOM : vous laisse spécifier le format de papier.

    • PRINTER_FORMAT_LETTER : spécifie le format standard "letter" (8 1/2 par 11 pouces (2.54cm)).

    • PRINTER_FORMAT_LETTER : spécifie le format standard "legal" (8 1/2 par 14 pouces (2.54cm)).

    • PRINTER_FORMAT_A3 : spécifie le format standard "A3" (297 par 420 millimètres).

    • PRINTER_FORMAT_A4 : spécifie le format standard "A4" (210 par 297 millimètres).

    • PRINTER_FORMAT_A5 : spécifie le format standard "A5" (148 par 210 millimètres).

    • PRINTER_FORMAT_B4 : spécifie le format standard "B4" (250 par 354 millimètres).

    • PRINTER_FORMAT_B5 : spécifie le format standard "B5" (182 par 257 millimètres).

    • PRINTER_FORMAT_FOLIO : spécifie le format standard "FOLIO" (8 1/2 par 13 pouces (2.54cm)).

  • PRINTER_PAPER_LENGTH : si PRINTER_PAPER_FORMAT vaut PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_LENGTH spécifie une longueur personnalisée de papier, en millimètres. value doit être un entier.

  • PRINTER_PAPER_WIDTH : si PRINTER_PAPER_FORMAT vaut PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_WIDTH spécifie une largeur personnalisée de papier, en millimètres. value doit être un entier.

  • PRINTER_SCALE : spécifie le facteur de mise à l'échelle du document. La taille physique de la page imprimée est alors mise à l'échelle avec un facteur égal à value/100. Par exemple, si vous donnez un facteur d'échelle de 50, l'impression sera de la moitié de la taille du document original. value doit être un entier.

  • PRINTER_BACKGROUND_COLOR : spécifie la couleur de fond pour le contexte actuel. value doit être une chaîne de caractères contenant une couleur au format RGB hexadécimal : par exemple, "005533".

  • PRINTER_TEXT_COLOR : spécifie la couleur du texte pour ce contexte d'imprimante. value doit être une chaîne de caractères contenant une couleur au format RGB hexadécimal : par exemple, "005533".

  • PRINTER_TEXT_ALIGN : spécifie l'alignement du texte pour le contexte d'imprimante. value peut être une combinaison, avec l'opérateur OR, des constantes suivantes :

    • PRINTER_TA_BASELINE : le texte sera aligné sur la ligne de base.

    • PRINTER_TA_BOTTOM : le texte sera aligné sur la ligne de fond.

    • PRINTER_TA_TOP : le texte sera aligné sur la ligne de haut.

    • PRINTER_TA_CENTER : le texte sera centré.

    • PRINTER_TA_LEFT : le texte sera aligné à gauche.

    • PRINTER_TA_RIGHT : le texte sera aligné à droite.

Exemple 1. Exemple avec printer_set_option()

<?php
$handle = printer_open();
printer_set_option($handle, PRINTER_SCALE, 75);
printer_set_option($handle, PRINTER_TEXT_ALIGN, PRINTER_TA_LEFT);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_select_pen | Niveau supérieur | printer_start_doc


printer_start_doc

(no version information, might be only in CVS)

printer_start_doc -- Commence un nouveau document

Description

bool printer_start_doc ( resource handle [, string document])

printer_start_doc() crée un nouveau document dans la file d'attente de l'imprimante handle. Un document peut contenir plusieurs pages, et il est programmé pour s'imprimer. handle doit être une ressource d'imprimante valide. Le paramètre optionnel document sert à donner un nom au document.

Exemple 1. Exemple avec printer_start_doc()

<?php
$handle = printer_open();
printer_start_doc($handle, "Mon Document");
printer_start_page($handle);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_set_option | Niveau supérieur | printer_start_page


printer_start_page

(no version information, might be only in CVS)

printer_start_page -- Commence une nouvelle page

Description

bool printer_start_page ( resource handle)

printer_start_page() crée une nouvelle page pour le document actif. Pour un exemple, voyez la fonction printer_start_doc(). handle doit être une ressource d'imprimante valide.

Précédent | Sommaire | Suivant
printer_start_doc | Niveau supérieur | printer_write


printer_write

(no version information, might be only in CVS)

printer_write -- Ecrit des données sur l'imprimante

Description

bool printer_write ( resource handle, string content)

printer_write() écrit le contenu de la variable content directement sur l'imprimante handle. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

handle doit être une ressource d'imprimante valide.

Exemple 1. Exemple avec printer_write()

<?php
$handle = printer_open();
printer_write($handle, "Texte &agrave; imprimer");
printer_close($handle);
?>

Précédent | Sommaire | Suivant
printer_start_page | Niveau supérieur | Pspell


Pspell

Manuel PHP
Précédent Suivant

LXXXVII. Pspell

Introduction

La librairie pspell vous permet de vérifier l'orthographe d'un mot, et suggérer des corrections.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Vous aurez besoin des librairies aspell et pspell, disponibles à http://aspell.sourceforge.net/ et http://aspell.net/ (respectivement). Il faut aussi ajouter l'option --with-pspell[=dir] lors de la compilation de PHP.

Installation

Si vous avez installé les librairies PSPELL, vous devez simplement ajouter l'option --with-pspell[=dir], lors de la compilation de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

PSPELL_FAST (entier)

PSPELL_NORMAL (entier)

PSPELL_BAD_SPELLERS (entier)

PSPELL_RUN_TOGETHER (entier)

Table des matières
pspell_add_to_personal -- Ajoute le mot au dictionnaire personnel
pspell_add_to_session -- Ajoute le mot au dictionnaire personnel de la session courante
pspell_check -- Vérifie un mot
pspell_clear_session -- Remet à zéro la session courante
pspell_config_create -- Crée une configuration utilisée pour ouvrir un dictionnaire
pspell_config_ignore -- Ignore les mots des moins de N caractères
pspell_config_mode -- Change le mode de suggestion
pspell_config_personal -- Choisit le fichier qui contient le dictionnaire personnel
pspell_config_repl -- Choisit le fichier qui contient les paires de remplacement
pspell_config_runtogether -- Considère deux mots accolés comme un composé.
pspell_config_save_repl -- Active la sauvegarde des paires de remplacement
pspell_new_config -- Charge un nouveau dictionnaire
pspell_new_personal -- Charge un nouveau dictionnaire avec un dictionnaire personnel
pspell_new -- Charge un nouveau dictionnaire
pspell_save_wordlist -- Sauve le dictionnaire personnel dans un fichier
pspell_store_replacement -- Enregistre une paire de remplacement pour un mot
pspell_suggest -- Suggère une orthographe

Précédent | Sommaire | Suivant
printer_write | Niveau supérieur | pspell_add_to_personal


pspell_add_to_personal

(PHP 4 >= 4.0.2)

pspell_add_to_personal -- Ajoute le mot au dictionnaire personnel

Description

int pspell_add_to_personal ( int dictionary_link, string word)

pspell_add_to_personal() ajoute un mot au dictionnaire personnel. Si vous utilisez pspell_new_config() avec pspell_config_personal() pour ouvrir le dictionnaire, vous pourrez sauver le dictionnaire personnel ultérieurement avec pspell_save_wordlist(). Notez bien que cette fonction ne fonctionnera pas avec les versions antérieures pspell .11.2 et aspell .32.5.

Exemple 1. Exemple avec pspell_add_to_personal()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config ($pspell_config);
pspell_add_to_personal ($pspell_link, "Vlad");
pspell_save_wordlist ($pspell_link);
?>

Précédent | Sommaire | Suivant
Pspell | Niveau supérieur | pspell_add_to_session


pspell_add_to_session

(PHP 4 >= 4.0.2)

pspell_add_to_session -- Ajoute le mot au dictionnaire personnel de la session courante

Description

int pspell_add_to_session ( int dictionary_link, string word)

pspell_add_to_session() ajoute un mot au dictionnaire personnel associé à la version courante. C'est une fonction similaire à pspell_add_to_personal().

Précédent | Sommaire | Suivant
pspell_add_to_personal | Niveau supérieur | pspell_check


pspell_check

(PHP 4 >= 4.0.2)

pspell_check -- Vérifie un mot

Description

bool pspell_check ( int dictionary_link, string word)

pspell_check() vérifie l'orthographe d'un mot et retourne TRUE si l'orthographe est correcte, FALSE sinon.

Exemple 1. pspell_check()

<?php
$pspell_link = pspell_new ("french");
if (pspell_check ($pspell_link, "testt")) {
    echo "L'orthographe est exacte";
} else {
    echo "D&eacute;sol&eacute;, mauvaise orthographe";
}
?>

Précédent | Sommaire | Suivant
pspell_add_to_session | Niveau supérieur | pspell_clear_session


pspell_clear_session

(PHP 4 >= 4.0.2)

pspell_clear_session -- Remet à zéro la session courante

Description

int pspell_clear_session ( int dictionary_link)

pspell_clear_session() remet à zéro la session courante. Le dictionnaire personnel est vidé, et par exemple si vous tentez de l'enregistrer avec pspell_save_wordlist(), rien ne se passera.

Exemple 1. Exemple avec pspell_add_to_personal()

<?php
  $pspell_config = pspell_config_create ("en");
  pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
  $pspell_link = pspell_new_config ($pspell_config);
  pspell_add_to_personal ($pspell_link, "Vlad");
  pspell_clear_session ($pspell_link);
  pspell_save_wordlist ($pspell_link);	//"Vlad" ne sera pas sauv&eacute;
?>

Précédent | Sommaire | Suivant
pspell_check | Niveau supérieur | pspell_config_create


pspell_config_create

(PHP 4 >= 4.0.2)

pspell_config_create -- Crée une configuration utilisée pour ouvrir un dictionnaire

Description

int pspell_config_create ( string language [, string spelling [, string jargon [, string encoding]]])

   pspell_config_create() a une syntaxe similaire à
pspell_new(). En fait, utiliser
pspell_config_create() suivi immédiatement
par pspell_new_config() produira exactement le
même résultat. Cependant, après avoir créer
une nouvelle configuration, vous pouvez aussi utiliser les fonctions
pspell_config_* avant d'appeler pspell_new_config()
pour tirer profit des fonctionnalités avancées.

Le paramètre de langage est le code de langue en deux lettres, défini dans la norme ISO 639, et deux lettres optionnelles ISO 3166, après un tiret ou un souligné (_).

Le paramètre d'orthographe spelling est nécessaire pour les langues qui ont plus d'une orthographe, comme l'anglais. Les valeurs reconnues sont alors 'american' (américain) , 'british' (anglais), et 'canadian' (canadien).

Le paramètre de jargon jargon contient des informations supplémentaires pour distinguer deux dictionnaires distincts pour la même langue et le même paramètre d'orthographe spelling.

Le paramètre d'encodage indique l'encodage attendu pour la réponse. Les valeurs valides sont : 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. Ce paramètre n'a pas été testé de manière exhaustive, alors soyez prudent.

Le paramètre de mode est le mode de travail du vérificateur d'orthographe. Plusieurs modes sont disponibles :

  • PSPELL_FAST - Mode rapide (moins de suggestions, plus de vitesse)

  • PSPELL_NORMAL - Mode normal mode (plus de suggestions)

  • PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de suggestions, moins de vitesse)

Pour plus d'informations et d'exemples, vérifiez le manuel pspell sur leur site web :http://aspell.net/.

Exemple 1. Exemple avec pspell_config_create()

<?php
  $pspell_config = pspell_config_create ("en");
  pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
  pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
  $pspell_link = pspell_new_personal (pspell_config);
?>

Précédent | Sommaire | Suivant
pspell_clear_session | Niveau supérieur | pspell_config_ignore


pspell_config_ignore

(PHP 4 >= 4.0.2)

pspell_config_ignore -- Ignore les mots des moins de N caractères

Description

int pspell_config_ignore ( int dictionary_link, int n)

pspell_config_ignore() doit être utilisé avec une configuration avant d'appeler pspell_new_config(). Cette fonction permet au vérificateur d'ignorer les mots trop courts.

Exemple 1. Exemple avec pspell_config_ignore()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_ignore($pspell_config, 5);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "abcd");	// Ce mot ne provoquera pas d'erreur
?>

Précédent | Sommaire | Suivant
pspell_config_create | Niveau supérieur | pspell_config_mode


pspell_config_mode

(PHP 4 >= 4.0.2)

pspell_config_mode -- Change le mode de suggestion

Description

int pspell_config_mode ( int dictionary_link, int mode)

pspell_config_mode() doit être appelé avant pspell_new_config(). Cette fonction détermine le nombre de suggestions qui seront retournés par pspell_suggest().

Le paramètre de mode est le mode de travail du vérificateur d'orthographe. Plusieurs modes sont disponibles :

  • PSPELL_FAST - Mode rapide (moins de suggestions, plus de vitesse)

  • PSPELL_NORMAL - Mode normal mode (plus de suggestions)

  • PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de suggestions, moins de vitesse)

Exemple 1. Exemple avec pspell_config_mode()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_mode($pspell_config, PSPELL_FAST);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");
?>

Précédent | Sommaire | Suivant
pspell_config_ignore | Niveau supérieur | pspell_config_personal


pspell_config_personal

(PHP 4 >= 4.0.2)

pspell_config_personal -- Choisit le fichier qui contient le dictionnaire personnel

Description

int pspell_config_personal ( int dictionary_link, string file)

pspell_config_personal() doit être appelé dans une configuration avant d'appeler pspell_new_config(). Le dictionnaire personnel sera chargé est utilisé en plus du dictionnaire standard, une fois que vous aurez appelé pspell_new_config(). Si le fichier n'existe pas, il sera créé. Ce fichier sera aussi le fichier où pspell_save_wordlist() sauvera le dictionnaire personnel. Ce fichier devra donc être accessible en écriture par PHP. Notez que cette fonction ne fonctionne pas avec les versions antérieures à pspell .11.2 et aspell .32.5.

Exemple 1. Exemple avec pspell_config_personal()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config ($pspell_config);
pspell_check ($pspell_link, "thecat");
?>

Précédent | Sommaire | Suivant
pspell_config_mode | Niveau supérieur | pspell_config_repl


pspell_config_repl

(PHP 4 >= 4.0.2)

pspell_config_repl -- Choisit le fichier qui contient les paires de remplacement

Description

int pspell_config_repl ( int dictionary_link, string file)

pspell_config_repl() doit être appelé dans une configuration avant d'appeler pspell_new_config(). Les paires de remplacement améliorent la qualité du vérificateur. Lorsqu'un mot est mal orthographié et qu'aucune suggestion valable n'est trouvée dans le dictionnaire, pspell_store_replacement() sera utilisé pour enregistrer une paire de remplacement et pspell_save_wordlist() pour sauver le dictionnaire avec les paires de remplacement. Ce fichier devra donc être accessible en écriture par PHP. Notez que cette fonction ne fonctionne pas avec les versions antérieures à pspell .11.2 et aspell .32.5.

Exemple 1. Exemple avec pspell_config_repl()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config ($pspell_config);
pspell_check ($pspell_link, "thecat");
?>

Précédent | Sommaire | Suivant
pspell_config_personal | Niveau supérieur | pspell_config_runtogether


pspell_config_runtogether

(PHP 4 >= 4.0.2)

pspell_config_runtogether -- Considère deux mots accolés comme un composé.

Description

int pspell_config_runtogether ( int dictionary_link, bool flag)

pspell_config_runtogether() doit être appelé dans une configuration avant d'appeler pspell_new_config(). Cette fonction indique si deux mots accolés doivent être traités comme un composé valide, même si il devrait y avoir un espace entre ces deux mots. Modifier cette configuration n'affecte que les résultats retournés par pspell_check(); pspell_suggest() retournera toujours des suggestions.

Exemple 1. Exemple avec pspell_config_runtogether()

<?php
  $pspell_config = pspell_config_create ("en");
  pspell_config_runtogether ($pspell_config, &true;);
  $pspell_link = pspell_new_config ($pspell_config);
  pspell_check ($pspell_link, "thecat");
?>

Précédent | Sommaire | Suivant
pspell_config_repl | Niveau supérieur | pspell_config_save_repl


pspell_config_save_repl

(PHP 4 >= 4.0.2)

pspell_config_save_repl -- Active la sauvegarde des paires de remplacement

Description

int pspell_config_save_repl ( int dictionary_link, bool flag)

pspell_config_save_repl() doit être appelé dans une configuration avant d'appeler pspell_new_config(). Elle détermine si pspell_save_wordlist() doit sauver les paires de remplacement avec le dictionnaire. Généralement, il n'y a pas besoin d'utiliser cette fonction car si pspell_config_repl() est utilisée, les paires de remplacement seront sauvées de toutes façons, et si ce n'est pas le cas, elles ne seront pas sauvées. Ce fichier devra donc être accessible en écriture par PHP. Notez que cette fonction ne fonctionne pas avec les versions antérieures à pspell .11.2 et aspell .32.5.

Précédent | Sommaire | Suivant
pspell_config_runtogether | Niveau supérieur | pspell_new_config


pspell_new_config

(PHP 4 >= 4.0.2)

pspell_new_config -- Charge un nouveau dictionnaire

Description

int pspell_new_config ( int config)

pspell_new_config() ouvre un nouveau dictionnaire et charge les paramètrages spécifié dans la configuration config, créée avec pspell_config_create() et modifiée avec les fonctions pspell_config_*. Cette méthode vous donne le maximum de flexibilité, et dispose de toutes les fonctionnalités fournies par pspell_new() et pspell_new_personal().

Le paramètre de configuration est celui qui a été retourné par pspell_config_create() lors de création de la configuration.

Exemple 1. Exemple avec pspell_new_config()

<?php
  $pspell_config = pspell_config_create ("en");
  pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
  pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
  $pspell_link = pspell_new_personal (pspell_config);
?>

Précédent | Sommaire | Suivant
pspell_config_save_repl | Niveau supérieur | pspell_new_personal


pspell_new_personal

(PHP 4 >= 4.0.2)

pspell_new_personal -- Charge un nouveau dictionnaire avec un dictionnaire personnel

Description

int pspell_new_personal ( string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])

pspell_new_personal() charge un nouveau dictionnaire avec un dictionnaire personnel, et retourne un identifiant de dictionnaire utilisé par d'autres fonctions pspells. Le dictionnaire peut être modifiée et sauvé avec pspell_save_wordlist(). Cependant, les paires de remplacement ne seront pas sauvées. Pour ce faire, vous devez créer une configuration qui utilise pspell_config_create(), et choisir le fichier de destination du dictionnaire personnel avec pspell_config_personal(), choisir le fichier de paire de remplacement avec pspell_config_repl(), et ouvrir un nouveau dictionnaire avec pspell_new_config().

Le paramètre personal spécifie le fichier où seront ajoutés les mots du dictionnaire personnel. Ce doit être un chemin absolu, qui commence par '/' car sinon, il sera relatif à $HOME, qui est "/root" sur la plupart des systèmes, et probablement pas ce que vous souhaitez.

Le paramètre de langage est le code de langue en deux lettres, défini dans la norme ISO 639, et deux lettres optionnelles ISO 3166, après un tiret ou un souligné (_).

Le paramètre d'orthographe spelling est nécessaire pour les langues qui ont plus d'une orthographe, comme l'anglais. Les valeurs reconnues sont alors 'american' (américain) , 'british' (anglais), et 'canadian' (canadien).

Le paramètre de jargon jargon contient des informations supplémentaires pour distinguer deux dictionnaires distincts pour la même langue et le même paramètre d'orthographe spelling.

Le paramètre d'encodage indique l'encodage attendu pour la réponse. Les valeurs valides sont : 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. Ce paramètre n'a pas été testé de manière exhaustive, alors soyez prudent.

Le paramètre de mode est le mode de travail du vérificateur d'orthographe. Plusieurs modes sont disponibles :

  • PSPELL_FAST - Mode rapide (moins de suggestions, plus de vitesse)

  • PSPELL_NORMAL - Mode normal mode (plus de suggestions)

  • PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de suggestions, moins de vitesse)

Pour plus d'informations et d'exemples, vérifiez le manuel pspell sur leur site web :http://aspell.net/.

Exemple 1. Exemple avec pspell_new_personal()

<?php
  $pspell_link = pspell_new_personal ("/var/dictionaries/custom.pws",
                                      "en", "", "", "",
                                      PSPELL_FAST | PSPELL_RUN_TOGETHER));
?>

Précédent | Sommaire | Suivant
pspell_new_config | Niveau supérieur | pspell_new


pspell_new

(PHP 4 >= 4.0.2)

pspell_new -- Charge un nouveau dictionnaire

Description

int pspell_new ( string language [, string spelling [, string jargon [, string encoding [, int mode]]]])

pspell_new() ouvre un nouveau dictionnaire et retourne un identifiant de dictionnaire, pour utiliser avec d'autres fonctions pspell.

Le paramètre de langue spelling est constitué des deux lettres du codage de langue ISO 639, et du codage optionnel de pays ISO 3166, séparé par un '_'.

Ce paramètre est nécessaire pour les langues qui ont plus d'une orthographe, comme l'anglais ou le français. Les valeurs reconnues sont ``americain'', ``britannique'', et ``canadien''.

Le paramètre jargon contient des informations supplémentaires pour distinguer deux listes de mots qui ont le même marquage de langue et d'orthographe.

Le paramètre encoding est le type d'encodage des mots. Les valeurs valides sont 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'.

Le paramètre mode est le mode de travail du vérificateur d'orthographe. Plusieurs modes sont disponibles :

  • PSPELL_FAST - Mode rapide (moins de suggestions, plus de vitesse)

  • PSPELL_NORMAL - Mode normal mode (plus de suggestions)

  • PSPELL_BAD_SPELLERS - Mode lent (beaucoup plus de suggestions, moins de vitesse)

  • PSPELL_RUN_TOGETHER - Considère que des mots accolés forment un vomposé autorisé. C'est à dire que "lechat" sera un composé valide. Cette option ne modifie que les résutlat retournés par pspell_check(); pspell_suggest() retournera toujours les mêmes suggestions.

mode est un champ de bit, construits à partir des constantes listées ci dessus. Cependant, PSPELL_FAST, PSPELL_NORMAL et PSPELL_BAD_SPELLERS sont mutuellement exclusives : vous ne devez en utiliser qu'une seule en même temps.

Pour plus d'informations et d'exemples, reportez vous au site http://aspell.net/ (en anglais).

Exemple 1. Exemple avec pspell_new()

<?php
  $pspell_link = pspell_new("en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER);
?>

Précédent | Sommaire | Suivant
pspell_new_personal | Niveau supérieur | pspell_save_wordlist


pspell_save_wordlist

(PHP 4 >= 4.0.2)

pspell_save_wordlist -- Sauve le dictionnaire personnel dans un fichier

Description

int pspell_save_wordlist ( int dictionary_link)

pspell_save_wordlist() sauve le dictionnaire personnel de la session courante. Le dictionnaire doit avoir été ouvert avec pspell_new_personal(), et la localisation des fichiers doit avoir été spécifié avec pspell_config_personal() et (éventuellement) pspell_config_repl(). Notez que cette fonction n'est pas disponible avec les versions antérieures à pspell .11.2 et aspell .32.5.

Exemple 1. Exemple pspell_add_to_personal()

<?php
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/tmp/dicts/newdict");
$pspell_link = pspell_new_config ($pspell_config);
pspell_add_to_personal ($pspell_link, "Vlad");
pspell_save_wordlist ($pspell_link);
?>

Précédent | Sommaire | Suivant
pspell_new | Niveau supérieur | pspell_store_replacement


pspell_store_replacement

(PHP 4 >= 4.0.2)

pspell_store_replacement -- Enregistre une paire de remplacement pour un mot

Description

int pspell_store_replacement ( int dictionary_link, string misspelled, string correct)

pspell_store_replacement() enregistre une paire de remplacement pour un mot de façon à ce que cette suggestion soit retournée par pspell_suggest() plus tard. Pour pouvoir utiliser cette fonction, vous devez utiliser pspell_new_personal() pour ouvrir le dictionnaire. Pour pouvoir sauver tout le temps les paires de remplacement, vous devez utiliser pspell_config_personal() et pspell_config_repl() pour indiquer le lieu de sauvegarde des dictionnaires personnels, et pspell_save_wordlist() pour enregistrer les modifications sur le disque. Ce fichier devra donc être accessible en écriture par PHP. Notez que cette fonction ne fonctionne pas avec les versions antérieures à pspell .11.2 et aspell .32.5.

Exemple 1. Exemple avec pspell_store_replacement()

<?php
  $pspell_config = pspell_config_create ("en");
  pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
  pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
  $pspell_link = pspell_new_config ($pspell_config);
  pspell_store_replacement ($pspell_link, $misspelled, $correct);
  pspell_save_wordlist ($pspell_link);
?>

Précédent | Sommaire | Suivant
pspell_save_wordlist | Niveau supérieur | pspell_suggest


pspell_suggest

(PHP 4 >= 4.0.2)

pspell_suggest -- Suggère une orthographe

Description

array pspell_suggest ( int dictionary_link, string word)

pspell_suggest() retourne un tableau de suggestions pour le mot word.

Exemple 1. Exemple avec pspell_suggest()

<?php
$pspell_link = pspell_new ("english");
if (!pspell_check ($pspell_link, "testt")){
    $suggestions = pspell_suggest ($pspell_link, "testt");
    for ($i=0; $i < count ($suggestions); $i++) {
        echo "Orthographes sugg&eacute;r&eacute;es : " . $suggestions[$i] . "<br>";
    }
}
?>

Précédent | Sommaire | Suivant
pspell_store_replacement | Niveau supérieur | Readline (GNU)


Readline (GNU)

Manuel PHP
Précédent Suivant

LXXXVIII. Readline (GNU)

Introduction

Les fonctions readline implémente une interface avec la librairie GNU Readline. Ces fonctions fournissent une ligne de commande éditable, un peu comme lorsque Bash vous permet d'utiliser les flèches de déplacement pour insérer un caractère ou passer en revue l'historique. A cause de l'interactivité de ces commande, elles ne seront que rarement utiles pour les applications Web, mais peuvent se révéler utiles lorsqu'un script est exécuté depuis une commande shell.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Pour utiliser les fonctions readline, vous devez installer la librairie libreadline. Vous pouvez la trouver sur la page du projet GNU, à http://cnswww.cns.cwru.edu/~chet/readline/rltop.html. Elle est maintenue par Chet Ramey, qui est l'auteur de Bash.

Vous pouvez aussi utiliser ces fonctions avec la librairie libedit, un remplacement de la librairie readline, qui n'est pas GPL. La librairie libedit est sous license BSD, et elle est disponible depuis http://sourceforge.net/projects/libedit/.

Installation

Pour utiliser ces fonctions, vous devez compiler PHP, en version CGI ou CLI. Vous devez aussi utiliser l'option de compilation --with-readline[=DIR]. Si vous souhaitez utiliser la librairie libedit readline, en remplacement, compilez PHP avec l'option --with-libedit[=DIR].

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
readline_add_history -- Ajoute une ligne à l'historique
readline_clear_history -- Efface l'historique
readline_completion_function -- Enregistre une fonction de complétion
readline_info -- Lit/modifie diverses variables internes
readline_list_history -- Liste l'historique
readline_read_history -- Lit l'historique
readline_write_history -- Ecrit dans l'historique
readline -- Lit une ligne

Précédent | Sommaire | Suivant
pspell_suggest | Niveau supérieur | readline_add_history


readline_add_history

(PHP 4 )

readline_add_history -- Ajoute une ligne à l'historique

Description

void readline_add_history ( string line)

readline_add_history() ajoute une ligne à l'historique.

Précédent | Sommaire | Suivant
Readline (GNU) | Niveau supérieur | readline_clear_history


readline_clear_history

(PHP 4 )

readline_clear_history -- Efface l'historique

Description

bool readline_clear_history ( void )

readline_clear_history() efface tout l'historique.

Précédent | Sommaire | Suivant
readline_add_history | Niveau supérieur | readline_completion_function


readline_completion_function

(PHP 4 )

readline_completion_function -- Enregistre une fonction de complétion

Description

bool readline_completion_function ( string line)

readline_completion_function() enregistre une nouvelle fonction de complétion. Vous devez fournir le nom d'une fonction qui accepte un nom partiel de commande, et retourne une liste de fonctions complète possibles. C'est la même fonctionnalité que lorsque vous utilisez la touche de tabulation sous Bash.

Précédent | Sommaire | Suivant
readline_clear_history | Niveau supérieur | readline_info


readline_info

(PHP 4 )

readline_info -- Lit/modifie diverses variables internes

Description

mixed readline_info ( [string varname [, string newvalue]])

Appelée sans paramètre, readline_info() retourne une tableau contenant les valeurs des paramètres de Readline. Les éléments seront indexés par les clés suivantes : done, end, erase_empty_line, library_version, line_buffer, mark, pending_input, point, prompt, readline_name, et terminal_name.

Appelée avec le paramètre varname, la valeur de cette variable sera retournée. Appelée avec deux paramètres, et la valeur de la variable varname, sera remplacée par newvalue.

Précédent | Sommaire | Suivant
readline_completion_function | Niveau supérieur | readline_list_history


readline_list_history

(PHP 4 )

readline_list_history -- Liste l'historique

Description

array readline_list_history ( void )

readline_list_history() retourne un tableau avec la liste de toutes les lignes de commandes de l'historique. Les éléments sont indexés numériquement, à partir de 0.

Précédent | Sommaire | Suivant
readline_info | Niveau supérieur | readline_read_history


readline_read_history

(PHP 4 )

readline_read_history -- Lit l'historique

Description

bool readline_read_history ( string filename)

readline_read_history() lit une ligne de l'historique.

Précédent | Sommaire | Suivant
readline_list_history | Niveau supérieur | readline_write_history


readline_write_history

(PHP 4 )

readline_write_history -- Ecrit dans l'historique

Description

bool readline_write_history ( string filename)

readline_write_history() écrit filename dans l'historique.

Précédent | Sommaire | Suivant
readline_read_history | Niveau supérieur | readline


readline

(PHP 4 )

readline -- Lit une ligne

Description

string readline ( [string prompt])

readline() retourne une ligne entrée par l'utilisateur. Vous pouvez spécifier une chaîne de prompt. La ligne retournée est débarassée du caractère nouvelle ligne final. Vous devez ajouter cette ligne à l'historique vous-même, avec la fonction readline_add_history().

Exemple 1. Exemple avec readline()

<?php
//Lit 3 commandes de l'utilisateur
for ($i=0; $i < 3; $i++) {
        $line = readline("Commande : ");
        readline_add_history($line);
}

//Liste l'historique
print_r(readline_list_history());

//liste les variables
print_r(readline_info());

?>

Précédent | Sommaire | Suivant
readline_write_history | Niveau supérieur | Recode (GNU)


Recode (GNU)

Manuel PHP
Précédent Suivant

LXXXIX. Recode (GNU)

Introduction

Ce module contient l'interface à la librairie GNU Recode library, version 3.5. La librairie GNU Recode library convertit les fichiers ayant des jeux de caractères différents. Lorsque ce n'est pas possible, elle se débarasse des caractères illégaux, ou bien effectue une approximation. La librairie reconnait ou produit près de 150 jeux de caractères différents, et peut quasiment tous les convertir de l'un vers l'autre. La plupart des jeux de caractères de la RFC 1345 sont supportés.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

il faut que vous ayez la librairie GNU Recode 3.5 ou plus récent, installée sur votre système. Vous pouvez télécharger GNU Recode ici.

Installation

Pour utiliser ces fonctions, vous devez compiler PHP avec l'option--with-recode[=DIR].

Avertissement

Des crashs et des problèmes de démarrage de PHP peuvent être rencontrés lorsque l'extension recode est chargée APRES les extensions mysql ou imap. Charger l'extension recode avant ces deux extensions corrige le problème. Ceci est dû à un problème technique car la librairie c-client de IMAP et recode ont toutes les deux leur propre fonction hash_lookup() et les extensions mysql et recode ont toutes les deux leur fonction hash_insert.

Avertissement

L'extension IMAP ne peut être utilisée simultanément avec l'extension recode ou l'extension YAZ. Ceci est dû au fait que ces deux librairies utilisent un symbole interne commun.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
recode_file -- Recode de fichier à fichier, en fonction de la requête.
recode_string -- Recode une chaîne en fonction de la requête
recode -- Recode une fonction grâce à une requête

Précédent | Sommaire | Suivant
readline | Niveau supérieur | recode_file


recode_file

(PHP 3>= 3.0.13, PHP 4 )

recode_file -- Recode de fichier à fichier, en fonction de la requête.

Description

bool recode_file ( string request, resource input, resource output)

recode_file() recode le fichier identifié par input dans le fichier identifié par output en fonction de la requête de recodage request. Retourne FALSE, en cas d'échec, et TRUE sinon.

recode_file() ne gère pas encore les fichiers distants (URLs). Les deux fichiers doivent faire référence à des fichiers locaux.

Exemple 1. Exemple simple avec recode_file()

<?php
  $input = fopen ('input.txt', 'r');
  $output = fopen ('output.txt', 'w');
  recode_file ("us..flat", $input, $output);
?>

Précédent | Sommaire | Suivant
Recode (GNU) | Niveau supérieur | recode_string


recode_string

(PHP 3>= 3.0.13, PHP 4 )

recode_string -- Recode une chaîne en fonction de la requête

Description

string recode_string ( string request, string string)

recode_string() recode la chaîne string en fonction de la requête request. recode_string() retourne FALSE, en cas d'échec, et TRUE sinon.

Une requête simple de recodage peut être "lat1..iso646-de". Reportez vous à la documentation GNU Recode de votre installation pour plus de détails sur les requêtes.

Exemple 1. Exemple simple avec recode_string()

<?php
  print recode_string("us..flat",
                        "Le caract&egrave;re suivant est diacritique : &aacute;");
?>

Précédent | Sommaire | Suivant
recode_file | Niveau supérieur | recode


recode

(PHP 4 )

recode -- Recode une fonction grâce à une requête

Description

string recode ( string request, string string)

Note : recode() est un alias de recode_string(). Elle a été ajoutée en PHP 4.

Précédent | Sommaire | Suivant
recode_string | Niveau supérieur | Expressions régulières compatibles Perl


Expressions régulières compatibles Perl

Manuel PHP
Précédent Suivant

XC. Expressions régulières compatibles Perl

Introduction

La syntaxe des masques utilisés dans ces fonctions ressemble fort à celle de Perl. Les expressions seront entourées de délimiteurs, slash (/), par exemple. N'importe quel caractère peut servir de délimiteur, tant qu'il n'est pas alpha-numérique ou n'est pas un antislash (\). Si un délimiteur doit être utilisé dans l'expression, il faudra l'échapper avec un antislash. Depuis PHP 4.0.4, vous pouvez utiliser les délimiteurs (), {}, [], et <>, comme en Perl.

Le délimiteur final peut être suivi d'options qui affecteront la recherche. Voir aussi options de recherche.

Pré-requis

Le support des expressions régulières est assuré par la librairie PCRE, qui est open source, et écrite par Philip Hazel. Elle est soumise au copyright de l'University of Cambridge, Angleterre. Elle est disponible à ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.

Installation

A partir de PHP 4.2.0, ces fonctions activées par défaut. Pour les anciennes versions, vous devez configurer et compiler PHP avec l'option --with-pcre-regex[=DIR] afin de pouvoir les utiliser. Vous pouvez aussi désactiver le support des expressions régulières avec l'option --without-pcre-regex.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Tableau 1. Constantes PREG

Constante | Description
PREG_PATTERN_ORDER | Ordonne les résultats de façon à ce que $matches[0] contienne les résultats qui correspondent au masque entier, $matches[1] contienne les résultats qui correspondent à la première parenthèse capturante, $matches[2] contienne les résultats qui correspondent à la deuxième parenthèse capturante, etc... Cette constante est utilisée avec preg_match_all().
PREG_SET_ORDER | Les résultats sont classés de telle façon que $matches[0] contient la première série de résultat, $matches[1] contient la deuxième série de résultat, etc... Cette constante est utilisée avec preg_match_all().
PREG_OFFSET_CAPTURE | Voir la description de PREG_SPLIT_OFFSET_CAPTURE. Cette constante est utilisée depuis PHP 4.3.0 .
PREG_SPLIT_NO_EMPTY | Si cette option est activée, seules les sous-chaînes non vides seront retournées par preg_split().
PREG_SPLIT_DELIM_CAPTURE | Si cette option est activée, les expressions entre parenthèses entre les délimiteurs de masques seront aussi capturées et retournées. Cette option a été ajoutée en PHP 4.0.5. Cette constante est utilisée avec preg_split().
PREG_SPLIT_OFFSET_CAPTURE | Si cette constante est utilisée avec preg_split(), l'offset de début de résultat sera retourné, en plus de la chaîne résultat. Notez que cela change la nature du résultat retourné en un tableau contenant une chaîne à l'offset 0 et une chaîne contenant un offset à l'offset 1. Cette option est disponible depuis PHP 4.3.0.

Exemples

Exemple 1. Exemples de masques valides

  • /<\/\w+>/

  • |(\d{3})-\d+|Sm

  • /^(?i)php[34]/

  • {^\s+(\s+)?$}

Exemple 2. Exemples de masques invalides

  • /href='(.*)' - délimiteur final manquant

  • /\w+\s*\w+/J - option 'J' inconnue

  • 1-\d3-\d3-\d4| - délimiteur initial manquant

Table des matières
options de recherche -- Options disponibles pour les expressions régulières.
syntaxe des masques -- Fonctionnement des expressions régulières.
preg_grep -- Retourne un tableau avec les résultat de la recherche
preg_match_all -- Expression régulière globale
preg_match -- Expression régulière standard
preg_quote -- Echappement des caractères spéciaux des expressions régulières.
preg_replace_callback -- Rechercher/remplacer avec une expression régulière et fonction de callback
preg_replace -- Rechercher et remplacer par expression régulière standard
preg_split -- Eclate une chaîne par expression régulière

Précédent | Sommaire | Suivant
recode | Niveau supérieur | options de recherche


options de recherche

options de recherche -- Options disponibles pour les expressions régulières.

Description

Les options de PCRE sont listées ci-dessous. Les noms entre parenthèses sont les noms internes à PCRE.

i (PCRE_CASELESS)

Effectue une recherche insensible à la casse.

m (PCRE_MULTILINE)

Par défaut, PCRE traite la chaîne sujet comme une seule ligne (même si cette chaîne contient des retours chariot). Le méta-caractère "début de ligne" (^) ne sera valable qu'une seule fois, au début de la ligne, et le méta caractère "fin de ligne " ($) ne sera valable qu'à la fin de la chaîne, ou avant le retour chariot final (à moins que l'option D ne soit activée). C'est le même fonctionnement qu'en Perl.

Lorsque cette option est activée, " début de ligne " et " fin de ligne " correspondront alors aux caractères suivant et précédent immédiatement un caractère de nouvelle ligne, en plus du début et de la fin de la chaîne. C'est le même fonctionnement que l'option Perl /m. S'il n'y a pas de caractère de nouvelle ligne "\n" dans la chaîne sujet, ou s'il n'y a aucune occurrence de ^ ou $ dans le masque, cette option ne sert à rien.

s (PCRE_DOTALL)

Avec cette option, le méta caractère point (.) remplace n'importe quel caractère, y compris les nouvelles lignes. Sans cette option, le caractère point ne remplace pas les nouvelles lignes. Cette option est équivalente à l'option Perl /s. Une classe de caractères négative telle que [^a] acceptera toujours les caractères de nouvelles lignes, indépendamment de cette option.

x (PCRE_EXTENDED)

Avec cette option, les caractères d'espacement sont ignorés, sauf lorsqu'ils sont échappés, ou à l'intérieur d'une classe de caractères, et tous les caractères entre # non échappés et en dehors d'une classe de caractères, et le prochain caractère de nouvelle ligne sont ignorés. C'est l'équivalent Perl de l'option /x : elle permet l'ajout de commentaires dans les masques compliqués. Notez bien, cependant, que cela ne s'appliquent qu'aux caractères de données. Les caractères d'espacement ne doivent jamais apparaître dans les séquences spéciales d'un masque, comme par exemple dans la séquence (?( qui introduit une parenthèse conditionnelle.

E

Avec cette option, preg_replace() effectue la substitution normale des références arrières dans la chaîne de remplacement, puis l'évalue comme un code PHP, et utilise le résultat pour remplacer la chaîne de recherche.

Seule preg_replace() utilise cette option. Elle est ignorée par les autres.

A (PCRE_ANCHORED)

Avec cette option, le masque est ancré de force, c'est-à-dire que le masque doit s'appliquer juste au début de la chaîne sujet pour être considéré comme trouvé. Il est possible de réaliser le même effet en ajoutant les méta-caractères adéquats, ce qui est la seule manière de le faire en Perl.

E (PCRE_DOLLAR_ENDONLY)

Avec cette option, le méta-caractère $ ne sera valable qu'à la fin de la chaîne sujet. Sans cette option, $ est aussi valable avant une nouvelle ligne, si cette dernière est le dernier caractère de la chaîne. Cette option est ignorée si l'option m est activée. Il n'y a pas d'équivalent en Perl.

S

Lorsqu'un masque est utilisé plusieurs fois, cela vaut la peine de passer quelques instants de plus pour l'analyser et optimiser le code pour accélérer les traitements ultérieurs. Cette option force cette analyse plus poussée. Actuellement, cette analyse n'est utile que pour les masques non ancrés, qui ne commencent pas par un caractère fixe.

U (PCRE_UNGREEDY)

Cette option inverse la tendance à la gourmandise des expressions régulières. Vous pouvez aussi inverser cette tendance au coup par coup avec un ?. De même, si cette option est activée, le ? rendra gourmand une séquence. Cette option n'est pas compatible avec Perl. Elle peut aussi être mise dans le masque avec l'option ?U.

X (PCRE_EXTRA)

Cette option ajoute d'autres fonctionnalités incompatible avec le PCRE de Perl. Tous les antislash suivis d'une lettre qui n'aurait pas de signification particulière cause une erreur, permettant la réservation de ces combinaisons pour des ajouts fonctionnels ultérieurs. Par défaut, comme en Perl, les antislash suivis d'une lettre sans signification particulière sont traités comme des valeurs littérales. Actuellement, cette option ne déclenche pas d'autres fonctions.

u (PCRE_UTF8)

Cette option désactive les fonctionnalités additionnelles de PCRE qui ne sont pas compatibles avec Perl. Les chaînes sont traitées comme des chaînes UTF-8. Cette option est disponible en PHP 4.1.0 et plus récent.

Précédent | Sommaire | Suivant
Expressions régulières compatibles Perl | Niveau supérieur | syntaxe des masques


syntaxe des masques

syntaxe des masques -- Fonctionnement des expressions régulières.

Description

La bibliothèque PCRE est un ensemble de fonctions qui implémentent la recherche par expressions régulières, en utilisant la même syntaxe et la même sémantique que le Perl 5, avec quelques nuances (voir ci-dessous). L'implémentation actuelle est celle de Perl 5.005.

Différences avec Perl

Les différences avec le Perl 5.005 sont présentée ici :

  1. Par défaut, un caractère d'espacement correspond à n'importe quel caractère que la fonction C isspace() reconnaît, bien qu'il soit possible de recompiler la bibliothèque PCRE avec d'autres tables de caractères. Normalement, isspace() retourne TRUE pour les espaces, les retours chariot, les nouvelles lignes, les formfeed, les tabulations verticales et horizontales. Le Perl 5 n'accepte plus la tabulation verticale comme caractère d'espacement. La séquence \v qui était dans la documentation Perl depuis longtemps n'a jamais été reconnue. Cependant, la tabulation verticale elle-même était reconnue comme un caractère d'espacement jusqu'à la version 5.002. Avec les version 5.004 et 5.005, l'option \s l'ignore.

  2. PRCE ne tolère pas la répétition de quantificateurs dans les expressions. Perl le permet, mais cela ne signifie pas ce que vous pourriez penser. Par exemple, (?!a){3} ne s'interprète pas : les trois caractères suivants ne sont pas des "a". En fait, cela s'interprète comme : le caractère suivant n'est pas "a" trois fois.

  3. Les occurrences de sous-masques qui interviennent dans des assertions négatives sont comptées, mais elles ne sont pas enregistrées dans le vecteur d'occurrences. Perl modifie ses variables numériques pour toutes les occurrences de sous-masque, avant que l'assertion ne vérifie le masque entier, et uniquement si les sous-masques ne trouvent qu'une seule occurrence.

  4. Bien que les caractères nul soient tolérés dans la chaîne de recherche, ils ne sont pas acceptés dans le masque, car le masque est utilisé comme une chaîne C standard, terminée par le caractère nul. Il faut donc utiliser la séquence d'échappement "\0" dans le masque pour rechercher les caractères nul.

  5. Les séquence d'échappement suivantes ne sont pas supportées par le Perl: \l, \u, \L, \U, \E, \Q. En fait, elles sont implémentées par la gestion intrinsèque de chaînes du Perl, et ne font pas partie de ses caractères spéciaux.

  6. L'assertion \G du Perl n'est pas supportée car elle n'est pas pertinente pour faire des recherches avec des masques uniques.

  7. De manière assez évidente, PCRE n'accepte pas la construction (?{code}).

  8. Au moment de l'écriture de PCRE, Perl 5.005_02 avait quelques comportements étranges avec la capture des chaînes lorsqu'une partie du masque est redoublée. Par exemple, "aba" avec le masque /^(a(b)?)+$/ va affecter à $2 la valeur "b", mais la même manipulation avec "aabbaa" et /^(aa(bb)?)+$/ laissera $2 vide. Cependant, si le masque est remplacé par /^(aa(b(b))?)+$/ alors $2 (et d'ailleurs $3) seront correctement affectés. Avec le Perl 5.004, $2 sera correctement affecté dans les deux cas, et c'est aussi vrai avec PCRE. Si Perl évolue vers un autre comportement cohérent, PCRE s'adaptera probablement.

  9. Une autre différence encore non résolue est le fait qu'en Perl 5.005_02 le masque /^(a)?(?(1)a|b)+$/ accepte la chaîne "a", tandis que PCRE ne l'accepte pas. Cependant, que ce soit avec Perl ou PCRE /^(a)?a/ et "a" laisseront $1 vide.

  10. PCRE propose quelques extensions aux expressions régulières du Perl.

    1. (a) Bien que les assertions avec retour (lookbehind) soit obligée d'apparier une chaîne de longueur fixe, toutes les assertions avec retour peuvent avoir une longueur différente. Perl 5.005 leur impose d'avoir toutes la même longueur.

    2. (b) Si PCRE_DOLLAR_ENDONLY est activé, et que PCRE_MULTILINE n'est pas activé, le méta caractère $ ne s'applique qu'à la fin physique de la chaîne, et non pas avant les caractères de nouvelle ligne.

    3. (c) Si PCRE_EXTRA est activé, un antislash suivi d'une lettre sans signification spéciale est considérée comme une erreur.

    4. (d) SI PCRE_UNGREEDY est activé, la "gourmandise" des quantificateurs de répétition est inversées, ce qui est rend non gourmand par défaut, mais s'ils sont suivis de ?, il seront gourmands.

Détails sur les expressions régulières

Introduction

La syntaxe et la sémantique des expressions régulière supportées par PCRE sont décrites ci-dessous. Les expressions régulières sont aussi décrites dans la documentation Perl, et dans un grand nombre d'autres livres, avec de nombreux exemples. Jeffrey Friedl's "Mastering Regular Expressions", édité chez O'Reilly (ISBN 1-56592-257-3), les décrits en profondeur. Cette description est organisée comme une documentation de référence.

Une expression régulière est un masque, appliqué à une chaîne sujet, de gauche à droite. La plupart des caractères se représentent eux-mêmes. Un exemple trivial : un masque qui serait "Le rapide renard gris", pourra correspondre à une partie de la chaîne sujet qui sera identique au masque, comme par exemple "Le rapide renard gris court dans la forêt",

Méta-caractères

La puissance des expressions régulières provient de leur capacité à autoriser des alternatives et des quantificateurs de répétition dans le masque. Ils sont encodés dans le masque par des méta-caractères, qui ne représentent pas ce qu'ils sont, mais sont interprétés d'une certaine manière.

Il y a deux sortes de méta-caractères : ceux qui sont reconnus n'importe où dans un masque, hormis entre crochets, et ceux qui sont reconnus entre crochets.

A l'extérieur des crochets, les méta caractères sont :

\ antislash

Caractère d'échappement, avec de multiples usages

^ Accent circonflexe

Le début de la chaîne sujet (ou de ligne, en mode multiligne)

$ Dollar

La fin de la chaîne sujet (ou de ligne, en mode multiligne)

. Point

Remplace n'importe quel caractère, hormis le caractère de nouvelle ligne (par défaut) ;

[ Crochet ouvrant

Caractère de début de définition de classe

] Crochet fermant

Caractère de fin de définition de classe

| Barre verticale

Caractère de début d'alternative

( Parenthèse ouvrante

Caractère de début de sous-masque

) Parenthèse fermante

Caractère de fin de sous-masque

? Point d'interrogation

Etend le sens de (; quantificateur de 0 ou 1; quantificateur de minimisation

* Etoile

Quantificateur de 0 ou plus

+ Plus

Quantificateur de 1 ou plus

{ Accolade ouvrante

Caractère de début de quantificateur minimum/maximum

} Accolade fermante

Caractère de fin de quantificateur minimum/maximum

La partie du masque qui est entourée de crochet et appelé une classe de caractères. Dans les classes de caractères, les seuls méta caractères autorisés sont :

\ Antislash

Caractère d'échappement, avec de multiples usages

^ Accent circonflexe

Négation de la classe, mais uniquement si placé tout au début de la classe

- Moins

Indique un intervalle de caractères

] Crochet fermant

Termine la classe de caractères

La section suivante décrit l'utilisation de chaque méta-caractères.

Antislash

Le caractère antislash a de nombreuses utilisations.

En premier lieu, s'il est suivi d'un caractère non alpha-numérique, il ne prendra pas la signification spéciale qui y est rattachée. Cette utilisation de l'antislash comme caractère d'échappement s'applique à l'intérieur et à l'extérieur des classes de caractères. Par exemple, pour recherche le caractère étoile "*", il faut écrire dans le masque : "\*". Cela s'applique dans tous les cas, que le caractère qui suive soit un méta-caractère ou non. C'est un moyen sûr pour s'assurer qu'un caractère sera recherché pour sa valeur littérale, plutôt que pour sa valeur spéciale. En particulier, pour rechercher les antislash, il faut écrire : "\\".

Si un masque est utilisé avec l'option PCRE_EXTENDED, les espaces blancs du masque, mais qui ne sont pas dans une classe de caractères, et les caractères entre dièses "#", ainsi que les nouvelles lignes sont ignorées. L'antislash peut être utilisé pour échapper et ainsi rechercher un espace ou un dièse.

La deuxième utilité de l'antislash est de pouvoir coder des caractères invisibles dans les masques. Il n'y a pas de restriction sur la place de ces caractères invisibles, hormis pour le caractère nul qui doit terminer le masque.

Lors de la préparation du masque, il est souvent plus pratique d'utiliser les séquences d'échappement suivantes, plutôt que le caractère binaire qu'elle représente :

\a

alarme, c'est-à-dire le caractère BEL (hex 07)

\cx

"control-x", avec x qui peut être n'importe quel caractère.

\e

escape (hex 1B)

\f

formfeed (hex 0C)

\n

nouvelle ligne (hex 0A)

\r

retour chariot (hex 0D)

\t

tabulation (hex 09)

\xhh

caractère en hexadécimal, de code hh

\ddd

caractère en octal, de code ddd, ou référence arrière

Dans la séquence "\cx" si "x" est en minuscule, il est converti en majuscule. Puis, le bit 6 (hex 40) est inversé. Ainsi "\cz" devient 1A, mais "\c{" devient hex 3B, tandis que "\c;" devient hex 7B.

Après "\x", deux caractères hexadécimaeux sont lus (les lettres peuvent être en majuscule ou minuscule).

Après "\0", deux caractères octal sont lus. Dans chacun des cas, le méta-caractère tente de lire autant de caractère que possible. Ainsi la séquence "\0\x\07", sera comprise comme deux caractères nuls, suivi d'un caractère alarme (BEL). Assurez-vous que vous fournissez suffisamment de chiffres après le méta-caractère.

La gestion de la séquence "\y", avec y <> 0 est plutôt compliquée. En dehors des caractères de classes, PCRE va lire y et tous les caractères qui suivent comme des chiffres décimaux. Si y est plus petit que 10, ou bien s'il y a déjà eu au moins autant de parenthèses ouvrantes auparavant, la séquence est prise pour une référence arrière. Le détail sera vu ultérieurement, après la section sur les sous-masques.

A l'intérieur d'un caractère de classe, ou si y est plus grand que 10, et qu'il n'y a pas eu assez de parenthèses ouvrantes auparavant, PCRE lis jusqu'à 3 chiffres octals à la suite de l'antislash, et génère un octet unique, à partir des 8 bits de poids faible de la séquence. Tous les chiffres qui suivent ne sont pas interprétés, et se representent eux-mêmes. Par exemple:

\040

une autre manière d'écrire un espace

\40

identique, dans la mesure où il n'y a pas 40 parenthèses ouvrantes auparavant

\7

est toujours une référence arrière

\11

peut être une référence de retour, ou une tabulation

\011

toujours une tabulation

\0113

est une tabulation suivi du caractère "3"

\113

est le caractère 113 (étant donné qu'il ne peut y avoir plus de 99 références arrières)

\377

est un octet dont tous les bits sont à 1

\0113

peut être soit une référence arrière, soit le caractère NULL, suivi des caractères "8" et "1"

Les valeurs octales supérieures ou égales à 100 ne doivent pas être introduites par un 0, car seuls les trois premiers octets seront lus.

Toutes les séquences qui définissent une valeur d'un seul octet peuvent être utilisé dans les classes de caractères, et à l'extérieur. De plus, dans une classe de caractères, la séquence "\b" est interprétée comme un caractère effacer (backspace, hex 08). A l'extérieur d'une classe de caractères, il peut avoir d'autres significations (voir ci-dessous).

On peut encore se servir de l'antislash pour préciser des types génériques de valeurs :

\d

tout caractère décimal

\D

tout caractère qui n'est pas un caractère décimal

\s

tout caractère blanc

\S

tout caractère qui n'est pas un caractère blanc

\w

tout caractère de "mot"

\W

tout caractère qui n'est pas un caractère de "mot"

Chaque paire précédente définit une partition de la table des caractères : les deux ensembles sont disjoints. Un caractère satisfera soit un méta-caractère, soit l'autre.

Un caractère de "mot" sera une lettre, un chiffre ou le caractère souligné, c'est-à-dire un caractère qui pourra être une partie d'un mot Perl. La définition des lettres et chiffres est définie par les tables de caractères de PCRE, et peut varier suivant la table locale de caractère (voir "Tables de caractères locales ", ci-dessus. Par exemple, dans la configuration français ("fr"), certains caractères ont des codes supérieurs à 128, pour les caractères accentués, et ils seront compris par le méta caractère \w.

Ces séquences de caractères peuvent apparaître à l'intérieur ou à l'extérieur des classes de caractères. Elles remplacent à chaque fois un caractère du type correspondant. Si cette séquence est placée en fin de masque, et qu'il n'y a plus de caractère à comparer dans la chaîne sujet, la recherche échoue.

La quatrième utilisation de l'antislash intervient lors d'assertions simples. Une assertion impose une condition à un certain point, sans remplacer de caractère. L'utilisation de sous-masques pour réaliser des assertions plus complexes est décrites plus-bas. Les assertions avec antislash sont les suivantes :

\b

limite de mot

\B

pas limite de mot

\A

début de la chaîne sujet (indépendant du mode multi-lignes)

\Z

fin de la chaîne sujet ou nouvelle ligne à la fin de la chaîne sujet (indépendant du mode multi-lignes)

\z

fin de la chaîne sujet (indépendant du mode multi-lignes)

Ces assertions ne peuvent pas apparaître dans une classe de caractères (mais "\b" a une autre signification à l'intérieur d'une classe de caractères).

Une limite de mot est un emplacement dans la chaîne sujet ou un caractère et son suivant ne sont pas en même temps des caractères de mot, ou le contraire (on peut le voir comme \w\W ou \W\w), ou encore le premier ou le dernier caractère est un caractère mot.

Les assertions \A, \Z, et \z diffèrent des méta caractères ^ et $ dans la mesure où ils ne sont pas dépendants des options, notamment PCRE_NOTBOL ou PCRE_NOTEOL. La différence entre \Z et \z tient au fait que \Z recherche les positions avant les nouvelles lignes et à la fin de la chaîne sujet, tandis que \z ne recherche que la fin de la chaîne.

Accent circonflexe et Dollar

En dehors d'une classe de caractères, avec les options par défaut, ^ est une assertion qui n'est vraie que si elle est placée tout au début de la chaîne. A l'intérieur d'une classe de caractères, ^ a un tout autre sens (voir ci-dessous).

^ n'a pas besoin d'être le premier caractère du masque, si plusieurs alternatives sont proposées, mais il doit être placé en premier dans chaque alternative. Si toutes les alternatives commencent par ^, alors le masque est dit ancré (il y a une autre construction qui porte cette appellation).

$ est une assertion qui n'est vraie que si elle est placée tout en fin de chaîne ou juste avant un caractère de nouvelle ligne qui serait le dernier caractère de la chaîne. A l'intérieur d'une classe de caractères, $ a un tout autre sens (voir ci-dessous).

$ n'a pas besoin d'être le dernier caractère du masque, si plusieurs alternatives sont proposées, mais il doit être placé en dernier dans chaque alternative. Si toutes les alternatives finissent par $, alors le masque est dit ancré (il y a une autre construction qui porte cette appellation). $ n'a pas de valeur particulière dans une classe de caractères.

La signification de $ peut changer, de manière à l'amener à ce qu'il ne puisse se trouver qu'en toute fin de la chaîne sujet. Cela se fait en ajoutant l'option PCRE_DOLLAR_ENDONLY au moment de la compilation, ou de l'exécution. Cette option est inopérante sur \Z.

La signification de ^ peut changer, de manière à l'amener à ce qu'il puisse se trouver immédiatement avant et immédiatement après un caractère de nouvelle ligne "\n". Cela se fait en ajoutant l'option PCRE_MULTILINE au moment de la compilation ou de l'exécution. Par exemple, le masque /^abc$/ accepte la chaîne "def\nabc" uniquement en mode multi-lignes. Par conséquent, toutes les parties du masques qui commencent par "^" ne sont pas ancrées, en mode multi-lignes. L'option PCRE_DOLLAR_ENDONLY est ignorée si l'option PCRE_MULTILINE est choisie.

Notez que les méta caractères \A, \Z, et \z peuvent servir à répérer le début et la fin du sujet, et toutes les parties du masque qui commenceront par \A seront toujours ancrées, avec l'option PCRE_MULTILINE ou non.

Point

En dehors d'une classe de caractères, un point remplace n'importe quel caractère, même invisible et à l'exception du caractère de nouvelle ligne. Avec l'option PCRE_DOTALL le point remplace n'importe quel caractère, même le caractère de nouvelle ligne. La gestion des points et complètement indépendante de ^ et $. Le seul point commun est que les deux ont un comportement particulier vis à vis des caractère de nouvelle ligne.

Le point n'a pas de comportement particulier dans une classe de caractères.

Crochets

Un crochet ouvrant [ introduit une classe de caractères, et le crochet fermant ]la conclut. Le crochet fermant n'a pas de signification en lui-même. Si le crochet fermant est nécessaire à l'intérieur d'une classe de caractères, il faut qu'il soit le premier caractère (après un ^ éventuel) ou échappé avec un antislash.

Une classe de caractères remplace un seul caractère dans la chaîne sujet, à moins que le premier caractère de la classe soit un accent circonflexe ^, qui représente une négation : le caractère ne doit pas se trouver dans la classe. Si ^ est nécessaire dans la classe, il suffit qu'il ne soit pas le premier caractère, ou bien qu'il soit échappé avec un antislash.

Par exemple, le caractère [aeiou] remplace n'importe quelle voyelle minuscule, tandis que [^aeiou] remplace n'importe quelle caractère qui n'est pas une voyelle minuscule. ^ est une notation pratique pour spécifier des caractères qui sont dans une classe, en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.

Avec l'option d'insensibilité à la casse, toutes les lettres d'une classe de caractères représentent en même temps la majuscule et la minuscule. Par exemple, [aeiou] représentera "A" ou "a", et [^aeiou] n'acceptera pas ni "A", tandis que sans l'option, elle l'accepterait.

Le caractère de nouvelle ligne n'est pas traité de manière spéciale dans les classes de caractères, quelque soit l'option PCRE_DOTALL ou PCRE_MULTILINE. Une classe telle que [^a] acceptera toujours une nouvelle ligne.

Le signe moins (-) est utilisé pour spécifier un intervalle de caractères, dans une classe. Par exemple, [d-m] remplace toutes les lettres entre d et m inclus. Si le caractère moins est requis dans une classe, il faut l'échapper avec un antislash, ou le faire apparaître à une position ou il ne pourra pas être interprété comme une indication d'intervalle, c'est-à-dire au début ou à la fin de la classe.

Il n'est pas possible d'avoir le caractère crochet fermant "]" comme fin d'intervalle. Un masque tel que [W-]46] est compris comme la classe de caractères contenant deux caractères ("W" et "-") suivi de la chaîne littérale "46]", ce qui fait qu'il va accepter "W46]" ou "-46]". Cependant, si "]" est échappé avec un antislash, le masque [W-\]46] est interprété comme une classe d'un seul caractère, contenant un intervalle de caractères.

La valeur octale ou hexadécimale de "]" peut aussi être utilisée pour déterminer les limites de l'intervalle. Les intervalles travaillent sur des séquences ASCII. Ils peuvent aussi être précisées avec des valeurs numériques, par exemple "[\000-\037]". Si cet intervalle inclut des lettres utilisées avec une option d'insensibilité de casse, les majuscules ou minuscules correspondantes seront aussi incluses. Par exemple, "[C-c]" est équivalent é "[][\^_`wxyzabc]", avec l'option d'insensibilité de casse. Si la table locale de caractères est "fr", "[\xc8-\xcb]" correspond aux caractères accentués.

Les types de caractères \d, \D, \S, \s, \w, \W peuvent aussi intervenir dans les classes de caractères. Par exemple, "[][\^_`wxyzabc][\dABCDEF]" acceptera n'importe quel caractère hexadécimal. Un accent circonflexe peut aussi être utilisé pour spécifier adroitement des ensembles de caractères plus restrictifs : par exemple [^\W_] accepte toutes les lettres et les chiffres, mais pas les soulignés. Tous les caractères non alpha- numériques autres que \, -, ^ (placés en début de chaîne) et ] n'ont pas de signification particulière, mais ils ne perdront rien à être échappés.

Barre verticale

La barre verticale | sert à séparer des alternatives. Par exemple, dans le masque "/dupont|martin/" recherche soit "dupont", soit "martin". Le nombre d'alternatives n'est pas limité, et il est même possible d'utiliser la chaîne vide. Lors de la recherche, toutes les alternatives sont essayées, de gauche à droite, et la première qui est acceptée est utilisée.

Si les alternatives sont dans un sous-masque, elle ne réussiront que si le masque principal réussi aussi.

Options internes

Les options PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL et PCRE_EXTENDED peuvent être changée à l'intérieur du masque lui-même, avec des séquences mises entre "(?" et ")". Les options sont :

i

PCRE_CASELESS

m

PCRE_MULTILINE

s

PCRE_DOTALL

x

PCRE_EXTENDED

Par exemple, (?im) rend le masque insensible à la casse, et multi-lignes. Il est possible d'annuler ces options en les faisant précéder par un signe - : par exemple (?im-sx), ajoutera les options PCRE_CASELESS et PCRE_MULTILINE mais annulera les options PCRE_DOTALL et PCRE_EXTENDED. Si une option apparaît avant et après le signe moins, l'option sera annulée.

Le domaine d'application de ces options dépend de la position de la séquence d'option. Pour toutes les séquences d'options qui sont hors des sous-masques (définis plus loin), l'effet est le même que si l'option avait été fixée dès le début de la recherche. Les exemples suivants se comportent tous de la même façons : (?i)abc, a(?i)bc, ab(?i)c, abc(?i), et sont parfaitement équivalents au masque abc avec l'option PCRE_CASELESS. En d'autres termes, activer des séquences d'options dans le corps principal du masque revient à appliquer l'option à tout le masque, sauf ordre contraire dans les sous-masques. S'il y a plusieurs séquences d'options qui portent sur la même option, la dernière s'appliquera.

Si une option intervient dans un sous-masque, le comportement est différent. C'est un changement de comportement apparu en Perl 5.005. Une option à l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce qui fait que (a(?i)b)c acceptera abc et aBc mais aucune autre chaîne (en supposant que PCRE_CASELESS n'est pas utilisé). Cela signifie que les options permettent d'avoir différente configuration de recherche pour différentes parties du masque.

Une séquence d'options dans une alternative affecte toute l'alternative. Par exemple : (a(?i)b|c) accepte "ab", "aB", "c", et "C", même si, comme dans le cas de "C", la première alternative qui porte l'option n'est pas prise en compte. Sinon, cela risque d'introduire des comportements très étranges : les options spécifiques à PCRE telles que PCRE_UNGREEDY et PCRE_EXTRA peuvent être modifiées de la même manière, en utilisant respectivement les caractères U et X. L'option (?X) est particulière, car elle doit toujours intervenir avant toutes les autres options, même au niveau du masque entier. Il vaut mieux l'activer au début du masque.

Sous-masques

Les sous-masques sont délimités par des parenthèses, et peuvent être imbriquées. Ajouter des sous-masques a deux utilités :

1. Délimiter des alternatives. Par exemple, le masque char(don|mant|) acceptera les mots "char", "charmant", ou "charmant". Sans les parenthèses, il n'accepterait que "chardon", "mant" ou la chaîne vide "".

2. Le sous-masque est considéré comme capturant : lorsqu'une chaîne sujet est acceptée par le masque complet, les sous-masques sont transmis à l'appelant grâce à un vecteur de sous-masques. Les parenthèses ouvrantes sont comptées de gauche à droite, (commençant à 1). Par exemple, soit la chaîne sujet "le roi soleil" qui est utilisée avec le masque suivant : Le ((roi|prince) (soleil|charmant)) les sous-masques capturé sont "roi soleil", "roi", et "soleil", numérotés respectivement 1, 2, et 3.

L'ubiquité des parenthèses n'est pas toujours simple d'emploi. Il y a des moments où regrouper des sous-masques est nécessaire, sans pour autant capturer la valeur trouvée. Si une parenthèse ouvrante est suivie de "?:", le sous-masque ne capture pas la chaîne assortie, et ne sera pas compté lors de la numérotation des captures. Par exemple, avec la chaîne "le prince charmant", utilisé avec le masque Le (( ?roi|prince) (soleil|charmant)) les chaînes capturées seront "prince charmant" et "charmant", numérotés respectivement 1 et 2.

Le nombre maximal de chaîne capturées est de 99, et le nombre total de sous-masque (capturant ou non) ne doit pas dépasser 200.

(?i:samedi|dimanche) et (?:(?i) samedi | dimanche) : De plus, comme les séquences d'options sont valables sur toute une alternative, les masques ci-dessus accepteront aussi bien "DIMANCHE" que "Dimanche".

Répétitions

Les répétitions sont spécifiées avec des quantificateurs, qui peuvent être placés à la suite des caractères suivants :

a

Un caractère unique, même s'il s'agit d'un méta caractère

[abc]

Une classe de caractères

\2

Une référence de retour (Voir section suivante)

(a|b|c)

Un sous-masque avec parenthèses (à moins que ce ne soit une assertion, voir plus loin)

Les quantificateurs généraux précisent un nombre minimum et maximum de répétitions possibles, donnés par deux nombres entre accolades, et séparés par une virgule. Ces nombres doivent être plus petits que 65536, et le premier nombre doit être égal ou inférieur au second. Par exemple z{2,4} accepte "zz", "zzz", ou "zzzz". L'accolade fermante n'a pas de signification par elle-même.

Si le second nombre est omis, mais que la virgule est là, cela signifie qu'il n'y a pas de limite supérieure. Si le second nombre et la virgule sont omis, le quantificateur correspond au nombre exact de répétition attendues. Par exemple : accepte n'importe quelle succession d'au moins 3 voyelles minuscules, tandis que \d{d} n'accepte que 8 chiffres exactement.

Une accolade ouvrante qui apparaît à une position où un quantificateur n'est pas accepté, ou si la syntaxe des quantificateurs n'est pas respectée, sera considérée littérale. Par exemple, "{,6}" n'est pas un quantificateur, mais une chaîne de 4 caractères.

Le quantificateur {0} est autorisé, mais l'expression est alors ignorée.

*

équivalent à {0,}

+

équivalent à {1,}

?

équivalent à {0,1}

Il est possible de constituer des boucles infinies en créant un sous-masque sans caractères, mais pourvu d'un quantificateur sans limite supérieure. Par exemple "(a?)*.

Les versions plus anciennes de Perl et PCRE généraient alors une erreur au moment de la compilation. Cependant, étant donné qu'il existe des situations où ces constructions peuvent être utiles, ces masques sont désormais autorisés. Cependant, si la répétion du sous-masque ne trouve aucun caractère, la boucle est interrompue.

Par défaut, les quantificateurs sont dits "gourmands", c'est à dire, qu'ils cherchent d'abord à trouve le nombre maximal de répétitions qui autorise le succès de la recherche. L'exemple classique posé par cette gourmandise est la recherche de commentaires d'un programme en C. Les commentaires apparaissent entre les séquences /*....*/ et à l'intérieur de ces délimiteurs, les * et / sont autorisés. Appliquer le masque /\*.*\*/ à la chaîne /* first commet */ not comment /* second comment */ ne peut réussir, car le masque travaille sur toute la chaîne, à cause de la gourmandise du caractère .*.

Cependant, un quantificateur suivi d'un point d'interrogation cesse d'être gourmand, et au contraire, ne recherche que le nombre minimum de répétition. Dans ces conditions, le masque /\*.*?\*/ trouvera bien les commentaires du code C. La signification des autres quantificateurs n'est pas changée.

Attention à ne pas confondre l'utilisation du point d'interrogation ici avec son utilisation comme quantificateur lui-même. A cause cette ambiguité, il peut apparaître des situations où il faut le doubler : \d??\d. Ce masque va tenter de lire un seul chiffre, mais le cas échéant, il acceptera 2 chiffres pour permettre à la recherche d'aboutir. Si l'option PCRE_UNGREEDY est activée, (une option qui n'est pas disponible avec Perl) alors les quantificateurs sont non gourmand par défaut, mais peuvent être rendu gourmand au cas par cas, en ajoutant un point d'interrogation après. En d'autres termes, cette option inverse le comportement par défaut.

Lorsqu'un sous-masque est quantifié avec un nombre minimum de répétitions, qui soit plus grand que 1, ou avec un maximum de répétitions, le masque compilé aura besoin de plus de place de stockage, proportionnellement au minimum et au maximum.

Si un masque commence par ..* ou .{0,} et que l'option PCRE_DOTALL (équivalent en Perl à /s) est activée, c'est-à-dire en autorisant le remplacement des nouvelles lignes par un méta-caractère, alors le masque est implicitement ancré, car tout ce qui suit va être mangé par la première séquence, et se comportera comme si le masque se terminait par le méta caractère \A. Dans le cas où on sait d'avance qu'il n'y aura pas de caractère de nouvelle ligne, activer l'option PCRE_DOTALL et commencer le masque par .* permet d'optmiser le masque.

Alternativement, on peut utiliser ^ pour ancrer explicitement le masque. Lorsqu'un sous-masque capturant est répété, la valeur capturée est la dernière. Par exemple, après que "(inter[net]{3}\s*)+" ai été appliqué à "internet interne", la valeur de la chaîne capturée est "interne".

Cependant, s'il y a des sous-masques imbriqués, la valeur capturée correspondante peut l'avoir été lors des précédentes itérations. Par exemple : /(a|(b))+/ accepte "aba" et la deuxième valeur capturée est "b".

Références arrières

En dehors des classes de caractères, un antislash suivi d'un nombre plus grand que 0 (et possiblement plusieurs chiffres) est une référence arrière (c'est à dire vers la gauche) dans le masque, en supposant qu'il y ait suffisamment de sous-masques capturants précédants.

Cependant, si le nombre décimal suivant l'antislash est plus petit que 10, il sera toujours considéré comme une référence arrière, et cela génèrera une erreur si le nombre de capture n'est pas suffisant. En d'autres termes, il faut qu'il existe suffisamment de parenthèses ouvrantes à gauche de la référence, surtout si la référence est inférieure à 10.

Reportez-vous à la section "antislash" pour avoir de plus amples détails à propos du nombre de chiffres qui suivent l'antislash.

La référence arrière remplace ce qui a été capturé par un sous-masque dans le masque courant, plutôt que remplace le sous-masque lui-même. Ainsi (calme|rapide) et \1ment trouvera "calme et calmement" et "rapide et rapidement", mais pas "calme et rapidement". Si la recherche tient compte de la casse, alors la casse de la chaîne capturée sera importante. Par exemple, ((?i)rah)\s+\1 trouve "rah rah" et "RAH RAH", mais pas "RAH rah", même si le sous-masque capturant initial ne tenait pas compte de la casse.

Il peut y avoir plusieurs références arrières dans le même sous-masque. Si un sous-masque n'a pas été utilisé dans une recherche, alors les références arrières échoueront. Par exemple "(a|(bc))\2" ne réussira jamais si la chaîne sujet commence par "a" plutôt que par "bc".

Etant donné qu'il peyt y avoir jusqu'à 99 références arrières, tous les chiffres après l'antislash sont considérés comment faisant potentiellement partie de la référence arrière. Si le masque recherche un chiffre après la référence, alors il faut impérativement utiliser des délimiteurs pour terminer la référence arrière.

> Si l'option PCRE_EXTENDED est activée, on peut utiliser un espace. Sinon, un commentaire vide fait l'affaire. Une référence arrière qui intervient à l'intérieur de parenthèses auquel elle fait référence échouera dès que le sous-masque sera utilisé. Par exemple, (a\1) échouera toujours. Cependant, ces références peuvent être utiles dans les sous-masques répétitifs. Par exemple, le masque "(a|b\1)+" pourra convenir pour "a", "aba", "ababaa", etc....

A chaque itération du sous-masque, la référence arrière utilise le résultat du dernier sous-masque. Pour que cela fonctionne, il faut que la première itération n'ai pas besoin d'utiliser la référence arrière. Cela arrive avec les alternatives, comme dans l'exemple ci-dessus, ou avec un quantificateur de minimum 0.

Assertions

Une assertion est un test sur les caractères suivants ou précédent celui qui est en cours d'étude. Ce test ne consomme par de caractère (ie, on ne déplace pas le pointeur de caractères). Les assertions simples sont codées avec \b, \B, \A, \Z, \z, ^ et $, et sont décrites précédemment.

Il existe cependant un type d'assertions plus complexes, codées sous la forme de sous-masques. Il en existe deux types : celles qui travaillent au-delà de la position courante (\w+(?=;)), et celles qui travaillent en deça ((?!)\w+).

Une assertion se comporte comme un sous-masque, hormis le fait qu'elle ne déplace pas le pointeur de position. Les assertions avant commencent par (?= pour les assertions positives, et par (?!, pour les assertions négatives. Par exemple : \w+(?=;) s'assure qu'un mot est suivi d'un point-virgule, mais n'inclus pas le point virgule dans la capture. D'autre part, (?!foo)bar en est proche, mais ne trouve pas une occurrence de "bar" qui soit précédée par quelque chose d'autre que "foofoo"; il trouve toutes les occurrences de "bar", quelque soit ce qui le précéde, car l'assertion (?!foo) est toujours vraie quand les trois caractères suivants sont "bar". Une assertion arrière est ici nécessaire.

Les assertions arrières commencent par (?<= pour les assertions positives, et (?<! pour les assertions négatives. Par exemple : (?<!foo)bar trouve les occurrences de "bar" qui ne sont pas précédées par "foo".

Le contenu d'une référence arrière est limité de telle façon que les chaînes qu'il utilise soient toujours de la même taille. Cependant, lorsqu'il y a plusieurs alternatives, elles n'ont pas besoin d'être de la même taille. Par exemple, (?<=bullock|donkey) est autorisé, tandis que (?<!dogs?|cats?) provoque une erreur de compilation. Les alternatives qui ont des longueurs différentes ne sont autorisées qu'au niveau supérieur des assertions arrières. C'est une amélioration du fonctionnement de Perl 5.005, qui impose aux alternatives d'avoir toutes la même taille. Une assertion telle que (?<=ab(c|de)) n'est pas autorisée, car l'assertion de bas niveau (la deuxième, ici) a deux alternatives de longueurs différentes. Pour la rendre acceptable, il faut écrire (?<=abc|abde)

L'implémentation des assertions arrières déplace temporairement le pointeur de position vers l'arrière, et cherche à vérifier l'assertion. Si le nombre de caractères est différent, la position ne sera pas correcte, et l'assertion échouera. La combinaison d'assertions arrières avec des sous-masques peut être particulièrement pratique à fin des chaînes. Un exemple est donné à la fin de cette section.

Plusieurs assertions peuvent intervenir successivement. Par exemple, le masque (?<=\d{3})(?<!999)foo recherche les chaînes "foo" précédées par trois chiffres qui ne sont pas "999". Notez que chaque assertion est appliquées indépendemment, au même point de la chaîne à traiter. Tout d'abord, il est vérifié que les trois premiers caractères ont tous des chiffres, puis on s'assure que ces trois caractères ne sont pas "999". Le masque précédant n'accepte pas "foo" précédé de 6 caractères, les trois premiers étant des chiffres et les trois suivants étant différents de "999". Par exemple, ce masque n'acceptera pas la chaîne "123abcfoo". Pour ce faire, il faut utiliser le masque suivant : (?<=\d{3}...)(?<!999)foo. Dans ce masque, la première assertion vérifie les six premiers caractères, s'assure que les trois premiers sont des entiers, et la deuxième assertion s'assure que les trois derniers caractères ne sont pas "999".

De plus, les assertions peuvent être imbriquées : (?<=(?<!foo)bar)baz recherche les occurrences de "baz" qui sont précédées par "bar", qui, à son tour, n'est pas précédé par "foo". Au contraire, (?<=\d{3}(?!999)...)foo est un autre masque, qui recherche les caractères "foo", précédés par trois chiffres, suivis trois autres caractères qui ne forment pas "999". Les assertions ne sont pas capturantes, et ne peuvent pas être répétées. Si une assertion contient des sous-masques capturants en son sein, ils seront compris dans le nombre de sous-masques capturants du masque entier. La capture est réalisée pour les assertions positives, mais cela n'a pas de sens pour les assertions négatives.

200 assertions au maximum sont autorisées.

Sous-masques uniques

Avec les quantificateurs de répétitions, l'échec d'une recherche conduit normalement à une autre recherche, avec un nombre différent de répétitions, pour voir si le masque ne s'applique pas dans d'autres conditions. Parfois, il est pratique d'éviter ce comportement, soit pour changer la nature de la recherche, soit pour la faire abandonner plus tôt, si on pense qu'il n'est pas besoin d'aller plus loin.

Considérons par exemple, le masque \d+foo appliqué à la ligne 123456bar. Après avoir tenté d'utiliser les 6 chiffres suivi de "foo" qui font échouer, l'action habituelle sera de réessayer avec 5 chiffres, puis avec 4, et ainsi de suite jusqu'à l'échec final.

Un sous-masque évalué une seule fois permettrait d'indiquer que lorsqu'une partie du masque est trouvée, elle n'a pas besoin d'être réévaluée à chaque tentative. Ceci conduirait à ce que la recherche échoue immédiatement après le premier test. Ces assertions ont leur propre notation, commençant avec (?> comme ceci : (?>\d+)bar.

Ce type de parenthèses verrouille le sous-masque qu'il contient un fois qu'il a été trouvé, et empêche un échec ultérieur d'y repasser, mais autorise à revenir plus loin en arrière. Une autre description est que les sous-masques de ce type recherche les chaînes de caractères, et les ancre le sous-masque à l'intérieur de la chaîne.

Les sous-masques uniques ne sont pas capturants. Des cas simples comme ceux présentés ci-dessus peuvent être pris comme des situations maximisantes, qui réservent le maximum de caractères. En effet, alors que \d+ et \d+? ajustent le nombre de chiffres trouvés de manière à laisser la possibilité au masque de réussir, (?>\d+) ne peut retenir que la séquence entière de chiffres. Cette construction peut contenir un nombre arbitraire de sous-masques complexes, et ils peuvent être imbriqués.

Les sous-masques uniques ne peuvent être utilisés qu'avec les assertions arrières, pour effectuer une recherche efficace en fin de chaîne. Considérons un masque simple tel que "abcd$" appliqué à une très longue chaîne qui ne lui correspond pas. A cause du système de recherche de gauche à droite, PCRE va commencer par rechercher un "a" dans la chaîne sujet, puis vérifier si ce qui suit convient au reste du masque. Si le masque est spécifié sous la forme ^.*abcd$ alors, la séquence .* remplace en premier lieu la chaîne entière, et échoue, repart en arrière, et remplace tous les caractères sauf le dernier, échoue, retourne en arrière, prend un caractère de moins, etc... et ainsi de suite. Encore une fois, la recherche du "a" passe en revue toute la chaîne de gauche à droite, ce qui n'est pas très efficace. Par contre, si le masque était écrit ^(?>.*)(?<=abcd) alors il n'y aurait pas de retour en arrière, pour satisfaire la séquence .*, car elle ne peut que remplacer toute la chaîne. L'assertion arrière consécutive va alors faire un test sur les 4 derniers caractères. Si elle échoue, la recherche est immédiatement interrompue.

Pour les chaînes très longues, cette approche fait la différence en terme de performances et de temps de recherche. Lorsqu'un masque contient une répétition illimitée dans un sous-masque, qui contient lui-même un nombre illimité de répétiteur, l'utilisation des sous-masques à utilisation unique sont la seule façon d'éviter l'échec de la recherche à après un temps de calcul trop long.

Le masque (\D+|<\d+>)*[!?] recherche un nombre illimité de sous-chaînes, qui contiennent soit des non-chiffres, soit des chiffres inclus dans <>, suivi soit par ! ou par ?. Lorsqu'il trouve une solution, ce masque va très vite. Mais, lorsqu'il est appliqué à une chaîne telle que : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, il lui faut beaucoup de temps pour annoncer un échec. Cela est dû au fait que la chaîne peut être divisée en deux sous-chaînes d'un grand nombre de façons, et qu'elles ont toutes été essayées. (Cet exemple utilisait [!?] plutôt qu'un caractère simple, car PCRE et PHP utilise une optimisation qui leur permettent de détecter rapidement l'échec lorsqu'un caractère unique est trouvé. Il se souvient du dernier caractère qui est attendu, et s'aperçoit rapidement qu'il n'y a pas ce caractère).

Si le masque utilisé est ((?>\D+)|<\d+>)*[!?] les séquences de chiffres ne peuvent pas être trouvées, et l'échec intervient rapidement.

Les sous-masques conditionnels

Il est possible de lier un sous-masque à une condition, ou de choisir entre deux sous-masques alternatifs, en fonction du résultat d'une assertion, ou suivant les résultats de recherche précédents.

Les deux formes possibles de sous-masques conditionnels sont (?(condition)masque positif) et (?(condition) masque positif | masque négatif).

Si les conditions sont satisfaites, le masque positif est utilisé, sinon, le masque négatif est utilisé, si présent. S'il y a plus de deux alternatives, une erreur est générée à la compilation.

Il y a deux types de conditions : si le texte entre les parenthèses est une séquence de chiffres, alors la condition est satisfaite si le sous-masque correspondant à ce numéro a réussi. Considérons le masque suivant, qui contient des espaces non significatifs pour le rendre plus compréhensible (on supposera l'option PCRE_EXTENDED activée) et qui est divisé en trois parties pour simplifier les explications : ( \( )? [^()]+ (?(1) \) ).

La première partie recherche une parenthèse ouvrante optionnelle, et si elle existe, elle est capturée. La deuxième partie recherche un séquence de caractères qui ne contiennent pas de parenthèses. La troisième partie est conditionnée à la première, et s'assure que s'il y avait une parenthèse ouvrante, il en existe une fermante. Si une parenthèse ouvrante a été trouvée, elle a été capturée, et donc la première capture existe, et la condition est exécutée. Sinon, elle est ignorée.

Ce masque recherche donc une séquence de lettres, éventuellement placées entre parenthèse. Si la condition n'est pas une séquence de chiffres, il faut que ce soit une assertion. Ce peut être une assertion positive ou négative, arrière ou avant. Considérons le masque suivant (même conditions que le précédent) et avec deux alternatives en seconde ligne : (?(?=[^a-z]*[a-z])\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ). La condition est une assertion avant positive, qui recherche une séquence optionnelle de caractères non-lettre. En d'autres termes, elle teste la presence d'au moins une lettre dans la chaîne sujet. Si une lettre est trouvée, la recherche se poursuit avec la première alternative, et sinon, avec la seconde. Ce masque recherche des chaînes de la forme dd-aaa-dd ou dd-dd-dd, avec "aaa" qui sont des lettres, et dd qui sont des chiffres.

Commentaires

La séquence (?# marque le début d'un commentaire, qui se termine à la prochaine parenthèse fermante. Les parenthèses imbriquées ne sont pas autorisées. Les caractères entre ces délimiteurs ne jouent alors aucun rôle dans le masque.

Si l'option PCRE_EXTENDED est activée, les caractères dièses # non échappés en dehors d'une classe de caractères introduisent un commentaire qui continuera jusqu'à la prochaine ligne dans le masque.

Masques récursifs

Considérons le cas où il faut recherche dans une chaîne, avec un niveau d'imbrications infini de parenthèses. Sans l'aide de la récursivité, le mieux que nous puissions obtenir est de créer un masque avec un niveau fixé de profondeur d'imbrication. Il n'est pas possible de traiter des masques à niveau d'imbrications variable. PCRE fournit un nouvel outil expérimental qui permet d'utiliser la récursivité dans les masques (entre autre). L'option (?R) est fournie pour servir la cause de la récursivité. Le masque suivant résoud le problème des parenthèses (l'option PCRE_EXTENDED est utilisée pour ignorer les espaces) : \( ( (?>[^()]+) | (?R) )* \)

Tout d'abord, le masque recherche une parenthèse ouvrante. Puis, il recherche n'importe quel nombre de sous-chaînes qui sont soit des séquences de caractères non-parenthèses, ou bien une recherche récursive avec le même masque (i.e. une chaîne correctement incluse entre parenthèses). Finalement, il recherche une parenthèse fermante.

Cet exemple particulier contient un nombre illimité de répétitions imbriquées, ce qui fait que l'utilisation de sous-chaînes à utilisation unique pour rechercher les séquence de caractères non-parenthèses est important, lorsqu'il s'applique à une chaîne qui n'est pas valide. Par exemple, si on l'applique à "(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()" la réponse arrive rapidement. Sinon, si les sous-chaînes à utilisation unique ne sont pas utilisées, la recherche peut prendre un très long temps, car il existe de très nombreuses combinaisons de + et * à tester avant de conclure à l'échec.

Les valeurs utilisées pour capturer les sous-masques sont celles utilisées par les niveaux les plus hauts de récursivités, auquel la valeur est fixée. Si le masque précédent est utilisé avec (ab(cd)ef) la valeur de la parenthèse capturante est "ef", qui est la dernière valeur lue au niveau supérieur. Si de nouvelles parenthèses sont ajoutées, par exemple : \( ( ( (?>[^()]+) | (?R) )* ) \) alors la chaîne capturée est "ab(cd)ef", c'est-à-dire le contenu de la parenthèses capturant de plus haut niveau. S'il y a plus de 15 parenthèses capturantes dans une chaîne, PCRE doit utiliser plus de mémoire pour stocker ces données. S'il ne peut obtenir cette mémoire supplémentaire, il ne fait que sauver les 15 premières, car il n'y a pas moyen de générer une erreur de mémoire lors d'une récursion.

Performances

Certaines séquences de recherches sont plus efficaces que d'autres. Ainsi, il est plus efficace d'utiliser une classe de caractères telle que [aeiou] plutôt qu'une alternative (a|e|i|o|u).

En général, le masque le plus simple, qui permette la recherche désirée est le plus efficace. Le livre de Jeffrey Friedl's contient de nombreuses études à propos de l'optimisation des expressions régulières.

Lorsqu'un masque commence par.* et que l'option PCRE_DOTALL est activée, le masque est implicitement ancré par PCRE, étant donné qu'il ne peut que rechercher au début de la chaîne. Cependant, si option PCRE_DOTALL n'est pas activée, PCRE ne peut faire aucune optimisation car le méta-caractères point "." ne remplace pas une nouvelle ligne, et si la chaîne sujet contient des nouvelles lignes, le masque peut trouver une solution qui serait située juste après une de ces nouvelles lignes, et non pas seulement au début de la chaîne sujet. Par exemple, le masque, (.*)second acceptera la chaîne "premier \net second" (avec "\n" qui remplace la nouvelle ligne), et la première chaîne capturée sera "et".

Afin d'effectuer la recherche, PCRE va essayer d'appliquer le masque à partir de chaque début de ligne. Si vous utilisez un tel masque avec des chaînes qui ne contiennent pas de caractères de nouvelles lignes, les meilleures performances seront atteintes avec l'option PCRE_DOTALL, ou en ancrant le masque avec ^.*. Cela évite à PCRE de scanner toute la chaîne pour rechercher un caractère de nouvelle ligne et recommencer la recherche.

Attention aux masques qui contiennent des quantificateurs infinis imbriqués. Ils peuvent demander un temps de calcul très long, lorsqu'appliqués à une chaîne qui ne correspond pas à ce masque. Par exemple, (a+)* peut accepter "aaaa" de 33 manières différentes, et ce nombre croit rapidement avec la taille de la chaîne (le quantificateur * peut prendre les valeurs de 0, 1, 2, 3, ou 4, et pour chaque cas non nul, le quantificateur + peut prendre différentes valeurs).

Lorsque le reste de la chaîne est tel que l'on s'achemine vers un échec, PCRE doit en principe vérifier toutes les possibilités, et cela prend un temps extrêmement long. Un optmiseur repère les cas les plus simples, tel que (a+)*b où un caractère simple suit les quantificateurs. Avant de partir dans les procédures standard de recherche, PCRE s'assure qu'il y a au moins un "b" dans la chaîne, et si ce n'est pas le cas, l'échec est annoncé immédiatement. Sinon, il n'y a pas d'optimisation dans la recherche. Vous pouvez voir la différence de comportement avec le masque suivant : (a+)*\d. Le premier retourne un échec quasi-immédiatement, s'il est appliqué à une ligne de "a", alors que le second masque prend un temps significatif pour une chaîne de plus de 20 caractères.

Précédent | Sommaire | Suivant
options de recherche | Niveau supérieur | preg_grep


preg_grep

(PHP 4 )

preg_grep -- Retourne un tableau avec les résultat de la recherche

Description

array preg_grep ( string pattern, array input)

preg_grep() retourne un tableau qui contient les éléments de input qui satisfont le masque pattern.

Depuis PHP 4.0.4, le tableau retourné par preg_grep() est indexé en utilisant les clés issues du tableau input. Si ces clés sont inutiles, utilisez la fonction array_values() sur le tableau retourné par preg_grep() pour obtenir le comportement traditionnel.

Exemple 1. Exemple avec preg_grep()

<?php
// recherche les nombres &agrave; virgule flottante
preg_grep("/^(\d+)?\.\d+$/", $array);
?>

Précédent | Sommaire | Suivant
syntaxe des masques | Niveau supérieur | preg_match_all


preg_match_all

(PHP 3>= 3.0.9, PHP 4 )

preg_match_all -- Expression régulière globale

Description

int preg_match_all ( string pattern, string subject, array matches [, int flags])

preg_match_all() analyse subject pour trouver l'expression pattern et met les résultats dans matches, dans l'ordre spécifié par order.

Après avoir trouvé un premier résultat, la recherche continue jusqu'à la fin de la chaîne.

order peut prendre une des deux valeurs suivantes (notez bien qu'il est incohérent d'utiliser PREG_PATTERN_ORDER avec PREG_SET_ORDER ) :

PREG_PATTERN_ORDER

L'ordre est tel que $matches[0] est un tableau qui contient les résultats qui satisfont le masque complet, $matches[1] est un tableau qui contient les résultats qui satisfont la première parenthèse capturante, etc..

Exemple 1. Exemple avec preg_match_all() et PREG_PATTERN_ORDER

<?php
  preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
                 "<b>exemple : </b><div align=left>un test</div>",
                 $out,
                 PREG_PATTERN_ORDER);
  print $out[0][0].", ".$out[0][1]."\n";
  print $out[1][0].", ".$out[1][1]."\n";
?>
Cet exemple va afficher :

Exemple 2. Resultat avec PREG_PATTERN_ORDER

<b>exemple : </b>, <div align=left>un test</div> exemple : , un test

Ainsi, $out[0] est un tableau qui contient les résultats qui satisfont le masque complet, et $out[1] est un tableau qui contient les balises entre > et <.

PREG_SET_ORDER

Les résultats sont classés de telle façon que $matches[0] contient la première série de résultat, $matches[1] contient la deuxième série de résultat, etc...

Exemple 3. Exemple avec preg_match_all() et PREG_SET_ORDER

<?php
  preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
                 "<b>exemple : </b><div align=left>un test</div>",
                 $out,
                 PREG_SET_ORDER);
  print $out[0][0].", ".$out[0][1]."\n";
  print $out[1][0].", ".$out[1][1]."\n";
?>
Cet exemple va afficher :

Exemple 4. Résultat avec PREG_SET_ORDER

<b>exemple : </b>, exemple :
<div align=left>un test</div>, un test
Dans ce cas, $matches[0] est la première série de résultat, et $matches[0][0] contient le texte qui satisfait le masque complet, $matches[0][1] contient le texte de la première parenthèse capturante, etc... De même, $matches[1] contient le texte qui satisfait le masque complet, etc...

PREG_OFFSET_CAPTURE

Si cette option est activée, toutes les sous chaînes qui satisfont le masque seront aussi identifiées par leur offset. Notez que cela modifie le format de la valeur retournée , puisque chaque élément de réponse devient un tableau contenant la sous-chaîne résultat, à l'index 0 dans la chaîne subject constant 1. Cette option a été ajoutée en PHP 4.3.0 .

Si order est omis, PREG_PATTERN_ORDER est utilisé par défaut.

preg_match_all() retourne le nombre de résultat qui satisfont le masque complet, ou FALSE en cas d'échec ou d'erreur.

Exemple 5. Extraction de tous les numéros de téléphone d'un texte.

<?php
  preg_match_all("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
               "Appelez 555-1212 ou 1-800-555-1212", $phones);
?>

Exemple 6. Recherche les couples de balises HTML (gourmand)

<?php
// Cet exemple utilise les r&eacute;f&eacute;rences arri&egrave;res (\\2).
// Elles indiquent &agrave; l'analyseur qu'il doit trouver quelquechose qu'il
// a d&eacute;j&agrave; rep&eacute;r&eacute; un peu plus t&ocirc;t
// le nombre 2 indique que c'est le deuxi&egrave;me jeu de parenth&egrave;ses
// capturante qui doit &ecirc;tre utilis&eacute; (ici, ([\w]+)).
//  L'antislash est n&eacute;cessaire ici, car la cha&icirc;ne est entre guillemets doubles

  $html = "<B>Texte en gras</B><a href=salut.html>clique moi</a>";

preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
  echo "Trouv&eacute; : ".$matches[0][$i]."\n";
  echo "partie 1 : ".$matches[1][$i]."\n";
  echo "partie 2 : ".$matches[3][$i]."\n";
  echo "partie 3 : ".$matches[4][$i]."\n\n";
}
?>
Cet exemple va produire : Trouv&eacute; : <B>Texte en gras</B> partie 1 : <B> partie 2 : Texte en gras partie 3 : </B> Trouv&eacute; : <a href=salut.html>clique moi</a> partie 1 : <a href=salut.html> partie 2 : clique moi partie 3 : </a>

Voir aussi
preg_match(),
preg_replace() et
preg_split().

Précédent | Sommaire | Suivant
preg_grep | Niveau supérieur | preg_match


preg_match

(PHP 3>= 3.0.9, PHP 4 )

preg_match -- Expression régulière standard

Description

int preg_match ( string pattern, string subject [, array matches [, int flags]])

preg_match() analyse subject pour trouver l'expression pattern.

Si matches est fourni, il sera rempli par les résultats de la recherche. $matches[0] contiendra le texte qui satisfait le masque complet, $matches[1] contiendra le texte qui satisfait la première parenthèse capturante, etc..

Le paramètre flags peut prendre l'une des valeurs suivantes :

PREG_OFFSET_CAPTURE

Si cette option est activée, toutes les sous chaînes qui satisfont le masque seront aussi identifiées par leur offset. Notez que cela modifie le format de la valeur retournée , puisque chaque élément de réponse devient un tableau contenant la sous-chaîne résultat, à l'index 0 dans la chaîne subject constant 1. Cette option a été ajoutée en PHP 4.3.0 .

Le paramètre flags a été ajouté en PHP 4.3.0 .

preg_match() retourne le nombre de fois où le masque pattern a été trouvé. Cela peut aller de 0 (pas de solutioon) à un 1 car preg_match() s'arrête dès qu'il a trouvé une première solution. preg_match_all(), au contraire, va continue jusqu'à la fin de la chaîne subject. preg_match() retourne FALSE si une erreur survient.

Exemple 1. Extraction d'un numéro de page d'une chaîne.

<?php
if (preg_match("/page\s+#(\d+)/i", "Aller &agrave; la page num&eacute;ro 9.", $parts))
    print "La page suivante est $parts[1]";
else
    print "Page introuvable.";
?>

Exemple 2. Trouve le mot "web"

<?php
// \b, dans le masque, indique une limite de mot, de fa&ccedil;on &agrave; ce que le mot
// "web" uniquement soit rep&eacute;r&eacute;, et pas seulement des parties de mots comme
// dans "webbing" ou "cobweb"
if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) {
    print "Un mot a &eacute;t&eacute; trouv&eacute;.";
} else {
    print "Un mot n'a pas &eacute;t&eacute; trouv&eacute;.";
}
if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) {
     print "Un mot a &eacute;t&eacute; trouv&eacute;.";
} else {
    print "Un mot n'a pas &eacute;t&eacute; trouv&eacute;.";
}
?>

Exemple 3. Lire un nom de domaine dans une URL

<?php
// rep&eacute;rer le nom de l'h&ocirc;te dans l'URL
  preg_match("/^(http:\/\/)?([^\/]+)/i",
             "http://www.php.net/index.html", $matches);
  $host = $matches[2];
// rep&eacute;rer les deux derniers segments du nom de l'h&ocirc;te
  preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
  echo "Le nom de domaine est : ".$matches[0]."\n";
?>
Cet exemple va afficher : Le nom de domaine est : php.net

Voir aussi
preg_match_all(),
preg_replace() et
preg_split().

Précédent | Sommaire | Suivant
preg_match_all | Niveau supérieur | preg_quote


preg_quote

(PHP 3>= 3.0.9, PHP 4 )

preg_quote -- Echappement des caractères spéciaux des expressions régulières.

Description

string preg_quote ( string str [, string delimiter])

preg_quote() ajoute un antislash devant tous les caractères de la chaîne str. Cela est très utile si vous avez une chaîne qui va servir de masque, mais qui est générée durant l'exécution.

Si l'argument optionnel delimiter est fourni, il sera aussi échappé. Ceci est pratique pour échapper le délimiteur requis par les fonctions PCRE. Le slash / est le délimiteur le plus répandu.

Les caractères spéciaux qui seront échappés :
. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :

Exemple 1. Protège des caractères spéciaux

<?php
  $keywords = "$40 pour un g3/400";
  $keywords = preg_quote ($keywords, "/");
  echo $keywords;
  // retourne \$40 pour un g3\/400
?>

Exemple 2. Mise en italique d'un mot dans un texte

<?php
// Dans cet exemple, preg_quote($word) sert &agrave; &eacute;viter que les ast&eacute;risques
// prennent une valeur particuli&egrave;re dans l'exepression r&eacute;guli&egrave;re.
$textbody = "Ce livre est *tr&egrave;s* difficile &agrave; trouver.";
$word = "*tr&egrave;s*";
$textbody = preg_replace ("/".preg_quote($word)."/",
                          "<B>".$word."</B>",
                          $textbody);
?>

Précédent | Sommaire | Suivant
preg_match | Niveau supérieur | preg_replace_callback


preg_replace_callback

(PHP 4 >= 4.0.5)

preg_replace_callback -- Rechercher/remplacer avec une expression régulière et fonction de callback

Description

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit])

Le comportement de preg_replace() est presque identique à celui de preg_replace(), hormis le fait qu'à la place du paramètre replacement, il faut spécifier une fonction de callback callback qui sera appelée, avec les éléments trouvés en arguments. Cette fonction retourne alors la chaîne de remplacement.

Exemple 1. Exemple avec preg_replace_callback()

<?php
  // Ce texte &eacute;tait vrai en 2002
  // nous voulons le mettre a jour pour 2003
  $text = "Le premier avril est le 01/04/2002\n";
  $text.= "Le dernier noel &eacute;tait le 12/24/2001\n";

  // Fonction de callback
  function next_year($matches) {
    // comme d'habitude : $matches[0] repr&eacute;sente la valeur totale
    // $matches[1] repr&eacute;sente la premi&egrave;re parenth&egrave;se capturante
    return $matches[1].($matches[2]+1);
  }

  echo preg_replace_callback(
              "|(\d{2}/\d{2}/)(\d{4})|",
              "next_year",
              $text);

  // retourne ceci :
  // Le premier avril est le 01/04/2003
  // Le dernier noel &eacute;tait le 12/24/2002
?>

Vous aurez souvent besoin de la fonction callback avec preg_replace_callback() à un seul endroit. Dans ce cas, vous pouvez simplement utiliser la fonction create_function() pour déclarer une fonction anonyme comme fonction de callback pour preg_replace_callback(). En faisant cela, vous concentrez toutes les routines liées à votre remplacement à un seul endroit, et nous ne polluez par votre espace de noms de fonctions avec des fonctions à usage unique.

Exemple 2. Exemples avec preg_replace_callback() et create_function()

<?php
  // Un filtre de ligne de commande Unix pour convertir les lettres
  // en majuscule de d&eacute;but des paragraphe en minuscules

    $fp = fopen("php://stdin", "r") or die("Impossible de lire la ligne de commande");
    while (!feof($fp)) {
        $line = fgets($fp);
        $line = preg_replace_callback(
              '|<p>\s*\w|',
              create_function(
                // Les guillemets simples sont tr&egrave;s importants ici
                // ou bien il faut prot&eacute;ger les caract&egrave;res $ avec \$
                '$matches',
                'return strtolower($matches[0]);'
              ),
              $line
            );
        echo $line;
    }
    fclose($fp);
?>

Voir aussi preg_replace() et create_function().

Précédent | Sommaire | Suivant
preg_quote | Niveau supérieur | preg_replace


preg_replace

(PHP 3>= 3.0.9, PHP 4 )

preg_replace -- Rechercher et remplacer par expression régulière standard

Description

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

preg_replace() analyse subject pour trouver l'expression pattern et remplace les résultats par replacement.

replacement peut contenir des références de la forme \\n ou, depuis PHP 4.0.4) $n. Cette dernière forme est recommandée. Ces références seront remplacées par le texte capturé par la n'-ième parenthèse capturante du masque. n peut prendre des valeurs de 0 à 99, et \\0 ou $0, correspondent au texte de qui satisfait le masque complet. Les parenthèses ouvrantes sont comptées de gauche à droite (en commençant à 1) pour déterminer le numéro de parenthèse capturante.

Exemple 1. Utilisation des références arrières avec des littéraux numériques

<?php
$string = "Avril 05, 2003";
$pattern = "/(\w+) (\d+), (\d+)/i";
$replacement = "\${1}1,\$3";
print preg_replace($pattern, $replacement, $string);

/* Output
   ======

Avril1,2003

 */
?>

Si la recherche n'aboutit à aucun résultat, subject sera inchangé.

Tous les paramètres de preg_replace() peuvent être des tableaux.

Note : Lorsque vous utilisez des tableaux avec les paramètres pattern et replacement, les clés sont traitées dans l'ordre dans lequel elles apparaissent dans le tableau. Ce n'est pas forcément la même chose que l'ordre des index numérique. Si vous utilisez des index pour identifier quel pattern doit être replacée par quel replacement, il est recommandé de faire un tri ksort() sur chaque tableau avant de faire appel à preg_replace().

Exemple 2. Utilisation de tableaux indexé avec preg_replace()

<?php
$string = "The quick brown fox jumped over the lazy dog.";

$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";

$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";

print preg_replace($patterns, $replacements, $string);

/* Output
   ======

The bear black slow jumped over the lazy dog.

*/

/* By ksorting patterns and replacements,
   we should get what we wanted. */

ksort($patterns);
ksort($replacements);

print preg_replace($patterns, $replacements, $string);

/* Output
   ======

The slow black bear jumped over the lazy dog.

*/

?>

Si subject est un tableau, alors l'opération sera appliquée à chacun des éléments du tableau, et le tableau sera retourné.

Si pattern et replacement sont des tableaux, alors preg_replace() prend une valeur de chaque tableau, et l'utilise pour faire la recherche et le remplacement. Si replacement à moins d'éléments que pattern, alors la chaîne vide est utilisé pour le reste des valeurs. Si pattern est un tableau, et que replacement est une chaîne, alors cette chaîne sera utilisée pour chaque valeur de pattern. Le contraire n'aurait pas de sens.

/e force preg_replace() à traiter replacement comme du code PHP une fois que les substitutions adéquates ont été faites. Conseil :assurez-vous que replacement est un code PHP valide, car sinon, PHP trouvera une erreur d'analyse (parse error) dans cette ligne.

/F indique que le paramètre replacement doit être considéré comme un nom de fonction. Cette fonction sera appelée, avec un tableau contenant les éléments trouvés comme arguments. La fonction doit retourner la chaîne de remplacement. Cette option a été ajoutée en PHP 4.0.4.

Exemple 3. Remplacement de plusieurs valeurs simultanément

<?php
$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
                   "/^\s*{(\w+)}\s*=/");
$replace = array ("\\3/\\4/\\1\\2", "$\\1 =");
print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");
?>
Cet exemple va afficher :
$startDate = 5/27/1999

Exemple 4. Utilisation de l'option /e

<?php
  preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body);
?>

Cela va mettre en majuscule toutes les balises HTML du texte.

Exemple 5. Conversion HTML en texte

<?php
// $document contient un document HTML
// Ce script va effacer les balises HTML, les javascript
// et les espaces. Il remplace aussi quelques entit&eacute;s HTML
// courante en leur &eacute;quivalent texte.
$search = array ("'<script[?>]*?>.*?</script>'si",  // Supprime le javascript
                 "'<[\/\!]*?[^<?>]*?>'si",  // Supprime les balises HTML
                 "'([\r\n])[\s]+'",  // Supprime les espaces
                 "'&(quot|#34);'i",  // Supprime les entites HTML
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");  // Evaluation comme PHP
$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ?>",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");
$text = preg_replace ($search, $replace, $document);
?>

Note : Le paramètre limit a été ajouté à partir de PHP 4.0.1pl2.

Voir aussi
preg_match(),
preg_match_all() et
preg_split().

Précédent | Sommaire | Suivant
preg_replace_callback | Niveau supérieur | preg_split


preg_split

(PHP 3>= 3.0.9, PHP 4 )

preg_split -- Eclate une chaîne par expression régulière

Description

array preg_split ( string pattern, string subject [, int limit [, int flags]])

preg_split() retourne un tableau contenant les sous-chaînes de subject, séparées par les chaînes qui vérifient pattern.

Si limit est spécifié, alors seules les limit premières sous-chaînes sont retournées et si limit vaut -1, cela signifie en fait "sans limite", ce qui est utile pour passer le paramètre flags.

flags peut être la combinaison des options suivantes (combinées avec l'opérateur |):

PREG_SPLIT_NO_EMPTY

Si cette option est activée, seules les sous-chaînes non vides seront retournées par preg_split().

PREG_SPLIT_DELIM_CAPTURE

Si cette option est activée, les expressions entre parenthèses entre les délimiteurs de masques seront aussi capturées et retournées. Cette option a été ajoutée en PHP 4.0.5.

Exemple 1. Eclatement d'une chaîne de recherche

<?php
// scinde la phrase gr&acirc;ce aux virgules et espacements
// ce qui inclus les " ", \r, \t, \n et \f
$keywords = preg_split ("/[\s,]+/", "langage hypertexte, programmation");
?>

Exemple 2. Scinder une chaîne en caractères

<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>

Exemple 3. Scinde une chaîne et capture les offsets

<?php
  $str = 'langage hypertexte, programmation';
  $chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
  print_r($chars);
?>

va afficher

Array
(
    [0] => Array
        (
            [0] => langage
            [1] => 0
        )

    [1] => Array
        (
            [0] => hypertexte,
            [1] => 8
        )

    [2] => Array
        (
            [0] => programmation
            [1] => 20
        )

)

Note : Le paramètre flags a été ajouté en PHP Beta 3.

Voir aussi
spliti(),
split(),
implode(),
 preg_match(),
preg_match_all() et
preg_replace().

Précédent | Sommaire | Suivant
preg_replace | Niveau supérieur | qtdom


qtdom

Manuel PHP
Précédent Suivant

XCI. qtdom

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Vous aurez besoin de la librairie Qt-library >=2.2.0.

Installation

Pour ajouter le support de qtdom dans PHP, ajoutez l'ption --with-qtdom lors de la compilation.

Table des matières
qdom_error -- Retourne le message 'derreur de la dernière opération QTDOM, ou FALSE si aucune erreur n'est survenue
qdom_tree -- Crée une arbre à partir d'un code XML

Précédent | Sommaire | Suivant
preg_split | Niveau supérieur | qdom_error


qdom_error

(PHP 4 >= 4.0.5)

qdom_error -- Retourne le message 'derreur de la dernière opération QTDOM, ou FALSE si aucune erreur n'est survenue

Description

string qdom_error ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
qtdom | Niveau supérieur | qdom_tree


qdom_tree

(PHP 4 >= 4.0.4)

qdom_tree -- Crée une arbre à partir d'un code XML

Description

object qdom_tree ( string )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
qdom_error | Niveau supérieur | Expressions régulières


Expressions régulières

Manuel PHP
Précédent Suivant

XCII. Expressions régulières

Introduction

Note : PHP supporte aussi des expressions rationnelles compatibles Perl, avec l'extension PCRE functions. Ces fonctions supportent des recherches non-gourmandes, des assertions, des sous-masques conditionnels et toute une gamme de fonctionnalités absentes des expressions rationnelles POSIX.

Avertissement

Ces expressions rationnelles ne sont pas compatibles avec les données binaires. Les expressions PCRE le sont.

Les expressions régulières sont utilisées pour effectuer des manipulations complexes de chaînes de caractères. Les fonctions sont :

  • ereg()

  • ereg_replace()

  • eregi()

  • eregi_replace()

  • split()

  • spliti()

Ces fonctions requièrent toutes une expression régulière comme premier argument. PHP utilise les expressions régulières avancées de POSIX (POSIX 1003.2). Pour avoir tous les détails sur ces expressions, reportez vous aux pages de manuel inclues dans le répertoire de la distribution PHP. Elles sont au format manpage : pour les lire, vous devrez utiliser la ligne de commande man /usr/local/src/regex/regex.7.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Pour activer le support des expressions régulières en PHP vous devez compiler PHP avec l'option --with-regex=TYPE. TYPE peut prendre l'une des valeurs suiavntes : "system","apache","php". La valeur par défaut est "php".

Note : Ne changez pas la valeur de TYPE à moins que vous ne sachiez ce que vous faîtes.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Exemple 1. Expressions régulières

<?php
ereg ("abc", $string);
/* Retourne &true; si "abc"
   est trouv&eacute; quelque part dans la cha&icirc;ne $string. */

ereg ("^abc", $string);
/* Retourne &true; si  "abc"
   est trouv&eacute; au d&eacute;but de la cha&icirc;ne $string. */

ereg ("abc$", $string);
/* Retourne &true; si  "abc"
   est trouv&eacute; &agrave; la fin de la cha&icirc;ne  $string. */

eregi ("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT);
/* Retourne &true; si  le client
   est Netscape 2, 3 ou MSIE 3. */

ereg ("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string,$regs);
/* Recherche trois mots s&eacute;par&eacute;s par des espaces
   dans les cha&icirc;nes $regs[1], $regs[2] et $regs[3]. */

$string = ereg_replace ("^", "<br />", $string);
/* Ins&egrave;re une balise <br /> au d&eacute;but de la cha&icirc;ne $string. */

$string = ereg_replace ("$", "<br />", $string);
/* Ins&egrave;re une balise <br /> &agrave; la fin de la cha&icirc;ne $string. */

$string = ereg_replace ("\n", "", $string);
/* Supprime toutes les nouvelles lignes de $string. */
?>

Voir aussi

Pour des expressions rationnelles compatibles Perl, voyez l'extension PCRE. Les commandes de recherches plus simples (avec support des caractères jokers) sont fournis par la fonction fnmatch().

Table des matières
ereg_replace -- Remplacement par expression régulière
ereg -- Expression régulière standard
eregi_replace -- Remplacement par expression régulière insensible à la casse.
eregi -- Recherche par expression régulière insensible à la casse
split -- Scinde une chaîne en un tableau, grâce à une expression régulière.
spliti -- Scinde une chaîne en un tableau, grâce à une expression régulière
sql_regcase -- Prépare une expression régulière pour effectuer une recherche insensible à la casse.

Précédent | Sommaire | Suivant
qdom_tree | Niveau supérieur | ereg_replace


ereg_replace

(PHP 3, PHP 4 )

ereg_replace -- Remplacement par expression régulière

Description

string ereg_replace ( string pattern, string replacement, string string)

ereg_replace() effectue une recherche par expression régulière dans la chaîne string en recherchant les occurrences de pattern, puis les remplace par la chaîne replacement.

La chaîne modifiée est retournée. (Ce qui signifie que la chaîne originale sera retournée si aucune occurrence n'est trouvée).

Si pattern contient des parenthèses capturantes, replacement pourra contenir des séquences de la forme \\digit, qui seront remplacées par le texte capturé par la n-ième parenthèse capturante. \\0 correspond à la chaîne originale complète. De 0 à 9 parenthèses capturantes peuvent être utilisées. Les parenthèses peuvent être imbriquées, et leur numéro d'ordre est défini par leur parenthèse ouvrante.

Si aucune occurrence n'est trouvée, la chaîne string sera retournée intacte.

Par exemple, le code suivante affiche "Ceci est un test" trois fois :

Exemple 1. Exemple avec ereg_replace()

<?php
  $string = "Ceci est un test";
  echo ereg_replace (" fut", " est", $string);
  echo ereg_replace ("( )fut", "\\1est", $string);
  echo ereg_replace ("(( )fut)", "\\2est", $string);
?>

Par exemple, le code suivant affiche "Ceci etait un test" trois fois :

Exemple 2. Exemple avec ereg_replace()

<?php
/* Ceci ne fonctionne pas comme attendu */
$num = 4;
$string = "Cette cha&icirc;ne a quatre mots.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Affiche : 'Cette cha&icirc;ne a  mots.' */

/* This will work. */
$num = '4';
$string = "Cette cha&icirc;ne a quatre mots.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Affiche : 'Cette cha&icirc;ne a 4 mots.'  */
?>

Notez bien que si vous utilisez une valeur de type entier dans le paramètre de remplacement replacement, vous risquez de ne pas obtenir le résultat escompté. Tout cela parce que ereg_replace() va interpréter le nombre comme la valeur ordinale d'un caractère, et l'utiliser. Par exemple :

Exemple 3. Exemple avec ereg_replace()

<?php
/* Cet exemple ne fonctionne pas comme voulu. */
  $num = 4;
  $string = "Cette cha&icirc;ne a quatre mots.";
  $string = ereg_replace('quatre', $num, $string);
  echo $string;   /* Affichage : 'Cette cha&icirc;ne a  mots.' */

/* Ceci est bon. */
  $num = '4';
  $string = "Cette cha&icirc;ne a quatre mots.";
  $string = ereg_replace('quatre', $num, $string);
  echo $string;   /* Affichage : 'Cette cha&icirc;ne a 4 mots.' */
?>

Voir aussi
ereg(),
eregi(),
eregi_replace(),
str_replace() et
preg_match().

Précédent | Sommaire | Suivant
Expressions régulières | Niveau supérieur | ereg


ereg

(PHP 3, PHP 4 )

ereg -- Expression régulière standard

Description

bool ereg ( string pattern, string string [, array regs])

Recherche dans la chaîne string les séquences de caractères qui correspondent au masque pattern.

Si au moins une séquence est trouvée (éventuellement dans les parenthèses capturantes de pattern), et que la fonction est appelée avec un troisième argument regs, les résultats seront enregistrés dans regs. $regs[1] contiendra la première parenthèse capturante (celle qui commence le plus tôt), $regs[2] contiendra la deuxième parenthèse capturante (celle qui commence après la première), et ainsi de suite. $regs[0] contient une copie de la chaîne.

Si ereg() trouve ses solutions pour les parenthèses capturantes, $regs contiendra exactement 10 éléments, même si il y avait plus ou moins de 10 parenthèses capturantes qui étaient valides. Cela n'a aucun effet sur les capacités de la fonction ereg() à trouver d'autres sous chaînes. Si aucune valeur n'est trouvée, $regs ne sera pas modifié par ereg().

La recherche est sensible à la casse.

ereg() retourne TRUE si une occurrence a été trouvée dans la chaîne et FALSE dans le cas contraire, ou si une erreur est survenue.

L'exemple suivant prend une date au format ISO (YYYY-MM-DD) et l'affiche sous la forme DD.MM.YYYY :

Exemple 1. Exemple avec ereg()

<?php
  if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
    echo "$regs[3].$regs[2].$regs[1]";
  } else {
    echo "Format de date invalide : $date";
  }
?>

Voir aussi
eregi(),
preg_match(),
ereg_replace(),
eregi_replace(),
strpos() et
strstr().

Précédent | Sommaire | Suivant
ereg_replace | Niveau supérieur | eregi_replace


eregi_replace

(PHP 3, PHP 4 )

eregi_replace -- Remplacement par expression régulière insensible à la casse.

Description

string eregi_replace ( string pattern, string replacement, string string)

eregi_replace() est identique à ereg_replace(), hormis le fait qu'elle ne tient pas compte de la casse des caractères alphabétiques.

Voir aussi
ereg(),
eregi() et
ereg_replace().

Précédent | Sommaire | Suivant
ereg | Niveau supérieur | eregi


eregi

(PHP 3, PHP 4 )

eregi -- Recherche par expression régulière insensible à la casse

Description

bool eregi ( string pattern, string string [, array regs])

eregi() est identique à ereg(), hormis le fait qu'elle ignore la casse des caractère lors de la recherche sur les caractère alphabétiques.

Exemple 1. Exemple avec eregi()

<?php
  if (eregi("z", $string)) {
    echo "'$string' contient un 'z' ou un 'Z'!";
  }
?>

Voir aussi
ereg(),
ereg_replace(),
eregi_replace(),
stripos() et
stristr().

Précédent | Sommaire | Suivant
eregi_replace | Niveau supérieur | split


split

(PHP 3, PHP 4 )

split -- Scinde une chaîne en un tableau, grâce à une expression régulière.

Description

array split ( string pattern, string string [, int limit])

split() retourne un tableau de chaînes : chacune d'entre elle est une sous-chaîne de string délimitée par les occurrences trouvées de l'expression régulière pattern. Si une erreur survient, retourne FALSE.

Pour lire les 5 premiers champs d'une ligne du fichier /etc/passwd:

Exemple 1. Exemple avec split()

<?php
list($user,$pass,$uid,$gid,$extra)= split (":", $passwd_line, 5);
?>

Pour analyser une date qui est délimitée par des /, des points ou des tirets :

Exemple 2. Exemple avec split()

<?php
$date = "04/30/1973";  // Les d&eacute;limiteurs peuvent &ecirc;tre des tirets, points ou slash
list ($month, $day, $year) = split ('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br>\n";
?>

Notez que pattern est insensible à la casse

Notez bien que si vous n'avez pas besoin de la puissance des expressions régulières, il est plus rapide d'utiliser explode(), qui n'utilise pas le moteur d'expressions régulières.

Pour les utilisateurs qui recherchent le moyen d'émuler la commande Perl @chars = split('', $str), voyez preg_split().

Notez aussi que pattern est une expression régulière. Si vous voulez utiliser n'importe quel caractère spécial des expressions régulières, vous devez les échapper. Si vous pensez que split() (ou toute autre expression régulière) se comporte bizarrement, lisez d'abord le fichier regex.7, inclus dans le dossier regex/ de la distribution PHP . Il est au format manpage, et vous pourrez le lire avec une commande telle que man /usr/local/src/regex/regex.7.

Voir aussi
 preg_split(),
  spliti(),
 explode(),
 implode(),
 chunk_split() et
 wordwrap().

Précédent | Sommaire | Suivant
eregi | Niveau supérieur | spliti


spliti

(PHP 4 >= 4.0.1)

spliti -- Scinde une chaîne en un tableau, grâce à une expression régulière

Description

array spliti ( string pattern, string string [, int limit])

spliti() est identique à split(), hormis le fait qu'elle ignore la casse.

Voir aussi
preg_spliti(),
split(),
explode() et
implode().

Précédent | Sommaire | Suivant
split | Niveau supérieur | sql_regcase


sql_regcase

(PHP 3, PHP 4 )

sql_regcase -- Prépare une expression régulière pour effectuer une recherche insensible à la casse.

Description

string sql_regcase ( string string)

sql_regcase() retourne une expression régulière valide qui acceptera la chaîne string, et toutes les variantes majuscule/minuscule possibles de cette chaîne. Cette expression sera construite à partir de la chaîne string en remplacant tous les caractères par des expressions entre crochets (des classes de caractères), contenant la lettre majuscule et minuscule. Si le caractère n'est pas une lettre, les crochets contiendront deux fois le caractère original.

Exemple 1. Exemple avec sql_regcase()

<?php
  echo sql_regcase ("Foo bar");
?>
affichera [Ff][Oo][Oo] [Bb][Aa][Rr].

Cette expression sert à effectuer des recherches insensibles à la casse avec d'autres logiciels, qui n'acceptent les recherches insensibles à la casse.

Précédent | Sommaire | Suivant
spliti | Niveau supérieur | Sémaphores et gestion de la mémoire partagée


Sémaphores et gestion de la mémoire partagée

Manuel PHP
Précédent Suivant

XCIII. Sémaphores et gestion de la mémoire partagée

Introduction

Ce module fourni un système de sémaphore. Ce système utilise les sémaphores System V.

Les sémaphores peuvent être utilisés pour fournir un accès exclusif à certaines ressources de la machine, ou pour limiter le nombre de processus qui utilisent en même temps une ressource.

Ce module fournit aussi un système de mémoire partagée, qui utilise la mémoire partagée System V. Cette mémoire partagée permet d'accéder à des variables globales. Les différents démons httpd et mêmes d'autres programmes (tels que Perl, C, ...) permettent un tel échange de données global. N'oubliez pas que la mémoire partagée n'est pas protégées contre l'accès simultané. Il vous faudra utiliser les sémaphores pour assurer la synchronisation.

Tableau 1. Limites de la mémoire partagée sous Unix OS

SHMMAX | Taille maximale de mémoire partagée, par défaut, 131072 octets.
SHMMIN | Taille minimale de mémoire partagée, par défaut, 1 octet.
SHMMNI | Nombre maximal de segment de mémoire partagé, par défaut 100.
SHMSEG | Taille maximale de mémoire partagée par processus, par défaut 6.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Le support de ces fonctions n'est pas activé par défaut. Pour activer le support des sémaphores System V, compilez PHP avec l'option --enable-sysvsem. Pour activer le support de la mémoire partagée System V, compilez PHP avec l'option --enable-sysvshm. Pour activer le support des messages System V, compilez PHP avec l'option --enable-sysvmsg.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 2. Options de configuration

Nom | Par défaut | Modifiable
sysvmsg.value | "42" | PHP_INI_ALL
sysvmsg.string | "foobar" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
ftok -- Convertit un chemin et un identifiatn de projet en une clé System V IPC
msg_get_queue -- Crée ou s'attache à une file de message
msg_receive -- Reçoit un message depuis une file de messages
msg_remove_queue -- Détruit une file de messages
msg_send -- Envoie un message dans une file
msg_set_queue -- Modifie des informations dans la file de messages
msg_stat_queue -- Retourne des informations sur la file de messages
sem_acquire -- Réserve un sémaphore
sem_get -- Retourne un identifiant de sémaphore
sem_release -- Libère un sémaphore
sem_remove -- Détruit un sémaphore
shm_attach -- Crée ou ouvre un segment de mémoire partagée.
shm_detach -- Libère un segment de mémoire partagée
shm_get_var -- Lit une variable dans la mémoire partagée.
shm_put_var -- Insère ou modifie une variable de la mémoire partagée.
shm_remove_var -- Efface une variable de la mémoire partagée.
shm_remove -- Supprime un segment de mémoire partagée sous Unix.

Précédent | Sommaire | Suivant
sql_regcase | Niveau supérieur | ftok


ftok

(PHP 4 >= 4.2.0)

ftok -- Convertit un chemin et un identifiatn de projet en une clé System V IPC

Description

int ftok ( string pathname, string proj)

ftok() convertit le paramètre pathname d'un fichier existant, et de l'identifiant de projet proj en un entier integer à utiliser avec la fonction shmop_open() et d'autres fonctions System V IPC. Le paramètre proj doit être une chaîne d'un seul caractère.

En cas de succès, la valeur retournée sera la clée créée, et sinon, -1 est retourné.

Voir aussi shmop_open() et sem_get().

Précédent | Sommaire | Suivant
Sémaphores et gestion de la mémoire partagée | Niveau supérieur | msg_get_queue


msg_get_queue

(PHP 4 >= 4.3.0)

msg_get_queue -- Crée ou s'attache à une file de message

Description

int msg_get_queue ( int key [, int perms])

msg_get_queue() retourne une ressource qui peut être utilisée avec les files de messages System V message, et la clé key. Le premier appel à la fonction va créer la file de messages, avec les droits optionnels de perms (par défaut : 0666). Un second appel à msg_get_queue() avec la même clé key retournera une autre ressource de file de messages, mais les deux identifiants aboutissent à la même file de messages. Si la file de messages existe déjà, le paramètre perms sera ignoré.

Cette fonction a été introduite en PHP 4.3.0.

Voir aussi
msg_remove_queue(),
msg_receive(),
msg_send(),
msg_stat_queue() et
msg_set_queue().

Précédent | Sommaire | Suivant
ftok | Niveau supérieur | msg_receive


msg_receive

(PHP 4 >= 4.3.0)

msg_receive -- Reçoit un message depuis une file de messages

Description

bool msg_receive ( int queue, int desiredmsgtype, int msgtype, int maxsize, mixed message [, bool unserialize [, int flags [, int errorcode]]])

msg_receive() reçoit le premier message de la file queue, type spécifié par desiredmsgtype. Le type de message qui a été reçu sera stocké dans le paramètre msgtype. La taille maximale de message est fixée par maxsize; si le message de la file est plus grand que cette taille, la fonction échouera (à moins que vous n'utilisiez une option flags, décrite ci-dessous). Le message reçu sera stocké dans le paramètre message, à moins qu'il n'y ait eu des erreurs de reception du message, auquel cas le paramètre optionnel errorcode se verra assigné le numéro d'erreur.

Si desiredmsgtype vaut 0, le premier message de la file est retourné. Si desiredmsgtype vaut plus que 0, alors le premier message de ce type sera retourné. SI desiredmsgtype vaut moins que 0, le premier message de la file ayant un type inférieur ou égaql à la valeur absolue de desiredmsgtype sera retournée. Si aucun message ne correspond aux critères, votre script attendra la venue d'un tel message dans la file. Vous pouvez éviter ce bloquage en précisant l'option MSG_IPC_NOWAIT dans le paramètre flags.

unserialize vaut par défaut TRUE; quand c'est le cas, le mssage est traité comme si il avait été linéarisé avec le même mécanisme que le module de session. Le message sera alors délinéarisé, puis retourné au script. Cela vous permettra de recevoir facilement des tableaux ou des objets complexes dans votre script, émis par d'autres scripts PHP. Si unserialize vaut FALSE, le message sera retourné intact, et sans modifier les valeurs binaires.

Le paramètre flags permet de passer des options pour configurer les appels msgrcv. Par défaut, il vaut 0, mais vous pouvez spécifier une ou plusieurs options en les combinant avec l'opérateur OR).

Tableau 1. Iptions de la fonction msg_receive()

MSG_IPC_NOWAIT | Si il n'y a pas de message du type desiredmsgtype, retourne immédiatement, et n'attend pas. La fonction échouera, et retournera un entier correspondant à ENOMSG.
MSG_EXCEPT | En utilisant cette option en combinaison avec un type desiredmsgtype supérieur à 0, la fonction va lire le premier message qui n'est pas du type demandé par desiredmsgtype.
MSG_NOERROR | Si le message est plus grand que maxsize, cette option va tronquer le message à la taille de maxsize et ne signalera pas d'erreur.

Lors de la réception réussie d'un message, la file est mise à jour comme ceci : msg_lrpid prend la valeur de l'identifiant de processus du processus appelant, msg_qnum est décrementé de 1 et msg_rtime prend la date et l'heure courante.

msg_receive() retourne TRUE en cas de succès et FALSE en cas d'échec. Si la fonction échoue, le paramètre optionnel errorcode contiendra le numéro d'erreur rencontré.

Voir aussi
msg_remove_queue(),
msg_send(),
msg_stat_queue() et
msg_set_queue().

Cette fonction a été introduite en PHP 4.3.0.

Précédent | Sommaire | Suivant
msg_get_queue | Niveau supérieur | msg_remove_queue


msg_remove_queue

(PHP 4 >= 4.3.0)

msg_remove_queue -- Détruit une file de messages

Description

bool msg_remove_queue ( int queue)

msg_remove_queue() détruit la file de messages identifiée par queue. Utiliser uniquement cette fonction lorsque tous les processus ont fini de traaviller dans la file de message, et que vous voulez libérer les ressources.

Cette fonction a été introduite en PHP 4.3.0.

Voir aussi
msg_remove_queue(),
msg_receive(),
msg_stat_queue() et
msg_set_queue().

Précédent | Sommaire | Suivant
msg_receive | Niveau supérieur | msg_send


msg_send

(PHP 4 >= 4.3.0)

msg_send -- Envoie un message dans une file

Description

bool msg_send ( int queue, int msgtype, mixed message [, bool serialize [, bool blocking [, int errorcode]]])

msg_send() envoie le messsage message de type msgtype (qui DOIT être plus grand que 0) à la file de messages identifiée par queue.

Si le message est trop grand pour être stocké par la file, votre script attendra jusqu'à ce qu'un autre processus lise dans la file un message, et libère assez de place pour votre message. C'est le mode bloquant : vous pouvez éviter ce mode en utilisant le paramètre blocking avec la valeur FALSE : dans ce cas, msg_send() retournera immédiatement FALSE si le message est trop gros pour la file. Il assignera alors au paramètre errorcode la valeur de EAGAIN, indiquant que vous devriez essayer d'envoyer à nouveau votre message, un peu plus tard.

Le paramètre optionnel serialize contrôle la méthode d'envoi du message message. serialize faut par défaut TRUE ce qui signifie que le message message sera linéarisé en utilisant le même mécanisme que celui qui est utilisé par les sessions, avant d'être envoyé à la file de message. Cela permet d'envoyer des tableaux et des objets complexes à d'autres scripts PHP, ou bien, si vous utilisez l'extension WDDX, dMéchanger des messages avec des clients compatibles WDDX.

Lors de l'émission réussie d'un message, la file est mise à jour comme ceci : msg_lrpid prend la valeur de l'identifiant de processus du processus appelant, msg_qnum est décrementé de 1 et msg_rtime prend la date et l'heure courante.

Voir aussi
msg_remove_queue(),
msg_receive(),
msg_stat_queue() et
msg_set_queue().

Cette fonction a été introduite en PHP 4.3.0.

Précédent | Sommaire | Suivant
msg_remove_queue | Niveau supérieur | msg_set_queue


msg_set_queue

(PHP 4 >= 4.3.0)

msg_set_queue -- Modifie des informations dans la file de messages

Description

bool msg_set_queue ( int queue, array data)

msg_set_queue() vous permet de modifier certaines valeurs comme msg_perm.uid, msg_perm.gid, msg_perm.mode et msg_qbytes, qui sont des champs de la strcture qui héberge la file de message. Il suffit de spécifier la valeur à modifier comme index dans le tableau data et la file queue sera modifiée.

Modifier la structure de données requiert que PHP fonctionne avec le même utilisateur que celui qui a créé la file, qui possède la file (comme déterminé par les champs msg_perm.xxx), ou qui fonctionne avec les droits de super utilisateur. Les droits de super utilisateur sont nécessaires pour affecter à msg_qbytes des valeurs supérieures aux limites du système.

Cette fonction a été introduite en PHP 4.3.0.

Voir aussi
msg_remove_queue(),
msg_receive(),
msg_stat_queue() et
msg_set_queue().

Précédent | Sommaire | Suivant
msg_send | Niveau supérieur | msg_stat_queue


msg_stat_queue

(PHP 4 >= 4.3.0)

msg_stat_queue -- Retourne des informations sur la file de messages

Description

array msg_stat_queue ( int queue)

msg_stat_queue() retourne des informations sur la file de messages identifiée par queue. C'est une fonction pratique pour connaître le processus qui a émis le message qui vient d'être reçu.

La valeur retournée par la fonction est un tableau dont les index et valeurs sont les suivantes :

Tableau 1. Structure de réponse de msg_stat_queue()

msg_perm.uid | L'uid du propriétaire de la file.
msg_perm.gid | Le gid du propriétaire de la file.
msg_perm.mode | Le mode d'accès à la file.
msg_stime | L'heure du dernier message envoyé à la file.
msg_rtime | L'heure du dernier message émis par la file.
msg_ctime | L'heure de modification de la file.
msg_qnum | Le nombre de messages en attente dans la file.
msg_qbytes | Le nombre d'octets actuellement disponible dans la file pour stocker des messages jusqu'à leur lecture.
msg_lspid | Le pid du processus qui a envoyé le dernier message à la file.
msg_lrpid | Le pid du processus qui a reçu le dernier message de la file.

Voir aussi
msg_remove_queue(),
msg_receive(),
msg_stat_queue() et
msg_set_queue().

Précédent | Sommaire | Suivant
msg_set_queue | Niveau supérieur | sem_acquire


sem_acquire

(PHP 3>= 3.0.6, PHP 4 )

sem_acquire -- Réserve un sémaphore

Description

bool sem_acquire ( int sem_identifier)

sem_acquire() se bloque (si nécessaire) jusqu'à ce que le sémaphore puisse être réservé. Un processus qui tente de réserver un sémaphore qu'il a déjà reservé restera en attente indéfinie, si cette acquisition excède le nombre max_acquire de réservation simultanée.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

A la fin d'un script, tous les sémaphores réservés mais non explicitement libérés seront libérés automatiquement, et une alerte sera générée.

Voir aussi sem_get() et sem_release().

Précédent | Sommaire | Suivant
msg_stat_queue | Niveau supérieur | sem_get


sem_get

(PHP 3>= 3.0.6, PHP 4 )

sem_get -- Retourne un identifiant de sémaphore

Description

int sem_get ( int key [, int max_acquire [, int perm]])

sem_get() retourne un identifiant qui pourra être utilisé pour accéder à un sémaphore System V. Le sémaphore est créé, si nécessaire, en utilisant les bits de permission (par défaut, 0666). Le nombre de processus qui peuvent réserver simultanément le sémaphore est précisé dans max_acquire (par défaut à 1). Actuellement, cette valeur n'est affectée que si le processus est le seul processus actuellement attaché au sémaphore.

sem_get() retourne un identifiant positif de sémaphore en cas de succès, et FALSE en cas d'erreur.

Un deuxième appel à sem_get() avec la même clé retournera un identifiant différent, mais les deux identifiants permettront d'accéder au même sémaphore.

Voir aussi
ftok(),
sem_acquire() et
sem_release().

Note : sem_get() n'est pas disponible sous Windows.

Précédent | Sommaire | Suivant
sem_acquire | Niveau supérieur | sem_release


sem_release

(PHP 3>= 3.0.6, PHP 4 )

sem_release -- Libère un sémaphore

Description

bool sem_release ( int sem_identifier)

sem_release() libère le sémaphore s'il a été réservé par le processus courant. Sinon, génère une erreur.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Après libération du sémaphore, sem_acquire() peut être appelé pour le réserver à nouveau.

Voir aussi sem_get() et sem_acquire().

Note : Cette fonction n'est pas disponible sous Windows.

Précédent | Sommaire | Suivant
sem_get | Niveau supérieur | sem_remove


sem_remove

(PHP 4 >= 4.1.0)

sem_remove -- Détruit un sémaphore

Description

bool sem_remove ( int sem_identifier)

sem_remove() supprime le sémaphore sem_identifier si il a été créé par sem_get(), et sinon, émet une alerte.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Après suppression du sémaphore, il n'est plus utilisable.

Voir aussi
sem_get(),
sem_release() et
sem_acquire().

Note : Cette fonction n'est pas disponible sous Windows. Elle a été ajoutée en PHP 4.1.0.

Précédent | Sommaire | Suivant
sem_release | Niveau supérieur | shm_attach


shm_attach

(PHP 3>= 3.0.6, PHP 4 )

shm_attach -- Crée ou ouvre un segment de mémoire partagée.

Description

int shm_attach ( int key [, int memsize [, int perm]])

shm_attach() retourne un identifiant qui permettra d'accéder au System V de mémoire partagée. Au premier appel, la mémoire sera créée, avec la taille memsize (par défaut: sysvshm.init_mem dans php.ini, sinon 10000 octets) et avec les permissions perm (par défaut : 666).

Aux appels suivants avec la même clé key, shm_attach() retournera un nouvel identifiant, mais cet identifiant accédera toujours à la même portion de mémoire partagée. Dans ce cas, memsize et permseront ignorés.

Voir aussi ftok().

Note : Cette fonction n'est pas disponible sous Windows.

Précédent | Sommaire | Suivant
sem_remove | Niveau supérieur | shm_detach


shm_detach

(PHP 3>= 3.0.6, PHP 4 )

shm_detach -- Libère un segment de mémoire partagée

Description

bool shm_detach ( int shm_identifier)

shm_detach() libère le segment de mémoire partagée identifié par shm_identifier et créé par shm_attach(). N'oubliez pas que cette mémoire partagée existe toujours sous Unix, et que les données sont toujours accessibles.

shm_detach() retourne toujours TRUE.

Précédent | Sommaire | Suivant
shm_attach | Niveau supérieur | shm_get_var


shm_get_var

(PHP 3>= 3.0.6, PHP 4 )

shm_get_var -- Lit une variable dans la mémoire partagée.

Description

mixed shm_get_var ( int id, int variable_key)

shm_get_var() retourne la variable repérée par variable_key. La variable est toujours présente en mémoire partagée.

Note : shm_get_var() n'est pas disponible sous Windows.

Précédent | Sommaire | Suivant
shm_detach | Niveau supérieur | shm_put_var


shm_put_var

(PHP 3>= 3.0.6, PHP 4 )

shm_put_var -- Insère ou modifie une variable de la mémoire partagée.

Description

int shm_put_var ( int shm_identifier, int variable_key, mixed variable)

shm_put_var() insère ou modifie la variable variable avec la clé variable_key. Tous les types de variables sont supportés.

Note : shm_put_var() n'est pas disponibles sous Windows.

Précédent | Sommaire | Suivant
shm_get_var | Niveau supérieur | shm_remove_var


shm_remove_var

(PHP 3>= 3.0.6, PHP 4 )

shm_remove_var -- Efface une variable de la mémoire partagée.

Description

int shm_remove_var ( int id, int variable_key)

shm_remove_var() efface la variable variable_key de la mémoire partagée et libère la mémoire.

Note : shm_remove_var() n'est pas disponible sous Windows.

Précédent | Sommaire | Suivant
shm_put_var | Niveau supérieur | shm_remove


shm_remove

(PHP 3>= 3.0.6, PHP 4 )

shm_remove -- Supprime un segment de mémoire partagée sous Unix.

Description

int shm_remove ( int shm_identifier)

shm_remove() supprime un segment de mémoire partagée sous Unix. Toutes les données seront supprimées.

Note : shm_remove() n'est pas disponibles sous Windows.

Précédent | Sommaire | Suivant
shm_remove_var | Niveau supérieur | SESAM


SESAM

Manuel PHP
Précédent Suivant

XCIV. SESAM

Introduction

SESAM/SQL-Server est une base de données mainframe, développée par Fujitsu Siemens Computers, Allemagne. Elle fonctionne sur les serveur mainframe, sous BS2000/OSD.

Sur de nombreuses installation BS2000 en production, SESAM/SQL-Server a prouvé ...

  • La facilité de connectivité Java, Web et client/serveur

  • La disponibilité de plus de 99.99%,

  • La capacité de gérer des dizaines et mêmes des centaines de milliers d'utilisateurs.

Désormais, il existe une interface PHP pour SESAM, qui donne l'accès à cette base aux scripts PHP.

Note : L'accès aux bases SESAM n'est disponible que pour la dernière version CVS de PHP 3. PHP 4 ne supporte pas les bases SESAM.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

sesam_oml string

Nom de la librairie BS2000 PLAM contenant le module du pilote SESAM. Ceci est obligatoire pour utiliser les fonctions SESAM. La librarie BS2000 PLAM doit être à ACCESS=READ,SHARE=YES car elle doit être lisible par le serveur Apache.

sesam_configfile string

Nom du fichier de configuration de l'application SESAM. Ceci est obligatoire pour utiliser les fonctions SESAM. Le fichier BS2000 filedoit être à ACCESS=READ,SHARE=YES car elle doit être lisible par le serveur Apache.

Le fichier de configuration de l'application contient généralement un fichier de configuration tel que celui-ci (reportez vous au manuel de référence SESAM).

Exemple 1. Configuration SESAM

CNF=B
NAM=K
NOTYPE

sesam_messagecatalog string

Nom du fichier de messages SESAM. Dans la plupart des cas, cette directive n'est pas nécessaire. Uniquement si le fichier de messages SESAM n'es pas installé dans la table de messages BS2000. Il peut alors être choisi avec cette directive.

Le catalogue de messages doit être à ACCESS=READ,SHARE=YES car elle doit être lisible par le serveur Apache.

Notes sur la configuration

Il n'y a pas de version exécutable indépendante pour l'interface PHP SESAM, et elle doit fonctionner en module Apache intégré. Dans le module PHP, l'interface SESAM est configurée avec des directives Apache.

Tableau 1. Directives de configuration SESAM

Directive Signification
php3_sesam_oml Nom de la librairie BS2000 PLAM qui contient les modules pilots chargeable SESAM. Il est nécessaire pour pouvoir utiliser les fonctions SESAM.

Exemple 2. Localisation du fichier BS2000 pour SESAM

php3_sesam_oml $.SYSLNK.SESAM-SQL.030

php3_sesam_configfile Nom du fichier de configuration de l'application SESAM. Elle est nécessaire pour utiliser les fontions SESAM.

Exemple 3. Configuration de php3_sesam_configfile

php3_sesam_configfile $SESAM.SESAM.CONF.AW

Ce fichier va généralement contenir une configuration comme celle-ci. (reportez vous au manuel de référence SESAM).

Exemple 4. Configuration SESAM

CNF=B
NAM=K
NOTYPE

php3_sesam_messagecatalog Nom du catalogue de messages SESAM. Dans la plupart des cas, cette directive n'est pas nécessaire. Uniquement dans les cas où le fichier de message n'est pas installé dans la table de message du système BS2000, vous pouvez utiliser cette directive :

Exemple 5. Nom du catalogue de messages SESAM

php3_sesam_messagecatalog $.SYSMES.SESAM-SQL.030

En plus de la configuration de l'interface PHP/SESAM, vous devez configurer le serveur SESAM-Database lui-même, sur votre mainframe habituel. Cela signifie :

  • démarrer le gestionnaire de base SESAM (DBH)

  • connecter les bases avec le gestionnaire de bases SESAM

Pour connecter un script PHP au serveur de bases SESAM, les paramètres CNF et NAM de la configuration SESAM selectionnée doivent correspondre à l'id du gestionnaire de base démarré.

Dans le cas des bases de données distribuées, vous devez démarrer un agent SESAM/SQL-DCN, avec la table de distribution incluant le nom de l'hôte et de la base de données.

La communication entre PHP (fonctionnant sur le sous-système POSIX) et le gestionnaire de base (fonctionnant hors du sous-système POSIX) est réalisée par un pilote spécial appelé SQLSCI et le module de connexion SESAM, qui utilise la mémoire partagée. A cause de la mémoire partagée, et parce que PHP est une partie statique du serveur web, les accès à la base de données sont extrêmement rapide, car il ne requièrent pas de connexion distante via ODBC, JDBC ou UTM.

Seul un chargeur de stub (stub loader, SESMOD) est compilé dans PHP. Les modules de connexion SESAM proviennent de la librairie OML PLAM. Dans la configuration, vous devez indiquer à PHP le nom de la librairie PALM, et le fichier de lien à utiliser pour la configuration de SESAM (En SESAM V3.0, SQLSCI est disponible dans la librairie d'outils SESAM (SESAM Tool Library), qui fait partie de la distribution standard).

Les commandes SQL imposent que les guillemets simples soient doublés pour être interprété litéralement (contrairement à d'autres bases de données qui utilisent un guillemet simple, précédé d'un antislash), il est recommandé d'activer les directives PHP php3_magic_quotes_gpc et php3_magic_quotes_sybase.

Considérations à l'exécution

A cause des limitations du modèle de processus BS2000, le pilote peut être chargé uniquement après que le serveur Apache ait généré le processus fils. Cela ralentit légèrement le traitement de la première requête, mais toutes les requêtes suivantes seront effecutée à pleine vitesse.

Lorsque vous définissez explicitement le catalogue de messages SESAM, ce catalogue ser chargé à chaque fois que le pilote est chargé (i.e., au moment de la requête initiale). Le système d'exploitation BS2000 affiche un message après avoir correctement chargé le catalogue de messages, qui sera envoyé au fichier d'erreurs Apache. BS2000 ne permet pas la suppression de ce message, qui va remplir progressivement ce fichier.

Assurez vous que la librairie SESAM OML PLAM et le fichier de configuration SESAM sont accessibles par l'utilisateur qui fait tourner le serveur web. Sinon, le serveur ne sera pas capable de charger le pilote, ou d'appeler les fonctions SESAM. L'accès à la base doit être donné à cet utilisateur. Sinon, les connexions SESAM échoueront.

Types de curseurs

Les curseurs de résultat sont alloués pour les requêtes SQL de selection, peuvent être soit "séquentiels", soit "à défilement" ("scrollable"). Les curseurs à défilement sont beaucoup plus gourmands en mémoire, et le mode par défaut est séquentiel.

Lorsque vous utilisez les curseurs à défilement, le curseur peut être positionné librement dans le résultat. Pour chaque requête à défilement, il existe des valeurs globales de types de défilement (initialisée à : SESAM_SEEK_NEXT) et la position peut être fixée une seule fois par sesam_seek_row() ou bien à chaque appel, avec la fonction sesam_fetch_row(). Lorsque vous lisez une ligne avec un curseur à défilement, le traitement suivant est effectué à partir des valeurs globales de type de défilement et de position :

Tableau 2. Scrolled Cursor Post-Processing

Type de défilement | Action
SESAM_SEEK_NEXT | aucun
SESAM_SEEK_PRIOR | aucun
SESAM_SEEK_FIRST | le type de défilement devient SESAM_SEEK_NEXT
SESAM_SEEK_LAST | le type de défilement devient SESAM_SEEK_PRIOR
SESAM_SEEK_ABSOLUTE | incrémente automatiquement la valeur interne de position
SESAM_SEEK_RELATIVE | aucune. Conserve les valeurs globales par défaut de position, ce qui permet, par exemple de lire toutes les 10 lignes, en arrière.

Portage

En PHP, il est naturel de commencer les index à zéro (plutôt que 1), et quelques adaptations ont été faite pour l'interface SESAM : à chaque fois qu'un tableau indexé commence à l'index 1 en SESAM natif, l'interface PHP utilisera l'index 0 comme point de départ. Par exemple, lorsque vous lisez des données avec sesam_fetch_row(), la première colonne sera à l'index 0, et les suivantes suivront juqu'au nombre de colonne (exclus) du résultat ($array["count"]). Lors du portage d'applications depuis d'autres langage évolués vers le PHP, soyez attentifs à ce changement. A chaque fois que c'est nécessaire, la description d'une fonction PHP SESAM indique que l'index du tableau commence à 0.

Sécurité

Lorsque vous autorisez l'accès à une base de données SESAM, le serveur web doit avoir le minimum de privilèges possible. Pour la plupart des bases de données, seul le droit de lecture doit être fourni. Suivant votre utilisation, ajoutez d'autres droits d'accès au fur et à mesure de vos besoins. Ne donnez jamais le contrôle total de vos bases à un utilisateur du web! Limitez l'accès aux scripts PHP qui doivent administrer la base en utilisant un mot de passe et/ou une sécurisation SSL.

Migration d'une autre base SQL

Deux langage SQL ne sont jamais 100% compatibles. Lorsque vous portez une application SQL depuis une autre interface vers SESAM, certaines adaptation doivent être faîtes. Les différences suivantes sont les plus courantes :

  • Types de données spécifiques

    Certains types de données spécifiques à une base doivent être remplacés par les types de données standard SQL. (i.e., TEXT doit être remplacé par VARCHAR(taille max)).

  • Mots reservés comme identifiants SQL.

    En SESAM (comme dans le standard SQL), les mots reservés utilisés comme identifiants doivent être entourés de guillemets doubles (ou renommés).

  • Taille d'affichage des données.

    Les types de données SESAM ont une taille de stockage, mais par de taille d'affichage. A la place de int(4) (c'est à dire : les entiers jusqu'à '9999'), SESAM requiert simplement int, pour une taille implicite de 31 bits. De même, les seuls types de date disponible dans SESAM sont : DATE, TIME(3) et TIMESTAMP(3).

  • Les types de données unsigned (non signé), zerofill (complété avec des zéros), ou auto_increment

    Unsigned et zerofill ne sont pas supportés. Auto_increment est automatique (utilisez "INSERT ... VALUES(*, ...)" au lieu de "... VALUES(0,...)" pour profiter des auto-increment implicites de SESAM.

  • int ... DEFAULT '0000'

    Les variables numériques ne doivent pas être initialisées avec des constantes de type chaîne de caractères. Utilisez DEFAULT 0 à la place. Pour initialiser une date, la chaîne doit être préfixée avec le type de date adapté, tel que : CREATE TABLE exmpl (xtime timestamp(3) DEFAULT TIMESTAMP '1970-01-01 00:00:00.000' NOT NULL);

  • $count = xxxx_num_rows();

    Certaines bases de données essaient d'estimer le nombre de lignes d'un résultat, même grossièrement approximativement. SESAM ne connait pas le nombre de lignes avant de les avoir lues lui-même. Si vous avez vraiment besoin de les compter, utilisez la commande SELECT COUNT(...) WHERE ..., qui vous dira combien de lignes sont disponibles. Une deuxième requête devrait vous retourner tous ces résultats.

  • DROP TABLE lenom;

    Avec SESAM, dans la commande DROP TABLE, le nom de la table doit être suivi du mot clé RESTRICT ou CASCADE. Avec RESTRICT, une erreur est retounrée si il y a des objets dépendant (par exemple, des vues), tandis qu'avec CASCADE, les objets dépendants seront supprimés en même temps que la table.

Notes sur l'utilisation de types SQL divers

SESAM ne supporte pas le type BLOB. Une future version de SESAM devra le faire.

L'interface PHP effectue automatiquement les conversions suivantes lors de la lecture de lignes de résultats SQL :

Tableau 3. Conversion de type SQL vers PHP

Type SQL | Type PHP
SMALLINT, INTEGER | "integer" (entier)
NUMERIC, DECIMAL, FLOAT, REAL, DOUBLE | "double" (nombre à virgule flottante)
DATE, TIME, TIMESTAMP | "string"(chaîne de caractères)
VARCHAR, CHARACTER | "string"(chaîne de caractères)
Lorsque vous lisez une ligne entière, le résultat est retourné sous la forme d'un tableau. Les champs vides ne sont pas remplis, et vous aurez à vérifier vous même l'existence des champs ( (utilisez isset() ou empty() pour tester les champs vides). Cela donne plus de contrôle à l'utilisateur sur l'apparence des champs que si les champs vides étaient représenté par des chaînes vides).

Support des "champs multiples" de SESAM

La fonctionnalité spéciale des "champs multiples" de SESAM permet à une colonne de contenir un tableau de champs. Un tel "champs multiple" peut être créé comme ceci :

Exemple 6. Création d'une colonne de champs multiples

CREATE TABLE multi_field_test (
    pkey CHAR(20) PRIMARY KEY,
    multi(3) CHAR(12)
)
et peut être remplie avec :

Exemple 7. Affectation d'une colonne de type "champs multiple"

INSERT INTO multi_field_test (pkey, multi(2..3) )
    VALUES ('Second', <'first_val', 'second_val'>)
Notez que (comme c'est le cas ci-dessus), les sous-champs vides initiaux sont ignorés, et que le tableau est alors compacté, ce qui fait que l'exemple ci-dessus conduit à un tableau multi(1..2) au lieu de multi(2..3).

Lors de la lecture d'une ligne, les "champs multiples" sont mis en colonne. Dans l'exemple ci-dessu, "pkey" prend l'index 0, et les trois colonnes "multi(1..3)" sont accessibles depuis les index 1 à 3.

Voir aussi

Pour de plus amples détails sur SESAM, reportez vous à la documentation SESAM/SQL-Server en anglais ou SESAM/SQL-Server en allemand, disponibles toutes deux en ligne, ou en manuels.

Table des matières
sesam_affected_rows -- Lit le nombre de lignes affectées par une requête SESAM immédiate
sesam_commit -- Valide la transaction SESAM en cours
sesam_connect -- Ouvre une connexion SESAM
sesam_diagnostic -- Retourne l'état de la dernière requête SESAM
sesam_disconnect -- Déconnexion d'une base SESAM
sesam_errormsg -- Retourne le message d'erreur SESAM
sesam_execimm -- Exécute immédiatement une requête SQL
sesam_fetch_array -- Lit une ligne dans un tableau associatif
sesam_fetch_result -- Retourne tout ou partie d'un résultat SESAM
sesam_fetch_row -- Lit une ligne dans un tableau
sesam_field_array -- Retourne des informations sur une colonne
sesam_field_name -- Retourne le nom d'une colonne
sesam_free_result -- Libère les ressources SESAM
sesam_num_fields -- Retourne le nombre de colonne dans un résultat
sesam_query -- Exécute une requête SESAM
sesam_rollback -- Annule une transaction SESAM
sesam_seek_row -- Déplace un curseur à défilement
sesam_settransaction -- Modifie les paramètres de transaction SESAM

Précédent | Sommaire | Suivant
shm_remove | Niveau supérieur | sesam_affected_rows


sesam_affected_rows

(PHP 3 CVS only)

sesam_affected_rows -- Lit le nombre de lignes affectées par une requête SESAM immédiate

Description

int sesam_affected_rows ( string result_id)

result_id est un identifiant valide de résultat, retourné par sesam_query().

sesam_affected_rows() retourne le nombre de lignes affectées par la requête associée à result_id.

sesam_affected_rows() ne retourne de valeur cohérente que lorsqu'utilisée avec une requête immédiate (INSERT/UPDATE/DELETE), car SESAM ne fournit aucune information de nombre de lignes affectées pour les requêtes de selection.

Exemple 1. Exemple avec sesam_affected_rows()

<?php
$result = sesam_execimm ("DELETE FROM PHONE WHERE LASTNAME = '".strtoupper($name)."'");
if (! $result) {
    ... error ...
}
print sesam_affected_rows($result)." entries with last name ".$name." deleted.\n";
?>

Voir aussi sesam_query() et sesam_execimm().

Précédent | Sommaire | Suivant
SESAM | Niveau supérieur | sesam_commit


sesam_commit

(PHP 3 CVS only)

sesam_commit -- Valide la transaction SESAM en cours

Description

bool sesam_commit ( void )

sesam_commit() retourne TRUE en cas de succès et FALSE sinon.

sesam_commit() valide toutes les modifications de tables en attente sur la base.

Notez qu'il n'y a pas de mode "auto-commit", comme dans d'autres bases de données, car cela peut conduire à une perte accidentelle de données. Les données non valides à la fin d'un script (ou au moment de l'appel de sesam_disconnect()) seront annulées par un appel implicite à sesam_rollback().

Exemple 1. Valider une transaction SESAM

<?php
if (sesam_connect ("moncatalogue", "monschema", "toto")) {
  if (!sesam_execimm("INSERT INTO mytable VALUES (*, 'Small Test', <0, 8, 15>)"))
     die("Insertion manqu&eacute;e");
  if (!sesam_commit())
     die("Insertion r&eacute;ussie");
}
?>

Voir aussi sesam_rollback().

Précédent | Sommaire | Suivant
sesam_affected_rows | Niveau supérieur | sesam_connect


sesam_connect

(PHP 3 CVS only)

sesam_connect -- Ouvre une connexion SESAM

Description

bool sesam_connect ( string catalog, string schema, string user)

sesam_connect() retourne TRUE si une connexion à la base SESAM a été faite, ou FALSE en cas d'erreur.

sesam_connect() établit une connexion au serveur SESAM. La connexion est toujours "persistante", en ce sens que le pilote sera chargé par la première requête avec la librairie SESAM OML PLAM. Les appels suivants réutiliseront le pilote chargé, son catalogue catalog, son schéma schema et son utilisateur user.

Lors de la création d'une base de données, le nom catalog est spécifié dans les directives de configuration SESAM avec la commande //ADD-SQL-DATABASE-CATALOG-LIST ENTRY-1 = *CATALOG(CATALOG-NAME = catalogname,...)

schema référence le schéma de base voulu (voir dans le manuel SESAM).

user spéficie l'un des utilisateurs qui est autorisé à accéder à la comibinaison catalog et/ou schema. Notez que user est complétement indépendant de l'utilisateur système et des protections HTTP par mot de passe. Il n'apparait que dans la configuration SESAM.

Voir aussi sesam_disconnect().

Exemple 1. Connexion à une base SESAM

<?php
if (! sesam_connect ("moncatalogue", "monschema", "toto")
     die("Impossible de se connecter &agrave; SESAM");
?>

Précédent | Sommaire | Suivant
sesam_commit | Niveau supérieur | sesam_diagnostic


sesam_diagnostic

(PHP 3 CVS only)

sesam_diagnostic -- Retourne l'état de la dernière requête SESAM

Description

array sesam_diagnostic ( void )

sesam_diagnostic() retourne un tableau associatif avec l'état et les codes de la dernière requête SQL. Les éléments du tableau sont :

Tableau 1. Informations retournées par sesam_diagnostic()

Elément | Contenu
$array["sqlstate"] | code d'erreur à 5 chiffres (voir le manuel SESAM pour obtenir une description des valeurs possibles de SQLSTATE)
$array["rowcount"] | nombre de lignes affectées dans la dernière requête immédiate (update/insert/delete) : uniquement après une requête immédiate.
$array["errmsg"] | message d'erreur lisible : uniquement après une erreur
$array["errcol"] | numéro de colonne de la dernière erreur (indexée à partir de 0, -1 si indéfinies. uniquement après une erreur).
$array["errlin"] | numéro de ligne de la dernière erreur (indexée à partir de 0, -1 si indéfinies. uniquement après une erreur).

Dans l'exemple suivant, une erreur de syntaxe (E SEW42AE ILLEGAL CHARACTER) est affichée avec la requête SQL, et en désignant la position de l'erreur :

Exemple 1. Afficher une erreur SESAM

<?php
// Fonction qui affiche un message d'erreur format&eacute;
// en affichant la position de l'erreur dans le message d'erreur
function PrintReturncode($exec_str)
{
   $err = Sesam_Diagnostic();
   $colspan=4; // 4 colonnes pour : sqlstate, errlin, errcol, rowcount
   if ($err["errlin"] == -1)
     --$colspan;
   if ($err["errcol"] == -1)
     --$colspan;
   if ($err["rowcount"] == 0)
     --$colspan;
   echo "<TABLE BORDER>\n";
   echo "<TR><TH COLSPAN=".$colspan."><FONT COLOR=red>ERROR:</FONT> ".
          htmlspecialchars($err["errmsg"])."</TH></TR>\n";
   if ($err["errcol"] >= 0) {
     echo "<TR><TD COLSPAN=".$colspan."><PRE>\n";
     $errstmt = $exec_str."\n";
     for ($lin=0; $errstmt != ""; ++$lin) {
       if ($lin != $err["errlin"]) { // $lin is less or greater than errlin
         if (! ($i = strchr($errstmt, "\n")))
           $i = "";
         $line = substr($errstmt, 0, strlen($errstmt)-strlen($i)+1);
         $errstmt = substr($i, 1);
         if ($line != "\n")
           print htmlspecialchars($line);
       }
       else {
         if (! ($i = strchr($errstmt, "\n")))
           $i = "";
         $line = substr($errstmt, 0, strlen($errstmt)-strlen($i)+1);
         $errstmt = substr($i, 1);
         for ($col=0; $col < $err["errcol"]; ++$col)
           echo (substr($line, $col, 1) == "\t") ? "\t" : ".";
         echo "<FONT COLOR=RED><BLINK>\\</BLINK></FONT>\n";
         print "<FONT COLOR=\"#880000\">".htmlspecialchars($line)."</FONT>";
         for ($col=0; $col < $err["errcol"]; ++$col)
           echo (substr($line, $col, 1) == "\t") ? "\t" : ".";
         echo "<FONT COLOR=RED><BLINK>/</BLINK></FONT>\n";
       }
     }
     echo "</PRE></TD></TR>\n";
   }
   echo "<TR>\n";
   echo " <TD>sqlstate=" . $err["sqlstate"] . "</TD>\n";
   if ($err["errlin"] != -1)
     echo " <TD>errlin=" . $err["errlin"] . "</TD>\n";
   if ($err["errcol"] != -1)
     echo " <TD>errcol=" . $err["errcol"] . "</TD>\n";
   if ($err["rowcount"] != 0)
     echo " <TD>rowcount=" . $err["rowcount"] . "</TD>\n";
   echo "</TR>\n";
   echo "</TABLE>\n";
}
if (!sesam_connect("moncatalogue", "phoneno", "toto"))
  die("cannot connect");
$stmt = "SELECT * FROM phone\n".
        "  WHERE@ LASTNAME='KRAEMER'\n".
        "  ORDER BY FIRSTNAME";
if (! ($result = sesam_query($stmt)))
  PrintReturncode($stmt);
?>

Voir aussi sesam_errormsg() pour un accès simplifié aux messages d'erreur.

Précédent | Sommaire | Suivant
sesam_connect | Niveau supérieur | sesam_disconnect


sesam_disconnect

(PHP 3 CVS only)

sesam_disconnect -- Déconnexion d'une base SESAM

Description

bool sesam_disconnect ( void )

sesam_disconnect() retourne toujours TRUE.

sesam_disconnect() ferme le lien logique à la base de données SESAM (sans réellement déconnecter et démonter le pilote).

Notez que ceci n'est généralement pas nécessaire, car la connexion ouverte est automatiquement fermée à la fin du script. Les données qui ne seront pas validées seront alors annulées, grâce à un sesam_rollback() implicite.

sesam_disconnect() ne ferme pas les connexions persistantes : elle invalide simplement les catalogues catalog, schéma schema et utilisateur user courants, de manière à ce que les prochains appels à des fonctions SESAM échouent.

Exemple 1. Déconnexion d'une base SESAM

<?php
if (sesam_connect ("moncatalogue", "monschema", "toto")) {
 //... quelques requ&ecirc;tes et d'autres trucs ...
}
sesam_disconnect();
}
?>

Voir aussi sesam_connect().

Précédent | Sommaire | Suivant
sesam_diagnostic | Niveau supérieur | sesam_errormsg


sesam_errormsg

(PHP 3 CVS only)

sesam_errormsg -- Retourne le message d'erreur SESAM

Description

string sesam_errormsg ( void )

sesam_errormsg() retourne le message d'erreur SESAM associé à la dernière requête SQL.

Exemple 1. Exemple avec sesam_errormsg()

<?php
if (!sesam_execimm($stmt))
  printf("%s<BR>\n", sesam_errormsg());
?>

Voir aussi sesam_diagnostic() pour la liste complète des états de requêtes SQL.

Précédent | Sommaire | Suivant
sesam_disconnect | Niveau supérieur | sesam_execimm


sesam_execimm

(PHP 3 CVS only)

sesam_execimm -- Exécute immédiatement une requête SQL

Description

string sesam_execimm ( string query)

sesam_execimm() retourne un identifiant de résultat SESAM en cas de succès, et FALSE sinon.

sesam_execimm() exécute immédiatement la requête query (i.e., une requête de type UPDATE, INSERT ou DELETE qui ne retourne aucun résultat, et n'a aucune variables d'entrées ou de sorties). Les requêtes de types "SELECT" ne peuvent pas être utilisées avec la fonction sesam_execimm(). sesam_execimm() modifie la valeur affected_rows, pour lecture ultérieure avec sesam_affected_rows().

Notez que sesam_query() peut gérer les requêtes immédiates et les requêtes de selection. Utilisez sesam_execimm() uniquement si vous connaissez le type de requête auparavant. Une tentative de requête de selection avec sesam_execimm() retournera $err["sqlstate"] == "42SBW".

L'identifiant de résultat retourné ne peut pas être utilisé pour lire quoi que ce soit, mais il peut être passé à sesam_affected_rows(); il n'est retourné que pour symétrie avec la fonction sesam_query().

Exemple 1. Exemple avec sesam_execimm()

<?php
$stmt = "INSERT INTO matable VALUES('un', 'deux')";
$result = sesam_execimm ($stmt);
$err = sesam_diagnostic();
print("sqlstate = ".$err["sqlstate"]."\n".
      "Nombre de lignes affect&eacute;es = ".$err["rowcount"]." == ".
      sesam_affected_rows($result)."\n");
?>

Voir aussi sesam_query() et sesam_affected_rows().

Précédent | Sommaire | Suivant
sesam_errormsg | Niveau supérieur | sesam_fetch_array


sesam_fetch_array

(PHP 3 CVS only)

sesam_fetch_array -- Lit une ligne dans un tableau associatif

Description

array sesam_fetch_array ( string result_id [, int whence [, int offset]])

sesam_fetch_array() retourne un tableau qui correspond à la ligne lue dans le résultat result_id, ou FALSE si il n'y a pas d'autres lignes.

sesam_fetch_array() est une version alternative de sesam_fetch_row(). Au lieu de stocker les données dans un tableau à indice numérique, il enregistre les données dans un tableau associatif, en utilisant les noms des champs comme clés.

result_id est un identifiant de résultat valide retourné par sesam_query() (avec une requête de selection seulement!).

Pour connaître les valeurs valides des options whence et offset, reportez vous à sesam_fetch_row().

sesam_fetch_array() lit une ligne de données dans le résultat result_id. La ligne est retournée sous forme d'un tableau associatif. Chaque colonne est enregistrée avec leur nom comme index. Les noms des colonnes sont convertis en minuscules.

Les colonnes sans nom (par exemple, les résultats d'opérations arithmétiques) et les champs vides ne sont pas stockés dans ce tableau. De plus, si deux colonnes ont le même noms, la dernière colonne écrasera la précédente. Dans cette situation, utilisez de préférence sesam_fetch_row() ou bien, faîtes un alias de la colonne.

Exemple 1. Alias de colonnes avec SESAM

SELECT TBL1.COL AS FOO, TBL2.COL AS BAR FROM TBL1, TBL2</programlisting>

Une gestion spéciale permet de lire les champs multiples, qui sinon, auraient toutes le même nom. Pour chaque colonne d'un champ multiple, le nom d'index est créé en ajoutant le numéro de sous-index à la suite du nom de la colonne. Ces sous indices sont numérotés à partir de 1.

Exemple 2. Lire les champs multiples de SESAM

CREATE TABLE ... ( ... MULTI(3) INT )
Les index associatifs utilisé pour les valeurs individuelles du champ multiple sont : "multi(1)", "multi(2)", et "multi(3)", respectivement.

Les prochains appels à sesam_fetch_array() liront la prochaine ligne (ou la précédente, ou la n-ième, suivant les attributs de défilement), jusqu'à ce qu'il n'y ait plus de lignes.

Exemple 3. Exemple avec sesam_fetch_array()

<?php
$result = sesam_query ("SELECT * FROM phone\n".
                       "  WHERE LASTNAME='".strtoupper($name)."'\n".
                       "  ORDER BY FIRSTNAME", 1);
if (! $result) {
    ... error ...
}
// Affiche la table
print "<TABLE BORDER>\n";
while (($row = sesam_fetch_array ($result)) && count($row) > 0) {
    print " <TR>\n";
    print "  <TD>".htmlspecialchars($row["firstname"])."</TD>\n";
    print "  <TD>".htmlspecialchars($row["lastname"])."</TD>\n";
    print "  <TD>".htmlspecialchars($row["phoneno"])."</TD>\n";
    print " </TR>\n";
}
print "</TABLE>\n";
sesam_free_result ($result);
?>

Voir aussi sesam_fetch_row() qui retourne un tableau numérique.

Précédent | Sommaire | Suivant
sesam_execimm | Niveau supérieur | sesam_fetch_result


sesam_fetch_result

(PHP 3 CVS only)

sesam_fetch_result -- Retourne tout ou partie d'un résultat SESAM

Description

mixed sesam_fetch_result ( string result_id [, int max_rows])

sesam_fetch_result() retourne un tableau avec les lignes du résultat identifié par result_id, éventuellement limité à un maximum de max_rows Noteaz que les lignes et les colonnes sont indexées à partir de 0.

Tableau 1. Résultat de sesam_fetch_result()

Elément du tableau | Contents
int $arr["count"] | Nombre de colonnes dans le résultat (ou zéro si c'était une requête immédiate).
int $arr["rows"] | Nombre de ligne dans le résultat (entre zéro et max_rows)
bool $arr["truncated"] | TRUE si le nombre de ligne était d'au moins max_rows, FALSE sinon. Notez que même si cette valeur est à TRUE, le prochain appel à sesam_fetch_result() peut retourner aucune ligne parce qu'il n'y a plus d'entrées.
mixed $arr[col][row] | les valeurs du résultat à la ligne row et colonne col. Le résultat est un tableau multidimensionnel. row va de 0 à $arr["rows"]-1, et col de 0 à $arr["count"]-1). Les champs peuvent être vides : vous devez vérifier leur existence avec la fonction isset(). Le type retourné dépend du type SQL déclaré pour cette colonne (voir Introduction SESAM pour connaître les conversions utilisées). Les champs multiples SESAM sont traités comme des séquences de colonnes.
Notez que la quantité de mémoire utilisée par des requêtes peut se révéler gigantesque. Utilisez alors max_rows pour limiter le nombre maximum de lignes retournées, à moins que vous ne soyez absolument sûr que votre résultat ne consommera pas toute la mémoire disponible.

Voir aussi sesam_fetch_row() et sesam_field_array() pour vérifier les champs multiples. Voyez sesam_query() pour un exemple complet avec sesam_fetch_result().

Précédent | Sommaire | Suivant
sesam_fetch_array | Niveau supérieur | sesam_fetch_row


sesam_fetch_row

(PHP 3 CVS only)

sesam_fetch_row -- Lit une ligne dans un tableau

Description

array sesam_fetch_row ( string result_id [, int whence [, int offset]])

sesam_fetch_row() retourne un tableau qui correspond à la ligne lue dans le résultat result_id, ou FALSE s'il n'y a plus de ligne.

Le nombre de colonnes du résultat est retourné dans un élémen du tableau associatif retourné $array["count"]. Comme certaines lignes peuvent être vides, la fonction count() ne peut être utilisée avec le tableau ainsi retourné par sesam_fetch_row().

result_id est un identifiant de résultat valide retourné par sesam_query() (avec une requête de selection seulement!).

whence est un parmètre optionnel lors d'une opération de lecture sur un curseur à défilement, qui peut prendre une des valeurs suivantes :

Tableau 1. Valeurs valides pour whence

Valeur | Constante | Signification
0 | SESAM_SEEK_NEXT | Lecture séquentielle (après la lecture, la position est déplacé à SESAM_SEEK_NEXT)
1 | SESAM_SEEK_PRIOR | Lecture séquentielle à rebours (après la lecture, la position est déplacé à SESAM_SEEK_PRIOR)
2 | SESAM_SEEK_FIRST | Repositionnement au début (après la lecture, la position est déplacée à SESAM_SEEK_NEXT)
3 | SESAM_SEEK_LAST | Repositionnement à la fin (après la lecture, la position est déplacée à SESAM_SEEK_PRIOR)
4 | SESAM_SEEK_ABSOLUTE | Repositionnement absolu à offset (index commencant à 0. Après la lecture, la position est placé à SESAM_SEEK_ABSOLUTE, et le pointeur interne est auto-incrémenté).
5 | SESAM_SEEK_RELATIVE | Repositionnement relatif à offset, où offset peut être positif ou négatif
Ce paramètre n'est valable que pour les curseurs à défilement.

Lors de l'utilisation de curseurs à défilement, le curseur peut être librement repositionné. Si le paramètre whence est omis, les valeur par défaut seront utilisées (initialisées à : SESAM_SEEK_NEXT, et modifiée par sesam_seek_row()). Si whence est fourni, sa valeur remplacera les valeurs par défaut.

offset est un parmètre optionnel qui n'est utilisé (et nécessaire) que si whence vaut soit SESAM_SEEK_RELATIVE ou SESAM_SEEK_ABSOLUTE. Ce paramètre n'est valable que pour les curseurs à défilement.

sesam_fetch_row() lit une ligne de données dans le résultat result_id. La ligne est retournée sous forme d'un tableau (indexé de 0 à $array["count"]-1). Les champs peuvent être vides : il faut vous assurer de leur existence en utilisant la fonction isset(). Le type de la valeur retournée dépend du type SQL déclaré dans la base (voir introduction SESAM pour connaître les conversion utilisées). Les champs multiples SESAM sont linéarisés, et traités comme autant de colonnes.

Les prochains appels à sesam_fetch_row() liront la prochaine ligne (ou la précédente, ou la n-ième, suivant le type de défilement) dans le résultat, ou FALSE, s'il n'y a plus de lignes.

Exemple 1. Exemple avec sesam_fetch_row()

<?php
$result = sesam_query ("SELECT * FROM phone\n".
                       "  WHERE LASTNAME='".strtoupper($name)."'\n".
                       "  ORDER BY FIRSTNAME", 1);
if (! $result) {
    ... erreur ...
}
// Affiche la table dans l'ordre inverse
print "<TABLE BORDER>\n";
$row = sesam_fetch_row ($result, SESAM_SEEK_LAST);
while (is_array($row)) {
    print " <TR>\n";
    for($col = 0; $col < $row["count"]; ++$col) {
        print "  <TD>".htmlspecialchars($row[$col])."</TD>\n";
    }
    print " </TR>\n";
    // utilise la valeur implicite de SESAM_SEEK_PRIOR
    $row = sesam_fetch_row ($result);
}
print "</TABLE>\n";
sesam_free_result ($result);
?>

Voir aussi sesam_fetch_array() qui retourne un tableau associatif et sesam_fetch_result() qui retourne plusieurs lignes en même temps.

Précédent | Sommaire | Suivant
sesam_fetch_result | Niveau supérieur | sesam_field_array


sesam_field_array

(PHP 3 CVS only)

sesam_field_array -- Retourne des informations sur une colonne

Description

array sesam_field_array ( string result_id)

result_id is a valid result id returned by sesam_query().

sesam_field_array() retourne un tableau contenant les informations (nom de colonne, type, précision...) sur une colonne dans le résultat associé à result_id.

Tableau 1. Informations retournées par sesam_field_array()

Index | Contenu
int $arr["count"] | Nombre total de colonnes dans le résultat (ou zéro si la requête était immédiate). Les champs multiples de SESAM sont linéarisés, et traités comme autant de colonnes.
string $arr[col]["name"] | Le nom de la colonne col, avec col qui vaut entre 0 et $arr["count"]-1. La valeur retournée peut être une chaîne vide (pour les colonnes dynamiquement générées). Les champs multiples SESAM sont linéarisés, et traités comme autant de colonnes, avec le même nom.
string $arr[col]["count"] | L'attribut "count" décrit le facteur de répétition quand la colonne a été déclarée comme un champ multiple. Généralement, cet attribut est à 1. La première colonne d'un champ multiple contient le nombre de répétitions, tandis que les colonnes suivantes ont un facteur de répétition mis à 1. Ceci peut être utilisé pour detecter les champs multiples. Reportez vous à l'exemple de la fonction sesam_query() pour avoir un exemple d'utilisation.
string $arr[col]["type"] Type de variable PHP pour les données de la colonne col, où col vaut de 0 à $arr["count"]-1. La valeur retournée peut être l'une de celles-ci :

  • "integer"

  • "double"

  • "string"

, suivant le type de données SQL. Les champs multiples SESAM sont linéarisés et traités comme autant de colonnes ayant le même type PHP.
string $arr[col]["sqltype"] Type dedonnées SQL de la colonne col, où col vaut de 0 à $arr["count"]-1. La valeur retournée peut être l'une de celle-ci :

  • "CHARACTER"

  • "VARCHAR"

  • "NUMERIC"

  • "DECIMAL"

  • "INTEGER"

  • "SMALLINT"

  • "FLOAT"

  • "REAL"

  • "DOUBLE"

  • "DATE"

  • "TIME"

  • "TIMESTAMP"

, décrivant le type de données SQL. Les champs multiples SESAM sont linéarisés et traités comme autant de colonnes du même type.
string $arr[col]["length"] | La taille de l'attribut, au sens SQL, de la colonne col, où col vaut de 0 à $arr["count"]-1. La longueur est utilisée avec les champs "CHARACTER" et "VARCHAR", pour spécifier la taille maximale de la colonne. Les champs multiples SESAM sont linéarisés et traités comme autant de colonnes ayant la même taille SQL.
string $arr[col]["precision"] | La précision de la colonne col, au sens SQL, où col vaut de 0 à $arr["count"]-1. La précision est utilisée avec les champs numériques et de date. Les champs multiples SESAM sont linéarisés et traités comme autant de colonnes ayant la même précision SQL.
string $arr[col]["scale"] | L'échelle de la colonne col, au sens SQL, où col vaut de 0 à $arr["count"]-1. L'échelle est utilisée avec les champs numériques. Les champs multiples SESAM sont linéarisés et traités comme autant de colonnes ayant la même échelle SQL.

Voir aussi sesam_query(), pour un exemple d'utilisation de sesam_field_array().

Précédent | Sommaire | Suivant
sesam_fetch_row | Niveau supérieur | sesam_field_name


sesam_field_name

(PHP 3 CVS only)

sesam_field_name -- Retourne le nom d'une colonne

Description

int sesam_field_name ( string result_id, int index)

sesam_field_name() retourne le nom du champ index dans le résultat identifié par result_id, ou FALSE en cas d'erreur.

Pour les requêtes immédiates, ou les colonnes dynamiques, une chaîne vide est retournée.

Note : Les colonnes sont indexées à partir de 0, et non pas 1.

Voir aussi : sesam_field_array(). Cette fonction fournit une interface simple aux noms et types de colonnes, et permet la detection des champs multiples.

Précédent | Sommaire | Suivant
sesam_field_array | Niveau supérieur | sesam_free_result


sesam_free_result

(PHP 3 CVS only)

sesam_free_result -- Libère les ressources SESAM

Description

int sesam_free_result ( string result_id)

sesam_free_result() libère les ressources reservées par la requête result_id. retourne FALSE en cas d'erreur.

Précédent | Sommaire | Suivant
sesam_field_name | Niveau supérieur | sesam_num_fields


sesam_num_fields

(PHP 3 CVS only)

sesam_num_fields -- Retourne le nombre de colonne dans un résultat

Description

int sesam_num_fields ( string result_id)

Après avoir appelé sesam_query() avec une requête de selection, sesam_num_fields() indique le nombre de colonnes du résultat identifié par result_id. Retourne FALSE en cas d'erreur.

Pour les requêtes immédiates, la valeur zéro est retournée. Les champs multiples SESAM compte autant que leur taille respective, c'est à dire qu'un champ multiple de trois colonnes compte comme trois colonne.

Voir aussi sesam_query() et sesam_field_array() pour savoir distinguer les champs multiples des colonnes standard.

Précédent | Sommaire | Suivant
sesam_free_result | Niveau supérieur | sesam_query


sesam_query

(PHP 3 CVS only)

sesam_query -- Exécute une requête SESAM

Description

string sesam_query ( string query [, bool scrollable])

sesam_query() retourne un identifiant de résultat SESAM en cas de succès, ou FALSE en cas d'erreur.

L'identifiant de résultat est utilisé par d'autres fonctions sesam pour lire les valeurs.

sesam_query() envoie une requête à la base active. Elle peut exécuter aussi bien une requête immédiate (DELETE, UPDATE ou INSERT), ou une requête de selection. Si une requête immédiate est exécutée, aucun curseur n'est alloué, et il ne sera pas possible d'utiliser les fonctions sesam_fetch_row() ou sesam_fetch_result(). Pour les requêtes de selection, un descripteur de résultat et un curseur (scrollable ou séquentiel, suivant le paramètre optionnel scrollable passé) sear alloué. Si scrollable est omis, le curseur sera séquentiel.

Lorsque vous utilisez les curseurs à défilement, le curseur peut être positionné librement dans le résultat. Pour chaque requête à défilement, il existe des valeurs globales de types de défilement (initialisée à :SESAM_SEEK_NEXT) et la position peut être fixée une seule fois par sesam_seek_row() ou bien à chaque appel, avec la fonction sesam_fetch_row().

Pour les requêtes immédiates, le nombre de lignes affectées est sauvé, et est accessible par la fonction sesam_affected_rows().

Voir aussi : sesam_fetch_row() et sesam_fetch_result().

Exemple 1. Liste toutes les lignes de table "phone" sous forme de table HTML

<?php
if (!sesam_connect("phonedb", "demo", "toto"))
  die("cannot connect");
$result = sesam_query("select * from phone");
if (!$result) {
  $err = sesam_diagnostic();
  die($err["errmsg"]);
}
echo "<TABLE BORDER>\n";
// Ajoute l'en-t&ecirc;te de titre comme nom de colonne
if ($cols = sesam_field_array($result)) {
  echo " <TR><TH COLSPAN=".$cols["count"].">Result:</TH></TR>\n";
  echo " <TR>\n";
  for ($col = 0; $col < $cols["count"]; ++$col) {
    $colattr = $cols[$col];
    /* &eacute;tend les en-t&ecirc;tes de la table au dessus des champs multiples */
    if ($colattr["count"] > 1) {
      echo "  <TH COLSPAN=".$colattr["count"].">".$colattr["name"].
           "(1..".$colattr["count"].")</TH>\n";
      $col += $colattr["count"] - 1;
    }
    else
      echo "  <TH>" . $colattr["name"] . "</TH>\n";
  }
  echo " </TR>\n";
}
do {
  // Lit les r&eacute;sultats par bloc de 100
  $ok = sesam_fetch_result($result,100);
  for ($row=0; $row < $ok["rows"]; ++$row) {
    echo " <TR>\n";
    for ($col = 0; $col < $ok["cols"]; ++$col) {
      if (isset($ok[$col][$row]))
        echo "  <TD>" . $ok[$col][$row] . "</TD>\n";
      else
        echo "  <TD>-empty-</TD>\n";
    }
    echo " </TR>\n";
  }
} while ($ok["truncated"]); // tant qu'il a y encore des donn&eacute;es
echo "</TABLE>\n";
// lib&egrave;re les ressources
sesam_free_result($result);
?>

Précédent | Sommaire | Suivant
sesam_num_fields | Niveau supérieur | sesam_rollback


sesam_rollback

(PHP 3 CVS only)

sesam_rollback -- Annule une transaction SESAM

Description

bool sesam_rollback ( void )

sesam_rollback() retourne TRUE en cas de succès et FALSE en cas d'erreur.

sesam_rollback() annule toutes les modifications en cours sur la base. Les curseurs de résultat et les descripteurs de résultats seront affectés.

A la fin de chaque script, et dans chaque appel à sesam_disconnect(), un appel implicite à sesam_rollback() est fait, annulant toutes les transactions non validées dans la base.

Exemple 1. Annulation d'une transaction SESAM

<?php
if (sesam_connect ("moncatalogue", "monschema", "toto")) {
  if (sesam_execimm("INSERT INTO matable VALUES (*, 'Petit Test', <0, 8, 15>)")
   && sesam_execimm("INSERT INTO autretable VALUES (*, 'Autre Test', 1)"))
     sesam_commit();
  else
     sesam_rollback();
}
?>

Voir aussi sesam_commit().

Précédent | Sommaire | Suivant
sesam_query | Niveau supérieur | sesam_seek_row


sesam_seek_row

(PHP 3 CVS only)

sesam_seek_row -- Déplace un curseur à défilement

Description

bool sesam_seek_row ( string result_id, int whence [, int offset])

result_id est un indentifiant de résultat valide (requête de sélection, et curseur à défilement créé avec sesam_query()).

whence modifie la valeur globale par défaut pour le type de défilement, spécifie le type de défilement à utiliser lors des opérations de lectures ultérieurs. Les valeurs valides sont les suivantes :

Tableau 1. Valeurs valides pour whence

Valeur | Constante | Signification
0 | SESAM_SEEK_NEXT | Lecture séquentielle (après la lecture, la position est déplacé à SESAM_SEEK_NEXT)
1 | SESAM_SEEK_PRIOR | Lecture séquentielle à rebours (après la lecture, la position est déplacé à SESAM_SEEK_PRIOR)
2 | SESAM_SEEK_FIRST | Repositionnement au début (après la lecture, la position est déplacée à SESAM_SEEK_NEXT)
3 | SESAM_SEEK_LAST | Repositionnement à la fin (après la lecture, la position est déplacée à SESAM_SEEK_PRIOR)
4 | SESAM_SEEK_ABSOLUTE | Repositionnement absolu à offset (index commencant à 0. Après la lecture, la position est placé à SESAM_SEEK_ABSOLUTE, et le pointeur interne est auto-incrémenté).
5 | SESAM_SEEK_RELATIVE | Repositionnement relatif à offset, où offset peut être positif ou négatif

offset est optionnel. Il ne sert que lorsque whence vaut soit SESAM_SEEK_RELATIVE, soit SESAM_SEEK_ABSOLUTE.

Précédent | Sommaire | Suivant
sesam_rollback | Niveau supérieur | sesam_settransaction


sesam_settransaction

(PHP 3 CVS only)

sesam_settransaction -- Modifie les paramètres de transaction SESAM

Description

bool sesam_settransaction ( int isolation_level, int read_only)

sesam_settransaction() retourne TRUE si les valeurs sont valides et que a modification a été réussie. FALSE sinon.

sesam_settransaction() remplace les valeurs par défaut du niveau d'isolation ("isolation level") et de lecture seule ("read-only") fixée par le fichier de configuration SESAM), afin d'optimiser les requêtes ultérieures et garantir la cohérence de la base. Ces valeurs ne sont utilisées que pour la prochaine transaction.

sesam_settransaction() ne peut être appelée qu'avant le début de la transaction. Elle est inefficace si la transaction a déjà commencé.

Pour simplifier l'utilisation de cette fonction dans les scripts PHP, les constantes suivantes ont été définies en PHP (reportez vous au manuel SESAM pour avoir des détails sur leur signification) :

Tableau 1. Valeurs valides pour le paramètre isolation_level

Valeur | Constante | Signification
1 | SESAM_TXISOL_READ_UNCOMMITTED | Lecture sans validation
2 | SESAM_TXISOL_READ_COMMITTED | Lecutre avec validation
3 | SESAM_TXISOL_REPEATABLE_READ | Lecture récurente
4 | SESAM_TXISOL_SERIALIZABLE | Sérialisable

Tableau 2. Valeurs valides pour le paramètre read_only

Valeur | Constante | Signification
0 | SESAM_TXREAD_READWRITE | Lecture/écriture
1 | SESAM_TXREAD_READONLY | Lecture seule

Les valeurs modifiées par sesam_settransaction() remplaceront les valeurs par défaut spécifiée dans le fichier de configuration SESAM.

Exemple 1. Modifier les paramètres de configuration SESAM

<?php
  sesam_settransaction(SESAM_TXISOL_REPEATABLE_READ, SESAM_TXREAD_READONLY);
?>

Précédent | Sommaire | Suivant
sesam_seek_row | Niveau supérieur | Sessions


Sessions

Manuel PHP
Précédent Suivant

XCV. Sessions

Introduction

Le support des sessions de PHP est un moyen de préserver des données entre plusieurs accès. Cela vous permet de créer des applications personnalisées, et d'augmenter l'attractivité de votre site.

Si vous êtes familier avec la gestion de session de la librairie PHPLIB, vous remarquerez que certains concepts sont similaires.

Chaque visiteur accédant à votre page web se voit assigné un identifiant unique, appelé 'identifiant de session'. Il peut être stocké soit dans un cookie, soit propagé dans l'URL.

Le support des sessions vous permet d'enregistrer un nombre illimité de variables qui doivent être préservées entre les requêtes. Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si session.auto_start est activé1) ou sur demande (explicitement avec session_start() ou implicitement avec session_register()) si il existe une session du même nom. Si c'est le cas, l'environnement précédemment sauvé sera recréé.

Toutes les variables sont sérialisées après l'exécution du script PHP. Les variables qui sont indéfinies sont marquées comme telles. Lors des accès ultérieurs, elles ne seront pas définies, jusqu'à ce que l'utilisateur le fasse.

Note : La gestion des sessions a été ajoutée en PHP 4.0.

Sessions et sécurité

Lien externe : Session fixation

Utiliser les sessions ne signifie pas que les données de session ne pourront être vue que par un seul utilisateur. Il est important de garder cela en tête, lorsque vous stockez et affichez des données importantes. Lorsque vous stockez des données dans une session, il faut se demander quels seront les problèmes posés si quelqu'un d'autre accède à cette information, ou comment votre application est affectée si la session est en fait celle d'un autre.

Par exemple, si quelqu'un usurpe une session, il peut alors poster un message dans un forum sous une fausse identitée. Quelle est la gravité de ce problème? Ou bien, il peut accèder aux commandes d'un client, et même, modifier son panier d'achat. A priori, c'est moins problématique pour un fleuriste que pour un pharmacien.

Par conséquent, lorsque vous manipulez des données importantes, il faut exploiter d'autres méthodes pour décider si une session est valide ou pas. Les sessions ne fournissent pas une méthode fiable d'authentification.

Les sessions reposent sur un identifiant de session, ce qui signifie que quelqu'un peut voler cet identifiant, rien qu'en volant l'ID. Ce vol peut être rendu très difficile, comme par exemple en utilisant les cookies, mais en aucun cas cela sera impossible. Les sessions dépendent aussi de la discipline de l'utilisateur qui referme son navigateur à la fin de la session pour tout clore proprement. De plus, même les cookies de session peuvent être surveillés sur un réseau, ou bien notés par un proxy.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Le suport des sessions est activé par défaut. Si vous souhaitez exclure le support des sessions de PHP, vous devez utiliser l'option --disable-session lors de l'exécution du script de configuration. Pour utiliser la mémoire vive pour le stockage des sessions, compilez PHP avec l'option --with-mm[=DIR] .

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
session.save_path | "/tmp" | PHP_INI_ALL
session.name | "PHPSESSID" | PHP_INI_ALL
session.save_handler | "files" | PHP_INI_ALL
session.auto_start | "0" | PHP_INI_ALL
session.gc_probability | "1" | PHP_INI_ALL
session.gc_maxlifetime | "1440" | PHP_INI_ALL
session.serialize_handler | "php" | PHP_INI_ALL
session.cookie_lifetime | "0" | PHP_INI_ALL
session.cookie_path | "/" | PHP_INI_ALL
session.cookie_domain | "" | PHP_INI_ALL
session.cookie_secure | "" | PHP_INI_ALL
session.use_cookies | "1" | PHP_INI_ALL
session.use_only_cookies | "0" | PHP_INI_ALL
session.referer_check | "" | PHP_INI_ALL
session.entropy_file | "" | PHP_INI_ALL
session.entropy_length | "0" | PHP_INI_ALL
session.cache_limiter | "nocache" | PHP_INI_ALL
session.cache_expire | "180" | PHP_INI_ALL
session.use_trans_sid | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR
session.bug_compat_42 | "1" | PHP_INI_ALL
session.bug_compat_warn | "1" | PHP_INI_ALL
url_rewriter.tags | "a=href,area=href,frame=src,input=src,form=fakeentry" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Le système de sessions dispose d'un grand nombre de directives dans le fichier php.ini. En voici une présentation :

session.save_handler string

Définit le nom du gestionnaire de session qui est utilisé pour stocker et relire les données. Par défaut, c'est le système intégré par fichiers : files.

session.save_path string

Définit le chemin qui doit être passé au gestionnaire de sauvegarde. Si vous décidez de choisir le gestionnaire par défaut (par fichier), cet argument sera utilisé comme dossier de sauvegarde des sessions. Par défaut, il vaut /tmp. Si le niveau d'imbrication de session.save_path est supérieur à 2, le nettoyage des sessions obsolètes ne s'opérera pas.

Avertissement

Si vous laissez cette option configurée avec un dossier accessible en lecture à tout le monde, comme par exemple /tmp (par défaut), les autres utilisateurs pourront exploiter ces sessions en obtenant la liste de fichiers dans ce dossier.

Note : Les utilisateurs de Windows doivent changer cette valeur de variable pour que les fonctions de sessions de PHP fonctionnent. Indiquez un chemin de dossier valide, comme par exemple : c:/temp.

session.name string

Spécifie le nom de la session, qui sera utilisé comme nom de cookie. Il ne doit contenir que des caractères alphanumérique. Par défaut, c'est PHPSESSID.

session.auto_start integer

Spécifie si le module de session doit démarrer automatiquement au début de chaque script PHP. Par défaut, c'est 0 (désactivé).

session.cookie_lifetime integer

Spécifie la durée de vie du cookie en secondes. La valeur de 0 siginifie : "Jusqu'à ce que le navigateur soit éteind". La valeur par défaut est : 0.

session.serialize_handler string

Définit le nom du gestionnaire qui est utilisé pour linéariser/délinéariser les données. Actuellement, un format interne à PHP (nommé php) et WDDX (nommé wddx) sont supportés . WDDX est seulement disponible, si PHP a été compilé avec l'option WDDX. Par défaut, c'est php.

session.gc_probability integer

Specifies the probability that the gc (garbage collection) routine is started on each request in percent. Defaults to 1.

session.gc_maxlifetime integer

Spécifie la durée de vie des données sur le serveur, en nombre de secondes. Après cette durée, les données seront considérées comme obsolètes, et supprimées.

Note : Si vous utilisez le gestionnaire de session par fichier, qui est fourni par défaut votre système doit garder la trace des date de dernier accès aux fichier (atime). La FAT de Windows ne le fait pas, alors vous faudra trouver un autre système pour gérer les sessions qui ont expirées.

session.referer_check integer

Contient une sous-chaîne que vous souhaitez retrouver dans tous les en-têtes HTTP Referer. Si cet en-tête a été envoyé par le client, et que la sous-chaîne n'a pas été trouvé, l'identifiant de session sera considéré comme invalide. Par défaut, cette option est la chaÎne vide.

session.entropy_file string

Est un chemin jusqu'à une source externe (un fichier), qui sera utilisée comme source additionnelle d'entropie pour la création de l'identifiant de session. Des exemples valides sont /dev/random et /dev/urandom, qui sont disponibles sur tous les systèmes Unix.

session.entropy_length integer

Spécifie le nombre d'octets qui seront lus dans le fichier défini ci-dessus. Par défaut, il vaut 0, c'est à dire inactif.

session.use_cookies integer

Spécifie si le module utilisera les cookies pour stocker les données de session sur le client. Par défaut, il vaut 1, c'est à dire actif.

session.use_only_cookies integer

Spécifie si le module doit utiliser seulement les cookies pour stocker les identifiants de sessions du coté du navigateur. Par défaut, cette option vaut 0 (inactif, pour compatibilité ascendante). En l'activant, vous éviterez les attaques qui utilisent des identifiants de sessions dans les URL. Cette configuration a été ajoutée en PHP 4.3.0.

session.cookie_path string

Spécifie le chemin utilisé lors de la création du cookie. Par défaut, il vaut /.

session.cookie_domain string

Spécifie le domaine utilisé lors de la création du cookie. Par défaut, il ne vaut rien.

session.cookie_secure bool

Spécifie que les cookies ne doivent être émis que sur des connexion sécurisée. Par défaut, cette option est à off. Cette option a été ajoutée en PHP 4.0.4. Voir aussi session_get_cookie_params() et session_set_cookie_params().

session.cache_limiter string

Spécifie le type de contrôle de cache utilisé pour les pages avec sessions. Les valeurs possibles sont : none, nocache, private, private_no_expire, public. Par défaut, il vaut nocache.

session.cache_expire integer

Spécifie la durée de vie des données de sessions, en minute. Cette option n'a aucune conséquence sur le contrôle de cache. Par défaut, il vaut 180 (3 heures).

session.use_trans_sid integer

Note : En PHP 4.1.2 ou plus ancien, cette option est activée en utilisant l'option de compilation --enable-trans-sid. Depuis PHP 4.2.0, trans-sid est toujours compilée.

Le système de gestion des sessions par URL pose un risque supplémentaire de sécurité : un utilisateur peut envoyer son URL avec l'identifiant de session par email à un ami, ou bien le mettre dans ses signets. Cela diffusera alors l'identifiant de session.

session.bug_compat_42 boolean

Les versions de PHP antérieures à la version 4.2.0 disposaient d'une fonctionnalité/bogue non documentée, qui vous permettait d'initialiser une variable de session dans le contexte global, même si register_globals était désactivé. PHP 4.3.0 et plus récent vous préviendra de l'utilisation de cette fonctionnalité si vous avez aussi activé session.bug_compat_warn.

session.bug_compat_warn boolean

Les versions de PHP antérieures à la version 4.2.0 disposaient d'une fonctionnalité/bogue non documentée, qui vous permettait d'initialier une variable de session dans le contexte global, même si register_globals était désactivé. PHP 4.3.0 et plus récent vous préviendra de l'utilisation de cette fonctionnalité si vous avez activé session.bug_compat_42 et session.bug_compat_warn.

session.url_rewriter.tags string

Spécifie quels sont les balises HTML qui doivent être réécrites si le support transparent du SID est activé. Par défaut, il vaut a=href,area=href,frame=src,input=src,form=fakeentry.

Les options track_vars et register_globals influencent le comportement des sessions, leur stockage et leur restauration.

Note : Depuis PHP 4.0.3, track_vars est toujours activé.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

SID (chaîne de caractères)

Constante contenant le nom de la session et l'identifiant en cours, sous la forme "name=ID".

Exemples

Note : Depuis PHP 4.1.0, $_SESSION est disponible comme variable globale, au même titre que $_POST, $_GET, $_REQUEST, etc.. Contrairement à $HTTP_SESSION_VARS, $_SESSION est toujours globale. Par conséquent, vous n'avez pas besoin d'utiliser le mot réservé global avec $_SESSION. Notez que cette documentation a été modifiée pour utiliser $_SESSION. Vous pouvez toujours le remplacer par $HTTP_SESSION_VARS si vous préférez l'ancienne version.

Les clés du tableau $_SESSION sont sujettes aux mêmes limitations que les variables PHP habituelles, c'est à dire qu'elles ne peuvent pas commencer par un nombre, mais commencer par une lettre ou un souligné '_'. Pour plus de détails, reportez vous à la section sur les variables.

Si track_vars est activé et register_globals est désactivé, seuls les éléments du tableau global $_SESSION contiendront les variables enregistrées dans la session. Les variables de sessions relues seront uniquement disponibles dans $_SESSION.

L'utilisation de $_SESSION (ou $HTTP_SESSION_VARS avec PHP 4.0.6 et plus ancien) est recommandé pour une meilleure sécurité et un code plus facilement maintenable. Avec $_SESSION, il n'y a pas besoin d'utiliser les fonctions session_register(), session_unregister() et session_is_registered(). Les variables de sessions sont accessibles comme toute autre variable.

Exemple 1. Enregistrer une variable avec $_SESSION.

<?php
session_start();
// Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien
if (!isset($_SESSION['count'])) {
    $_SESSION['compteur'] = 0;
} else {
    $_SESSION['compteur']++;
}
?>

Exemple 2. Retirer une variable de session avec $_SESSION et register_globals inactif.

<?php
session_start();
// Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien
unset($_SESSION['compteur']);
?>

Exemple 3. Retirer une variable de session avec $_SESSION et register_globals activé, après l'avoir enregistré avec $_SESSION.

<?php
session_start();
// Avec PHP 4.3 et plus r&eacute;cent, vous pouvez simplement utiliser l'exemple pr&eacute;c&eacute;dent
session_unregister('compteur');
?>

Si register_globals est activé, alors toutes les variables globales peuvent être enregistrées comme variables de session, et toutes les variables de sessions seront reconstituées comme variables globales. Comme PHP doit savoir quels variables globales sont enregistrées comme variables de sessions, l'utilisateur doit enregistrer les variables avec session_register() tandis que $HTTP_SESSION_VARS et $_SESSION ne nécessitent pas session_register().

Attention

Si vous utilisez $HTTP_SESSION_VARS et $_SESSION et désactivez register_globals, n'utilisez pas session_register(), session_is_registered() et session_unregister().

Si vous activez register_globals, session_unregister() doit être utilisé, car les variables de session sont enregistrés comme variables globales lorsque les données de sessions sont relues. Désactiver register_globals est recommandé pour des raisons de sécurité et de performances.

Exemple 4. Enregistrer une variable avec register_globals activé

<?php
if (!session_is_registered('compteur')) {
    session_register("compteur");
    $compteur = 0;
}
else {
    $compteur++;
}
?>

Si register_globals est activé, alors les variables globales et les entrées dans le tableau $_SESSION seront des références sur la même valeur pour les valeurs qui auront été enregistrées avant le démarrage de la session (donc, dans les page précédentes).

De plus, si vous enregistrez une nouvelle variable avec la fonction session_register(), l'entrée dans l'environnement globale et $_SESSION ne fera pas de référence vers la même valeur jusqu'à la prochaine utilisation de session_start() (ceci s'applique à PHP 4.2 est avant seulement). C'est à dire qu'une modification dans les variables globales ne seront pas répercutés dans les entrées de $_SESSION. Il est peu probable que cela ait un impact en pratique, et de plus, cela a été corrigé en PHP 4.3.

Passer l'identifiant de session (session ID)

Il y a deux méthodes de propagation de l'identifiant de session :

  • Cookies

  • Paramèter URL

The session module supports both methods. Cookies are optimal, but since they are not reliable (clients are not bound to accept them), we cannot rely on them. The second method embeds the session id directly into URLs.

Le module de session supporte les deux méthodes. Les cookies sont optimaux, mais comme ils ne sont pas sûrs (tous les internautes ne les acceptent pas), ils ne sont pas fiables. La seconde méthode place l'identifiant de session directement dans les URL.

PHP est capable de faire cela de manière transparente, lorsqu'il est compilé avec l'option --enable-trans-sid. Si vous activez cette option, les URL relatives seront modifiées pour contenir l'identifiant de session automatiquement. Alternativement, vous pouvez utiliser la constante SID, qui est définie, si le client n'a pas envoyé le cookie approprié. SID est soit de la forme session_name=session_id ou une chaîne vide.

Note : L'option arg_separator.output de php.ini vous permet de personnaliser le séparateur d'arguments.

L'exemple suivant vous montre comment enregistrer une variable et comment réaliser un lien correct avec une autre page, avec SID.

Exemple 5. Compter le nombre de hits d'un utilisateur sur une page

<?php
if (!session_is_registered('compteur')) {
    session_register('compteur');
    $compteur = 1;
}
else {
    $compteur++;
}
?>

Bonjour visiteur, vous avez vu cette page <?php echo $compteur; ?> fois.<p>;

Pour continuer, <A HREF="nextpage.php?<?php echo SID?>">cliquez ici</A>.

<?php echo SID?> (ou bien <?=SID?> peut être utilisé si les short_open_tag sont actifs) est nécessaire pour préserver l'identifiant de session dans le cas où l'utilisateur a désactivé les cookies. <? echo SID?> n'est pas nécessaire, si --enable-trans-sid a été activé à la compilation de PHP.

Note : Les URLS non relatives sont considérées comme externes au site, et ne recevront pas le SID, car c'est une fuite d'information vers un autre site (envoi d'informations importantes).

Gestion personnalisée des sessions

Pour implémenter un stockage en base de données, ou toute autre méthode, vous aurez besoin de la fonction session_set_save_handler() pour paramétrer vos propres fonctions de stockage.

Table des matières
session_cache_expire -- Retourne la configuration actuelle du cache expire
session_cache_limiter -- Lit et/ou modifie le limiteur de cache de session
session_decode -- Décode les données de session
session_destroy -- Détruit une session
session_encode -- Encode les données de session
session_get_cookie_params -- Lit la configuration du cookie de session
session_id -- Let et/ou modifie l'identifiant courant de session
session_is_registered -- Vérifie si une variable est enregistrée dans la session
session_module_name -- Lit et/ou modifie le module de session courant
session_name -- Lit et/ou modifie le nom de la session
session_regenerate_id -- Remplace l'identifiant de session courant par un nouveau
session_register -- Enregistre une variable dans une session
session_save_path -- Lit et/ou modifie le chemin de sauvegarde des sessions
session_set_cookie_params -- Modifie les paramètres du cookie de session
session_set_save_handler -- Configure les fonctions de stockage de sessions
session_start -- Initialise une session
session_unregister -- Supprime une variable de la session
session_unset -- Détruit toutes les variables d'une session
session_write_close -- Ecrit les données de session et ferme la session

Précédent | Sommaire | Suivant
sesam_settransaction | Niveau supérieur | session_cache_expire


session_cache_expire

(PHP 4 >= 4.2.0)

session_cache_expire -- Retourne la configuration actuelle du cache expire

Description

int session_cache_expire ( [int new_cache_expire])

session_cache_expire() retourne la configuration actuelle du cache expire Si new_cache_expire est fourni dans le fichier php.ini, la configuration actuelle de cache expire sera remplacée par new_cache_expire.

Le délai d'expiration du cache est remis à sa valeur par défaut de 180, stockée dans session.cache_limiter, au démarrage de la requête. Par conséquent, vous devez appeler session_cache_expire() à chaque requête (et avant que session_start() ne soit appelé).

Exemple 1. Exemple avec session_cache_expire()

<?php

/* Configure le limiteur de cache &agrave; 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

/* Configure le d&eacute;lai d'expiration &agrave; 30 minutes */
session_cache_expire (30);
$cache_expire = session_cache_expire();

/* D&eacute;marre la session */

session_start();

echo "Le limiteur de cache est maintenant &agrave; $cache_limiter</ br>";
echo "La session en cache va exprier apr&egrave;s $cache_expire minutes";
?>

Note : La directive new_cache_expire n'a de valeur que si session.cache_limiter a une valeur différente de nocache.

Voir aussi session.cache_expire, session.cache_limiter et session_cache_limiter().

Précédent | Sommaire | Suivant
Sessions | Niveau supérieur | session_cache_limiter


session_cache_limiter

(PHP 4 >= 4.0.3)

session_cache_limiter -- Lit et/ou modifie le limiteur de cache de session

Description

string session_cache_limiter ( [string cache_limiter])

session_cache_limiter() retourne la configuration courante du limiteur de cache. Si cache_limiter est fourni, le limiteur de cache est reconfiguré avec la valeur de cache_limiter.

Le limiteur de cache contrôle les en-têtes HTTP envoyés au client. Certains en-têtes détermine les règles de mise en cache de la page sur le navigateur. En configurant ce limiteur à nocache, par exemple, le navigateur ne mettra pas la page dans son cache. La valeur de public, au contraire, permettra le cache. La valeur de private est aussi possible, et est légèrement plus restrictive que public.

En mode private, l'en-tête Expire envoyé au client peut poser des problèmes à certains navigateurs, comme notamment Mozilla. Vous pouvez éviter ce problème avec le mode private_no_expire. L'en-tête Expire n'est jamais envoyé au navigateur pour ce mode.

Note : private_no_expire a été ajouté en PHP 4.2.0.

Le limiteur de cache est remis à la valeur par défaut de session.cache_limiter à chaque démarrage de script PHP. Donc, vous devrez appeler session_cache_limiter() à chaque page, et avant session_start().

Exemple 1. Exemple avec session_cache_limiter()

<?php

/* configure le limiteur de cache &agrave; 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

echo "Le limiteur de cache vaut maintenant $cache_limiter\n";
?>

Voir aussi la directive de configuration session.cache_limiter.

Précédent | Sommaire | Suivant
session_cache_expire | Niveau supérieur | session_decode


session_decode

(PHP 4 )

session_decode -- Décode les données de session

Description

bool session_decode ( string data)

session_decode() décode les données de sessions fournies dans le paramètre data, et défini les variables ainsi contenues dans la session.

Voir aussi session_encode()

Précédent | Sommaire | Suivant
session_cache_limiter | Niveau supérieur | session_destroy


session_destroy

(PHP 4 )

session_destroy -- Détruit une session

Description

bool session_destroy ( void )

session_destroy() détruit toutes les données associées avec la session courante. Cette fonction ne détruit pas les variables globales associées avec la session, de même, elle ne détruit pas le cookie de session.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Destruction d'une session avec session_destroy()

<?php

// Initialisation de la session.
// Si vous utilisez un autre nom
// session_name("something")
session_start();
// D&eacute;truit toutes les variables de session
session_unset();
// Finalement, d&eacute;truit la session
session_destroy();

?>

Exemple 2. Destruction d'une session avec $_SESSION

<?php

// Initialisation de la session.
// Si vous utilisez un autre nom
// session_name("something")
session_start();
// D&eacute;truit toutes les variables de session
$_SESSION = array();
// Finalement, d&eacute;truit la session
session_destroy();

?>

Précédent | Sommaire | Suivant
session_decode | Niveau supérieur | session_encode


session_encode

(PHP 4 )

session_encode -- Encode les données de session

Description

string session_encode ( void )

session_encode() retourne une chaîne contenant les variables de la session courante encodées et prêtes au stockage.

Voir aussi session_decode()

Précédent | Sommaire | Suivant
session_destroy | Niveau supérieur | session_get_cookie_params


session_get_cookie_params

(PHP 4 )

session_get_cookie_params -- Lit la configuration du cookie de session

Description

array session_get_cookie_params ( void )

session_get_cookie_params() retourne la configuration courante du cookie de session. Cette fonction retourne un tableau, qui contient les éléments suivants :

  • "lifetime" - Durée de vie du cookie.

  • "path" - Le chemin où les informations sont stockées.

  • "domain" - Le domaine du cookie.

  • "secure" - Le cookie ne doit être envoyé que sur des connexions sécurisées (cet élément a été ajouté en PHP 4.0.4).

Voir aussi les directives de configuration session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_secure et session_set_cookie_params().

Précédent | Sommaire | Suivant
session_encode | Niveau supérieur | session_id


session_id

(PHP 4 )

session_id -- Let et/ou modifie l'identifiant courant de session

Description

string session_id ( [string id])

session_id() retourne l'identifiant courant de session.

Si id est fourni, il remplacera l'identifiant courant de session. session_id() doit alors être appelé avant session_start(). Suivant le gestionnaire de session que vous utilisez, tous les caractères ne seront pas acceptés dans cette valeur. Par exemple, le gestionnaire de session par défaut, basé sur les fichiers, n'accepte que les lettres et chiffres!

La constante SID peut alors être utilisée pour lire le nom de la session courante, et l'identifiant de session à fournir dans les URL. Notez que SID est uniquement défini si le client n'a pas envoyé le bon cookie. Voyez aussi Gestion de session.

Voir aussi session_start(), session_set_save_handler() et session.save_handler.

Précédent | Sommaire | Suivant
session_get_cookie_params | Niveau supérieur | session_is_registered


session_is_registered

(PHP 4 )

session_is_registered -- Vérifie si une variable est enregistrée dans la session

Description

bool session_is_registered ( string name)

session_is_registered() retourne TRUE si la variable de nom name fait partie de la session courante.

Note : Si $_SESSION (ou $HTTP_SESSION_VARS en PHP 4.0.6 et plus ancien) est utilisé, utilisez la fonction isset() pour vérifier la présence de la variable dans $_SESSION.

Attention

Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS), n'utilisez pas session_register(), session_is_registered() et session_unregister().

Précédent | Sommaire | Suivant
session_id | Niveau supérieur | session_module_name


session_module_name

(PHP 4 )

session_module_name -- Lit et/ou modifie le module de session courant

Description

string session_module_name ( [string module])

session_module_name() retourne le nom du module courant de session. Si module est fourni, cette valeur sera alors utilisée, et remplacera la valeur courante.

Précédent | Sommaire | Suivant
session_is_registered | Niveau supérieur | session_name


session_name

(PHP 4 )

session_name -- Lit et/ou modifie le nom de la session

Description

string session_name ( [string name])

session_name() retourne le nom de la session courante. Si name est fourni, le nom de la session courante sera remplacé par cette valeur.

Le nom de session est utilisé comme nom de cookie ou nom de variable dans les URL. Il ne doit contenir que des caractère alpha-numériques; il doit être court et descriptif (surtout pour les utilisateurs ayant activé l'alerte cookie). Le nom de session est toujours remis à sa valeur par défaut (session.name, dans php.ini). Il faut donc utiliser session_name() au début de chaque script, et notamment avant session_start() ou session_register().

Exemple 1. Exemple avec session_name()

<?php

/* choisi le nom de session  : MaSession */

$previous_name = session_name("MaSession");

echo "L'ancien nom de la session &eacute;tait $previous_name\n";

?>

Voir aussi la directive de configuration session.name.

Précédent | Sommaire | Suivant
session_module_name | Niveau supérieur | session_regenerate_id


session_regenerate_id

(PHP 4 >= 4.3.2)

session_regenerate_id -- Remplace l'identifiant de session courant par un nouveau

Description

bool session_regenerate_id ( void )

session_regenerate_id() va remplacer l'identifiant de session courant par un nouveau, généré automatiquement, tout en conservant les valeurs de session.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec session_regenerate_id()

<?php
session_start();

print session_id();

session_regenerate_id();

// Ce n'est plus pareil
print session_id();

print_r($_SESSION);
?>

Note : Depuis PHP 4.3.3, si les cookies de session sont activés, l'utilisation de session_regenerate_id() va aussi envoyer un cookie de session avec le nouvel identifiant.

Voir aussi
session_id(),
session_start() et
session_name().

Précédent | Sommaire | Suivant
session_name | Niveau supérieur | session_register


session_register

(PHP 4 )

session_register -- Enregistre une variable dans une session

Description

bool session_register ( mixed name [, mixed ...])

session_register() enregistre toutes les variables de nom name dans la session courante. Le nombre de variables enregistré est libre. Les noms peuvent être passé comme des chaînes, ou comme des tableaux contenant des chaînes ou des tableaux. Pour chaque nom, session_register() place la variable dans la session courante, pour la sauvegarde de fin de script.

Attention

Si vous voulez que votre script fonctionne indépendamment de la configuration de la directive register_globals, vous devez utiliser la variable $_SESSION. Tous les éléments de $_SESSION sont automatiquement enregistrée. Si votre script utilise session_register(), il ne fonctionnera pas dans les environnements où register_globals est désactivée.

register_globals : note importante : Depuis PHP 4.2.0, la valeur par défaut de la directive de configuration PHP register_globals vaut off. La communauté PHP vous recommande de ne pas dépendre de cette directive, mais de trouver d'autres moyens pour accéder aux données, tels que les superglobals.

Attention

Cette fonction enregistre une variable global. Si vous enregistrer une variable globale dans une fonction, vous devez vous assurer de la rendre globale, avec global, ou bien le tableau $GLOBALS[], ou bien utiliser un des tableaux de session ci-dessous.

Attention

Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS), n'utilisez pas session_register(), session_is_registered() et session_unregister().

session_register() retourne TRUE si toutes les variables ont été enregistrées correctement dans la session.

Si session_start() n'a pas été appelé avant cette fonction, un appel implicite à session_start() sans aucun paramètre ne sera fait.

Vous pouvez aussi créer une variable de session, simplement en ajoutant l'index approprié dans la variable $_SESSION ou $HTTP_SESSION_VARS.

Exemple 1. Exemple avec session_register()

<?php
// L'utilisation de session_register() est d&eacute;conseill&eacute;
$barney = "Un gros dinosaure violet.";
session_register("barney");

// L'utilisationde $_SESSION est encourag&eacute; depuis PHP 4.1.0
$_SESSION["zim"] = "Un envahisseur d'un autre plan&egrave;te.";

// L'ancienne m&eacute;thode avec $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["spongebob"] = "Il a un cale&ccedil;on carr&eacute;!";
?>

Note : Il n'est actuellement pas possible d'enregistrer des ressources dans les sessions. Par exemple, vous ne pouvez pas créer de connexion à une base de données, et stocker la connexion dans une variable de session. Elle ne sera pas valide lors de la prochaine page. Les fonctions PHP qui retournent des ressources sont identifiées avec le type resource dans leurs définitions. Une liste de fonctions qui retournent des ressources sont disponible dans l'annexe types de ressources.

Si $_SESSION (ou $HTTP_SESSION_VARS pour les versions antérieures à PHP 4.0.6) est utilisé, assignez les variables à $_SESSION : i.e. $_SESSION['var'] = 'ABC';

Voir aussi session_is_registered() et session_unregister().

Précédent | Sommaire | Suivant
session_regenerate_id | Niveau supérieur | session_save_path


session_save_path

(PHP 4 )

session_save_path -- Lit et/ou modifie le chemin de sauvegarde des sessions

Description

string session_save_path ( [string path])

session_save_path() retourne le chemin du dossier actuellement utilisé pour sauver les données de sessions. Si path est spécifié, le chemin du dossier sera modifié. session_save_path() doit être appelé avant session_start().

Note : Sur certains systèmes d'exploitation, vous aurez à choisir un chemin vers un dossier capable de gérer un grand nombre de petits fichiers efficacement. Par exemple, sous Linux, reiserfs peut se rendre plus efficace que ext2fs.

Voir aussi la directive de configuration session.save_path.

Précédent | Sommaire | Suivant
session_register | Niveau supérieur | session_set_cookie_params


session_set_cookie_params

(PHP 4 )

session_set_cookie_params -- Modifie les paramètres du cookie de session

Description

void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]])

session_set_cookie_params() modifie les paramètres de configuration du cookie de session, qui a été configuré dans le fichier php.ini. L'effet de cette fonction ne dure que pendant l'exécution du script courant.

Note : Le paramètre secure a été ajouté en PHP 4.0.4.

Voir aussi les directives de configuration session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_secure et session_get_cookie_params().

Précédent | Sommaire | Suivant
session_save_path | Niveau supérieur | session_set_save_handler


session_set_save_handler

(PHP 4 )

session_set_save_handler -- Configure les fonctions de stockage de sessions

Description

bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc)

session_set_save_handler() configure les fonctions de stockage de session, et permet de choisir des fonctions utilisateurs pour sauver et relire toutes les sessions. Cette fonction est très pratique lorsqu'il faut sauver les données de sessions en utilisant une autre technique que le système par fichier fourni par défaut : notamment, stockage en base de données, ou dans des démons tels que le SRM. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Le gestionnaire d'écriture n'est pas exécuté tant que le flot de sortie est ouvert. Par conséquent, l'affichage de messages de debogage durant le gestionnaire d'écriture ne sera donc jamais visible depuis le navigateur. Si vous avez besoin de débogage, nous vous suggérons d'écrire vos messages dans un fichier.

Note : Le gestionnaire d'écriture n'est pas appelé s'il n'y a pas de données dans la session. Cela s'applique aussi si des variables de sessions vides sont enregistrées. Cela diffère du comportement du système de gestion des sessions par fichier, qui crée un fichier vide dans ce cas.

L'exemple suivant fournit un exemple de stockage des sessions semblable au système par défaut (par fichiers). Cet exemple peut facilement être adapté pour réaliser des sauvegardes en base de données, avec votre serveur préféré.

La fonction de lecture doit toujours retourner une chaîne, pour que le gestionnaire fonctionne comme prévu. Vous devez retourner une chaîne vide s'il n'y a pas de données à lire. Les valeurs retournées par les autres gestionnaires sont converties en booléen avant d'être retournées au script. TRUE pour la réussite, FALSE pour l'échec.

Exemple 1. Exemple avec session_set_save_handler()

<?php
function open ($save_path, $session_name) {
  global $sess_save_path, $sess_session_name;

  $sess_save_path = $save_path;
  $sess_session_name = $session_name;
  return(true);
}

function close() {
  return(true);
}

function read ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "r")) {
    $sess_data = fread($fp, filesize($sess_file));
    return($sess_data);
  } else {
    return(""); // Doit retourner "" ici.
  }

}

function write ($id, $sess_data) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "w")) {
    return(fwrite($fp, $sess_data));
  } else {
    return(false);
  }

}

function destroy ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}

/*******************************************************
 * ATTENTION - Vous devrez impl&eacute;menter un       *
 * collecteur de donn&eacute;es obosol&egrave;tes ici. *
 *******************************************************/
function gc ($maxlifetime) {
  return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");

session_start();

// Utilisez vos sessions comme d'habitude
?>

Voir aussi la directive de configuration session.save_handler.

Précédent | Sommaire | Suivant
session_set_cookie_params | Niveau supérieur | session_start


session_start

(PHP 4 )

session_start -- Initialise une session

Description

bool session_start ( void )

session_start() crée une session (ou restaure la session trouvée sur le serveur, via l'identifiant de session passé).

Si vous voulez utiliser une session nommée, vous devez appeler session_name() avant session_start().

session_start() retourne toujours TRUE.

Note : Si vous utilisez des sessions basées sur les cookies, vous devez appeler session_start() avant d'afficher quoi que ce soit au navigateur.

Exemple 1. Exemple de session : page1.php

<?php
// page1.php

session_start();

echo 'Bienvenue &agrave; la page num&eacute;ro 1';

$_SESSION['favcolor'] = 'vert';
$_SESSION['animal']   = 'chat';
$_SESSION['time']     = time();

// Fonctionne si le cookie a &eacute;t&eacute; accept&eacute;
echo '<br /><a href="page2.php">page 2</a>';

// Ou bien, en indiquant explicitement l'identfiant de session
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

Après avoir vu la page page1.php avec un navigateur, la seconde page page2.php va magiquement afficher les données de sessions. Lisez la référence sur les sessions pour des informations sur la propagation des identifiants de sessions, et l'utilisation de la constante SID.

Exemple 2. Exemple de session : page2.php

<?php
// page2.php

session_start();

echo 'Bienvenue sur la page num&eacute;ro 2<br />';

echo $_SESSION['favcolor']; // vert
echo $_SESSION['animal'];   // chat
echo date('Y m d H:i:s', $_SESSION['time']);

// Vous pourriez utiliser la constante SID ici, tout comme dans la page page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>

Si vous avez utilisé une session nommée, vous devez appeler session_name() avant d'appeler session_start().

session_start() va configurer un gestionnaire interne d'affichage, pour assurer la réécriture des URL, lorsque le support transparent du SID est activé. Si vous utilisez ob_gzhandler ou ob_start(), l'ordre des gestionnaires d'affichage est important pour un affichage correct. Par exemple, l'utilisateur doit enregistrer ob_gzhandler avant que la session ne commence.

Note : L'utilisation de zlib.output_compression est recommandée, à la place de ob_gzhandler.

Voir aussi session_id().

Précédent | Sommaire | Suivant
session_set_save_handler | Niveau supérieur | session_unregister


session_unregister

(PHP 4 )

session_unregister -- Supprime une variable de la session

Description

bool session_unregister ( string name)

session_unregister() supprime la variable name de la session courante.

session_unregister() retourne TRUE si la variable a pu être supprimée réellement.

Note : Si $_SESSION (ou $HTTP_SESSION_VARS pour PHP 4.0.6 et plus ancien) est utilisé, utilisez unset() pour supprimer une variable de session.

Attention

session_unregister() ne supprime pas la variable globale correspondant au nom de name : elle empêche simplement que name soit sauvée de la session à la fin du script. Vous devez appeler unset() vous-même pour effacer la globale correspondante.

Attention

Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS), n'utilisez pas session_register(), session_is_registered() et session_unregister().

Précédent | Sommaire | Suivant
session_start | Niveau supérieur | session_unset


session_unset

(PHP 4 )

session_unset -- Détruit toutes les variables d'une session

Description

void session_unset ( void )

session_unset() détruit toutes les variables de la session courante.

Note : Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS pour PHP 4.0.6 ou plus ancien), utilisez unset() pour détruire une variable de session, i.e. unset($_SESSION['nomvariable'];.

Attention

NE détruisez PAS tout $_SESSION avec unset($_SESSION) car cela désactivera la possibilité d'enregistrer des variables de session à partir du tableau superglobal $_SESSION.

Précédent | Sommaire | Suivant
session_unregister | Niveau supérieur | session_write_close


session_write_close

(PHP 4 >= 4.0.4)

session_write_close -- Ecrit les données de session et ferme la session

Description

void session_write_close ( void )

session_write_close() termine la session courante, après avoir stocké les données.

Les données de session sont généralement stockées à la fin de votre script, automatiquement, sans besoin d'appeler explicitement session_write_close(). Mais durant toute l'exécution du script, les données de session sont verrouillées en écriture, et un seul script peut opérer sur la session en même temps. Lorsque vous utilisez des frames avec des sessions, vous vous en rendrez compte en voyant les frames se rafraîchir les uns après les autres. Vous pouvez réduire le temps de calcul de ces pages en refermant la session aussitôt que possible, et ainsi, libérant les données pour les autres scripts.

Précédent | Sommaire | Suivant
session_unset | Niveau supérieur | Mémoire partagée


Mémoire partagée

Manuel PHP
Précédent Suivant

XCVI. Mémoire partagée

Introduction

Shmop est un ensemble de fonctions simples pour gérer la mémoire partagée avec PHP (lecture, écriture, création et suppressions de segments de mémoire partagée UNIX). Ces fonctions ne fonctionnent pas sous Windows, car ce système d'exploitation ne supporte pas la mémoire partagée. Toutefois, depuis Windows 2000, en activant la librairie php_shmop.dll dans votre fichier php.ini vous activerez aussi cette fonctionnalité.

Note : En PHP 4.0.3, ces fonctions étaient préfixées avec shm au lieu de shmop.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Pour utiliser les fonctions shmop, compilez PHP avec l'option --enable-shmop.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Exemple 1. Introduction à la mémoire partagée

<?php

// Cr&eacute;e 100 octets de m&eacute;moire partag&eacute;e avec
// un identifiant syst&egrave;me "0xff3"
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if(!$shm_id) {
    echo "Impossible de cr&eacute;er la m&eacute;moire partag&eacute;e\n";
}

// Lire la taille de la m&eacute;moire partag&eacute;e
$shm_size = shmop_size($shm_id);
echo "Un bloc de SHM de taille ".$shm_size. " a &eacute;t&eacute; cr&eacute;&eacute;.\n";

// Ecriture d'une cha&icirc;ne de test dans ce segment
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if($shm_bytes_written != strlen("Mon bloc de m&eacute;moire partag&eacute;e")) {
    echo "Impossible d'&eacute;crire toutes les donn&eacute;es en m&eacute;moire\n";
}

// Lecture du segment
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!$my_string) {
    echo "Impossible de lire toutes les donn&eacute;es en m&eacute;moire\n";
}
echo "Les donn&eacute;es mis en m&eacute;moire partag&eacute;es sont : ".$my_string."\n";

//Maintenant, effacons le bloc, et fermons le segment de m&eacute;moire
if(!shmop_delete($shm_id)) {
    echo "Impossible d'effacer le segment de m&eacute;moire";
}
shmop_close($shm_id);

?>

Table des matières
shmop_close -- Ferme un bloc de mémoire partagée
shmop_delete -- Détruit un bloc de mémoire partagée
shmop_open -- Crée ou ouvre un bloc de mémoire partagée
shmop_read -- Lit un bloc
shmop_size -- Lire la taille du bloc de mémoire partagée
shmop_write -- Ecrire dans un bloc de mémoire partagée

Précédent | Sommaire | Suivant
session_write_close | Niveau supérieur | shmop_close


shmop_close

(PHP 4 >= 4.0.4)

shmop_close -- Ferme un bloc de mémoire partagée

Description

int shmop_close ( int shmid)

shmop_close() sert à fermer un bloc de mémoire partagée.

shmop_close() prend un identifiant de mémoire partagée, shmid, créé par shmop_open().

Exemple 1. Fermeture d'un bloc de mémoire partagée

<?php
  shmop_close($shm_id);
?>

Cet exemple ferme le bloc de mémoire partagée identifié par $shm_id.

Précédent | Sommaire | Suivant
Mémoire partagée | Niveau supérieur | shmop_delete


shmop_delete

(PHP 4 >= 4.0.4)

shmop_delete -- Détruit un bloc de mémoire partagée

Description

int shmop_delete ( int shmid)

shmop_delete() sert à détruire un bloc de mémoire partagée.

shmop_delete() prend un identifiant de mémoire partagée shmid, créé par shmop_open(). En cas de succès, la fonction retourne 1, et sinon, 0.

Exemple 1. Effacement d'un bloc de mémoire partagée

<?php
  shmop_delete($shm_id);
?>

Ce exemple efface le bloc de mémoire partagée identifié par $shm_id.

Précédent | Sommaire | Suivant
shmop_close | Niveau supérieur | shmop_open


shmop_open

(PHP 4 >= 4.0.4)

shmop_open -- Crée ou ouvre un bloc de mémoire partagée

Description

int shmop_open ( int key, string flags, int mode, int size)

shmop_open() peut créer ou ouvrir un bloc de mémoire partagée.

shmop_open() prend 4 paramètres: la clé, qui sera l'identifiant système pour le bloc. Ce paramètre peut être passé comme un décimal ou un hexadécimal. Le deuxième paramètre est un groupe d'options :

  • "a" pour accès (utilise IPC_EXCL) utilisez cette option pour ouvrir un bloc déjà existant.

  • "c" pour création (utilise IPC_CREATE) utilisez cette option pour créer un nouveau bloc.

  • "w" pour accès en lecture et écriture. Utilisez cette option lorsque vous devez accéder en lecture et écriture à un segment de mémoire partagée. C'est le cas le plus courant.

  • "n" crée un nouveau segment de mémoire partagée (utilise IPC_CREATE|IPC_EXCL). Utilisez cette option lorsque vous voulez créer un nouveau segment de mémoire partagée sauf s'il en existe déjà un avec la même option. Ceci est très pratique pour des raisons de sécurité, pour éviter des trous de sécurité qui exploiteraient la course aux ressources.

Le troisième paramètre est le mode, c'est à dire les permissions que vous donnez à ce bloc. Ce sont les mêmes que pour les fichiers. Ces permissions doivent être passées sous forme d'octal (i.e. 0644). Le dernier paramètre est la taille du bloc de mémoire, en octets.

Note : Les troisième et quatrième paramètres doivent être passés à 0 si vous voulez ouvrir un bloc de mémoire partagée déjà existant. En cas de succès shmop_open() retourne un identifiant que vous pouvez utiliser pour accéder à la mémoire que vous venez de créer.

Exemple 1. Créer un nouveau bloc de mémoire partagée Shmop

<?php
  $shm_id = shmop_open(0x0fff, "c", 0644, 100);
?>

Cet exemple ouvre un nouveau bloc de mémoire partagée, dont l'identifiant est 0x0fff.

Précédent | Sommaire | Suivant
shmop_delete | Niveau supérieur | shmop_read


shmop_read

(PHP 4 >= 4.0.4)

shmop_read -- Lit un bloc

Description

string shmop_read ( int shmid, int start, int count)

shmop_read() lit une chaîne dans une bloc de mémoire partagée.

shmop_read() prend 3 paramètres: shmid, qui est un identifiant de mémoire partagée, créé par shmop_open(), start qui est la position à partir de laquelle on commence à lire dans la mémoire et count, le nombre d'octets à lire.

Exemple 1. Lire un bloc de mémoire partagée

<?php
  $shm_data = shmop_read($shm_id, 0, 50);
?>

Cet exemple lit 50 octets dans le bloc de mémoire partagée $shm_data.

Précédent | Sommaire | Suivant
shmop_open | Niveau supérieur | shmop_size


shmop_size

(PHP 4 >= 4.0.4)

shmop_size -- Lire la taille du bloc de mémoire partagée

Description

int shmop_size ( int shmid)

shmop_size() sert à connaître la taille, en octets, d'un bloc de mémoire partagée.

shmop_size() prend comme argument shmid, un identifiant de bloc de mémoire partagée créé par shmop_open(), et retourne un entier, qui représente le taille de ce bloc.

Exemple 1. Lire la taille d'un bloc de mémoire partagée

<?php
  $shm_size = shmop_size($shm_id);
?>

Cet exemple lit la taille du bloc identifié par $shm_id, et le place dans $shm_size.

Précédent | Sommaire | Suivant
shmop_read | Niveau supérieur | shmop_write


shmop_write

(PHP 4 >= 4.0.4)

shmop_write -- Ecrire dans un bloc de mémoire partagée

Description

int shmop_write ( int shmid, string data, int offset)

shmop_write() écrit une chaîne dans un bloc de mémoire partagée.

shmop_write() prend 3 paramètres: shmid, qui est un identifiant de mémoire partagée, créé par shmop_open(), data qui est la chaîne à écrire dans la mémoire et offset, la position à partir de laquelle il faut commencer à écrire.

Exemple 1. Ecrire un bloc de mémoire partagée

<?php
  $shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>

Cet exemple écrit les données de la chaîne $my_string dans un bloc de mémoire partagée. $shm_bytes_written représentera le nombre d'octets écrits.

Précédent | Sommaire | Suivant
shmop_size | Niveau supérieur | SQLite


SQLite

Manuel PHP
Précédent Suivant

XCVII. SQLite

Introduction

Cette extension fait l'interface avec le moteur de base SQLite Embeddable SQL Database Engine. SQLite est une librairie C qui implémente un moteur de base de données SQL embarqué. Les programmes qui utilisent SQLite peuvent disposer d'un accès à une base de données SQL, sans avoir à faire tourner d'autre processus serveur.

SQLite n'est pas un logiciel client pour se connecter à un grand nom des bases de données. SQLite est le serveur. La librairie SQLite lit et écrit directement dans les fichiers de bases de données sur le disque.

Note : Pour plus d'informations sur SQLite, voyez le site web http://sqlite.org/.

Installation

Lisez le fichier d'installation, qui est fourni avec la distribution. Ou bien, utilisez simplement l'installeur PEAR : pear install sqlite. SQLite est déjà fourni avec PHP et vous n'avez pas besoin de télécharger d'autres logiciels.

Les utilisateurs Windows peuvent télécharger la version DLL de l'extension SQLite ici : php_sqlite.dll.

Contacts

Toutes les questions concernant cette extension doivent être envoyées aux listes de diffusion PHP, en anglais.

Pré-requis

Afin de faire disposer de ces fonctions, vous devez compiler PHP avec le support SQLite, ou charger dynamiquement l'extension SQLite depuis votre fichier php.ini.

Types de ressources

Il y a deux ressources, utilisées par l'extension SQLite. La première est une connexion à la base et la seconde est un résultat de requête.

Constantes prédéfinies

Les fonctions sqlite_fetch_array() et sqlite_current() utilisent des constantes pour spécifier les différents types de résultats. Les contantes sont les suivantes :

Tableau 1. Constantes SQLite

Constante | Signification
SQLITE_ASSOC | Les colonnes sont retournées dans le tableau, en utilisant le nom de la colonne comme nom d'index.
SQLITE_BOTH | Les colonnes sont retournées dans le tableau, en utilisant simultanément le nom de la colonne comme nom d'index et un index numérique.
SQLITE_NUM | Les colonnes sont retournées dans le tableau, en utilisant une indexation numérique. L'index commence à 0, pour identifier le premier champ.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 2. Options de configuration SQLite

Nom | Par défaut | Modifiable
sqlite.assoc_case | 0 | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

sqlite.assoc_case int

Utilise des index à casse libre (0), majuscule (1) ou minuscule (2).

Cette option sert principalement lorsque vous avez besoin de la compatibilité avec d'autres systèmes de bases de données, où les noms des colonnes sont toujours retournés en majuscule ou en minuscule, indépendamment de la casse réelle de la colonne dans la base.

La librairie SQLite retourne le nom de la colonne sans y toucher (c'est la casse qui sera utilisée dans votre base). Lorsque sqlite.assoc_case vaut 0 cette casse sera conservée. Lorsque cette option vaut 1 ou 2, PHP va modifier la casse des noms, et mettre le nom de la colonne en majuscules ou minuscules, respectivement.

Utiliser cette option implique une légère perte de performances, mais c'est BEAUCOUP plus rapide que de faire la gestion des caractères vous-même.

Table des matières
sqlite_array_query -- Exécute une requête SQL avec SQLite et retourne un tableau
sqlite_busy_timeout -- Configure le délai d'attente d'une base SQLite occupée
sqlite_changes -- Retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite
sqlite_close -- Ferme la connexion à SQLite
sqlite_column -- Lit la valeur d'une colonne dans un résultat SQLite
sqlite_create_aggregate -- Enregistre une UDF agregeante pour les requêtes SQLite
sqlite_create_function -- Enregistre une fonction utilisateur "classique" UDF pour SQLite
sqlite_current -- Lit une ligne de résultat SQLite dans un tableau
sqlite_error_string -- Retourne le message d'erreur SQLite
sqlite_escape_string -- Protège une chaîne de caractères pour utilisation avec SQLite
sqlite_fetch_array -- Lit la prochaine ligne de résultat SQLite dans un tableau
sqlite_fetch_single -- Lit la première ligne d'un résultat SQLite sous forme de chaîne
sqlite_fetch_string -- Alias de sqlite_fetch_single()
sqlite_field_name -- Retourne le nom du champ SQLite
sqlite_has_more -- Indique si il reste des lignes SQLite à lire
sqlite_last_error -- Retourne le dernier code d'erreur SQLite
sqlite_last_insert_rowid -- Retourne le numéro de ligne de la dernière ligne insérée
sqlite_libencoding -- Retourne l'encodage utilisé par la librairie SQLite
sqlite_libversion -- Retourne la version de la librairie SQLite
sqlite_next -- Déplace le pointeur SQLite vers la prochaine ligne
sqlite_num_fields -- Retourne le nombre de champs dans un résultat SQLite
sqlite_num_rows -- Retourne le nombre de lignes d'un résultat SQLite
sqlite_open -- Ouvre une base SQLite
sqlite_popen -- Ouvre une connexion SQlite persistante
sqlite_query -- Exécute une requête SQLite et lit le résultat
sqlite_rewind -- Place le pointeur de résultat SQLite au début
sqlite_seek -- Déplace le pointeur de résultat SQLite vers une ligne
sqlite_udf_decode_binary -- Décode des données binaires, passées à une UDF SQLite
sqlite_udf_encode_binary -- Encode les données binaires avant de les retourner d'une UDF SQLite
sqlite_unbuffered_query -- Exécute une requête SQLite non bufferisée

Précédent | Sommaire | Suivant
shmop_write | Niveau supérieur | sqlite_array_query


sqlite_array_query

(no version information, might be only in CVS)

sqlite_array_query -- Exécute une requête SQL avec SQLite et retourne un tableau

Description

array sqlite_array_query ( resource dbhandle, string query [, int result_type [, bool decode_binary]])

sqlite_array_query() est similaire à
sqlite_query() suivi de
sqlite_fetch_array() pour chaque ligne de résultat,
et en les plaçant dans un tableau. Appeler sqlite_array_query()
est plus rapide que de programmer cette séquence dans un script PHP.

Exemple 1. sqlite_array_query() traditionnel

<?php
  $q = sqlite_query($database, "SELECT * from foo LIMIT 100");
  $rows = array();
  while ($r = sqlite_fetch_array($q)) {
   $rows[] = $r;
  }
?>

Tuyau : sqlite_array_query() est bien adapté pour des requêtes qui retournent jusqu'à 45 lignes. Si vous avez plus de données, il est recommandé d'utiliser sqlite_unbuffered_query() pour optimiser les performances.

Voir aussi
sqlite_query(),
sqlite_fetch_array() et
sqlite_fetch_string().

Précédent | Sommaire | Suivant
SQLite | Niveau supérieur | sqlite_busy_timeout


sqlite_busy_timeout

(no version information, might be only in CVS)

sqlite_busy_timeout -- Configure le délai d'attente d'une base SQLite occupée

Description

void sqlite_busy_timeout ( resource dbhandle, int milliseconds)

sqlite_busy_timeout() spécifie la durée maximale d'attente de SQLite, pour qu'une base de données database soit utilisable. La durée est exprimée en millisecondes. Si milliseconds vaut 0, les contraintes d'attentes seront supprimées, et SQLite va retourne immédiatement le code de statut SQLITE_BUSY, si un autre processus ou thread a verrouillé la base.

PHP utilise une durée maximale d'attente de 60 secondes lorsque la base est ouverte.

Note : Il y a mille (1000) millisecondes dans une seconde.

Voir aussi sqlite_open().

Précédent | Sommaire | Suivant
sqlite_array_query | Niveau supérieur | sqlite_changes


sqlite_changes

(no version information, might be only in CVS)

sqlite_changes -- Retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite

Description

int sqlite_changes ( resource dbhandle)

sqlite_changes() retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite, exécutée dans la base db.

Voir aussi sqlite_num_rows().

Précédent | Sommaire | Suivant
sqlite_busy_timeout | Niveau supérieur | sqlite_close


sqlite_close

(no version information, might be only in CVS)

sqlite_close -- Ferme la connexion à SQLite

Description

void sqlite_close ( resource dbhandle)

sqlite_close() referme la connexion à la base SQLite, identifiée par la ressource dbhandle. Si la connexion à la base était persistante, elle sera fermée et supprimée de la liste des connexions persistantes.

Voir aussi sqlite_open() et sqlite_popen().

Précédent | Sommaire | Suivant
sqlite_changes | Niveau supérieur | sqlite_column


sqlite_column

(no version information, might be only in CVS)

sqlite_column -- Lit la valeur d'une colonne dans un résultat SQLite

Description

mixed sqlite_column ( resource result, mixed index_or_name [, bool decode_binary])

sqlite_column() lit la valeur de la colonne nommée index_or_name (si c'est une chaîne), ou d'index index_or_name (si c'est un entier), dans le résultat SQLite result. Le paramètre decode_binary fonctionne de la même façon que pour sqlite_fetch_array().

Utilisez cette fonction lorsque vous manipulez un grand résultat avec de nombreuses colonnes, ou des colonnes qui contiennent de grandes quantités de données.

Voir aussi sqlite_fetch_string().

Précédent | Sommaire | Suivant
sqlite_close | Niveau supérieur | sqlite_create_aggregate


sqlite_create_aggregate

(no version information, might be only in CVS)

sqlite_create_aggregate -- Enregistre une UDF agregeante pour les requêtes SQLite

Description

bool sqlite_create_aggregate ( resource dbhandle, string function_name, mixed step_func, mixed finalize_func [, int num_args])

sqlite_create_aggregate() est similaire à sqlite_create_function(), car elle enregistre une fonction qui sera utilisée pour calculer un résultat agrégé sur plusieurs lignes d'une requête.

La différence principale entre cette fonction et sqlite_create_function() est que deux fonctions sont nécessaires pour gérer les agrégations : step_func est appelée pour chaque ligne du résultat. Votre fonction PHP doit accumuler le résultat, et le stocker dans le contexte d'agrégation. Une fois que toutes les lignes ont été appelées, finalize_func sera appelée, et elle doit alors lire les données dans ce contexte d'agrégation, et en retourner le résultat.

Exemple 1. Exemple d'UDF SQLite : taille maximale de chaîne

<?php
$data = array(
   'one',
   'two',
   'three',
   'four'
   'five'
   'six',
   'seven',
   'eight',
   'nine'
   'ten'
   );
$db = sqlite_open(':memory:');
sqlite_query($db, "CREATE TABLE strings(a)");
foreach ($data as $str) {
  sqlite_query($db, "INSERT INTO strings VALUES('" .
    sqlite_escape_string($str) . "')");
}

function max_len_step(&$context, $string) {
  if (strlen($string) > $context) {
    $context = strlen($string);
  }
}

function max_len_finalize(&$context) {
  return $context;
}

sqlite_create_aggregate($db, 'max_len', 'max_len_step', 'max_len_finalize');

var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));

?>

Dans cet exemple, nous créons une fonction d'agrégation qui va calculer la taille de la plus longue chaîne dans l'une des colonnes de la table. Pour chaque ligne, la fonction max_len_step est appelée, et reçoit le paramètre context. Le contexte est une autre variable PHP, et il peut contenir un tableau ou même un objet. Dans notre exemple, nous l'utilisons pour stocker la taille maximale de la colonne courante. Si string est plus grand que la valeur maximale que nous avons enregistré, nous modifions notre contexte en conséquence.

Une fois que toutes les lignes ont été traitées, SQLite appelle la fonction max_len_finalize pour déterminer le résultat de l'agrégation. Nous pourrions alors effectuer plusieurs calculs en fonction des données que nous avons récolté dans context. Dans notre exemple simple, nous avons calculé le résultat au fur et à mesure de la progression de la requête, ce qui nous permet de n'avoir qu'à retourner la valeur de notre contexte.

Note : L'exemple ci-dessus ne fonctionnera pas correctement si une colonne contient une donnée binaire. Reportez-vous à la fonction sqlite_udf_decode_binary() pour plus de détails, et d'un exemple pour travailler avec des chaînes binaires.

Tuyau : Il n'est pas recommandé de stocker une copie des valeurs dans le contexte, puis de les traiter à la fin, car cela conduirait SQLite à consommer beaucoup de mémoire : imaginez simplement la quantité de mémoire que prendrons vos millions de lignes de 32 caractères en fin de requête.

Tuyau : Vous pouvez utiliser sqlite_create_function() et sqlite_create_aggregate() pour remplacer des fonctions natives SQLite.

Voir aussi
sqlite_create_function(),
sqlite_udf_encode_binary() et
sqlite_udf_decode_binary().

Précédent | Sommaire | Suivant
sqlite_column | Niveau supérieur | sqlite_create_function


sqlite_create_function

(no version information, might be only in CVS)

sqlite_create_function -- Enregistre une fonction utilisateur "classique" UDF pour SQLite

Description

bool sqlite_create_function ( resource dbhandle, string function_name, mixed callback [, int num_args])

sqlite_create_function() vous permet d'enregistrer une fonction PHP dans SQLite comme UDF (Fonction Définie par l'Utilisateur, User Defined Function), pour qu'elle soit accessible depuis les requêtes SQL.

db spécifie une ressource de base de données SQLite, que vous souhaitez améliorer. function_name spécifie le nom de la fonction que vous utiliserez dans les requêtes SQL. callback peut être n'importe quelle fonction de callback PHP. Le paramètre optionnel num_args est utilisé par l'analyseur d'expressions SQLite. Il est recommandé que vous fournissiez une valeur si votre fonction n'accepte qu'un nombre fixe d'arguments.

Les UDF peuvent être utilisées dans n'importe quelle requête SQL qui peut appeler des fonctions, telles que SELECT et UPDATE, ou même des triggers.

Exemple 1. Exemple avec sqlite_create_function()

<?php
function md5_and_reverse($string) {
    return strrev(md5($string));
}

sqlite_create_function($db, 'md5rev', 'md5_and_reverse', 1);

$rows = sqlite_array_query($db, 'SELECT md5rev(filename) from files');
?>

Dans cet exemple, nous avons une fonction qui calcule la somme de contrôle MD5 d'une chaîne, et l'inverse. Lorsque la requête SQL s'exécute, elle retourne le nom du fichier, transformé par cette opération. Les données retournées dans $rows contient le résultat.

La beauté de cette technique est que vous n'avez pas à traiter vous même les données avec une boucle, une fois que vous avez lu les données.

PHP enregistre une fonction spéciale appelée php lorsque la base est ouverte. Cette fonction est utilisée pour appeler toute fonction PHP sans avoir à l'enregistrer au préalable.

Exemple 2. Exemple d'utilisation d'une fonction PHP dans SQLite

<?php
  $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files");
?>

Cet exemple va appeler la fonction md5() sur chaque colonne filename dans la base, et retourner le contenu dans le tableau $rows.

Note : Pour des raisons de performances, PHP ne va pas automatiquement coder ou décoder les données binaires passées à votre UDF. Vous devez le faire manuellement. Voyez les fonctions sqlite_udf_encode_binary() et sqlite_udf_decode_binary() pour plus de détails.

Tuyau : Il n'est pas recommandé d'utiliser des UDF pour traiter des données binaires, à moins que les performances ne soient pas un problème pour votre application.

Tuyau : Vous pouvez utiliser sqlite_create_function() et sqlite_create_aggregate() pour remplacer des fonctions natives SQLite.

Voir aussi sqlite_create_aggregate().

Précédent | Sommaire | Suivant
sqlite_create_aggregate | Niveau supérieur | sqlite_current


sqlite_current

(no version information, might be only in CVS)

sqlite_current -- Lit une ligne de résultat SQLite dans un tableau

Description

array sqlite_current ( resource result [, int result_type [, bool decode_binary]])

sqlite_current() est identique à sqlite_fetch_array() hormis le fait qu'elle ne fait pas progresser le pointeur de résultat, avant de lire des données. Elle ne fait que retourner les données qui sont disponibles à la position courante.

Si la position courante est au-delà de la dernière ligne, cette fonction retourne FALSE

Note : Cette fonction ne fonctionnera pas sur des résultats non bufferisés.

Voir aussi
sqlite_fetch_array(),
sqlite_seek() et
sqlite_next().

Précédent | Sommaire | Suivant
sqlite_create_function | Niveau supérieur | sqlite_error_string


sqlite_error_string

(no version information, might be only in CVS)

sqlite_error_string -- Retourne le message d'erreur SQLite

Description

string sqlite_error_string ( int error_code)

sqlite_error_string() retourne un message d'erreur lisible, pour le numéro d'erreur error_code, retourné par sqlite_last_error().

Voir aussi sqlite_last_error().

Précédent | Sommaire | Suivant
sqlite_current | Niveau supérieur | sqlite_escape_string


sqlite_escape_string

(no version information, might be only in CVS)

sqlite_escape_string -- Protège une chaîne de caractères pour utilisation avec SQLite

Description

string sqlite_escape_string ( string item)

sqlite_escape_string() va ajouter des guillemets dans la chaîne item, pour qu'elle puisse être utilisée correctement dans une requête SQL. Cela inclut notamment le doublement des guillemets simples ('), et la vérification des caractères binaires non sécuritaires, de la chaîne de requête.

Si item contient le caractère NUL et qu'il commence avec un caractère dont la valeur ordinale est 0x01, PHP va appliquer un schéma de codage, pour que vous puissiez stocker puis relire correctement ces données.

Bien que ce codage sécurise l'insertion des données, il va rendre la recherche de texte par simple comparaison, ou en utilisant la clause LIKE, inutilisable dans vos requêtes pour les colonnes qui contiennent ces données binaires. En pratique, cela ne devrait pas être un problème, car votre utilisation de la base devrait faire que vous n'utiliserez pas ces colonnes (en fait, il est mieux de stocker des données binaires dans d'autres systèmes, comme des fichiers).

Avertissement

addslashes() NE doit PAS être utilisée pour protéger vos requêtes dans SQLite. Cela va conduire à d'étranges résultats lors de la lecture de vos données.

Note : N'utilisez pas cette fonction pour coder les valeurs retournées par des fonctions utilisateurs, créées avec les fonctions sqlite_create_function() ou sqlite_create_aggregate() : utilisez plutôt sqlite_udf_encode_binary().

Voir aussi sqlite_udf_encode_binary().

Précédent | Sommaire | Suivant
sqlite_error_string | Niveau supérieur | sqlite_fetch_array


sqlite_fetch_array

(no version information, might be only in CVS)

sqlite_fetch_array -- Lit la prochaine ligne de résultat SQLite dans un tableau

Description

array sqlite_fetch_array ( resource result [, int result_type [, bool decode_binary]])

sqlite_fetch_array() lit la prochaine ligne dans le résultat result. Si il n'y a pas d'autres lignes, sqlite_fetch_array() retourne FALSE, et sinon, elle retourne un tableau représentant les données lues.

result_type peut être utilisé pour spécifier le type de résultat. La valeur par défaut est SQLITE_BOTH, dans lequel les colonnes sont indexées avec leur nom de colonne et leur index dans le résultat. SQLITE_ASSOC fait que le tableau sera indexé uniquement avec les noms de colonnes, et SQLITE_NUM sera indexé uniquement avec les index numériques.

Les noms de colonnes retournés avec les options SQLITE_ASSOC et SQLITE_BOTH seront adaptés en fonction de l'option de configuration sqlite.assoc_case.

Lorsque decode_binary vaut TRUE (par défaut), PHP va décoder les données binaires, si elles ont été codées avec la fonction sqlite_escape_string(). Vous allez généralement laisser cette valeur à sa valeur par défaut, à moins que vous ne travaillez avec des bases opérées par d'autres applications.

Voir aussi sqlite_array_query() et sqlite_fetch_string().

Précédent | Sommaire | Suivant
sqlite_escape_string | Niveau supérieur | sqlite_fetch_single


sqlite_fetch_single

(no version information, might be only in CVS)

sqlite_fetch_single -- Lit la première ligne d'un résultat SQLite sous forme de chaîne

Description

string sqlite_fetch_single ( resource result [, int result_type [, bool decode_binary]])

sqlite_fetch_single() est identique à sqlite_fetch_array() hormis le fait qu'elle retourne uniquement la valeur de la la première colonne du résultat.

C'est la méthode optimale pour lire des données, si vous n'êtes interessé que par les valeurs de la la première colonne.

Exemple 1. Exemple avec sqlite_fetch_single()

<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

    $res = sqlite_query($db, "SELECT id FROM sometable WHERE id = 42");

    if (sqlite_num_rows($res) > 0) {
        echo sqlite_fetch_single($res); // 42
    }

    sqlite_close($db);
}
?>

Voir aussi sqlite_fetch_array().

Précédent | Sommaire | Suivant
sqlite_fetch_array | Niveau supérieur | sqlite_fetch_string


sqlite_fetch_string

sqlite_fetch_string -- Alias de sqlite_fetch_single()

Description

Cette fonction est un alias de sqlite_fetch_single().

Précédent | Sommaire | Suivant
sqlite_fetch_single | Niveau supérieur | sqlite_field_name


sqlite_field_name

(no version information, might be only in CVS)

sqlite_field_name -- Retourne le nom du champ SQLite

Description

string sqlite_field_name ( resource result, int field_index)

sqlite_field_name() retourne le nom du champ identifié par son index numérique field_index, dans le résultat result.

Précédent | Sommaire | Suivant
sqlite_fetch_string | Niveau supérieur | sqlite_has_more


sqlite_has_more

(no version information, might be only in CVS)

sqlite_has_more -- Indique si il reste des lignes SQLite à lire

Description

bool sqlite_has_more ( resource result)

sqlite_has_more() retourne TRUE si il y a d'autres lignes de résultat à lire dans la ressource result et FALSE sinon.

Voir aussi sqlite_num_rows() et sqlite_changes().

Précédent | Sommaire | Suivant
sqlite_field_name | Niveau supérieur | sqlite_last_error


sqlite_last_error

(no version information, might be only in CVS)

sqlite_last_error -- Retourne le dernier code d'erreur SQLite

Description

int sqlite_last_error ( resource dbhandle)

sqlite_last_error() retourne le code d'erreur de la dernière opération SQL effectuée sur la base dbhandle.

Voir aussi sqlite_error_string().

Précédent | Sommaire | Suivant
sqlite_has_more | Niveau supérieur | sqlite_last_insert_rowid


sqlite_last_insert_rowid

(no version information, might be only in CVS)

sqlite_last_insert_rowid -- Retourne le numéro de ligne de la dernière ligne insérée

Description

int sqlite_last_insert_rowid ( resource dbhandle)

sqlite_last_insert_rowid() retourne le numéro de ligne inséré dans la base dbhandle, si elle a été créée avec un champ auto-incrémenté.

Tuyau : Vous pouvez créer des champs auto-incrémenté en SQLite, en utilisant l'attribut INTEGER PRIMARY KEY dans vos tables.

Précédent | Sommaire | Suivant
sqlite_last_error | Niveau supérieur | sqlite_libencoding


sqlite_libencoding

(no version information, might be only in CVS)

sqlite_libencoding -- Retourne l'encodage utilisé par la librairie SQLite

Description

string sqlite_libencoding ( void )

La libraire SQLite peut être compilée avec le support de ISO-8859-1 ou UTF-8. sqlite_libencoding() vous permet de savoir quel encodage est utilisé.

Avertissement

La distribution par défaut de PHP compile libsqlite avec l'encodage ISO-8859-1. Cependant, c'est un leurre. Au lieu d'utiliser ISO-8859-1, elle va utiliser votre configuration locale pour les comparaisons et les tris. Il vaut donc mieux penser que ce n'est pas ISO-8859-1, mais plutôt '8-bit'.

Lorsqu'elle est compilée avec le support UTF-8, SQLite gère le codage et l'encodage des séquences multi-octets UTF-8, mais ne fait pas totalement le travail lorsqu'elle opère avec les données (aucune normalisation n'est faite, par exemple), et certaines comparaisons peuvent être erronées.

Avertissement

Il n'est pas recommandé d'utiliser PHP en configuration de serveur web avec une version de SQLite qui utilise l'encodage UTF-8, car libsqlite va interrompre le processus si elle détecte un problème avec l'encodage UTF-8.

Voir aussi sqlite_libversion().

Précédent | Sommaire | Suivant
sqlite_last_insert_rowid | Niveau supérieur | sqlite_libversion


sqlite_libversion

(no version information, might be only in CVS)

sqlite_libversion -- Retourne la version de la librairie SQLite

Description

string sqlite_libversion ( void )

sqlite_libversion() retourne la version de la librairie SQLite, sous la forme d'une chaîne.

Voir aussi sqlite_libencoding().

Précédent | Sommaire | Suivant
sqlite_libencoding | Niveau supérieur | sqlite_next


sqlite_next

(no version information, might be only in CVS)

sqlite_next -- Déplace le pointeur SQLite vers la prochaine ligne

Description

bool sqlite_next ( resource result)

sqlite_next() avance le pointeur de résultat à la prochaine ligne du résultat result. sqlite_next() retourne FALSE si il n'y a plus de lignes, et TRUE sinon.

Note : Cette fonction ne peut utiliser de résultats non bufferisés.

Voir aussi
sqlite_seek(),
sqlite_current() et
sqlite_rewind().

Précédent | Sommaire | Suivant
sqlite_libversion | Niveau supérieur | sqlite_num_fields


sqlite_num_fields

(no version information, might be only in CVS)

sqlite_num_fields -- Retourne le nombre de champs dans un résultat SQLite

Description

int sqlite_num_fields ( resource result)

sqlite_num_fields() retourne le nombre de champs dans le résultat SQLite result.

Voir aussi sqlite_column() et sqlite_num_rows().

Précédent | Sommaire | Suivant
sqlite_next | Niveau supérieur | sqlite_num_rows


sqlite_num_rows

(no version information, might be only in CVS)

sqlite_num_rows -- Retourne le nombre de lignes d'un résultat SQLite

Description

int sqlite_num_rows ( resource result)

sqlite_num_rows() retourne le nombre de lignes dans le résultat SQLite result.

Note : Cette fonction ne fonctionne pas avec les résultats non bufferisés.

Voir aussi sqlite_changes() et sqlite_query().

Précédent | Sommaire | Suivant
sqlite_num_fields | Niveau supérieur | sqlite_open


sqlite_open

(no version information, might be only in CVS)

sqlite_open -- Ouvre une base SQLite

Description

resource sqlite_open ( string filename [, int mode [, string &error_message]])

sqlite_open() retourne une ressource de connexion SQLite, ou FALSE en cas d'erreur.

Le paramètre filename est le nom de la base. Cela peut être un nom relatif ou absolu, que SQLite va utiliser pour stocker vos données. Si le fichier n'existe pas, SQLite va tenter de le créer. Vous DEVEZ avoir les droits d'ecriture si vous voulez faire des insertions de données, ou modifier votre schéma de base.

Le paramètre mode spécifie le mode d'ouverture du fichier, et il permet notamment d'ouvrir la base en mode lecture seule. Actuellement, ce paramètre est ignoré par la librairie SQLite. La valeur par défaut pour ce paramètre est la valeur octale 0666. C'est la valeur recommandée si vous avez besoin d'utiliser le paramètre errmessage.

errmessage est passé par référence, et il contient un message d'erreur descriptif, expliquant pourquoi la base n'a pu être ouverte.

Exemple 1. Exemple avec sqlite_open()

<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
  sqlite_query($db,'CREATE TABLE foo (bar varchar(10))');
  sqlite_query($db,"INSERT INTO foo VALUES ('fnord')");
  $result = sqlite_query($db,'select bar from foo');
  var_dump(sqlite_fetch_array($result));
} else {
  die ($sqliteerror);
}
?>

Tuyau : Sur les plates-formes Unix, SQLite est sensible aux scripts qui utilisent la fonction système fork(). Si vous avez un tel script, il est recommandé que vous refermiez la ressource avant de faire le fork, et de l'ouvrir à nouveau dans le processus fils. Pour plus d'informations sur ce problème, voyez The C language interface to the SQLite library dans la section intitulée Multi-Threading And SQLite (en anglais).

Tuyau : Il n'est pas recommandé d'utiliser des bases de données SQLite montées sur des partitions NFS. Comme NFS est très mauvais pour assurer le verrouillage des fichiers, vous pourriez ne pas ouvrir les bases, et si vous réussissez, le verrouillage de la base sera indéfini.

Note : Depuis SQLite version 2.8.2, vous pouvez spécifier :memory: comme valeur de filename pour créer une base qui sera installée en mémoire vive, sur le serveur. C'est très pratique pour des traitements temporaires, car la base en mémoire sera détruire dès que le script sera terminé. Cela peut aussi être utile, lorsqu'utilisé conjointement avec la commande SQL ATTACH DATABASE, pour charger d'autres bases, et faire des requêtes liées.

Note : SQLite prend en compte le safe mode et l'option open_basedir.

Voir aussi
sqlite_popen(),
sqlite_close() et
sqlite_query().

Précédent | Sommaire | Suivant
sqlite_num_rows | Niveau supérieur | sqlite_popen


sqlite_popen

(no version information, might be only in CVS)

sqlite_popen -- Ouvre une connexion SQlite persistante

Description

resource sqlite_popen ( string filename [, int mode [, string &error_message]])

sqlite_popen() fonctionne exactement comme sqlite_open(), hormis le fait qu'elle utilise le mécanisme de ressources persistantes de PHP. Pour des détails sur la signification des paramètres, voyez la fonction sqlite_open().

sqlite_popen() va d'abord vérifier qu'il reste une connexion persistante, déjà ouverte pour le fichier filename. Si elle peut en trouver une, elle l'utilisera, et sinon, elle ouvrira une nouvelle connexion.

L'intérêt de cette méthode est que vous évitez de relire la base, les schémas de tables et d'index, pour chaque page exécutée par un serveur web SAPI persistant (tous les SAPI, sauf les CGI et CLI).

Note : Si vous utilisez une connexion persistante et que la base de données est modifiée par un autre processus (via une table de cron, par exemple), et que le processus recrée la base en l'écrasant, soit par effacement et reconstruction, ou par déplacement d'une nouvelle version à la place de l'ancienne, vous pourriez obtenir des comportements inattendus lorsque vous utiliserez une vielle connexion persistante sur une nouvelle base.

Pour éviter cette situation, faîtes que vos processus parallèles ouvrent les bases et fassent leurs modifications dans une transaction.

Voir aussi
sqlite_open(),
sqlite_close() et
sqlite_query().

Précédent | Sommaire | Suivant
sqlite_open | Niveau supérieur | sqlite_query


sqlite_query

(no version information, might be only in CVS)

sqlite_query -- Exécute une requête SQLite et lit le résultat

Description

resource sqlite_query ( resource dbhandle, string query)

resource sqlite_query ( string query, resource dbhandle)

sqlite_query() exécute la requête SQL query dans la base SQLite db.

Pour les requêtes qui retournent des lignes, cette fonction va retourner une ressource que vous pourrez utiliser avec des fonctions telles que sqlite_fetch_array() et sqlite_seek().

Pour les autres types de requêtes, cette fonction va retourner un booléen, en guise de résultat. TRUE pour le succès, et FALSE pour l'échec.

Indépendamment du type, cette fonction retournera FALSE si la requête échoue.

sqlite_query() retourne une résultat bufferisé. C'est très pratique pour des résultats de petites tailles, où vous aurez besoin d'accéder aléatoirement aux lignes. Les résultats bufferisés allouent la mémoire nécessaire pour stocker tout le résultat, et ne se termineront qu'une fois toutes ces données lues. Si vous n'avez besoin que d'un accès séquentiel aux données, il est recommandé d'utiliser sqlite_unbuffered_query().

Note : Deux syntaxes alternatives sont supportées pour assurer la compatibilité avec les autres bases de données (telles que MySQL) : La forme recommandée est la première, où le paramètre db est le premier dans la fonction.

Avertissement

SQLite va exécuter les requêtes multiples, séparées par des points-virgules, ce qui vous permet d'exécuter plusieurs requêtes SQL en une seule fois.

Lorsque vous exécutez des requêtes multiples, la valeur retournée par cette fonction sera FALSE si une erreur s'est produite, mais indéfini dans les autres cas (cela peut être TRUE en cas de succès, ou bien elle peut retourner un résultat).

Voir aussi sqlite_unbuffered_query() et sqlite_array_query().

Précédent | Sommaire | Suivant
sqlite_popen | Niveau supérieur | sqlite_rewind


sqlite_rewind

(no version information, might be only in CVS)

sqlite_rewind -- Place le pointeur de résultat SQLite au début

Description

bool sqlite_rewind ( resource result)

sqlite_rewind() replace le pointeur à la première ligne du résultat result. sqlite_rewind() retourne FALSE si il n'y a plus de lignes dans le résultat, et TRUE sinon.

Note : Cette fonction ne fonctionne pas avec les résultats non bufferisés.

Voir aussi
sqlite_next(),
sqlite_current() et
sqlite_seek().

Précédent | Sommaire | Suivant
sqlite_query | Niveau supérieur | sqlite_seek


sqlite_seek

(no version information, might be only in CVS)

sqlite_seek -- Déplace le pointeur de résultat SQLite vers une ligne

Description

bool sqlite_seek ( resource result, int rownum)

sqlite_seek() déplace le pointeur de résultat à la rownum ème ligne. Le pointeur de lignes commence à 0. sqlite_seek() retourne FALSE si la ligne n'existe pas, et TRUE sinon.

Note : Cette fonction ne peut pas être utilisée avec les résultats non-bufferisés.

Voir aussi
sqlite_next(),
sqlite_current() et
sqlite_rewind().

Précédent | Sommaire | Suivant
sqlite_rewind | Niveau supérieur | sqlite_udf_decode_binary


sqlite_udf_decode_binary

(no version information, might be only in CVS)

sqlite_udf_decode_binary -- Décode des données binaires, passées à une UDF SQLite

Description

string sqlite_udf_decode_binary ( string data)

sqlite_udf_decode_binary() décode des données binaires, qui auraient été encodées avec sqlite_udf_encode_binary() ou sqlite_escape_string().

Vous devez appeler cette fonction sur les paramètres passés à votre UDF, si vous devez manipuler des données binaires, car le codage binaire de PHP va masquer le contenu original de la donnée.

PHP ne fait pas cette opération de codage/décodage automatiquement, car cela réduirait considérablement les performances.

Exemple 1. Exemple de fonction d'agrégation SQLite, compatible avec les données binaires

<?php
$data = array(
   'one',
   'two',
   'three',
   'four'
   'five'
   'six',
   'seven',
   'eight',
   'nine'
   'ten'
   );
$db = sqlite_open(':memory:');
sqlite_query($db, "CREATE TABLE strings(a)");
foreach ($data as $str) {
  sqlite_query($db, "INSERT INTO strings VALUES('" .
    sqlite_escape_string($str) . "')");
}

function max_len_step(&$context, $string) {
  $string = sqlite_udf_decode_binary($string);
  if (strlen($string) > $context) {
    $context = strlen($string);
  }
}

function max_len_finalize(&$context) {
  return $context;
}

sqlite_create_aggregate($db, 'max_len', 'max_len_step', 'max_len_finalize');

var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));

?>

Voir aussi
sqlite_udf_encode_binary(),
sqlite_create_function() et
sqlite_create_aggregate().

Précédent | Sommaire | Suivant
sqlite_seek | Niveau supérieur | sqlite_udf_encode_binary


sqlite_udf_encode_binary

(no version information, might be only in CVS)

sqlite_udf_encode_binary -- Encode les données binaires avant de les retourner d'une UDF SQLite

Description

string sqlite_udf_encode_binary ( string data)

sqlite_udf_encode_binary() applique le codage aux données binaires data pour qu'elles puissent être correctement retournées depuis la requête (car la librairie libsqlite n'est pas compatible avec les données binaires).

Si il y a des chances que vos données ne soient pas compatibles, (comme par exemple, si elle contient le caractère NUL au milieu de la chaîne, et non pas seulement à la fin, ou si le premier caractère est un caractère 0x01) alors vous devrez appeler cette fonction pour protéger vos données.

PHP ne fait pas cette opération de codage/décodage automatiquement, pour des raisons de performances.

Note : N'utilisez pas la fonction sqlite_escape_string() pour protéger les données dans vos UDF, car cela conduira à doubler la protection. Utilisez plutôt cette fonction à la place.

Voir aussi
sqlite_udf_decode_binary(),
sqlite_escape_string(),
sqlite_create_function() et
sqlite_create_aggregate().

Précédent | Sommaire | Suivant
sqlite_udf_decode_binary | Niveau supérieur | sqlite_unbuffered_query


sqlite_unbuffered_query

(no version information, might be only in CVS)

sqlite_unbuffered_query -- Exécute une requête SQLite non bufferisée

Description

resource sqlite_unbuffered_query ( resource dbhandle, string query)

resource sqlite_unbuffered_query ( string query, resource dbhandle)

sqlite_unbuffered_query() est identique à sqlite_query() hormis le fait que le résultat retourné est une séquence croissante, qui ne peut être lue que dans un seul sens.

Cette fonction est idéale pour générer des tables HTML, où vous n'avez besoin que d'une ligne en même temps, et que vous n'avez pas à faire d'accès aléatoire aux lignes.

Note : Les fonctions telles que sqlite_seek() et sqlite_rewind() ne fonctionnent pas avec les résultats non bufferisés de cette fonction.

Voir aussi sqlite_query().

Précédent | Sommaire | Suivant
sqlite_udf_encode_binary | Niveau supérieur | Shockwave Flash


Shockwave Flash

Manuel PHP
Précédent Suivant

XCVIII. Shockwave Flash

Introduction

PHP a la capacité de créer des animations Shockwave Flash grâce au module de Paul Haeberli : libswf module.

Note : Le support de SWF a été ajouté en PHP 4 RC2.

La librairie libswf ne propose pas de support pour Windows. Le développement de cette librairie a été stoppé, et la source n'est pas disponible pour assurer le portage vers les autres systèmes.

Pour une version plus à jour d'extension SWF, regardez donc les fonctions MING.

Pré-requis

Vous avez besoin de la librairie libswf pour compiler PHP avec le support de cette extension. Vous pouvez télécharger cette librairie ftp://ftp.sgi.com/sgi/graphics/grafica/flash/.

Installation

Une fois que vous avez libswf, tout ce qui reste à faire est de configurer PHP avec --with-swf[=DIR] où DIR est le dossier qui accueille les dossiers de include et lib. Le dossier include doit contenir le fichier swf.h file et le dossier lib doit contenir le fichier libswf.a. Si vous décompressez la distribution de libswf, les deux fichiers seront dans le même dossier. Par conséquent, vous devrez les mettre dans le dossier ad hoc manuellement.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

MOD_COLOR (entier)

MOD_MATRIX (entier)

TYPE_PUSHBUTTON (entier)

TYPE_MENUBUTTON (entier)

BSHitTest (float)

BSDown (nombre à virgule flottante)

BSOver (nombre à virgule flottante)

BSUp (nombre à virgule flottante)

OverDowntoIdle (entier)

IdletoOverDown (entier)

OutDowntoIdle (entier)

OutDowntoOverDown (entier)

OverDowntoOutDown (entier)

OverUptoOverDown (entier)

OverUptoIdle (entier)

IdletoOverUp (entier)

ButtonEnter (entier)

ButtonExit (entier)

MenuEnter (entier)

MenuExit (entier)

Exemples

Une fois que vous avez réussi à installer PHP avec Shockwave Flash, vous pouvez créer des animations Flash avec PHP. Vous serez surpris du résultat. Essayez donc ceci :

Exemple 1. Exemple SWF

<?php
  swf_openfile ("test.swf", 256, 256, 30, 1, 1, 1);
  swf_ortho2 (-100, 100, -100, 100);
  swf_defineline (1, -70, 0, 70, 0, .2);
  swf_definerect (4, 60, -10, 70, 0, 0);
  swf_definerect (5, -60, 0, -70, 10, 0);
  swf_addcolor (0, 0, 0, 0);

  swf_definefont (10, "Mod");
  swf_fontsize (5);
  swf_fontslant (10);
  swf_definetext (11, "This be Flash wit PHP!", 1);

  swf_pushmatrix ();
  swf_translate (-50, 80, 0);
  swf_placeobject (11, 60);
  swf_popmatrix ();

  for ($i = 0; $i < 30; $i++) {
    $p = $i/(30-1);
    swf_pushmatrix ();
    swf_scale (1-($p*.9), 1, 1);
    swf_rotate (60*$p,  'z');
    swf_translate (20+20*$p, $p/1.5, 0);
    swf_rotate (270*$p,  'z');
    swf_addcolor ($p, 0, $p/1.2, -$p);
    swf_placeobject (1, 50);
    swf_placeobject (4, 50);
    swf_placeobject (5, 50);
    swf_popmatrix ();
    swf_showframe ();
  }

  for ($i = 0; $i < 30; $i++) {
    swf_removeobject (50);
    if (($i%4) == 0) {
        swf_showframe ();
    }
  }

  swf_startdoaction ();
  swf_actionstop ();
  swf_enddoaction ();

  swf_closefile ();
?>

Table des matières
swf_actiongeturl -- Retourne l'URL d'une animation Shockwave Flash
swf_actiongotoframe -- Joue un frame puis stoppe
swf_actiongotolabel -- Affiche le frame nommé.
swf_actionnextframe -- Avance d'un frame
swf_actionplay -- Joue l'animation flash à partir du frame courant.
swf_actionprevframe -- Recule d'un frame
swf_actionsettarget -- Fixe le contexte des actions
swf_actionstop -- Arrête l'animation flash.
swf_actiontogglequality -- Choisit le niveau de qualité haut ou bas.
swf_actionwaitforframe -- Ignore les actions si le frame n'est pas chargé.
swf_addbuttonrecord -- Contrôle la situation, l'apparance et la zone active du bouton courant
swf_addcolor -- Fixe la couleur globale d'addition (? : the global add color).
swf_closefile -- Ferme le fichier courant Shockwave Flash
swf_definebitmap -- Définit une image bitmap
swf_definefont -- Définit une police.
swf_defineline -- Définit une ligne
swf_definepoly -- Définit un polygone.
swf_definerect -- Définit un rectangle
swf_definetext -- Définit une chaîne de texte
swf_endbutton -- Termine la définition du bouton courant.
swf_enddoaction -- Termine l'action courante
swf_endshape -- Complète la définition de la forme courante.
swf_endsymbol -- Termine la définition de symbole
swf_fontsize -- Change la taille de la police
swf_fontslant -- Change l'inclinaison de la police courante
swf_fonttracking -- Change l'espacement des caractères
swf_getbitmapinfo -- Lit les informations sur une image
swf_getfontinfo -- Retourne la hauteur du A majuscule, et du x minuscule.
swf_getframe -- Retourne le numéro de frame courant
swf_labelframe -- Nomme le frame courant
swf_lookat -- Définit une transformation de vue
swf_modifyobject -- Modifie un objet
swf_mulcolor -- Fixe la couleur globale de multiplication (? : the global multiply color).
swf_nextid -- Retourne le prochain identifiant d'objet libre
swf_oncondition -- Décrit une transition utilisée pour déclencher une liste d'actions.
swf_openfile -- Ouvre un nouveau fichier Shockwave Flash
swf_ortho2 -- Définit une projection orthogonale à 2 dimensions entre les coordonnées utilisateur et le port courant.
swf_ortho -- Définit une projection orthogonale entre les coordonnées utilisateur et le port courant.
swf_perspective -- Définit une projection orthogonale à 3 dimensions entre les coordonnées utilisateur et le port courant
swf_placeobject -- Place un objet sur la scène
swf_polarview -- Défini le point de vue de l'utilisateur en coordonnées polaire.
swf_popmatrix -- Dépile la matrice de transformation.
swf_posround -- Active l'approximation des translation d'objets.
swf_pushmatrix -- Empile la matrice de transformation courante dans la pile.
swf_removeobject -- Enlève un objet
swf_rotate -- Rotation de la transformation courante
swf_scale -- Homothétie
swf_setfont -- Change la police courante
swf_setframe -- Fixe le frame courant
swf_shapearc -- Dessine une arc de cercle
swf_shapecurveto3 -- Dessine une courbe Bézier cubique
swf_shapecurveto -- Dessine une courbe de Bézier quadratique entre deux points.
swf_shapefillbitmapclip -- Choisit le mode de remplissage par texture.
swf_shapefillbitmaptile -- Choisit le mode de remplissage par texture repétée.
swf_shapefilloff -- Désactive le remplissage.
swf_shapefillsolid -- Fixe la couleur pour le style courant de remplissage.
swf_shapelinesolid -- Fixe le style courant de ligne
swf_shapelineto -- Dessine une ligne
swf_shapemoveto -- Change la position courante
swf_showframe -- Affiche le frame courant
swf_startbutton -- Commence la définition d'un bouton
swf_startdoaction -- Commence la description d'une liste d'action pour la frame courante.
swf_startshape -- Commence une forme complexe
swf_startsymbol -- Définit un symbole
swf_textwidth -- Retourne la longueur d'une chaîne
swf_translate -- Translate la transformation courante
swf_viewport -- Sélectionne une nouvelle zone pour un dessin ultérieur.

Précédent | Sommaire | Suivant
sqlite_unbuffered_query | Niveau supérieur | swf_actiongeturl


swf_actiongeturl

(PHP 4 <= 4.3.2)

swf_actiongeturl -- Retourne l'URL d'une animation Shockwave Flash

Description

void swf_actiongeturl ( string url, string target)

swf_actiongeturl() lit l'URL url, avec la destination target.

Précédent | Sommaire | Suivant
Shockwave Flash | Niveau supérieur | swf_actiongotoframe


swf_actiongotoframe

(PHP 4 <= 4.3.2)

swf_actiongotoframe -- Joue un frame puis stoppe

Description

void swf_actiongotoframe ( int framenumber)

swf_actiongotoframe() se déplace jusqu'au frame framenumber, le joue, puis s'arrête.

Précédent | Sommaire | Suivant
swf_actiongeturl | Niveau supérieur | swf_actiongotolabel


swf_actiongotolabel

(PHP 4 <= 4.3.2)

swf_actiongotolabel -- Affiche le frame nommé.

Description

void swf_actiongotolabel ( string label)

swf_actiongotolabel() affiche le frame de nom label, puis stoppe.

Précédent | Sommaire | Suivant
swf_actiongotoframe | Niveau supérieur | swf_actionnextframe


swf_actionnextframe

(PHP 4 <= 4.3.2)

swf_actionnextframe -- Avance d'un frame

Description

void swf_actionnextframe ( void )

swf_actionnextframe() avance d'un frame le frame courant.

Précédent | Sommaire | Suivant
swf_actiongotolabel | Niveau supérieur | swf_actionplay


swf_actionplay

(PHP 4 <= 4.3.2)

swf_actionplay -- Joue l'animation flash à partir du frame courant.

Description

void swf_actionplay ( void )

swf_actionplay() joue l'animation Flash à partir du frame courant.

Précédent | Sommaire | Suivant
swf_actionnextframe | Niveau supérieur | swf_actionprevframe


swf_actionprevframe

(PHP 4 <= 4.3.2)

swf_actionprevframe -- Recule d'un frame

Description

void swf_actionprevframe ( void )

swf_actionnextframe() recule d'un frame le frame courant.

Précédent | Sommaire | Suivant
swf_actionplay | Niveau supérieur | swf_actionsettarget


swf_actionsettarget

(PHP 4 <= 4.3.2)

swf_actionsettarget -- Fixe le contexte des actions

Description

void swf_actionsettarget ( string target)

swf_actionsettarget() fixe le contexte des actions. Vous pouvez utiliser cette fonction pour contrôler d'autres animations Flash qui seraient en fonctionnement.

Précédent | Sommaire | Suivant
swf_actionprevframe | Niveau supérieur | swf_actionstop


swf_actionstop

(PHP 4 <= 4.3.2)

swf_actionstop -- Arrête l'animation flash.

Description

void swf_actionstop ( void )

swf_actionstop() arrête l'animation Flash au frame courant.

Précédent | Sommaire | Suivant
swf_actionsettarget | Niveau supérieur | swf_actiontogglequality


swf_actiontogglequality

(PHP 4 <= 4.3.2)

swf_actiontogglequality -- Choisit le niveau de qualité haut ou bas.

Description

void swf_actiontogglequality ( void )

swf_actiontogglequality() modifie le niveau de qualité haut ou bas.

Précédent | Sommaire | Suivant
swf_actionstop | Niveau supérieur | swf_actionwaitforframe


swf_actionwaitforframe

(PHP 4 <= 4.3.2)

swf_actionwaitforframe -- Ignore les actions si le frame n'est pas chargé.

Description

void swf_actionwaitforframe ( int framenumber, int skipcount)

swf_actionwaitforframe() vérifie que le frame framenumber a bien été chargé. Si ce n'est pas le cas, elle ignore les actions skipcount. Cela est très utile pour les séquences du type "Chargement...".

Précédent | Sommaire | Suivant
swf_actiontogglequality | Niveau supérieur | swf_addbuttonrecord


swf_addbuttonrecord

(PHP 4 <= 4.3.2)

swf_addbuttonrecord -- Contrôle la situation, l'apparance et la zone active du bouton courant

Description

void swf_addbuttonrecord ( int states, int shapeid, int depth)

swf_addbuttonrecord() permet de modifier les caractéristiques d'un bouton. states, définit les états du bouton autorisés : ce peut être : BSHitTest, BSDown, BSOver ou BSUp. shapeid est l'apparence du bouton, c'est-à-dire l'objet qui représente le bouton. depth est la profondeur de placement du bouton, dans le frame courant.

Exemple 1. Exemple avec swf_addbuttonrecord()

<?php
  swf_startButton ($objid, TYPE_MENUBUTTON);
  swf_addButtonRecord (BSDown|BSOver, $buttonImageId, 340);
  swf_onCondition (MenuEnter);
  swf_actionGetUrl ("http://www.designmultimedia.com", "_level1");
  swf_onCondition (MenuExit);
  swf_actionGetUrl ("", "_level1");
  swf_endButton ();
?>

Précédent | Sommaire | Suivant
swf_actionwaitforframe | Niveau supérieur | swf_addcolor


swf_addcolor

(PHP 4 <= 4.3.2)

swf_addcolor -- Fixe la couleur globale d'addition (? : the global add color).

Description

void swf_addcolor ( float r, float g, float b, float a)

swf_mulcolor() fixe la valeur globale de multiplication (the global multiply color...) à la couleur rgba. Cette couleur est utilisée (implicitement) par swf_placeobject(), swf_modifyobject() et swf_addbuttonrecord(). La couleur d'un objet sera ajouté à rgba lorsque l'objet est placé sur la scène.

Note : Les valeurs de rgba peuvent être positives ou négatives.

Précédent | Sommaire | Suivant
swf_addbuttonrecord | Niveau supérieur | swf_closefile


swf_closefile

(PHP 4 <= 4.3.2)

swf_closefile -- Ferme le fichier courant Shockwave Flash

Description

void swf_closefile ( [int return_file])

swf_closefile() ferme le fichier courant, qui a été ouvert avec swf_openfile(). Si le paramètre return_file a été fourni, il contiendra le fichier SWF fermé.

Exemple 1. Création d'un fichier Flash simple, basé sur une entrée de l'utilisateur, et sauvegarde dans une base.

<?php
// La variable $text est fournie par l'utilisateur
// Variables globales pour l'acc&egrave;s &agrave; la base de donn&eacute;es
// utilis&eacute;e dans la fonction wf_savedata())
$DBHOST = "localhost";
$DBUSER = "sterling";
$DBPASS = "secret";
swf_openfile ("php://stdout", 256, 256, 30, 1, 1, 1);
    swf_definefont (10, "Ligon-Bold");
        swf_fontsize (12);
        swf_fontslant (10);
    swf_definetext (11, $text, 1);
    swf_pushmatrix ();
        swf_translate (-50, 80, 0);
        swf_placeobject (11, 60);
    swf_popmatrix ();
    swf_showframe ();
    swf_startdoaction ();
        swf_actionstop ();
    swf_enddoaction ();
$data = swf_closefile (1);
$data ?
  swf_savedata ($data) :
  die ("Error could not save SWF file");
// void swf_savedata (string data)
// Sauve le fichier g&eacute;n&eacute;r&eacute; dans la base de donn&eacute;es
// pour acc&egrave;s ult&eacute;rieur
function swf_savedata ($data)
{
    global $DBHOST,
           $DBUSER,
           $DBPASS;
    $dbh = @mysql_connect ($DBHOST, $DBUSER, $DBPASS);
    if (!$dbh) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }
    $stmt = "INSERT INTO swf_files (file) VALUES ('$data')";
    $sth = @mysql_query ($stmt, $dbh);
    if (!$sth) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }
    @mysql_free_result ($sth);
    @mysql_close ($dbh);
}
?>

Précédent | Sommaire | Suivant
swf_addcolor | Niveau supérieur | swf_definebitmap


swf_definebitmap

(PHP 4 <= 4.3.2)

swf_definebitmap -- Définit une image bitmap

Description

void swf_definebitmap ( int objid, string image_name)

swf_definebitmap() définit une bitmap à partir d'une image au format GIF, JPEG, RGB ou FI. L'image sera convertie en Flash JPEG ou Flash color map.

Précédent | Sommaire | Suivant
swf_closefile | Niveau supérieur | swf_definefont


swf_definefont

(PHP 4 <= 4.3.2)

swf_definefont -- Définit une police.

Description

void swf_definefont ( int fontid, string fontname)

swf_definefont() définit la police fontname et lui affecte l'identifiant fontid. Cette police devient alors la police courante.

Précédent | Sommaire | Suivant
swf_definebitmap | Niveau supérieur | swf_defineline


swf_defineline

(PHP 4 <= 4.3.2)

swf_defineline -- Définit une ligne

Description

void swf_defineline ( int objid, float x1, float y1, float x2, float y2, float width)

swf_defineline() définit une ligne commençant aux coordonnées (x1, y1), et finissant au point de coordonnées (x2, y2). Elle aura la largeur de width.

Précédent | Sommaire | Suivant
swf_definefont | Niveau supérieur | swf_definepoly


swf_definepoly

(PHP 4 <= 4.3.2)

swf_definepoly -- Définit un polygone.

Description

void swf_definepoly ( int objid, array coords, int npoints, float width)

swf_definepoly() définit un polygone, dont les coordonnées des sommets sont placés dans le tableau coords). npoints est le nombre de points contenu dans le tableau coords. width est la largeur des bords du polygone. Si width vaut 0.0, le polygone sera rempli.

Précédent | Sommaire | Suivant
swf_defineline | Niveau supérieur | swf_definerect


swf_definerect

(PHP 4 <= 4.3.2)

swf_definerect -- Définit un rectangle

Description

void swf_definerect ( int objid, float x1, float y1, float x2, float y2, float width)

swf_definerect() définit un rectangle, de coin supérieur gauche aux coordoonées (x1,y1), et de coin inférieur droit aux coordonnées (x2, y2). L'épaisseur des bords est données par le paramètre width. width, 0.0 le rectangle sera rempli.

Précédent | Sommaire | Suivant
swf_definepoly | Niveau supérieur | swf_definetext


swf_definetext

(PHP 4 <= 4.3.2)

swf_definetext -- Définit une chaîne de texte

Description

void swf_definetext ( int objid, string str, int docenter)

swf_definetext() définit la chaîne de texte str, en utilisant la police courante. docenter indique si la chaîne doit être centrée (valeur de 1), ou pas.

Précédent | Sommaire | Suivant
swf_definerect | Niveau supérieur | swf_endbutton


swf_endbutton

(PHP 4 <= 4.3.2)

swf_endbutton -- Termine la définition du bouton courant.

Description

void swf_endbutton ( void )

swf_endbutton() termine la définition du bouton courant.

Précédent | Sommaire | Suivant
swf_definetext | Niveau supérieur | swf_enddoaction


swf_enddoaction

(PHP 4 <= 4.3.2)

swf_enddoaction -- Termine l'action courante

Description

void swf_enddoaction ( void )

swf_startdoaction() termine l'action courante, démarrée par swf_startdoaction().

Précédent | Sommaire | Suivant
swf_endbutton | Niveau supérieur | swf_endshape


swf_endshape

(PHP 4 <= 4.3.2)

swf_endshape -- Complète la définition de la forme courante.

Description

void swf_endshape ( void )

swf_endshape() complète la définition de la forme courante.

Précédent | Sommaire | Suivant
swf_enddoaction | Niveau supérieur | swf_endsymbol


swf_endsymbol

(PHP 4 <= 4.3.2)

swf_endsymbol -- Termine la définition de symbole

Description

void swf_endsymbol ( void )

swf_endsymbol() termine la définition de symble, qui a été commencée avec swf_startsymbol().

Précédent | Sommaire | Suivant
swf_endshape | Niveau supérieur | swf_fontsize


swf_fontsize

(PHP 4 <= 4.3.2)

swf_fontsize -- Change la taille de la police

Description

void swf_fontsize ( float size)

swf_fontsize() remplace la taille de la police par la taille size.

Précédent | Sommaire | Suivant
swf_endsymbol | Niveau supérieur | swf_fontslant


swf_fontslant

(PHP 4 <= 4.3.2)

swf_fontslant -- Change l'inclinaison de la police courante

Description

void swf_fontslant ( float slant)

swf_fontslant() fixe l'inclinaison de la police courante à slant. Les valeurs positives values créeront une inclinaison vers la droite, et les valeurs négatives, vers la gauche.

Précédent | Sommaire | Suivant
swf_fontsize | Niveau supérieur | swf_fonttracking


swf_fonttracking

(PHP 4 <= 4.3.2)

swf_fonttracking -- Change l'espacement des caractères

Description

void swf_fonttracking ( float tracking)

swf_fonttracking() change l'espacement, et lui affecte la valeur de tracking. Cette fonction sert à accroître l'espace entre les lettres et le texte. Les valeurs positives accroissent cet espace, et les valeurs négatives le réduisent.

Précédent | Sommaire | Suivant
swf_fontslant | Niveau supérieur | swf_getbitmapinfo


swf_getbitmapinfo

(PHP 4 <= 4.3.2)

swf_getbitmapinfo -- Lit les informations sur une image

Description

array swf_getbitmapinfo ( int bitmapid)

swf_getbitmapinfo() retourne un tableau d'informations sur l'image bitmap repérée par bitmapid. Le tableau a les éléments suivants :

  • "size" - La taille en octets de l'image.

  • "width" - La largueur en pixels de l'image.

  • "height" - La hauteur en pixels de l'image.

Précédent | Sommaire | Suivant
swf_fonttracking | Niveau supérieur | swf_getfontinfo


swf_getfontinfo

(PHP 4 <= 4.3.2)

swf_getfontinfo -- Retourne la hauteur du A majuscule, et du x minuscule.

Description

array swf_getfontinfo ( void )

swf_getfontinfo() retourne la hauteur du A majuscule, et du x minuscule, dans un tableau associatif :

  • Aheight - La hauteur du A majuscule, en pixels.

  • xheight - La hauteur du x minuscule, en pixels.

Précédent | Sommaire | Suivant
swf_getbitmapinfo | Niveau supérieur | swf_getframe


swf_getframe

(PHP 4 <= 4.3.2)

swf_getframe -- Retourne le numéro de frame courant

Description

int swf_getframe ( void )

swf_getframe() retourne le numéro de frame courant.

Précédent | Sommaire | Suivant
swf_getfontinfo | Niveau supérieur | swf_labelframe


swf_labelframe

(PHP 4 <= 4.3.2)

swf_labelframe -- Nomme le frame courant

Description

void swf_labelframe ( string name)

swf_labelframe() donne le nom name au frame courant.

Précédent | Sommaire | Suivant
swf_getframe | Niveau supérieur | swf_lookat


swf_lookat

(PHP 4 <= 4.3.2)

swf_lookat -- Définit une transformation de vue

Description

void swf_lookat ( float view_x, float view_y, float view_z, float reference_x, float reference_y, float reference_z, float twist)

swf_lookat() définit une transformation de vue, en donnant la position de la vue, de coordonnées (view_x, view_y et view_z) et les coordonnées du point de référence dans la scène, de coordonnées (reference_x, reference_y, reference_z). Le paramètre twist contrôle la rotation le long de l'axe des z de l'utilisateur.

Précédent | Sommaire | Suivant
swf_labelframe | Niveau supérieur | swf_modifyobject


swf_modifyobject

(PHP 4 <= 4.3.2)

swf_modifyobject -- Modifie un objet

Description

void swf_modifyobject ( int depth, int how)

swf_modifyobject() modifie la position et/ou la couleur de l'objet situé à la profondeur de depth. L'argument how détermine ce qui doit être modifié. how peut prendre les valeurs de MOD_MATRIX, MOD_COLOR ou la combinaison des deux.

MOD_COLOR utilise la couleur courante de multiplication (spécifiée par swf_mulcolor()) et la couleur courante d'addition (spécifiée par swf_addcolor()) pour colorer l'objet, et MOD_MATRIX utilise la matrice courante pour positionner l'objet.

Précédent | Sommaire | Suivant
swf_lookat | Niveau supérieur | swf_mulcolor


swf_mulcolor

(PHP 4 <= 4.3.2)

swf_mulcolor -- Fixe la couleur globale de multiplication (? : the global multiply color).

Description

void swf_mulcolor ( float r, float g, float b, float a)

swf_mulcolor() fixe la valeur globale de multiplication (the global multiply color...) à la couleur rgba. Cette couleur est utilisée (implicitement) par swf_placeobject(), swf_modifyobject() et swf_addbuttonrecord(). La couleur d'un objet sera multipliée par rgba lorsque l'objet est placé sur la scène.

Note : Les valeurs de rgba peuvent être positives ou négatives.

Précédent | Sommaire | Suivant
swf_modifyobject | Niveau supérieur | swf_nextid


swf_nextid

(PHP 4 <= 4.3.2)

swf_nextid -- Retourne le prochain identifiant d'objet libre

Description

int swf_nextid ( void )

swf_nextid() retourne le prochain identifiant d'objet libre.

Précédent | Sommaire | Suivant
swf_mulcolor | Niveau supérieur | swf_oncondition


swf_oncondition

(PHP 4 <= 4.3.2)

swf_oncondition -- Décrit une transition utilisée pour déclencher une liste d'actions.

Description

void swf_oncondition ( int transition)

swf_oncondition() décrit une transition qui va déclencher une liste d'actions. Il y a plusieurs types de transition possibles, les suivantes sont destinées aux boutons de type TYPE_MENUBUTTON:

  • IdletoOverUp

  • OverUptoIdle

  • OverUptoOverDown

  • OverDowntoOverUp

  • IdletoOverDown

  • OutDowntoIdle

  • MenuEnter (IdletoOverUp|IdletoOverDown)

  • MenuExit (OverUptoIdle|OverDowntoIdle)

Pour les types TYPE_PUSHBUTTON voici les options :

  • IdletoOverUp

  • OverUptoIdle

  • OverUptoOverDown

  • OverDowntoOverUp

  • OverDowntoOutDown

  • OutDowntoOverDown

  • OutDowntoIdle

  • ButtonEnter (IdletoOverUp|OutDowntoOverDown)

  • ButtonExit (OverUptoIdle|OverDowntoOutDown)

Précédent | Sommaire | Suivant
swf_nextid | Niveau supérieur | swf_openfile


swf_openfile

(PHP 4 <= 4.3.2)

swf_openfile -- Ouvre un nouveau fichier Shockwave Flash

Description

void swf_openfile ( string filename, float width, float height, float framerate, float r, float g, float b)

swf_openfile() crée un nouveau fichier filename de largeur width, et de hauteur height, à la vitesse de framerate, de couleur de fond RGB (r, g, b).

swf_openfile() doit être la première fonction à appeler, sous peine d'erreur mémoire (segmentation fault). Si vous voulez envoyer votre production au client HTML, utilisez le nom de fichier "php://stdout" (le support de ceci est prévue pour la version 4.0.1 et ultérieur).

Précédent | Sommaire | Suivant
swf_oncondition | Niveau supérieur | swf_ortho2


swf_ortho2

(PHP 4 <= 4.3.2)

swf_ortho2 -- Définit une projection orthogonale à 2 dimensions entre les coordonnées utilisateur et le port courant.

Description

void swf_ortho2 ( float xmin, float xmax, float ymin, float ymax)

swf_ortho2() définit une projection orthogonale à 2 dimensions entre les coordonnées utilisateur et le port courant. C'est la projection par défaut des animations Flash. Si vous souhaitez une perspective, utilisez plutôt swf_perspective().

Précédent | Sommaire | Suivant
swf_openfile | Niveau supérieur | swf_ortho


swf_ortho

(4.0.1 - 4.3.2 only)

swf_ortho -- Définit une projection orthogonale entre les coordonnées utilisateur et le port courant.

Description

void swf_ortho ( float xmin, float xmax, float ymin, float ymax, float zmin, float zmax)

swf_ortho() définit une projection orthogonale entre les coordonnées utilisateur et le port courant.

Précédent | Sommaire | Suivant
swf_ortho2 | Niveau supérieur | swf_perspective


swf_perspective

(PHP 4 <= 4.3.2)

swf_perspective -- Définit une projection orthogonale à 3 dimensions entre les coordonnées utilisateur et le port courant

Description

void swf_perspective ( float fovy, float aspect, float near, float far)

swf_perspective() définit une projection orthogonale à 3 dimensions entre les coordonnées utilisateur et le port courant. Le paramètre fovy est l'angle de vue de la direction y. Le paramètre aspect doit être choisi pour correspondre au ratio de la vue utilisée. near est le plan adjacent proche far est le plan adjacent distant.

Note : Diverses distorsions peuvent apparaître lors de ce genre de projection, car Flash ne dispose que d'une matrice à 2 dimensions. Certaines distorsions font vraiment tâche d'encre.

Précédent | Sommaire | Suivant
swf_ortho | Niveau supérieur | swf_placeobject


swf_placeobject

(PHP 4 <= 4.3.2)

swf_placeobject -- Place un objet sur la scène

Description

void swf_placeobject ( int objid, int depth)

swf_placeobject() place l'objet objid dans le frame courant, à la profondeur depth. objid et depth doivent être compris entre 1 et 65535.

swf_placeobject() utilise la couleur courante de multiplication (spécifiée par swf_mulcolor()) et la couleur courante d'addition (spécifiée par swf_addcolor()) pour colorer l'objet, et utilise la matrice courante pour positionner l'objet.

Note : Le support des couleurs RGBA est complet.

Précédent | Sommaire | Suivant
swf_perspective | Niveau supérieur | swf_polarview


swf_polarview

(PHP 4 <= 4.3.2)

swf_polarview -- Défini le point de vue de l'utilisateur en coordonnées polaire.

Description

void swf_polarview ( float dist, float azimuth, float incidence, float twist)

swf_polarview() définit la position de l'utilisateur en coordonnées polaires. dist est la distance entre le point de vue et l'origine. azimuth définit l'angle azimutal dans le plan x,y mesuré en distance depuis l'axe y. incidence définit l'angle d'incidence dans le plan y,z, mesuré en distance depuis l'axe z. Finalement, twist est l'angle de rotation du point de vue sur la ligne de vue, en utilisant la règle de la main droite.

Précédent | Sommaire | Suivant
swf_placeobject | Niveau supérieur | swf_popmatrix


swf_popmatrix

(PHP 4 <= 4.3.2)

swf_popmatrix -- Dépile la matrice de transformation.

Description

void swf_popmatrix ( void )

swf_popmatrix() dépile la matrice de transformation.

Précédent | Sommaire | Suivant
swf_polarview | Niveau supérieur | swf_posround


swf_posround

(PHP 4 <= 4.3.2)

swf_posround -- Active l'approximation des translation d'objets.

Description

void swf_posround ( int round)

swf_posround() active ou désactive l'approximation lors des translations, lorsque des objets sont placés ou déplacés. Il y a des situations où le texte devient plus lisible lorsque l'approximation a été activée. round active l'approximation (1) ou la désactive (0).

Précédent | Sommaire | Suivant
swf_popmatrix | Niveau supérieur | swf_pushmatrix


swf_pushmatrix

(PHP 4 <= 4.3.2)

swf_pushmatrix -- Empile la matrice de transformation courante dans la pile.

Description

void swf_pushmatrix ( void )

swf_pushmatrix() empile la matrice de transformation courante dans la pile.

Précédent | Sommaire | Suivant
swf_posround | Niveau supérieur | swf_removeobject


swf_removeobject

(PHP 4 <= 4.3.2)

swf_removeobject -- Enlève un objet

Description

void swf_removeobject ( int depth)

swf_removeobject() enlève l'objet situé à la profondeur depth de la scène.

Précédent | Sommaire | Suivant
swf_pushmatrix | Niveau supérieur | swf_rotate


swf_rotate

(PHP 4 <= 4.3.2)

swf_rotate -- Rotation de la transformation courante

Description

void swf_rotate ( float angle, string axis)

swf_rotate() fait subir la roation d'angle angle, autour de l'axe axis. Les valeurs possibles pour axis sont : 'x' (axe x), 'y' (axe y) ou 'z' (axe z).

Précédent | Sommaire | Suivant
swf_removeobject | Niveau supérieur | swf_scale


swf_scale

(PHP 4 <= 4.3.2)

swf_scale -- Homothétie

Description

void swf_scale ( float x, float y, float z)

swf_scale() fait une mise à l'échelle de x pour les coordonnées x, de y pour les coordonnées y et z pour les coordonnées z.

Précédent | Sommaire | Suivant
swf_rotate | Niveau supérieur | swf_setfont


swf_setfont

(PHP 4 <= 4.3.2)

swf_setfont -- Change la police courante

Description

void swf_setfont ( int fontid)

swf_setfont() remplace la police courante par la police repérée par l'identifiant fontid.

Précédent | Sommaire | Suivant
swf_scale | Niveau supérieur | swf_setframe


swf_setframe

(PHP 4 <= 4.3.2)

swf_setframe -- Fixe le frame courant

Description

void swf_setframe ( int framenumber)

swf_setframe() sélectionne le frame framenumber comme frame actif.

Précédent | Sommaire | Suivant
swf_setfont | Niveau supérieur | swf_shapearc


swf_shapearc

(PHP 4 <= 4.3.2)

swf_shapearc -- Dessine une arc de cercle

Description

void swf_shapearc ( float x, float y, float r, float ang1, float ang2)

swf_shapearc() dessine un arc de cercle, depuis l'angle ang1 jusqu'à l'angle ang2. Le centre du cercle est aux coordonnées (x, y), et de rayon r.

Précédent | Sommaire | Suivant
swf_setframe | Niveau supérieur | swf_shapecurveto3


swf_shapecurveto3

(PHP 4 <= 4.3.2)

swf_shapecurveto3 -- Dessine une courbe Bézier cubique

Description

void swf_shapecurveto3 ( float x1, float y1, float x2, float y2, float x3, float y3)

Dessine une courbe de Bézier cubique, en utilisant les points de coordoonnées (x1, y1) et (x2,y2) comme points de contrôle et le point de coordonnées (x3,y3) comme point final. La position finale devient alors la position courante.

Précédent | Sommaire | Suivant
swf_shapearc | Niveau supérieur | swf_shapecurveto


swf_shapecurveto

(PHP 4 <= 4.3.2)

swf_shapecurveto -- Dessine une courbe de Bézier quadratique entre deux points.

Description

void swf_shapecurveto ( float x1, float y1, float x2, float y2)

swf_shapecurveto() dessine la courbe de Bézier quadratique entre les points de coordonnées (x1 , y1) et (x2, y2). La position courante devient alors (x2, y2).

Précédent | Sommaire | Suivant
swf_shapecurveto3 | Niveau supérieur | swf_shapefillbitmapclip


swf_shapefillbitmapclip

(PHP 4 <= 4.3.2)

swf_shapefillbitmapclip -- Choisit le mode de remplissage par texture.

Description

void swf_shapefillbitmapclip ( int bitmapid)

Choisit le mode de remplissage par texture : les espaces vides seront remplis avec la bitmap bitmapid.

Précédent | Sommaire | Suivant
swf_shapecurveto | Niveau supérieur | swf_shapefillbitmaptile


swf_shapefillbitmaptile

(PHP 4 <= 4.3.2)

swf_shapefillbitmaptile -- Choisit le mode de remplissage par texture repétée.

Description

void swf_shapefillbitmaptile ( int bitmapid)

Choisit le mode de remplissage par texture : les espaces vides seront remplis avec la bitmap bitmapid, repétée autant de fois qu'il le faut (mode carrelage).

Précédent | Sommaire | Suivant
swf_shapefillbitmapclip | Niveau supérieur | swf_shapefilloff


swf_shapefilloff

(PHP 4 <= 4.3.2)

swf_shapefilloff -- Désactive le remplissage.

Description

void swf_shapefilloff ( void )

swf_shapefilloff() désactive le remplissage pour la forme courante.

Précédent | Sommaire | Suivant
swf_shapefillbitmaptile | Niveau supérieur | swf_shapefillsolid


swf_shapefillsolid

(PHP 4 <= 4.3.2)

swf_shapefillsolid -- Fixe la couleur pour le style courant de remplissage.

Description

void swf_shapefillsolid ( float r, float g, float b, float a)

swf_shapefillsolid() fixe la couleur pour le style courant de remplissage à rgba.

Précédent | Sommaire | Suivant
swf_shapefilloff | Niveau supérieur | swf_shapelinesolid


swf_shapelinesolid

(PHP 4 <= 4.3.2)

swf_shapelinesolid -- Fixe le style courant de ligne

Description

void swf_shapelinesolid ( float r, float g, float b, float a, float width)

swf_shapelinesolid() permet de choisir le style de ligne, à savoir la couleur et la largeur. Si width vaut 0.0, les lignes ne seront pas dessinées.

Précédent | Sommaire | Suivant
swf_shapefillsolid | Niveau supérieur | swf_shapelineto


swf_shapelineto

(PHP 4 <= 4.3.2)

swf_shapelineto -- Dessine une ligne

Description

void swf_shapelineto ( float x, float y)

swf_shapelineto() dessine une ligne entre la position courante et le point de coordonnées (x, y). La position courante devient alors (x, y).

Précédent | Sommaire | Suivant
swf_shapelinesolid | Niveau supérieur | swf_shapemoveto


swf_shapemoveto

(PHP 4 <= 4.3.2)

swf_shapemoveto -- Change la position courante

Description

void swf_shapemoveto ( float x, float y)

swf_shapemoveto() fixe la position courante au point de coordonnées (x, y).

Précédent | Sommaire | Suivant
swf_shapelineto | Niveau supérieur | swf_showframe


swf_showframe

(PHP 4 <= 4.3.2)

swf_showframe -- Affiche le frame courant

Description

void swf_showframe ( void )

swf_showframe() affiche le frame courant.

Précédent | Sommaire | Suivant
swf_shapemoveto | Niveau supérieur | swf_startbutton


swf_startbutton

(PHP 4 <= 4.3.2)

swf_startbutton -- Commence la définition d'un bouton

Description

void swf_startbutton ( int objid, int type)

swf_startbutton() commence la définition d'un bouton. type peut prendre les valeurs de TYPE_MENUBUTTON ou TYPE_PUSHBUTTON. La constante TYPE_MENUBUTTON permet au focus de traverser lorsque la souris est cliquée, alors que TYPE_PUSHBUTTON ne le permet pas.

Précédent | Sommaire | Suivant
swf_showframe | Niveau supérieur | swf_startdoaction


swf_startdoaction

(PHP 4 <= 4.3.2)

swf_startdoaction -- Commence la description d'une liste d'action pour la frame courante.

Description

void swf_startdoaction ( void )

swf_startdoaction() commence la description d'une liste d'actions pour la frame courante. Cette fonction doit être appelée avant que les actions ne soient définies pour le cadre courant.

Précédent | Sommaire | Suivant
swf_startbutton | Niveau supérieur | swf_startshape


swf_startshape

(PHP 4 <= 4.3.2)

swf_startshape -- Commence une forme complexe

Description

void swf_startshape ( int objid)

swf_startshape() commence une forme complexe, qui sera reperé par l'identifiant d'objet objid.

Précédent | Sommaire | Suivant
swf_startdoaction | Niveau supérieur | swf_startsymbol


swf_startsymbol

(PHP 4 <= 4.3.2)

swf_startsymbol -- Définit un symbole

Description

void swf_startsymbol ( int objid)

swf_startsymbol() définit un identifiant d'objet comme symbole. Les symboles sont des petites animations Flash qui peuvent être jouées simultanément. objid est l'identifiant d'objet que vous voulez définir comme symbole.

Précédent | Sommaire | Suivant
swf_startshape | Niveau supérieur | swf_textwidth


swf_textwidth

(PHP 4 <= 4.3.2)

swf_textwidth -- Retourne la longueur d'une chaîne

Description

float swf_textwidth ( string str)

swf_textwidth() retourne la longueur de la chaîne str, en pixels, en utilisant la police courante.

Précédent | Sommaire | Suivant
swf_startsymbol | Niveau supérieur | swf_translate


swf_translate

(PHP 4 <= 4.3.2)

swf_translate -- Translate la transformation courante

Description

void swf_translate ( float x, float y, float z)

swf_translate() déplace la transformation courante de x, y et z, dans les directions x, y et z.

Précédent | Sommaire | Suivant
swf_textwidth | Niveau supérieur | swf_viewport


swf_viewport

(PHP 4 <= 4.3.2)

swf_viewport -- Sélectionne une nouvelle zone pour un dessin ultérieur.

Description

void swf_viewport ( float xmin, float xmax, float ymin, float ymax)

swf_viewport() sélectionne une nouvelle zone pour y dessiner ultérieurement. La zone est définie de xmin à xmax et de ymin à ymax. Si cette fonction n'est pas appelée, les valeurs par défaut sont celles de l'écran courant.

Précédent | Sommaire | Suivant
swf_translate | Niveau supérieur | SNMP


SNMP

Manuel PHP
Précédent Suivant

XCIX. SNMP

Introduction

Pré-requis

Afin de pouvoir utiliser les fonctions SNMP sous Unix, vous aurez besoin d'installer le package UCD SNMP ou NET-SNMP . Sous Windows ces fonctions ne sont disponibles que sous NT, et pas sous Win95/98.

Installation

Important : Afin d'utiliser le package UCD SNMP, vous devez mettre la variable NO_ZEROLENGTH_COMMUNITY à 1 avant de compiler. Après avoir configuré UCD SNMP, éditez le fichier config.h et recherchez la valeur NO_ZEROLENGTH_COMMUNITY. Décommentez la ligne avec le #define. Cela doit ressembler à ceci :
#define NO_ZEROLENGTH_COMMUNITY 1
Ensuite, compilez PHP avec l'option --with-snmp[=DIR].

Si vous rencontrez des erreurs étrange de "segmentation fault", lors de l'utilisation des commandes SNMP, c'est que vous n'avez pas suivi les recommandations précédentes. Si vous ne voulez pas recompiler UCD SNMP, vous pouvez aussi recompiler PHP avec l'option --enable-ucd-snmp-hack qui évitera cette erreur.

La distribution Windows contient des fichiers nécessaires à SNMP dans le dossier mibs. Ce dossier doit être déplacé dans DRIVE:\usr\mibs, où DRIVE doit être remplacé par la lettre de driver où PHP est installé, c'est à dire, par exempl c:\usr\mibs.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
snmp_get_quick_print -- Lit la valeur courante de l'option quick_print de la librairie UCD
snmp_set_quick_print -- Ecrit la valeur courante de l'option quick_print de la librairie UCD
snmpget -- Reçoit un objet SNMP
snmprealwalk -- Retourne tous les objets, y compris leur ID d'objet
snmpset -- Envoie un objet SNMP
snmpwalk -- Reçoit tous les objets SNMP d'un agent
snmpwalkoid -- Demande d'informations d'arbre sur une entité du réseau.

Précédent | Sommaire | Suivant
swf_viewport | Niveau supérieur | snmp_get_quick_print


snmp_get_quick_print

(PHP 3>= 3.0.8, PHP 4 )

snmp_get_quick_print -- Lit la valeur courante de l'option quick_print de la librairie UCD

Description

bool snmp_get_quick_print ( void )

snmp_get_quick_print() retourne la valeur courante, stockée dans la librairie UCD, de l'option quick_print. Par défaut, quick_print est désactivée.

Exemple 1. Exemple avec snmp_get_quick_print()

<?php
  $quickprint = snmp_get_quick_print();
?>

L'exemple ci-dessus devrait retourner FALSE, si quick_print est désactivée et, TRUE si quick_print est activée.

snmp_get_quick_print() est seulement disponible avec la librairie UCD SNMP. Cette fonction n'est pas disponible avec la librairie Windows SNMP.

Voir aussi snmp_set_quick_print() pour une description complète de l'affichage de quick_print.

Précédent | Sommaire | Suivant
SNMP | Niveau supérieur | snmp_set_quick_print


snmp_set_quick_print

(PHP 3>= 3.0.8, PHP 4 )

snmp_set_quick_print -- Ecrit la valeur courante de l'option quick_print de la librairie UCD

Description

void snmp_set_quick_print ( bool quick_print)

snmp_set_quick_print() fixe la valeur de l'option quick_print de la librairie UCD SNMP. Lorsqu'elle a la valeur de (1), la librairie SNMP retournera des valeurs 'rapides'. Cela signifie que seule, la valeur sera retournée. Lorsqu'elle a la valeur de (0), la librairie va afficher d'autres informations (telles que l'adresse IP (IpAddress) ou OID). De plus, si quick_print n'est pas activée, la librairie affichera aussi des valeurs hexadécimales supplémentaires pour toutes les chaînes de trois caractères, ou moins.

Modifier quick_print est plus fréquent lorsqu'on utilise les valeurs retournées que lorsqu'on les affiche.

Exemple 1. Exemple avec snmp_set_quick_print()

<?php
  snmp_set_quick_print(0);
  $a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
  echo "$a<BR>\n";
  snmp_set_quick_print(1);
  $a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
  echo "$a<BR>\n";
?>

La première valeur affichée sera : 'Timeticks: (0) 0:00:00.00', tandis qu'avec quick_print activée, seul '0:00:00.00' sera affiché.

Par défaut, UCD SNMP retourne des valeurs détaillées, et quick_print sert à ne retourner que la valeur.

Actuellement, les chaînes sont toujours retournées avec des guillemets supplémentaires. Ceci sera corrigé ultérieurement.

snmp_set_quick_print() ne fonctionne qu'avec la librairie UCD SNMP. snmp_set_quick_print() n'est pas disponible avec la librairie Windows SNMP.

Précédent | Sommaire | Suivant
snmp_get_quick_print | Niveau supérieur | snmpget


snmpget

(PHP 3, PHP 4 )

snmpget -- Reçoit un objet SNMP

Description

string snmpget ( string hostname, string community, string object_id [, int timeout [, int retries]])

snmpget() retourne un objet SNMP en cas de succès, et FALSE en cas d'erreur.

snmpget() sert à lire une valeur d'un objet SNMP représenté par object_id. L'agent SNMP est défini par hostname et la communauté de lecture est spécifiée par le paramètre community.

Exemple 1. Exemple avec snmpget()

<?php
  $syscontact = snmpget("127.0.0.1", "public", "system.SysContact.0");
?>

Précédent | Sommaire | Suivant
snmp_set_quick_print | Niveau supérieur | snmprealwalk


snmprealwalk

(PHP 3>= 3.0.8, PHP 4 )

snmprealwalk -- Retourne tous les objets, y compris leur ID d'objet

Description

array snmprealwalk ( string host, string community, string object_id [, int timeout [, int retries]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
snmpget | Niveau supérieur | snmpset


snmpset

(PHP 3>= 3.0.12, PHP 4 )

snmpset -- Envoie un objet SNMP

Description

bool snmpset ( string hostname, string community, string object_id, string type, mixed value [, int timeout [, int retries]])

snmpset() modifie la valeur de l'objet SNMP spécifié, en retournant TRUE en cas de succès et FALSE en cas d'erreur.

snmpset() sert à affecter une valeur donnée à un objet SNMP, référencé par object_id. L'agent SNMP est défini par hostname et la communauté de lecture est spécifiée par le paramètre community.

Précédent | Sommaire | Suivant
snmprealwalk | Niveau supérieur | snmpwalk


snmpwalk

(PHP 3, PHP 4 )

snmpwalk -- Reçoit tous les objets SNMP d'un agent

Description

array snmpwalk ( string hostname, string community, string object_id [, int timeout [, int retries]])

snmpwalk() retourne un tableau d'objets SNMP, en commencant à partir de object_id comme racine, ou FALSE en cas d'erreur.

snmpwalk() sert à lire toutes les valeurs d'un agent SNMP, défini par hostname. community définit la communauté de lecture de l'agent. Un objet (object_id = NULL) sert de racine à l'arbre d'objet SNMP et tous les objets sous cette racine sont retournés dans un tableau. Si object_id est spécifié, tous les objets SNMP sous cet objet sont retournés.

Exemple 1. Lire tous les objets avec snmpwalk()

<?php
  $a = snmpwalk("127.0.0.1", "public", "");
?>

La fonction ci-dessus va retourner tous les objets SNMP d'un agent SNMP qui fonctionnerait sur l'hôte local (localhost). Il suffit alors de faire une boucle pour travailler avec chacun des objets.

Exemple 2. Afficher tous les objet avec snmpwalk()

<?php
  for ($i=0; $i<count($a); $i++) {
    echo $a[$i];
  }
?>

Précédent | Sommaire | Suivant
snmpset | Niveau supérieur | snmpwalkoid


snmpwalkoid

(PHP 3>= 3.0.8, PHP 4 )

snmpwalkoid -- Demande d'informations d'arbre sur une entité du réseau.

Description

array snmpwalkoid ( string hostname, string community, string object_id [, int timeout [, int retries]])

snmpwalkoid() retourne un tableau associatif, avec les identifiants d'objet et les objets associés, pour tous les objets situés sous la racine object_id, ou FALSE en cas d'erreur.

snmpwalkoid() sert à lire tous les identifiants d'objet, et leur valeurs respectives, depuis un serveur SNMP. community indique la communauté de lecture pour cet agent. Un object_id NULL signifie qu'il faut utiliser la racine de l'arbre SNMP et tous les objets sous cet arbre seront retournés. Si object_id est spécifié, tous les objets SNMP situés sous cet objet seront retournés.

La fonction ci-dessous va lire tous les objets de l'agent SNMP qui fonctionne sur l'hôte local. Il est alors possible de les passer en revue avec une boucle : l'existence de snmpwalkoid() et snmpwalk() est une question d'évolution. Ces deux fonctions sont fournies pour des raisons de compatbilité ascendante.

Exemple 1. Lire tous les objets avec snmpwalkoid()

<?php
  $a = snmpwalkoid("127.0.0.1", "public", "");
?>

La fonction ci-dessous va lire tous les objets de l'agent SNMP qui fonctionne sur l'hôte local. Il est alors possible de les passer en revue avec une boucle :

Exemple 2. Lire tous les objet avec snmpwalkoid() (2)

<?php
  for (reset($a); $i = key($a); next($a)) {
    echo "$i: $a[$i]<br>\n";
  }
?>

Précédent | Sommaire | Suivant
snmpwalk | Niveau supérieur | Socket


Socket

Manuel PHP
Précédent Suivant

C. Socket

Introduction

L'extension socket implémente une interface bas niveau avec les fonctions de communication par socket, basées sur les sockets BSD si populaires, et fournit la possibilité de fonctionner aussi bien sous forme de client que de serveur.

Pour une interface socket cliente plus générique, voyez fsockopen() et pfsockopen().

Lorsque vous utilisez ces fonctions, il est important de vous rappeler que si de nombreuses fonctions ont le même nom que leur alter ego en langage C, elles ont souvent des déclarations différentes. Lisez attentivement les descriptions pour éviter des confusions.

Cela dit, ceux qui ne sont pas familiers avec la programmation par socket peuvent toujours trouver beaucoup de documentation dans les pages de manuel Unix appropriées, et il y a une grande quantité d'introductions en langage C sur le web, qui peuvent être facilement réutilisés, avec des adaptations mineures. UNIX Socket FAQ est un bon début.

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Les fonctions de socket décrites ici font partie d'une extension PHP qui doit être activée lors de la compilation en utilisant l'option --enable-sockets, avec la commande configure.

Note : Le support des adresses IPv6 a été ajouté en PHP 5.0.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

AF_UNIX (entier)

AF_INET (entier)

SOCK_STREAM (entier)

SOCK_DGRAM (entier)

SOCK_RAW (entier)

SOCK_SEQPACKET (entier)

SOCK_RDM (entier)

MSG_OOB (entier)

MSG_WAITALL (entier)

MSG_PEEK (entier)

MSG_DONTROUTE (entier)

SO_DEBUG (entier)

SO_REUSEADDR (entier)

SO_KEEPALIVE (entier)

SO_DONTROUTE (entier)

SO_LINGER (entier)

SO_BROADCAST (entier)

SO_OOBINLINE (entier)

SO_SNDBUF (entier)

SO_RCVBUF (entier)

SO_SNDLOWAT (entier)

SO_RCVLOWAT (entier)

SO_SNDTIMEO (entier)

SO_RCVTIMEO (entier)

SO_TYPE (entier)

SO_ERROR (entier)

SOL_SOCKET (entier)

PHP_NORMAL_READ (entier)

PHP_BINARY_READ (entier)

SOL_TCP (entier)

SOL_UDP (entier)

Socket Errors

L'extension socket a été écrite pour fournir une interface utilisable avec les puissantes sockets fournies par BSD. Un soin particulier a été apporté pour que les fonctions soient aussi efficaces sous Unix que sous Windows32. Presque toutes les fonctions de sockets peuvent échouer dans certaines circonstances, et émettent ainsi un message d'alerte E_WARNING décrivant l'erreur. Parfois, cela ne se fait pas selon les souhaits du développeur. Par exemple, la fonction socket_read() peut tout à coup émettre un message E_WARNING car la connexion a été inopinément interrompu. Il est commun de supprimer les erreurs avec l'opérateur @ et de traiter les erreurs avec la fonction socket_last_error(), au niveau application. Vous pouvez appeler socket_strerror() avec le code d'erreur pour connaître le message d'erreur, humainement lisible. Reportez vous à leur description pour plus de détails.

Note : Les messages E_WARNING généré par l'extension socket sont en anglais, mais le message d'erreur s'affichera en fonction de la configuration locale (LC_MESSAGES):
Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet

Exemples

Exemple 1. Exemple de socket : serveur TCP/IP simple

Cet exemple montre comment créer un serveur simple. Changez les variables address et port pour vous adapter à votre configuration, et exécutez le. Vous pourrez alors vous connecter au serveur avec une commande comme ceci : telnet 192.168.1.53 10000 (en supposant que l'adresse et le port correspondent à votre configuration). Tout ce que vous saisissez après cela sera envoyé au serveur, et affiché en retour. Pour vous déconnecter, tapez 'quit'.
#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);

/* Autorise l'ex&eacute;cution infinie du script, en attente de connexion. */
set_time_limit(0);

/* Active le vidage implicite des buffers de sortie, pour que nous
 * puissions vois ce que nous lisons au fur et a mesure. */
ob_implicit_flush();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SQL_TCP)) < 0) {
    echo "socket_create() a &eacute;chou&eacute; : raison : " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
    echo "socket_bind() a &eacute;chou&eacute; : raison : " . socket_strerror ($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
    echo "socket_listen() a &eacute;chou&eacute; : raison : " . socket_strerror ($ret) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) < 0) {
        echo "socket_accept() a &eacute;chou&eacute; : raison : " . socket_strerror ($msgsock) . "\n";
        break;
    }
    /* Send instructions. */
    $msg = "\Bienvenue sur le serveur de test PHP.\n" .
        "Pour quitter, tapez 'quit'. Pour &eacute;teindre le serveur, tapez 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (FALSE === ($buf = socket_read($msgsock, 2048))) {
            echo "socket_read() a &eacute;chou&eacute; : raison : " . socket_strerror ($ret) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close ($msgsock);
            break 2;
        }
        $talkback = "PHP: You said '$buf'.\n";
        socket_write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";
    } while (true);
    socket_close ($msgsock);
} while (true);

socket_close ($sock);
?>

Exemple 2. Exemple avec les sockets : Client TCP/IP simple

Ce exemple illustre un client HTTP simple. Il se connecte simplement à une page, envoie une requête HEAD, affiche le résultat, et se termine.

<?php
error_reporting(E_ALL);

echo "<h2>Connexion TCP/IP</h2>\n";

/* Lit le port du service WWW. */
$service_port = getservbyname('www', 'tcp');

/* Lit l'adresse IP du serveur de destination */
$address = gethostbyname('www.exemple.com');

/* Cree une socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SQL_TCP);
if ($socket < 0) {
    echo "socket_create() a &eacute;chou&eacute; : raison :  " . socket_strerror ($socket) . "\n";
} else {
    echo "OK.\n";
}

echo "Essai de connexion &agrave; '$address' sur le port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
    echo "socket_connect() a &eacute;chou&eacute; : raison : ($result) " . socket_strerror($result) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.0\r\n\r\n";
$out = '';

echo "Envoi de la requ&ecirc;te HTTP HEAD...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Lire la r&eacute;ponse : \n\n";
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

echo "Fermeture de la socket...";
socket_close($socket);
echo "OK.\n\n";
?>

Table des matières
socket_accept -- Accepte une connexion sur une socket
socket_bind -- Lie un nom à une socket
socket_clear_error -- Efface toutes les erreurs précédemment générées par une socket
socket_close -- Ferme une socket
socket_connect -- Crée une connexion sur une socket
socket_create_listen -- Ouvre une socket sur un port pour accepter les connexions
socket_create_pair -- Crée une paire de socket identiques et les stocke dans fds.
socket_create -- Crée une socket (point de communication)
socket_get_option -- Lit les options de socket
socket_getpeername -- Interroge l'autre extrémité de la communication
socket_getsockname -- Interroge la socket locale
socket_iovec_add -- Ajoute un nouveau vecteur dans le tableau
socket_iovec_alloc -- Construit un 'struct iovec'
socket_iovec_delete -- Efface un vecteur
socket_iovec_fetch -- Lit les données du vecteur specifié par iovec_id[iovec_position]
socket_iovec_free -- Détruit le vecteur iovec specifié par iovec_id
socket_iovec_set -- Modifie les données du vecteur iovec_id[iovec_position]
socket_last_error -- Lit la dernière erreur générée par une socket
socket_listen -- Attend une connexion (listen) sur une socket
socket_read -- Lit des données d'une socket
socket_readv -- Lit des données dans un fd, en utilisant le tableau scatter-gather définit par iovec_id
socket_recv -- Reçoit des données d'une socket connectée
socket_recvfrom -- Reçoit des données d'une socket, connectée ou pas
socket_recvmsg -- Reçoit des messages sur uen socket, qu'elle soit orientée connexion ou pas
socket_select -- Exécute l'appel système select() un tableau de sockets avec une durée d'expiration
socket_send -- Envoie des données à une socket connectée
socket_sendmsg -- Envoie un message à une socket, qu'elle soit orientée connexion ou pas
socket_sendto -- Envoie une message à une socket, qu'elle soit connectée ou pas
socket_set_block -- Met la socket en mode bloquant
socket_set_nonblock -- Sélectionne le mode non bloquant d'un descripteur de fichier
socket_set_option -- Modifie les options de socket
socket_shutdown -- Eteind une socket en lecture et/ou écriture
socket_strerror -- Retourne une chaîne décrivant un message d'erreur
socket_write -- Ecrit dans une socket
socket_writev -- Ecrit des données dans un descripteur de fichier, fd, en utilisant le tableau scatter-gather définie par iovec_id

Précédent | Sommaire | Suivant
snmpwalkoid | Niveau supérieur | socket_accept


socket_accept

(PHP 4 >= 4.1.0)

socket_accept -- Accepte une connexion sur une socket

Description

resource socket_accept ( resource socket)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Une fois que la socket socket a été créée avec la fonction socket_create(), liée à un nom avec la fonction socket_bind(), et mise en attente de connexion avec la fonction socket_listen(), socket_accept() va accepter les connexions sur cette socket. Une fois qu'une connexion est faite, une nouvelle ressource de socket est retournée. Elle peut etre utilisée pour les communications. S'il y a plusieurs connexions en attente, la première sera utilisée. S'il n'y a pas de connexion en attente, socket_accept() se bloquera jusqu'à ce qu'une connexion se présente. Si socket a été rendue non-bloquante, grâce à socket_set_blocking() ou socket_set_nonblock(), FALSE sera retourné.

La ressource de socket retournée par socket_accept() ne doit pas être utilisée pour accepter de nouvelles connexions. La socket originale socket, qui est en attente, reste ouverte et peut être réutilisée.

socket_listen() retourne une nouvelle ressource de socket en cas de succès ou FALSE en cas d'erreur. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Voir aussi
socket_bind(),
socket_connect(),
socket_listen(),
socket_create() et
socket_strerror().

Précédent | Sommaire | Suivant
Socket | Niveau supérieur | socket_bind


socket_bind

(PHP 4 >= 4.1.0)

socket_bind -- Lie un nom à une socket

Description

bool socket_bind ( resource socket, string address [, int port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_bind() lie le nom donné par address à la socket décrite par socket, qui doit être une ressource de socket valide, créée par socket_create().

Le paramètre d'adresse address peut être soit une adresse IP numérique (i.e. 127.0.0.1), si la socket est de la famille AF_INET; ou bien le chemin d'une socket de domaine Unix, si la socket est de la famille AF_UNIX.

Le paramètre port n'est utilisé que lors de la connexion à une socket de type AF_INET, et désigne le port sur l'hôte distant, sur lequel une connexion doit être faite.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Voir aussi
socket_connect(),
socket_listen(),
socket_create(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_accept | Niveau supérieur | socket_clear_error


socket_clear_error

(PHP 4 >= 4.2.0)

socket_clear_error -- Efface toutes les erreurs précédemment générées par une socket

Description

void socket_clear_error ( [resource socket])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_clear_error() efface tous les codes d'erreurs qui ont été enregistrés pour la socket socket, ou bien pour la socket générale.

socket_clear_error() permet de remettre à zéro les codes d'erreurs d'une socket ou de la socket globale. Cela peut être utile pour détecter l'avénement d'une erreur durant une partie de l'applcation.

Voir aussi socket_last_error() et socket_strerror().

Précédent | Sommaire | Suivant
socket_bind | Niveau supérieur | socket_close


socket_close

(PHP 4 >= 4.1.0)

socket_close -- Ferme une socket

Description

void socket_close ( resource socket)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_close() ferme la socket socket, et détruit toutes les ressources qui y sont liées.

Note : socket_close() ne peut pas être utilisée sur les ressources de fichiers créées par fopen(), popen(), fsockopen(), ou psockopen(); cette fonction est destinée à traiter les sockets créées par les fonctions socket_create() ou socket_accept().

Voir aussi
socket_bind(),
socket_listen(),
socket_create() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_clear_error | Niveau supérieur | socket_connect


socket_connect

(PHP 4 >= 4.1.0)

socket_connect -- Crée une connexion sur une socket

Description

bool socket_connect ( resource socket, string address [, int port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_connect() créée une nouvelle connexion en utilisant la ressource socket socket, qui doit être une ressource de socket valide, créée par la fonction socket_create().

Le paramètre d'adresse address peut être soit une adresse IP numérique (i.e. 127.0.0.1), si la socket est de la famille AF_INET; ou bien le chemin d'une socket de domaine Unix, si la socket est de la famille AF_UNIX.

Le paramètre port n'est utilisé que lors de la connexion à une socket de type AF_INET, et désigne le port sur l'hôte distant, sur lequel une connexion doit être faite.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Voir aussi
socket_bind(),
socket_listen(),
socket_create(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_close | Niveau supérieur | socket_create_listen


socket_create_listen

(PHP 4 >= 4.1.0)

socket_create_listen -- Ouvre une socket sur un port pour accepter les connexions

Description

resource socket_create_listen ( int port [, int backlog])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_create_listen() est destinée à simplifier la création de nouvelles sockets destinées être mises en attente, et accepter de nouvelles connexions.

socket_create_listen() créée une nouvelle ressource de socket, de type AF_INET, mise en attente sur toutes les interfaces locales, pour le port port.

Le paramètre backlog définit la taille maximum de la queue de connexions en attente. SOMAXCONN peut être utilisée comme valeur pour le paramètre backlog. Reportez-vous à socket_listen() pour plus de détails.

socket_create_listen() retourne une nouvelle ressource de socket en cas de succès et FALSE en cas d'erreur.Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Note : Si vous voulez créer une socket qui n'écoute que certaines interfaces, vous devez utiliser socket_create(), socket_bind() et socket_listen().

Voir aussi
socket_create(),
socket_bind(),
socket_listen(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_connect | Niveau supérieur | socket_create_pair


socket_create_pair

(PHP 4 >= 4.1.0)

socket_create_pair -- Crée une paire de socket identiques et les stocke dans fds.

Description

bool socket_create_pair ( int domain, int type, int protocol, array &fd)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_create_listen | Niveau supérieur | socket_create


socket_create

(PHP 4 >= 4.1.0)

socket_create -- Crée une socket (point de communication)

Description

resource socket_create ( int domain, int type, int protocol)

socket_create() crée un point de communication (une socket) et retourne une ressource de socket.

Le paramètre domain sélectionne le domaine (famille de protocole) à utiliser pour les communications. Actuellement, AF_INET et AF_UNIX sont les valeurs possibles de ce paramètre. AF_INET est typiquement utilisé pour les communications Internet. AF_UNIX utilise des chemins systèmes pour identifier les sockets, et par conséquent, peut être uniquement utilisé pour les communications locales (mais elles seront aussi plus rapides).

Le paramètre type sélectionne le type de socket. Le type est représenté par les constantes suivantes : SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM ou SOCK_PACKET. Les deux types les plus courants sont SOCK_DGRAM pour le protocole UDP (connectionless) et SOCK_STREAM pour le protocole TCP.

protocol sélectionne le protocole qui peut être soit SOL_UDP, soit SOL_TCP.

socket_create() retourne une ressource de socket en cas de succès et FALSE sinon. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Pour plus d'informations sur l'utilisation de socket_create(), et sur les significations des différents paramètres, reportez-vous au manuel Unix sur les sockets (2).

Note : Si le paramètre domain ou type est donné, socket_create() utilisera par défaut les valeurs AF_INET et SOCK_STREAM, respectivement. De plus, elle générera un message d'aleret (E_WARNING).

Voir aussi
socket_accept(),
socket_bind(),
socket_connect(),
socket_listen(),
socket_last_error(), et
socket_strerror().

Précédent | Sommaire | Suivant
socket_create_pair | Niveau supérieur | socket_get_option


socket_get_option

(PHP 4 >= 4.3.0)

socket_get_option -- Lit les options de socket

Description

mixed socket_get_option ( resource socket, int level, int optname)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction était appelée socket_getopt() avant PHP 4.3.0.

Précédent | Sommaire | Suivant
socket_create | Niveau supérieur | socket_getpeername


socket_getpeername

(PHP 4 >= 4.1.0)

socket_getpeername -- Interroge l'autre extrémité de la communication

Description

bool socket_getpeername ( resource socket, string &addr [, int &port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Si la socket socket est de type AF_INET, socket_getpeername() retournera l'adresse IP de l'hôte, en notation numérique (e.g. 127.0.0.1) dans le paramètre address, et si le paramètre optionnel port est présent, elle retournera aussi le port de la communication établie.

Si la socket socket est de type AF_UNIX, socket_getpeername() retournera le chemin sur le système de fichiers (e.g. /var/run/daemon.sock) dans le paramètre address.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. socket_getpeername() peut aussi retourner FALSE si le type de la socket n'est ni AF_INET ni AF_UNIX, auquel cas le dernier code d'erreur socket n'est pas modifié.

Voir aussi
socket_getsockname(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_get_option | Niveau supérieur | socket_getsockname


socket_getsockname

(PHP 4 >= 4.1.0)

socket_getsockname -- Interroge la socket locale

Description

bool socket_getsockname ( resource socket, string &addr [, int &port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Si la socket socket est de type AF_INET, socket_getsockname() retournera l'adresse IP locale, en notation numérique (e.g. 127.0.0.1) dans le paramètre address, et si le paramètre optionnel port est présent, elle retournera aussi le port de la communication établie.

Si la socket socket est de type AF_UNIX, socket_getsockname() retournera le chemin sur le système de fichiers (e.g. /var/run/daemon.sock) dans le paramètre address.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. socket_getsockname() peut aussi retourner FALSE si le type de la socket n'est ni AF_INET ni AF_UNIX, auquel cas le dernier code d'erreur socket n'est pas modifié.

Voir aussi
socket_getpeername(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_getpeername | Niveau supérieur | socket_iovec_add


socket_iovec_add

(PHP 4 >= 4.1.0)

socket_iovec_add -- Ajoute un nouveau vecteur dans le tableau

Description

bool socket_iovec_add ( resource iovec, int iov_len)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_getsockname | Niveau supérieur | socket_iovec_alloc


socket_iovec_alloc

(PHP 4 >= 4.1.0)

socket_iovec_alloc -- Construit un 'struct iovec'

Description

resource socket_iovec_alloc ( int num_vectors [, int ])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_iovec_add | Niveau supérieur | socket_iovec_delete


socket_iovec_delete

(PHP 4 >= 4.1.0)

socket_iovec_delete -- Efface un vecteur

Description

bool socket_iovec_delete ( resource iovec, int iov_pos)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_iovec_alloc | Niveau supérieur | socket_iovec_fetch


socket_iovec_fetch

(PHP 4 >= 4.1.0)

socket_iovec_fetch -- Lit les données du vecteur specifié par iovec_id[iovec_position]

Description

string socket_iovec_fetch ( resource iovec, int iovec_position)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_iovec_delete | Niveau supérieur | socket_iovec_free


socket_iovec_free

(PHP 4 >= 4.1.0)

socket_iovec_free -- Détruit le vecteur iovec specifié par iovec_id

Description

bool socket_iovec_free ( resource iovec)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_iovec_fetch | Niveau supérieur | socket_iovec_set


socket_iovec_set

(PHP 4 >= 4.1.0)

socket_iovec_set -- Modifie les données du vecteur iovec_id[iovec_position]

Description

bool socket_iovec_set ( resource iovec, int iovec_position, string new_val)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_iovec_free | Niveau supérieur | socket_last_error


socket_last_error

(PHP 4 >= 4.1.0)

socket_last_error -- Lit la dernière erreur générée par une socket

Description

int socket_last_error ( [resource socket])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_last_error() retourne un code d'erreur socket.

Si un paramètre est passé à cette fonction, la dernière erreur qui aura été générée par cette socket sera retournée. Si la ressource de socket est omise, le dernier code d'erreur généré est retourné. Ce comportement est particulièrement pratique pour des fonctions comme socket_create() qui ne retourne pas de socket en cas d'echec, et socket_select() qui peut échouer sans raison directement liée à la socket. Le code d'erreur peut être transmis à socket_strerror() qui retourne un message d'erreur lisible.
<?php
  if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
    die("Impossible de cr&eacute;er la socket, le code d'erreur est : " . socket_last_error() .
        ", le message d'erreur est : " . socket_strerror(socket_last_error()));
  }
?>

Note : socket_last_error() n'efface pas le code d'erreur. Utilisez plutôt la fonction socket_clear_error() pour cela.

Précédent | Sommaire | Suivant
socket_iovec_set | Niveau supérieur | socket_listen


socket_listen

(PHP 4 >= 4.1.0)

socket_listen -- Attend une connexion (listen) sur une socket

Description

bool socket_listen ( resource socket [, int backlog])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Une fois que la socket socket a été créée avec la fonction socket_create() et liée à un nom avec la fonction socket_bind(), elle peut être mise en attente de connexion entrantes.

Un nombre maximum de backlog connexions seront mises en attente de traitement. Si une demande de connexion arrive et que la queue est pleine, le client recevra une erreur indiquant ECONNREFUSED, ou, si le protocole de support accepte les retransmissions, la requête sera ignorée pour que les tentatives ultérieures finissent par réussir.

Note : Le nombre maximum passé dans le paramètre backlog dépend essentiellement de la plate forme de support. Sur Linux, c'est tronqué automatiquement à SOMAXCONN. Sous Windows32, si la constante SOMAXCONN est passée, le service responsable des sockets choisira une valeur maximum raisonnable. Il n'y a pas de méthode pour deviner la valeur réellement choisie.

socket_listen() ne fonctionne qu'avec des sockets de type SOCK_STREAM et SOCK_SEQPACKET.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Voir aussi
socket_accept(),
socket_bind(),
socket_connect(),
socket_create() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_last_error | Niveau supérieur | socket_read


socket_read

(PHP 4 >= 4.1.0)

socket_read -- Lit des données d'une socket

Description

string socket_read ( resource socket, int length [, int type])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_read() lit des données dans la socket socket, qui doit être une ressource créée par socket_accept(). Elle lit un maximum de length octets. Sinon, vous pouvez utiliser \r, \n or \0 pour terminer la lecture (suivant la valeur choisie pour type, voir ci-dessous).

socket_read() retourne les données sous forme de chaîne en cas de succès, et FALSE sinon. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Note : socket_read() peut retourner une chaîne de longueur zéro, qui indique la fin de la communication (l'autre socket a fermé la communication).

Le paramètre optinnel type peut prendre l'une des valeurs constantes suivantes :

  • PHP_BINARY_READ - utilise la fonction système read(). Capable de lire les données binaires. (valeur par défaut en PHP >= 4.1.0)

  • PHP_NORMAL_READ - la lecture s'arrête aux \n et \r. (valeur par défaut en PHP <= 4.0.6)

Voir aussi
socket_accept(),
socket_bind(),
socket_connect(),
socket_listen(),
socket_last_error(),
socket_strerror() et
socket_write().

Précédent | Sommaire | Suivant
socket_listen | Niveau supérieur | socket_readv


socket_readv

(PHP 4 >= 4.1.0)

socket_readv -- Lit des données dans un fd, en utilisant le tableau scatter-gather définit par iovec_id

Description

bool socket_readv ( resource socket, resource iovec_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_read | Niveau supérieur | socket_recv


socket_recv

(PHP 4 >= 4.1.0)

socket_recv -- Reçoit des données d'une socket connectée

Description

int socket_recv ( resource socket, string &buf, int len, int flags)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_readv | Niveau supérieur | socket_recvfrom


socket_recvfrom

(PHP 4 >= 4.1.0)

socket_recvfrom -- Reçoit des données d'une socket, connectée ou pas

Description

int socket_recvfrom ( resource socket, string &buf, int len, int flags, string &name [, int &port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_recv | Niveau supérieur | socket_recvmsg


socket_recvmsg

(PHP 4 >= 4.1.0)

socket_recvmsg -- Reçoit des messages sur uen socket, qu'elle soit orientée connexion ou pas

Description

bool socket_recvmsg ( resource socket, resource iovec, array &control, int &controllen, int &flags, string &addr [, int &port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_recvfrom | Niveau supérieur | socket_select


socket_select

(PHP 4 >= 4.1.0)

socket_select -- Exécute l'appel système select() un tableau de sockets avec une durée d'expiration

Description

int socket_select ( array &read, array &write, array &except, int tv_sec [, int tv_usec])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_select() accepte un tableau de sockets et attend qu'elles changent de statut. Ceux qui sont familiers avec les sockets de BSD reconnaitront dans ces tableaux de sockets les sets de file descriptor. Trois tableaux indépendants de ressources de sockets sont surveillés.

Les sockets listées dans le paramètre read seront surveillées en lecture : pour savoir quand elles sont disponibles en lecture (plus précisément, si une lecture ne va pas bloquer, en particulier, une ressource de socket a déjà atteint une fin de fichier, auquel cas socket_read() retournera une chaîne de taille zéro).

Les sockets listées dans write seront surveillées en écriture : pour voir si une écriture ne va pas bloquer.

Les sockets listées dans except seront surveillées pour leurs exceptions.

Avertissement

En sortie de fonction, les tableaux sont modifiées pour indiquer quelles sockets ont changés d'états.

Vous n'avez pas besoin de passer tous les tableaux à socket_select(). Vous pouvez les omettre, ou utiliser un tableau vide, ou encore NULL à la place. N'oubliez pas que ces tableaux sont passés par référence et seront modifiés par socket_select().

Exemple 1. Exemple avec socket_select()

<?php
  /* Pr&eacute;pare le tableau read (socket surveill&eacute;es en lecture) */
  $read = array($socket1, $socket2);

  if (false === ($num_changed_sockets = socket_select($read, $write = NULL, $except = NULL, 0))) {
    /* Gestion des erreurs */
  else if ($num_changed_sockets > 0) {
    /* Au moins une des sockets a &eacute;t&eacute; modifi&eacute; */
  }
?>

Note : A cause d'une limitation du Zend Engine actuel, il n'est pas possible de passer une constante comme NULL directement comme paramètre à cette fonction, qui attend une valeur par référence. A la place, utilisez un tableau temporaire ou une expression dont le membre de gauche est une variable temporaire :

Exemple 2. Passer NULL à socket_select()

<?php
  socket_select($r, $w, $e = NULL, 0);
?>

Les paramètres tv_sec and tv_usec ensemble forment le paramètre timeout (durée de vie). Le timeout est la durée maximale de temps avant que socket_select() ne se termine. tv_sec peut être zéro , ce qui fera que socket_select() retournera immédiatement. C'est très pratique pour faire du polling (sondage). Si tv_sec est NULL (pas de timeout), socket_select() peut se bloquer indéfiniment.

En cas de succès, socket_select() retourne le nombre de sockets contenus dans les tableaux modifiées. Ce nombre peut être zéro si la durée maximale d'attente a été atteinte. En cas d'erreur, FALSE est retourné. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Note : Assurez vous bien d'utiliser l'opérateur === lorsque vous vérifiez les erreurs. Etant donnée que socket_select() peut retourner 0, la comparaison avec FALSE via == donnerait TRUE :

Exemple 3. Analyser le résultat de socket_select()

<?php
  if (false === socket_select($r, $w, $e = NULL, 0)) {
    echo "socket_select() a &eacute;chou&eacute;. Raison : " .
          socket_strerror(socket_last_error()) . "\n";
  }
?>

Note : Méfiez vous des implémentations de sockets, qui doivent être manipulées avec délicatesse. Quelques règles de base :

  • Vous devez toujours essayer d'utiliser socket_select() sans timeout. Votre programme ne devrait avoir rien à faire si il n'y a pas de données disponibles. Le code qui dépends d'un timeout est généralement peut portable, et difficile à déboguer.

  • Une socket ne doit pas être ajoutée à l'un des tableaux en paramètre, si vous ne souhaitez pas vérifier le résultat après l'appel à socket_select(). Après le retour de socket_select(), toutes les sockets dans tous les tableaux doivent être vérifiées. Toute socket qui est disponible en écriture ou en lecture doit être utilisée pour écrire ou lire.

  • Si vous écrivez ou lisez avec une socket retournée dans un tableau, soyez conscient qu'elles ne pourront pas écrire ou lire toutes les données que vous demandez. Soyez prêts à ne pouvoir lire qu'un seul octet.

  • Il est commun à la plupart des implémentations de socket que la seule exception interceptée par les sockets dans le tableau except est le cas des données hors limites, reçues par une socket.

Voir aussi
socket_read(),
socket_write(),
socket_last_error() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_recvmsg | Niveau supérieur | socket_send


socket_send

(PHP 4 >= 4.1.0)

socket_send -- Envoie des données à une socket connectée

Description

int socket_send ( resource socket, string buf, int len, int flags)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

La fonction socket_send() envoie len octets à la socket socket depuis le buffer buf.

Le paramètre flags peut être la combinaison des valeurs suivantes :

Tableau 1. Valeurs possibles pour flags

0x1 | Traite les données OOB (out-of-band).
0x2 | Traite le message entrant (peek).
0x4 | Ignore le routage, utilise une interface directe.
0x8 | Les données complètent l'enregistrement.
0x100 | Les données complètent la transaction.

Voir aussi socket_sendmsg() et socket_sendto().

Précédent | Sommaire | Suivant
socket_select | Niveau supérieur | socket_sendmsg


socket_sendmsg

(PHP 4 >= 4.1.0)

socket_sendmsg -- Envoie un message à une socket, qu'elle soit orientée connexion ou pas

Description

bool socket_sendmsg ( resource socket, resource iovec, int flags, string addr [, int port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_send | Niveau supérieur | socket_sendto


socket_sendto

(PHP 4 >= 4.1.0)

socket_sendto -- Envoie une message à une socket, qu'elle soit connectée ou pas

Description

int socket_sendto ( resource socket, string buf, int len, int flags, string addr [, int port])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_sendto() envoie len octets issus du buffer buf via la socket socket, vers le port port, à l'adresse addr

Le paramètre flags peut prendre l'une des valeurs suivantes :

Tableau 1. Valeurs possibles pour flags

0x1 | Traite les données OOB (out-of-band).
0x2 | Traite le message entrant (peek).
0x4 | Ignore le routage, utilise une interface directe.
0x8 | Les données complètent l'enregistrement.
0x100 | Les données complètent la transaction.

Exemple 1. Exemple avec socket_sendto()

<?php
    $sh = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    if (socket_bind($sh, '127.0.0.1', 4242)) {
        echo "Socket connect&eacute;e correctement";
    }
    $buf = 'Test Message';
    $len = strlen($buf);
    if (socket_sendto($sh, $buf, $len, 0x100, '192.168.0.2', 4242) !== FALSE) {
        echo "Message envoy&eacute; correctement";
    }
    socket_close($sh);
?>

Voir aussi socket_send() et socket_sendmsg().

Précédent | Sommaire | Suivant
socket_sendmsg | Niveau supérieur | socket_set_block


socket_set_block

(PHP 4 >= 4.2.0)

socket_set_block -- Met la socket en mode bloquant

Description

bool socket_set_block ( resource socket)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi socket_set_nonblock() et socket_set_option()

Précédent | Sommaire | Suivant
socket_sendto | Niveau supérieur | socket_set_nonblock


socket_set_nonblock

(PHP 4 >= 4.1.0)

socket_set_nonblock -- Sélectionne le mode non bloquant d'un descripteur de fichier

Description

bool socket_set_nonblock ( resource socket)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_set_block | Niveau supérieur | socket_set_option


socket_set_option

(PHP 4 >= 4.3.0)

socket_set_option -- Modifie les options de socket

Description

bool socket_set_option ( resource socket, int level, int optname, mixed optval)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction était appelée socket_setopt() avant PHP 4.3.0.

Précédent | Sommaire | Suivant
socket_set_nonblock | Niveau supérieur | socket_shutdown


socket_shutdown

(PHP 4 >= 4.1.0)

socket_shutdown -- Eteind une socket en lecture et/ou écriture

Description

bool socket_shutdown ( resource socket [, int how])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_shutdown() vous permet d'empêcher les données entrantes ou sortantes ou les deux (par défaut), d'être émise via la socket socket

La valeur de how peut être l'une des suivantes :

Tableau 1. Valeurs possibles pour how

0 | Empêche la lecture de la socket
1 | Empêche l'écriture de la socket
2 | Empêche l'écriture et la lecture de la socket

Précédent | Sommaire | Suivant
socket_set_option | Niveau supérieur | socket_strerror


socket_strerror

(PHP 4 >= 4.1.0)

socket_strerror -- Retourne une chaîne décrivant un message d'erreur

Description

string socket_strerror ( int errno)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_strerror() prend un code d'erreur comme paramètre errno. Cette valeur est souvent retournée par la fonction socket_last_error(). La fonction retourne le message d'erreur correspondant. Cela rend plus facile la compréhension des problèmes survenus. Par exemple, au lieu d'avoir à rechercher un fichier système dans lequel il y a l'explication de '-111', vous avez juste à le passer à socket_strerror(), qui vous dira ce qui c'est passé.

Exemple 1. Exemple avec socket_strerror()

<?php
if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, SQL_TCP))) {
   echo "socket_create() a &eacute;chou&eacute; : raison : " . socket_strerror(socket_last_error()) . "\n";
}

if (false == (@socket_bind($socket, '127.0.0.1', 80))) {
   echo "socket_bind() a &eacute;chou&eacute; : raison : " . socket_strerror(socket_last_error($socket)) . "\n";
}
?>

L'affichage attendu pour l'exemple du dessus (en supposant que vous essayer d'exécuter le script sans les droits de root) :
socket_bind() a échoué : raison : Permission denied

Voir aussi
socket_accept(),
socket_bind(),
socket_connect(),
socket_listen() et
socket_create().

Précédent | Sommaire | Suivant
socket_shutdown | Niveau supérieur | socket_write


socket_write

(PHP 4 >= 4.1.0)

socket_write -- Ecrit dans une socket

Description

int socket_write ( resource socket, string buffer [, int length])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

socket_write() écrit dans la socket socket les données du buffer buffer.

Le paramètre optionnel length peut spécifier explicitement la taille des données qui doivent être écrites. Si cette longueur est plus grande que la taille du buffer, elle sera ramenée automatiquemetn à la taille du buffer lui-même.

socket_write() retourne le nombre d'octets qui ont pus êter écrits dans la socket, ou bien FALSE en cas d'erreur. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Note : socket_write() n'écrit pas nécessaire tous les octets du buffer fourni. Il est valide que, suivant certaines configuration de buffer réseau, que seulement une certaine quantité de données, même un octets, soit écrit, même si votre buffer est plus grand. Vous devez alors vous assurer que vous n'avez pas oublié de transmettre le reste de vos données.

Note : Il est parfaitement valide pour socket_write() de retourner zéro, ce qui signifie qu'aucun octet n'a été écrit. Soyez bien sûr d'utiliser l'opérateur === pour comparer le retour de la fonction avec FALSE, et détecter un cas d'erreur.

Voir aussi
socket_accept(),
socket_bind(),
socket_connect(),
socket_listen(),
socket_read() et
socket_strerror().

Précédent | Sommaire | Suivant
socket_strerror | Niveau supérieur | socket_writev


socket_writev

(PHP 4 >= 4.1.0)

socket_writev -- Ecrit des données dans un descripteur de fichier, fd, en utilisant le tableau scatter-gather définie par iovec_id

Description

bool socket_writev ( resource socket, resource iovec_id)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
socket_write | Niveau supérieur | Flux


Flux

Manuel PHP
Précédent Suivant

CI. Flux

Introduction

Les flux ("streams" en anglais) ont été introduits en PHP 4.3.0 comme méthode de généralisation des fichiers, sockets, connexions réseau, données compressées et autres opérations du même type, qui partagent des opérations communes. Dans sa définition la plus simple, un flux est une ressource qui présente des capacités de flux : c'est à dire que ces objets peuvent être lus ou recevoir des écritures de manière linéaire, et dispose aussi de moyen d'accèder à des positions arbitraires dans le flux.

Un gestionnaire (dit wrapper en anglais), est une fonction qui indique comment le flux se comporte spécifiquement. C'est le cas du gestionnaire http, qui sait comment traduire une URL en une requête sur un serveur distant. Il existe de nombreux gestionnaires intégré à PHP par défaut (voir Annexe I), et de plus, des gestionnaires spécifiques peuvent être ajouté dans les scripts PHP avec la fonction stream_register_wrapper(), ou bien directement par une autre extension, en utilisant l'API C de Chapitre 43. Grâce à la souplesse des gestionnaires qui peuvent être ajoutés à PHP, il n'y a pas de limites aux possibilités offertes. Pour connaître la liste des gestionnaires actuellement enregistrés, utilisez la fonction stream_get_wrappers().

Filtres de flux

Un filtre est une fonction finale qui effectue des opérations sur les données qui sont lues ou écrites dans un flux. Un nombre arbitraire de filtre peuvent être ajoutés sur un flux. Des filtres personnalisés peuvent aussi être ajoutés avec la fonction stream_register_filter(), ou bien dans une extension avec l'API C de Chapitre 43. Pour connaître la liste des gestionnaires actuellement enregistrés, utilisez la fonction stream_get_filters().

Un flux est identifié dans la forme protocole://serveur

  • protocole(chaîne de caractères) - Le nom du protocole utilisé. Par exemple : file, http, https, ftp, ftps, compress.zlib, compress.bz2, ssl, tls et php. Voyez Annexe I pour une liste de gestionnaires intégrés à PHP. Si aucun gestionnaire n'est spécifié, la fonction utilise par défaut file://).

  • serveur - Dépend du gestionnaire utilisé. Pour les flux liés au système de fichier, c'est généralement un chemin et un nom de fichier. Pour les objets réseau, c'est généralement un nom de serveur, et un chemin. Encore une fois, reportez vous à Annexe I pour une description des différents serveurs de gestionnaire.

Contextes de flux

Un contexte est un jeu de paramètres et d'options spécifiques à un gestionnaire qui modifie ou améliore le comportement d'un flux. Les contextes sont créés en utilisant la fonction stream_context_create() et peuvent être donné aux fonctions de créations de flux sur le système de fichier (i.e. fopen(), file(), file_get_contents(), etc...).

Les options peuvent être spécifiées en appelant stream_context_create(), ou plus tard, avec stream_context_set_option(). Une liste des options spécifiques à des gestionnaires est disponible dans la liste des gestionnaires intégrés (voyez Annexe I).

De plus, les paramètres peuvent être envoyés à un contexte en utilisant la fonction stream_context_set_params(). Actuellement, le seul paramètre de contexte supporté par PHP est notification. La valeur de ce paramètre doit être le nom d'une fonction qui sera appelée lorsqu'un événement survient pour un flux. La fonction d'alerte est appelé durant la reception de l'événement, et doit accepter 6 paramètres :

void my_notifier ( int notification_code, int severity, string message, int message_code, int bytes_transferred, int bytes_max)

notification_code et severity sont des valeurs numériques qui correspondent aux constantes STREAM_NOTIFY_* listées ci-dessous. Si un message descriptif est disponible dans un flux, les paramètre message et message_code en seront équipé. La signification de ces valeurs est dépendante du gestionnaire. bytes_transferred et bytes_max seront fournies lorsque possible.

Installation

Les flux font parti de PHP depuis la version 4.3.0. Aucune étape supplémentaire n'est requise pour les activer.

Classes Stream

Des gestionnaires personnalisés peuvent être enregistrés via la fonction stream_register_wrapper(), en utilisant la définition de classe décrite dans ce manuel.

La classe php_user_filter est prédéfinie et est une classe abstraite à utiliser avec les filtres personnalisés. Voyez le manuel de la fonction stream_register_filter() pour plus de détails sur les implémentation de filtres utilisateurs.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Constante | Description
STREAM_FILTER_READ | Utilisée avec stream_filter_append() et stream_filter_prepend() pour indiquer que le filtre spécifié ne doit être appliqué qu'après la lecture.
STREAM_FILTER_WRITE | Utilisée avec stream_filter_append() et stream_filter_prepend() pour indiquer que le filtre spécifié ne doit être appliqué qu'après l' écriture.
STREAM_FILTER_ALL | Cette constante est équivalente à STREAM_FILTER_READ | STREAM_FILTER_WRITE
STREAM_USE_PATH | Option indiquant si stream a utilisé l'include path.
STREAM_REPORT_ERRORS | Option indiquant si le gestionnaire est responsable pour la levée des erreurs avec trigger_error() durant l'ouverture du flux. Si cette constante n'existe pas, vous ne devez pas émettre d'erreurs.

Erreurs de flux

Comme avec n'importe quel fichier ou socket, les opérations sur un flux peuvent échouer pour une grande variété de raisons (par exemple : impossible de se connecter au serveur distant, fichier introuvable, etc...). Un flux peut aussi échouer parceque le gestionnaire n'est pas configuré sur le système en cours. Voyez le tableau retourné par la fonction stream_get_wrappers() pour connaître la liste des gestionnaires configurés sur votre installation de PHP. Comme avec la plupart des fonctions internes de PHP, si une erreur survient, un message de type E_WARNING sera généré pour indiquer la nature de l'erreur.

Exemples

Exemple 1. Exemples avec file_get_contents()

<?php
// Lit un fichier local dans le dossier /home/bar
  $localfile = file_get_contents("/home/bar/foo.txt");

// Identique au precedent, mais utilise explicitement le gestionnaire FILE
  $localfile = file_get_contents("file:///home/bar/foo.txt");

// Lit un fichier distant sur le serveur www.exemple.com avec le protocole HTTP
  $httpfile  = file_get_contents("http://www.exemple.com/foo.txt");

// Lit le meme fichier sur le serveur www.exemple.com avec le protocole HTTPS
  $httpsfile = file_get_contents("https://www.exemple.com/foo.txt");

// Lit un fichier distant sur le serveur ftp.exemple.com en utilisant le protocole FTP
  $ftpfile   = file_get_contents("ftp://user:pass@ftp.example.com/foo.txt");

// Lit un fichier distant sur le serveur ftp.exemple.com en utilisant le protocole FTPS
  $ftpsfile  = file_get_contents("ftps://user:pass@ftp.example.com/foo.txt");
?>

Exemple 2. Envoie d'une requête de type POST sur une serveur sécurisé

<?php
/* Envoi d'une requ&ecirc;te POST sur le serveur https://secure.example.com/form_action.php
 * Inclusion des variables "foo" et "bar"
 */

$sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)\n");

$data = "foo=" . urlencode("Valeur de Foo") . "&bar=" . urlencode("Valeur de Bar");

fputs($sock, "POST /form_action.php HTTP/1.0\r\n");
fputs($sock, "Host: secure.example.com\r\n");
fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($sock, "Content-length: " . strlen($data) . "\r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "\r\n");
fputs($sock, "$data\r\n");
fputs($sock, "\r\n");

$headers = "";
while ($str = trim(fgets($sock, 4096)))
  $headers .= "$str\n";

print "\n";

$body = "";
while (!feof($sock))
  $body .= fgets($sock, 4096);

fclose($sock);
?>

Exemple 3. Ecrire des données dans un fichier compressé

<?php
/* Cr&eacute;ation d'un fichier compress&eacute; contenant une cha&icirc;ne arbitraire
 * Le fichier peut etre lu en utilisant le gestionnaire compress.zlib
 * ou simplement decompresse; en ligne de commande avec 'gzip -d foo-bar.txt.gz'
 */
$fp = fopen("compress.zlib://foo-bar.txt.gz","w");
if (!$fp) die("Impossible de cr&eacute;er le fichier.");

fwrite($fp, "Ceci est un test.\n");

fclose($fp);
?>

Table des matières
stream_context_create -- Crée un contexte de flux
stream_context_get_options -- Lit la valeur des options pour un flux/wrapper/contexte
stream_context_set_option -- Configure une option pour un flux/wrapper/contexte
stream_context_set_params -- Configure les paramètres pour un flux/wrapper/contexte
stream_copy_to_stream -- Copie des données depuis un flux vers un autre
stream_filter_append -- Attache un filtre à un flux en fin de liste
stream_filter_prepend -- Attache un filtre à un flux en début de liste
stream_filter_register -- Enregistre un filtre de flux
stream_get_contents -- Lit le reste d'un flux dans une chaîne
stream_get_filters -- Liste les filtres enregistrés
stream_get_line -- Lit une ligne dans un flux
stream_get_meta_data -- Lit les en-têtes et données méta des flux
stream_get_transports -- Liste les gestionnaires de transports de sockets disponibles
stream_get_wrappers -- Liste les gestionnaires de flux
stream_register_wrapper -- Alias de stream_wrapper_register()
stream_select -- Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
stream_set_blocking -- Configure le mode bloquant d'un flux
stream_set_timeout -- Configure la durée d'expiration d'un flux
stream_set_write_buffer -- Configure la bufferisation de fichier pour un flux
stream_socket_accept -- Accepte une connexion sur une socket créée par stream_socket_server()
stream_socket_client -- Ouvre une connexion socket Internet ou Unix
stream_socket_get_name -- Lit le nom des sockets locale ou distante
stream_socket_recvfrom -- Receives data from a socket, connected or not
stream_socket_sendto -- Sends a message to a socket, whether it is connected or not
stream_socket_server -- Crée une socket serveur Unix ou Internet
stream_wrapper_register -- Enregistre une enveloppe URL, implémentée comme classe PHP

Précédent | Sommaire | Suivant
socket_writev | Niveau supérieur | stream_context_create


stream_context_create

(PHP 4 >= 4.3.0)

stream_context_create -- Crée un contexte de flux

Description

resource stream_context_create ( array options)

stream_context_create crée et retourne un contexte de flux, avec les paramètres fournis par options.

Le paramètre options doit être un tableau associatif, au format $arr['wrapper']['option'] = $value.

Exemple 1. Exemple avec stream_context_create()

<?php
  $opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
    )
  );

  $context = stream_context_create($opts);

/* Envoie une requ&ecirc;te HTTP &agrave; www.exemple.com
   avec des en-t&ecirc;tes suppl&eacute;mentaires  */
  $fp = fopen('http://www.exemple.com', 'r', false, $context);
  fpassthru($fp);
  fclose($fp);
?>

Voir aussi stream_context_set_params() et la liste des gestionnaires avec des options de contexte (Annexe I).

Précédent | Sommaire | Suivant
Flux | Niveau supérieur | stream_context_get_options


stream_context_get_options

(PHP 4 >= 4.3.0)

stream_context_get_options -- Lit la valeur des options pour un flux/wrapper/contexte

Description

array stream_context_get_options ( resource stream|context)

stream_context_get_options() retourne un tableau contenant la liste des options pour le flux ou le contexte stream|context.

Précédent | Sommaire | Suivant
stream_context_create | Niveau supérieur | stream_context_set_option


stream_context_set_option

(PHP 4 >= 4.3.0)

stream_context_set_option -- Configure une option pour un flux/wrapper/contexte

Description

bool stream_context_set_option ( resource context|stream, string wrapper, string option, mixed value)

stream_context_set_option() configure l'option option avec la nouvelle valeur value le flux ou le wrapper ou le contexte wrapper.

Précédent | Sommaire | Suivant
stream_context_get_options | Niveau supérieur | stream_context_set_params


stream_context_set_params

(PHP 4 >= 4.3.0)

stream_context_set_params -- Configure les paramètres pour un flux/wrapper/contexte

Description

bool stream_context_set_params ( resource stream|context, array params)

stream_context_set_params configure les paramètres pour un flux, un wrapper ou un contexte.

params doit être un tableau associatif avec la structure suivante : $params['nom_parametre'] = "valeur_parametre";.

Tableau 1. Paramètres

Paramètres | Usage
notification | Nom de la fonction utilisateur appelée dès qu'un flux génère une notification.

Précédent | Sommaire | Suivant
stream_context_set_option | Niveau supérieur | stream_copy_to_stream


stream_copy_to_stream

(PHP 5 CVS only)

stream_copy_to_stream -- Copie des données depuis un flux vers un autre

Description

int stream_copy_to_stream ( resource source, resource dest [, int maxlength])

stream_copy_to_stream() copie jusqu'à maxlength octets de données depuis la position courante du pointeur dans le flux source vers le paramètre dest. Si maxlength n'est pas spécifié, tout le reste du flux source sera copié. will be copied. stream_copy_to_stream() retourne le total d'octets copié.

Exemple 1. Exemple avec stream_copy_to_stream()

<?php
$src = fopen('http://www.exemple.com','r');
$dest1 = fopen('first1k.txt','w');
$dest2 = fopen('remainder.txt','w');

print stream_copy_to_stream($src, $dest1, 1024) . " octets copi&eacute;s vers first1k.txt\n";
print stream_copy_to_stream($src, $dest2) . " octets copi&eacute;s vers remainder.txt\n";

?>

Voir aussi copy().

Précédent | Sommaire | Suivant
stream_context_set_params | Niveau supérieur | stream_filter_append


stream_filter_append

(PHP 4 >= 4.3.0)

stream_filter_append -- Attache un filtre à un flux en fin de liste

Description

bool stream_filter_append ( resource stream, string filtername [, int read_write [, string params]])

stream_filter_append() ajoute le filtre filtername à la liste de filtres attachés au flux stream. Ce filtre sera ajoutés avec les paramètres spécifiés dans params à la fin de cette liste et sera donc appelé en dernier durant les opérations de flux. Pour ajouter un filtre au début de la liste, utilisez la fonction stream_filter_prepend().

Par défaut, stream_filter_prepend() va ajouter le filtre à la liste de filtre de lecture si le fichier a été ouvert en mode lecture (r et/ou +). Le filtre sera aussi attaché à la liste des filtres de lecture si le fichier a été ouvert en mode lecture (w, a et/ou +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, et/ou STREAM_FILTER_ALL peuvent aussi être utilisées dans le paramètre read_write pour contrôler ce comportement. Voyez la fonction stream_filter_append() pour un exemple de l'utilisation de ce paramètre.

Exemple 1. Contrôler l'application des filtres

<?php
/* Open a test file for reading and writting */
$fp = fopen("test.txt","rw");

/* Apply the ROT13 filter to the
 * write filter chain, but not the
 * read filter chain */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);

/* Write a simple string to the file
 * it will be ROT13 transformed on the
 * way out */
fwrite($fp, "This is a test\n");

/* Back up to the beginning of the file */
rewind($fp);

/* Read the contents of the file back out.
 * Had the filter been applied to the
 * read filter chain as well, we would see
 * the text ROT13ed back to its original state */
fpassthru($fp);

fclose($fp);

/* Expected Output
   ---------------

Guvf vf n grfg

 */
?>

Quand utiliser des filtres personnalisés : stream_register_filter() doit être appelé avant stream_filter_prepend() pour enregistrer le filtre sous le nom de filtername.

Voir aussi stream_register_filter() et stream_filter_prepend()

Précédent | Sommaire | Suivant
stream_copy_to_stream | Niveau supérieur | stream_filter_prepend


stream_filter_prepend

(PHP 4 >= 4.3.0)

stream_filter_prepend -- Attache un filtre à un flux en début de liste

Description

bool stream_filter_prepend ( resource stream, string filtername [, int read_write [, string params]])

stream_filter_prepend() ajoute le filtre filtername à la liste de filtres attachés au flux stream. Ce filtre sera ajoutés avec les paramètres spécifiés dans params à la fin de cette liste et sera donc appelé en dernier durant les opérations de flux. Pour ajouter un filtre à la fin de la liste, utilisez la fonction stream_filter_prepend().

Par défaut, stream_filter_prepend() va ajouter le filtre à la liste de filtre de lecture si le fichier a été ouvert en mode lecture (r et/ou +). Le filtre sera aussi attaché à la liste des filtres de lecture si le fichier a été ouvert en mode lecture (w, a et/ou +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, et/ou STREAM_FILTER_ALL peuvent aussi être utilisées dans le paramètre read_write pour contrôler ce comportement. Voyez la fonction stream_filter_append() pour un exemple de l'utilisation de ce paramètre.

Quand utiliser des filtres personnalisés : stream_register_filter() doit être appelé avant stream_filter_prepend() pour enregistrer le filtre sous le nom de filtername.

Voir aussi stream_register_filter() et stream_filter_append()

Précédent | Sommaire | Suivant
stream_filter_append | Niveau supérieur | stream_filter_register


stream_filter_register

(PHP 5 CVS only)

stream_filter_register -- Enregistre un filtre de flux

Description

bool stream_filter_register ( string filtername, string classname)

stream_filter_register() vous permet d'implémenter votre propre filtre de flux, à utiliser avec les fonctions d'accès aux données externes (comme fopen(), fread(), etc...).

Pour ce faire, vous devez définir une classe qui étend la classe php_user_fitler avec les membres et méthodes définies ci-dessous. Lorsque vous réalisez des opérations de lecture et d'écriture dans le flux auquel votre filtre est attaché, PHP passera les données à travers votre filtre (et tous les autres filtres attachés), de façon à ce que les données soient modifiées telles que désiré. Vous devez implémenter les méthodes telles que décrit ci-dessous, sous peine de comportement indéfini.

stream_filter_register() retourne FALSE si le nom de filtre filtername est déjà utilisé.

int filter ( resource in, resource out, int &consumed, bool closing)

Cette méthode est appelé à chaque fois que des données sont lues ou écrites dans le flux attaché (avec des fonctions comme fread() ou fwrite()). Le paramètre in est une ressource qui pointe sur une bucket brigade qui contient un ou plusieurs objet bucket contenant les données à filtrer. out est une autre ressource qui pointe sur une bucket brigade dans laquelle les donnée seront placées. consumed, qui doit toujours être déclaré par référence, doit être incrémenté de la taille de données que votre filtre lit et modifie. Dans la plupart des cas, cela signifie que vous devrez incrémenter consumed avec $bucket->datalen pour chaque $bucket. Si le flux est en cours de fermeture (et par conséquent, cela sera le dernier passage dans la chaîne de filtres), le paramètre closing vaudra TRUE La méthode filter doit retourner l'une des trois valeurs suivantes : PSFS_PASS_ON indique la réussite, et les données sont dans le paramètre out, une bucket brigade. PSFS_FEED_ME indique que le filtre n'a aucune données à retourner, et requiert d'autres données du flux. PSFS_ERR_FATAL indique que le flux a rencontré une erreur fatale, et ne peut continuer. Si aucune valeur n'est retournée par cette méthode, PSFS_ERR_FATAL est utilisé.

void oncreate ( void )

Cette méthode est appelée durant l'instantiation du filtre. Si votre filtre alloue ou initialise d'autres ressources (comme des buffers), c'est le moment de le faire.

void onclose ( void )

Cette méthode est appelée durant l'extinction du filtre (généralement, lorsque le flux est fermé), et est exécuté après l'appel de la fonction flush. Si aucune ressource a été allouée ou créée durant oncreate(), c'est le moment de les libérer.

L'exemple ci-dessous implémente un filtre appelé rot13, sur le flux foo-bar.txt, qui réalise un chiffrement de type ROT-13 sur toutes les lettres lue ou écrite dans le flux.

Exemple 1. Filtre ROT13 pour les flux

<?php

/* Definition de notre classe de filtre */
class rot13_filter extends php_user_filter {
  function read($length) {
    $tempstr = parent::read($length);
    for($i = 0; $i < strlen($tempstr); $i++)
      if (($tempstr[$i] >= 'A' AND $tempstr[$i] <= 'M') OR
          ($tempstr[$i] >= 'a' AND $tempstr[$i] <= 'm')) $tempstr[$i] = chr(ord($tempstr[$i]) + 13);
      else if (($tempstr[$i] >= 'N' AND $tempstr[$i] <= 'Z') OR
               ($tempstr[$i] >= 'n' AND $tempstr[$i] <= 'z')) $tempstr[$i] = chr(ord($tempstr[$i]) - 13);
    return $tempstr;
  }

  function write($data) {
    for($i = 0; $i < strlen($data); $i++)
      if (($data[$i] >= 'A' AND $data[$i] <= 'M') OR
          ($data[$i] >= 'a' AND $data[$i] <= 'm')) $data[$i] = chr(ord($data[$i]) + 13);
      else if (($data[$i] >= 'N' AND $data[$i] <= 'Z') OR
               ($data[$i] >= 'n' AND $data[$i] <= 'z')) $data[$i] = chr(ord($data[$i]) - 13);
    return parent::write($data);
  }
}

/* Enregistrement du filtre avec PHP */
stream_filter_register("rot13", "rot13_filter")
    or die("Impossible d'enregistrer le filtre");

$fp = fopen("foo-bar.txt", "w");

/* Liaison du filtre avec le flux */
stream_filter_append($fp, "rot13");

fwrite($fp, "Line1\n");
fwrite($fp, "Word - 2\n");
fwrite($fp, "Easy As 123\n");

fclose($fp);

/* Le filtre ne s'applique qu'au flux $fp
 * ce qui fait que cette lecture se fait sans d&eacute;chiffrement
 */
readfile("foo-bar.txt");

/* affichage
 * ------

Yvar1
Jbeq - 2
Rnfl Nf 123

 */
?>

Voir aussi
stream_register_wrapper(),
stream_filter_prepend() et
stream_filter_append()

Précédent | Sommaire | Suivant
stream_filter_prepend | Niveau supérieur | stream_get_contents


stream_get_contents

(no version information, might be only in CVS)

stream_get_contents -- Lit le reste d'un flux dans une chaîne

Description

string stream_get_contents ( resource handle [, int maxlength])

Identique à file_get_contents(), sauf que stream_get_contents() opère sur un pointeur de fichier déjà ouvert et retourne le contenu restant, allant jusqu'à maxlength octets, dans une chaîne.

Note : Cette fonction gère les chaînes binaires

Voir aussi
fgets(),
fread() et
fpassthru().

Précédent | Sommaire | Suivant
stream_filter_register | Niveau supérieur | stream_get_filters


stream_get_filters

(PHP 5 CVS only)

stream_get_filters -- Liste les filtres enregistrés

Description

array stream_get_filters ( void )

stream_get_filters retourne un tableau indexé contenant la liste des filtres de flux disponibles sur le système.

Exemple 1. Exemple avec la fonction stream_get_filters()

<?php
$streamlist = stream_get_filters();
print_r($streamlist);

/* L'affichage sera semblable a ce qui suit.
   Note: il peut y avoir plus ou moins de filtres
         suivant votre version de PHP
   ---------------------------------------
Array (
  [0] => string.rot13
  [1] => string.toupper
  [2] => string.tolower
  [3] => string.base64
  [4] => string.quoted-printable
)
 */
?>

Voir aussi stream_filter_register() et stream_get_wrappers()

Précédent | Sommaire | Suivant
stream_get_contents | Niveau supérieur | stream_get_line


stream_get_line

(PHP 5 CVS only)

stream_get_line -- Lit une ligne dans un flux

Description

string stream_get_line ( resource handle, int length, string ending)

stream_get_line() lit une ligne de taille maximale length dans le flux handle. La lecture se termine lorsque length ont été lus, ou que la chaîne ending est trouvée dans le flux (et qui n'est pas inclue dans la valeur retournée), ou la fin du fichier (le premier des trois).

Si une erreur survient, stream_get_line() retourne FALSE.

stream_get_line() est presque identique à fgets() hormis le fait qu'elle autorise d'autres délimiteur de fin de ligne que \n, \r et \r\n, et ne retourne pas le délimiteur lui-même.

Voir aussi
fread(),
fgets() et
fgetc(),

Précédent | Sommaire | Suivant
stream_get_filters | Niveau supérieur | stream_get_meta_data


stream_get_meta_data

(PHP 4 >= 4.3.0)

stream_get_meta_data -- Lit les en-têtes et données méta des flux

Description

array stream_get_meta_data ( resource stream)

stream_get_meta_data retourne les informations disponibles sur le flux stream. Ce flux peut être n'importe quel flux créé par fopen(), fsockopen() et pfsockopen(). Le tableau résultant peut contenir les éléments suivants :

  • timed_out (booléen) - TRUE si le flux a atteint de délai d'expiration en attendant des données durant le dernier appel aux fonctions fread() et fgets().

  • blocked (booléen) - TRUE si le flux est en mode bloquant. Voir aussi socket_set_blocking().

  • eof (booléen) - TRUE si le flux a atteint la fin du fichier. Notez que pour les sockets, cette valeur peut être TRUE même si unread_bytes est non nul. Pour déterminer si il reste des données à lire, utilisez plutôt la fonction feof().

  • unread_bytes (entier) - le nombre d'octets actuellement placés dans le buffer de lecture.

Les éléments suivants ont été ajoutés en PHP 4.3 :

  • stream_type (chaîne de caractères) - un nom, qui décrit l'implémentation sous-jacente de flux.

  • wrapper_type (chaîne de caractères) - un nom qui décrit le gestionnaire de protocole pour ce flux. Voyez Annexe I pour plus d'informations sur les gestionnaires.

  • wrapper_data (mixed) - des données spécifiques au gestionnaire liés à ce flux. Voyez Annexe I pour plus d'informations sur les gestionnaires et leurs données.

  • filters (tableau) - un tableau contenant les noms de tous les fitres qui ont été attachés à ce flux. Les filtres sont actuellements non documentés.

Note : Cette fonction a été introduite en PHP 4.3, mais avant cette version, socket_get_status() était utilisée pour lire les 4 premiers éléments, uniquement pour les sockets.

En PHP 4.3 et plus récent, socket_get_status() est un alias de cette fonction.

Note : Cette fonction n'est pas utilisable avec les sockets créées par les fonctions de l'extension socket.

Précédent | Sommaire | Suivant
stream_get_line | Niveau supérieur | stream_get_transports


stream_get_transports

(PHP 5 CVS only)

stream_get_transports -- Liste les gestionnaires de transports de sockets disponibles

Description

array stream_get_transports ( void )

stream_get_transports() retourne un tableau indexé contenant les noms des transports de sockets disponibles pour le système.

Exemple 1. Exemple avec stream_get_transports()

<?php
$xportlist = stream_get_transports();
print_r($xportlist);

/* L'affichage ne sera jamais identique au suivant
   Note: Il peut y avoir plus ou moins de
         transports dans votre version de PHP
   ---------------------------------------
Array (
  [0] => tcp
  [1] => udp
  [2] => unix
  [3] => udg
)
 */
?>

Voir aussi stream_get_filters(), et stream_get_wrappers()

Précédent | Sommaire | Suivant
stream_get_meta_data | Niveau supérieur | stream_get_wrappers


stream_get_wrappers

(PHP 5 CVS only)

stream_get_wrappers -- Liste les gestionnaires de flux

Description

array stream_get_wrappers ( void )

stream_get_wrappers retourne un tableau indexé contenant le nom de tous les gestionaires de flux disponibles sur le système.

Voir aussi stream_wrapper_register().

Précédent | Sommaire | Suivant
stream_get_transports | Niveau supérieur | stream_register_wrapper


stream_register_wrapper

stream_register_wrapper -- Alias de stream_wrapper_register()

Description

Cette fonction est un alias de stream_wrapper_register(). Elle est inclue pour assurer la compatibilité avec PHP 4.3.0 et PHP 4.3.1 uniquement. stream_wrapper_register() doit être utilisée à la place.

Précédent | Sommaire | Suivant
stream_get_wrappers | Niveau supérieur | stream_select


stream_select

(PHP 4 >= 4.3.0)

stream_select -- Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec

Description

int stream_select ( resource &read, resource &write, resource &except, int tv_sec [, int tv_usec])

stream_select() accepte un tableau de flux et attend que l'un d'entre eux change de statut. Cette opération est équivalente à ce que fait la fonction socket_select(), ormis le fait qu'elle travaille sur flux.

Les flux qui sont listés dans le paramètre read seront surveillés en lecture, c'est à dire si de nouveaux octets sont disponibles en lecture (pour être précis, si une lecture ne bloquera pas, ce qui inclut aussi les flux qui sont en fin de fichier, auquel cas un appel à la fonction fread() retournera une chaîne de taille 0).

Les flux qui sont listés dans le paramètre write seront surveillé en écriture (pour être précis, si une écriture ne bloquera pas).

Les flux qui sont listés dans le paramètre except seront surveillé pour voir si une exception est levée.

Avertissement

Lors de la fin de la fonction, les tableaux sont modifiés pour rapporter leurs évolutions respectives.

Vous n'êtes pas obligés de passer tous les tableaux à la fonction stream_select(). Vous pouvez en omettre certains, en utilisant un tabeau vide ou la valeur NULL. N'oubliez pas que ces tableaux sont passés par référence et qu'ils seront modifiés lorsque stream_select() s'achèvera.

Exemple
<?php
/* Preparation du tableau de flux lecture */
$read = array($stream1, $stream2);

if (false === ($num_changed_streams = stream_select($read, $write = NULL, $except = NULL, 0))) {
    /* Gestion d'erreur */
else if ($num_changed_streams > 0) {
    /* Au moins un des flux a &eacute;volu&eacute;  */
}
?>

Note : A cause d'une limitation du Zend Engine actuel, il n'est pas possible de passer la valeur NULL directement comme paramètre d'une fonction qui s'attend à des paramètres passés par référence. Au lieu de cela, il est recommandé d'utiliser une variable temporaire, ou une expression don le membre de gauche est une variable temporaire. Comme ceci :
<?php
  stream_select($r, $w, $e = NULL, 0);
?>

Les paramètres tv_sec et tv_usec ensemle forment le délai d'expiration. Ce délai est la durée maximale d'exécution de stream_select(). tv_sec peut valoir zéro, ce qui fait que stream_select() s'achève immédiatement. C'est pratique pour réaliser du polling. Si tv_sec est NULL (pas de délai d'expiration), stream_select() peut bloquer le script indéfiniment.

En cas de succès, stream_select() retourne le nomre de flux qui ont évolué, ce qui peut être zéro si le délai d'expiration a été atteint avant que les flux n'évoluent. En cas d'erreur, la fonction retourne FALSE.

Note : Assurez vous de bien utiliser l'opérateur === lorsque vous recherchez des erreurs. Comme stream_select() peut retourner 0, une comparaison effectuée à l'aide de == la confondrait avec une erreur.
<?php
if (false === stream_select($r, $w, $e = NULL, 0)) {
    echo "stream_select() failed\n";
}
?>

Note : Gardez à l'esprit que certaines implémentations de flux doivent être gérées très prudemment. Voici quelques règles à suivre :

  • Il faut toujours essayer d'utiliser stream_select() sans délai d'expiration. Votre programme ne devrait rien faire si il ne reçoit pas de données extérieures. Les codes qui dépendent du délai d'expiration ne sont généralement pas portable, et difficiles à déboguer.

  • Si vous avez écrit ou lu dans un flux qui retournés dans les tableaux de flux, soyez bien conscient que ces flux n'ont peut être pas écrit ou lu la totalité des données demandées. Soyez préparés à être en mesure de lire un seul octet.

Voir aussi stream_set_blocking().

Précédent | Sommaire | Suivant
stream_register_wrapper | Niveau supérieur | stream_set_blocking


stream_set_blocking

(PHP 4 >= 4.3.0)

stream_set_blocking -- Configure le mode bloquant d'un flux

Description

bool stream_set_blocking ( resource stream, int mode)

stream_set_blocking() configure le mode bloquant du flux stream. Si mode vaut FALSE, stream sera configuré en mode non-bloquant, et si il vaut TRUE, stream sera configuré en mode bloquant. Cet appel affecte les fonctions telles que fgets() et fread() qui lisent dans des flux. En mode non-bloquant, la fonction fgets() s'exécute juste après son appel, alors qu'en mode bloquant, elle attendra des données.

stream_set_blocking() était appelée
set_socket_blocking() et plus tard
socket_set_blocking() mais ces appellations
sont obsolètes.

Note : Depuis PHP 4.3, cette fonction peut (potentiellement) fonctionner avec n'importe quel flux. Avant PHP 4.3, les flux utilisant des sockets sont les seul qui soit supporté dans le coeur de PHP, même si les autres extensions pourrait supporter cette fonction.

Voir aussi stream_select().

Précédent | Sommaire | Suivant
stream_select | Niveau supérieur | stream_set_timeout


stream_set_timeout

(PHP 4 >= 4.3.0)

stream_set_timeout -- Configure la durée d'expiration d'un flux

Description

bool stream_set_timeout ( resource stream, int seconds [, int microseconds])

stream_set_timeout() configure la durée d'expiration du flux stream,exprimé comme la durée de seconds secondes et microseconds micro-secondes.

Exemple 1. Exemple avec stream_set_timeout()

<?php
$fp = fsockopen("www.example.com", 80);
if(!$fp) {
    echo "Unable to open\n";
} else {
    fputs($fp, "GET / HTTP/1.0\n\n");
    $start = time();
    stream_set_timeout($fp, 2);
    $res = fread($fp, 2000);
    var_dump(stream_get_meta_data($fp));
    fclose($fp);
    print $res;
}
?>

Note : Depuis PHP 4.3, cette fonction peut (potentiellement) fonctionner avec n'importe quel flux. Avant PHP 4.3, les flux utilisant des sockets sont les seul qui soit supporté dans le coeur de PHP, même si les autres extensions pourrait supporter cette fonction.

stream_set_timeout() était appelée auparavant
set_socket_timeout(), et aussi
socket_set_timeout() mais ces appellations sont
obsolètes.

Voir aussi fsockopen() et fopen().

Précédent | Sommaire | Suivant
stream_set_blocking | Niveau supérieur | stream_set_write_buffer


stream_set_write_buffer

(PHP 4 >= 4.3.0)

stream_set_write_buffer -- Configure la bufferisation de fichier pour un flux

Description

int stream_set_write_buffer ( resource stream, int buffer)

fwrite() est habituellement configuré avec un buffer de 8ko. Cela signifie que si deux processus veulent écrirent dans le même flux de sortie (par exemple, un fichier), ils font une pause tous les 8ko pour laisser l'autre écrire aussi. stream_set_write_buffer() configure la taille du buffer des opérations d'écritures pour le flux stream avec la nouvelle valeur de buffer octets. Si buffer vaut 0, les opérations d'écritures ne seront pas bufferisées. Cela signifie que chaque appel à fwrite() doit être terminé pour qu'un autre processus soit autorisé à écrire dans le fichier.

stream_set_write_buffer() retourne 0 en cas de succès, et EOF si la requête échoue.

L'exemple ci-dessous illustre l'utilisation de stream_set_write_buffer() pour créer un flux non bufferisé.

Exemple 1. Exemple avec stream_set_write_buffer()

$fp = fopen($file, "w");
if ($fp) {
  stream_set_write_buffer($fp, 0);
  fputs($fp, $output);
  fclose($fp);
}

Voir aussi fopen() et fwrite().

Précédent | Sommaire | Suivant
stream_set_timeout | Niveau supérieur | stream_socket_accept


stream_socket_accept

(PHP 5 CVS only)

stream_socket_accept -- Accepte une connexion sur une socket créée par stream_socket_server()

Description

resource stream_socket_accept ( resource server_socket [, int timeout [, string &peername]])

stream_socket_accept() accepte une connexion sur une socket créée précédemment avec stream_socket_server(). Si timeout est spécifié, le délai d'expiration de la socket sera remplacé par cette valeur, exprimée en secondes. L'adresse du client qui est connecté est retourné dans peername, si cette valeur est accessible pour ce type de transport.

peername peut aussi être déterminé plus tard avec stream_socket_get_name().

Si stream_socket_accept() échoue, elle retournera FALSE.

Voir aussi
stream_socket_server(),
stream_socket_get_name(),
stream_set_blocking(),
stream_set_timeout(),
fgets(),
fgetss(), fputs(),
fclose(), feof() et
l'extension CURL.

Précédent | Sommaire | Suivant
stream_set_write_buffer | Niveau supérieur | stream_socket_client


stream_socket_client

(PHP 5 CVS only)

stream_socket_client -- Ouvre une connexion socket Internet ou Unix

Description

resource stream_socket_client ( string remote_socket [, int &errno [, string &errstr [, float timeout [, int flags [, resource context]]]]])

stream_socket_client() initie un flux ou une connexion datagramme avec la destination remote_socket. Le type de socket créé est déterminé par le transport spécifié avec le formattage URL suivant : transport://target. Pour une socket Internet, (AF_INET) comme TCP et UDP, la cible de remote_socket sera une adresse IP ou un nom d'hôte. Pour une socket Unix,la cible doit être un fichier de socket du système.

Le paramètre optionnel timeout sert à imposer un délai d'expiration, en secondes, à l'appel système.

flags est un champ de bits qui peut être la combinaison de n'importe quelle option de connexion. Actuellement, les valeurs possibles pour ces options sont STREAM_CLIENT_ASYNC_CONNECT et STREAM_CLIENT_PERSISTENT.

Note : Si vous n'avez pas besoin de mettre de délai d'expiration pour les opérations via la socket, utilisez la fonction stream_set_timeout(), car timeout de stream_socket_client() ne s'appliqu que lors de la connexion à la socket.

stream_socket_client() retourne une ressource de flux,
qui peut être utilisée avec d'autres fonctions de fichiers, comme
fgets(), fgetss(),
fputs(), fclose() et
feof()).

Si l'appel échoue, stream_socket_client() va retourner FALSE et si les paramètres optionnels errno et errstr sont fournis, ils recevront l'erreur exacte qui est survenue dans le système lors de l'appel à connect(). Si la valeur retournée dans errno est 0 et que la fonction a retournée FALSE, c'est une indication que l'erreur est survenue avant l'appel à connect(). Cela est probablement du à un problème d'initialisation de la socket. Notez que errno eterrstr doivent être passé par référence.

Suivant votre environnement, les sockets Unix ou le délai d'expiration peuvent ne pas être disponibles. Une liste des transports disponibles qui sont disponibles sur le système est accessible via stream_get_transports().

Le flux sera par défaut ouvert en mode bloquant. Vous pouvez le passer en mode non bloquant en utilisant la fonction stream_set_blocking().

Exemple 1. Exemple avec stream_socket_client()

<?php
$fp = stream_socket_client("tcp://www.exemple.com:80", $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
    while (!feof($fp)) {
        echo fgets ($fp,1024);
    }
    fclose ($fp);
}
?>
L'exemple ci-dessous vous montre comment lire la date et l'heure sur un service UDP de type "daytime" (port 13) sur votre propre machine :

Exemple 2. Utilisation de connexions UDP

<?php
$fp = stream_socket_client("udp://127.0.0.1:13", $errno, $errstr);
if (!$fp) {
    echo "ERREIR : $errno - $errstr<br>\n";
} else {
    fwrite($fp,"\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>

Avertissement

Les sockets UDP sembleront parfois s'ouvrir sans erreur, même si l'hôte distant n'est pas accessible. Cette erreur ne deviendra apparente que lorsque vous essaierez de lire ou écrire des données avec cette socket. La raison à cela est que UDP est un protocole sans connexion, ce qui signifie que le système d'exploitaiton n'a pas à établir de lien pour la socket, jusqu'à ce qu'il commence à échanger des données.

Note : Lors de la spécification d'adresses IPv6 au format numérique (e.g. fe80::1) vous devez placer l'adresse IP entre crochets. Par exemple : tcp://[fe80::1]:80.

Voir aussi stream_socket_server(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fputs(), fclose(), feof() et l'extension CURL.

Précédent | Sommaire | Suivant
stream_socket_accept | Niveau supérieur | stream_socket_get_name


stream_socket_get_name

(PHP 5 CVS only)

stream_socket_get_name -- Lit le nom des sockets locale ou distante

Description

string stream_socket_get_name ( resource handle, bool want_peer)

stream_socket_get_name() retourne le nom de la socket locale ou distante pour la connexion handle. Si want_peer vaut TRUE, le nom de la socket distante est retourné. Si il vaut FALSE, c'est le nom de la socket locale.

Voir aussi stream_socket_accept().

Précédent | Sommaire | Suivant
stream_socket_client | Niveau supérieur | stream_socket_recvfrom


stream_socket_recvfrom

(no version information, might be only in CVS)

stream_socket_recvfrom -- Receives data from a socket, connected or not

Description

string stream_socket_recvfrom ( resource socket, int length [, int flags [, string &address]])

The function stream_socket_recvfrom() accepts data from a remote socket up to length bytes. If address is provided it will be populated with the address of the remote socket.

The value of flags can be any combination of the following:

Tableau 1. possible values for flags

STREAM_OOB | Process OOB (out-of-band) data.
STREAM_PEEK | Retrieve data from the socket, but do not consume the buffer. Subsequent calls to fread() or stream_socket_recvfrom() will see the same data.

Exemple 1. stream_socket_sendto() Example

<?php
/* Open a server socket to port 1234 on localhost */
$server = stream_socket_server('tcp://127.0.0.1:1234');

/* Accept a connection */
$socket = stream_socket_accept($server);

/* Grab a packet (1500 is a typical MTU size) of OOB data */
echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";

/* Take a peek at the normal in-band data, but don't comsume it. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";

/* Get the exact same packet again, but remove it from the buffer this time. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n";

/* Close it up */
fclose($socket);
fclose($server);
?>

See also
stream_socket_sendto(),
stream_socket_client(), and
stream_socket_server().

Précédent | Sommaire | Suivant
stream_socket_get_name | Niveau supérieur | stream_socket_sendto


stream_socket_sendto

(no version information, might be only in CVS)

stream_socket_sendto -- Sends a message to a socket, whether it is connected or not

Description

int stream_socket_sendto ( resource socket, string data [, int flags [, string address]])

The function stream_socket_sendto() sends the data specified by data through the socket specified by socket. The address specified when the socket stream was created will be used unless an alternate address is specified in address.

The value of flags can be any combination of the following:

Tableau 1. possible values for flags

STREAM_OOB Process OOB (out-of-band) data.

Exemple 1. stream_socket_sendto() Example

<?php
/* Open a socket to port 1234 on localhost */
$socket = stream_socket_client('tcp://127.0.0.1:1234');

/* Send ordinary data via ordinary channels. */
fwrite($socket, "Normal data transmit.");

/* Send more data out of band. */
stream_socket_sendto($socket, "Out of Band data.", STREAM_OOB);

/* Close it up */
fclose($socket);
?>

See also
stream_socket_recvfrom(),
stream_socket_client(), and
stream_socket_server().

Précédent | Sommaire | Suivant
stream_socket_recvfrom | Niveau supérieur | stream_socket_server


stream_socket_server

(PHP 5 CVS only)

stream_socket_server -- Crée une socket serveur Unix ou Internet

Description

resource stream_socket_server ( string local_socket [, int &errno [, string &errstr [, int flags [, resource context]]]])

stream_socket_server() crée un flux ou un datagramme sur la socket spécifiée local_socket. Le type de socket créé est déterminé par le transport spécifié avec le formattage URL suivant : transport://target. Pour une socket Internet, (AF_INET) comme TCP et UDP, la cible de remote_socket sera une adresse IP ou un nom d'hôte. Pour une socket Unix,la cible doit être un fichier de socket du système.

flags est un champ de bits qui peut être la combinaison de n'importe quelle option de connexion. Actuellement, les valeurs possibles pour ces options sont STREAM_CLIENT_ASYNC_CONNECT et STREAM_CLIENT_PERSISTENT. La valeur par défaut est STREAM_SERVER_BIND | STREAM_SERVER_LISTEN.

stream_socket_server() ne fait que créer une socket, et pour accepter des connexions, vous devez utiliser stream_socket_accept().

Si l'appel échoue, stream_socket_server() va retourner FALSE et si les paramètres optionnels errno et errstr sont fournis, ils recevront l'erreur exacte qui est survenue dans le système lors de l'appel à connect(). Si la valeur retournée dans errno est 0 et que la fonction a retournée FALSE, c'est une indication que l'erreur est survenue avant l'appel à connect(). Cela est probablement du à un problème d'initialisation de la socket. Notez que errno eterrstr doivent être passé par référence.

Suivant votre environnement, les sockets Unix ou le délai d'expiration peuvent ne pas être disponibles. Une liste des transports disponibles qui sont disponibles sur le système est accessible via stream_get_transports().

Exemple 1. Exemple avec stream_socket_server()

<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br>\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fputs ($conn, 'Merci de vous connecter &agrave; mon serveur. L\'heure locale est ' . date('n/j/Y g:i a') . "\n");
    fclose ($conn);
  }
  fclose($socket);
}
?>
L'exemple ci-dessous vous montre comment lire la date et l'heure sur un service UDP de type "daytime" (port 13) sur votre propre machine, tel que présenté avec la fonction stream_socket_client() :

Note : La plupart des systèmes ont besoin d'un accès administrateur pour ouvrir une socket au dela des ports 1024.

Exemple 2. Utiliser un serveur de socket UDP

<?php
$socket = stream_socket_server("udp://0.0.0.0:13", $errno, $errstr);
if (!$socket) {
    echo "ERROR: $errno - $errstr<br>\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, date("D M j H:i:s Y\r\n"));
    fclose($conn);
  }
  fclose($socket);
}
?>

Note : Lors de la spécification d'adresses IPv6 au format numérique (e.g. fe80::1) vous devez placer l'adresse IP entre crochets. Par exemple : tcp://[fe80::1]:80.

Voir aussi
stream_socket_client(),
stream_set_blocking(),
stream_set_timeout(),
fgets(),
fgetss(),
fputs(),
fclose(),
feof() et
l'extension CURL.

Précédent | Sommaire | Suivant
stream_socket_sendto | Niveau supérieur | stream_wrapper_register


stream_wrapper_register

(PHP 4 >= 4.3.2)

stream_wrapper_register -- Enregistre une enveloppe URL, implémentée comme classe PHP

Description

bool stream_wrapper_register ( string protocol, string classname)

stream_wrapper_register() vous permet d'implémenter vos propres gestionnaires de protocoles et de flux, à utiliser avec toutes les autres fonctions de fichiers, comme fopen(), fread() etc...

Pour implémenter une enveloppe, vous devez définir une classe avec la liste des membres définie ci-dessous. Lorsque quelqu'un ouvre votre flux, PHP va créer une instance de la classe classname et appeler les méthodes de cette instance. Vous devez implémenter ces méthodes exactement comme décrit ci-dessous : sinon, vous risquez de rencontrer des comportements indéfinis.

stream_wrapper_register() retourne FALSE si le protocole protocol a déjà un gestionnaire attitré.

bool stream_open ( string path, string mode, int options, string opened_path)

Cette méthode est appelée immédiatement après la création de votre flux. path spécifie l'URL qui doit être passée à la fonction fopen() et ce que cet objet est supposé y lire. Vous pouvez utiliser parse_url() pour l'analyser.

mode est le mode d'ouverture du fichier, comme expliqué dans fopen(). Vous êtes responsable de la vérification de la validité du paramètre mode avec le chemin path fourni.

options contient des options supplémentaires, utilisées par les API de flux. Il peut contenir une ou plusieurs des options suivantes, combinées par des OR.

Option | Description
STREAM_USE_PATH | Si path est relatif, recherche la ressources en utilisant la configuration de l'include_path.
STREAM_REPORT_ERRORS | Si cette option est activée, vous êtes responsable pour lever les erreurs avec trigger_error() durant l'ouverture du flux. Si cette option n'est pas activée, vous ne devez lever aucune erreur.

Si le paramètre path est ouvert avec succès, et que STREAM_USE_PATH est activé dans le paramètre options, vous devez affecter à opened_path le chemin complet de la ressource ou du fichier que vous avez réellement ouvert.

Si la ressource demandée a été ouverte, vous devez retourner TRUE, ou sinon, vous devez retourner FALSE

void stream_close ( void )

Cette méthode est appelée lors que flux est fermée, grâce à la fonction fclose(). Vous devez libérez toutes les ressources réservées par le flux.

string stream_read ( int count)

Cette méthod est appelée suite à l'utilisation des fonctions fread() et fgets(). Vous devez lire jusqu'à count octets de données à partir de la position courante d'écriture ou de lecture, sous la forme de chaîne de caractères. Si il y a moins que count octets disponibles, vous devez en retourner autant que possible. Si aucune autre donnée n'est disponible, retournez soit FALSE soit une chaîne vide. Vous devez aussi tenir à jour la position du pointeur d'écriture/lecture dans le flux, en ajoutant ou retranchant le nombre d'octets lus.

int stream_write ( string data)

Cette méthode est appelée lorsque la fonction fwrite() est utilisée. Vous devez stocker les données data dans le flux. Si il n'y a pas assez de place, essayez d'en stocker le maximum. Vous devriez aussi retourner le nombre d'octets que vous avez réussi à écrire, ou bien 0 si aucun n'a pu être stocké. Vous devez aussi tenir à jour la position du pointeur d'écriture/lecture dans le flux, en ajoutant ou retranchant le nombre d'octets lus.

bool stream_eof ( void )

Cette méthode est appelée lorsque la fonction feof() est utilisée. Vous devez retourner TRUE si la position de lecture se situe a la fin du fichier et si il n'y a plus de donnée disponible pour la lecture, ou bien FALSE sinon.

int stream_tell ( void )

Cette méthode est appelée lorsque la fonction ftell() est utilisée. Vous devez retourner la position actuelle du pointeur de lecture / écriture.

bool stream_seek ( int offset, int whence)

Cette méthode est appelée lorsque la fonction fseek() est utilisée. Vous devez modifier la position du pointeur de lecture/ écriture en fonction des paramètres d'offset offset et de direction whence. Reportez-vous à la fonction fseek() pour plus de détails sur ces paramètres. Retournez TRUE si la position a été modifiée, et FALSE sinon.

bool stream_flush ( void )

Cette méthode est appelée lorsque la fonction fflush() est utilisée. Si vous avez mis des données dans un système de cache pour votre flux, mais qu'ils ne sont pas encore stockés de manière pérenne, c'est le moment de le faire. Retournez TRUE si les données cachées ont pu être stockées avec succès (il n'y a plus de donnée à stocker), ou bien FALSE si les données n'ont pu être stockées.

array stream_stat ( void )

Cette méthode est appelée en réponse à la fonction fstat() sur un flux, et retourne un tableau, avec les valeurs appropriées pour le flux.

bool unlink ( string path)

Cette méthode est appelée en réponse à la fonction unlink() avec une URL, et doit tenter de supprimer l'objet identifié par path. La fonction doit retourne TRUE en cas de succès, et FALSE en cas d'échec. Afin de retourner le bon message d'erreur, ne définissez pas cette méthode si votre gestionnaire ne le supporte pas.

Note : Userspace wrapper unlink method is not supported prior to PHP 5.0.0.

bool dir_opendir ( string path, int options)

Cette méthode est appelée immédiatement lorsque votre flux est créé, pour examiner le contenu d'un dossier avec opendir(). path spécifie l'URL qui est passée à opendir() et que cet objet doit explorer. Vous pouvez utiliser parse_url() pour la scinder en morceaux.

string dir_readdir ( void )

Cette méthode est appelée en réponse à la fonction readdir() et doit retourner une chaîne représentant le prochain fichier ouvert par dir_opendir().

bool dir_rewinddir ( void )

Cette méthode st appelée en réponse à rewinddir() et doit remettre à zéro les résultats de dir_readdir(). i.e. : le prochain appel à dir_readdir() doit retourner la première ligne située dans le dossier ouvert par dir_opendir().

bool dir_closedir ( void )

Cette méthde est appelé en réponse à closedir(). Vous devez libérer toutes les ressources qui ont été réservées durant l'ouverture et l'utilisation du dossier.

L'exemple ci-dessous implémente un gestionnaire de protocole pour le protocole var://, qui permet l'écriture et la lecture de variables globales en utilisant un flux de fichier standard, et les fonctions classiques telles que fread(). Le protocole var:// implémenté ci-dessous, étant donné l'URL "var://foo" va écrire ou lire les données dans $GLOBALS["foo"].

Exemple 1. Une classe de flux pour accéder aux variables globales

<?php

class VariableStream {
    var $position;
    var $varname;

    function stream_open($path, $mode, $options, &$opened_path)
    {
        $url = parse_url($path);
        $this->varname = $url["host"];
        $this->position = 0;

        return true;
    }

    function stream_read($count)
    {
        $ret = substr($GLOBALS[$this->varname], $this->position, $count);
        $this->position += strlen($ret);
        return $ret;
    }

    function stream_write($data)
    {
        $left = substr($GLOBALS[$this->varname], 0, $this->position);
        $right = substr($GLOBALS[$this->varname], $this->position + strlen($data));
        $GLOBALS[$this->varname] = $left . $data . $right;
        $this->position += strlen($data);
        return strlen($data);
    }

    function stream_tell()
    {
        return $this->position;
    }

    function stream_eof()
    {
        return $this->position >= strlen($GLOBALS[$this->varname]);
    }

    function stream_seek($offset, $whence)
    {
        switch($whence) {
            case SEEK_SET:
                if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) {
                     $this->position = $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            case SEEK_CUR:
                if ($offset >= 0) {
                     $this->position += $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            case SEEK_END:
                if (strlen($GLOBALS[$this->varname]) + $offset >= 0) {
                     $this->position = strlen($GLOBALS[$this->varname]) + $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            default:
                return false;
        }
    }
}

stream_wrapper_register("var", "VariableStream")
    or die("Failed to register protocol");

$myvar = "";

$fp = fopen("var://myvar", "r+");

fwrite($fp, "line1\n");
fwrite($fp, "line2\n");
fwrite($fp, "line3\n");

rewind($fp);
while(!feof($fp)) {
    echo fgets($fp);
}
fclose($fp);
var_dump($myvar);
?>

Précédent | Sommaire | Suivant
stream_socket_server | Niveau supérieur | Chaînes de caractères (Strings)


Chaînes de caractères (Strings)

Manuel PHP
Précédent Suivant

CII. Chaînes de caractères (Strings)

Introduction

Ces fonctions permettent de manipuler des chaînes de caractères de différentes façons. Certaines fonctionnalités plus spécialisées sont disponibles dans les sections d'expression régulières et de gestion des URL.

Pour plus de détails sur le comportement des chaînes de caractères, notamment avec les guillemets simples et doubles, les séquences d'échappement, reportez-vous à la section Chaînes de caractères dans la section Types.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

CRYPT_SALT_LENGTH integer

CRYPT_STD_DES integer

CRYPT_EXT_DES integer

CRYPT_MD5 integer

CRYPT_BLOWFISH integer

HTML_SPECIALCHARS (integer)

HTML_ENTITIES (integer)

ENT_COMPAT (integer)

ENT_QUOTES (integer)

ENT_NOQUOTES (integer)

CHAR_MAX (integer)

LC_CTYPE (integer)

LC_NUMERIC (integer)

LC_TIME (integer)

LC_COLLATE (integer)

LC_MONETARY (integer)

LC_ALL (integer)

LC_MESSAGES (integer)

STR_PAD_LEFT (integer)

STR_PAD_RIGHT (integer)

STR_PAD_BOTH (integer)

Voir aussi

Pour des fonctions encore plus puissantes de gestion et manipulation des chaînes, reportez-vous aux expressions régulières POSIX et expressions régulières Perl.

Table des matières
addcslashes -- Ajoute des slashes dans une chaîne, à la mode du langage C
addslashes -- Ajoute des anti-slashs dans une chaîne
bin2hex -- Convertit des données binaires en représentation hexadécimale
chop -- Alias de rtrim()
chr -- Retourne un caractère spécifique
chunk_split -- Scinde une chaîne
convert_cyr_string -- Convertit une chaîne d'un jeu de caractères cyrillique à l'autre
count_chars -- Retourne des statistiques sur les caractères utilisés dans une chaîne
crc32 -- Calcule la somme de contrôle CRC32
crypt -- Chiffrage indéchiffrable (hashing)
echo -- Affiche une chaîne de caractères
explode -- Coupe une chaîne en segments
fprintf -- Ecrit une chaîne formatée dans un flux
get_html_translation_table -- Retourne la table de traduction des entités utilisée par htmlspecialchars() et htmlentities()
hebrev -- Convertit un texte logique hébreux en texte visuel
hebrevc -- Convertit un texte logique hébreux en texte visuel, avec retours à la ligne
html_entity_decode -- Convertit toutes les entités HTML en caractères normaux
htmlentities -- Convertit tous les caractères éligibles en entités HTML
htmlspecialchars -- Convertit les caractères spéciaux en entités HTML
implode -- Rassemble les éléments d'un tableau en une chaîne
join -- Rassemble les éléments d'un tableau en une chaîne
levenshtein -- Calcule la distance Levenshtein entre deux chaînes
localeconv -- Lit la configuration locale
ltrim -- Supprime les caractères invisibles de début de chaîne
md5_file -- Calcule le md5 d'un fichier
md5 -- Calcule le md5 d'une chaîne
metaphone -- Calcule la clé métaphone
money_format -- Met un nombre au format monétaire
nl_langinfo -- Rassemble des informations sur la langue et la configuration locale.
nl2br -- Insère un retour à la ligne HTML à chaque nouvelle ligne
number_format -- Formate un nombre pour l'affichage
ord -- Retourne le code ASCII d'un caractère
parse_str -- Analyse une requête HTTP
print -- Affiche une chaîne de caractères
printf -- Affiche une chaîne de caractères formattée
quoted_printable_decode -- Convertit une chaîne quoted-printable en chaîne 8 bits
quotemeta -- Echappe les méta-caractères
rtrim -- Supprime les espaces de fin de chaîne
setlocale -- Modifie les informations de localisation
sha1_file -- Calcule le sha1 d'un fichier
sha1 -- Calcule le sha1 d'une chaîne de caractères
similar_text -- Calcule la similarité de deux chaînes
soundex -- Calcule la clé soundex
sprintf -- Retourne une chaîne formattée
sscanf -- Analyse une chaîne à l'aide d'un format
str_ireplace -- Version insensible à la casse de str_replace()
str_pad -- Complète une chaîne jusqu'à une taille donnée
str_repeat -- Répéte une chaîne
str_replace -- Remplace toutes les occurrences dans une chaîne
str_rot13 -- Effectue une transformation rot13
str_shuffle -- Mélange les caractères d'une chaîne de caractères
str_split -- Convertit une chaîne de caractères en tableau
str_word_count -- Compte le nombre de mots utilisés dans une chaîne
strcasecmp -- Comparaison de chaînes binaires
strchr -- Trouve la première occurence d'un caractère dans une chaîne
strcmp -- Comparaison binaire de chaînes
strcoll -- Comparaison de chaînes localisée
strcspn -- Trouve un segment de chaîne ne contenant pas certains caractères
strip_tags -- Supprime les balises HTML et PHP d'une chaîne
stripcslashes -- Supprime les anti-slash d'une chaîne C
stripos -- Rercherche la position d'une occurence dans une chaîne, sans tenir compte de la casse
stripslashes -- Supprimer les anti-slash d'une chaîne
stristr -- Trouve la première occurence dans une chaîne (insensible à la casse)
strlen -- Calcule la taille d'une chaîne
strnatcasecmp -- Comparaison de chaînes avec l'algorithme d'"ordre naturel" (insensible à la casse)
strnatcmp -- Comparaison de chaînes avec l'algorithme d'"ordre naturel"
strncasecmp -- Compare en binaire des chaînes de caractères
strncmp -- Comparaison binaire des n premiers caractères
strpos -- Trouve la position d'un caractère dans une chaîne
strrchr -- Retourne la fin de la chaîne
strrev -- Inverse une chaîne
strripos -- Trouve la position de la dernière occurence d'une chaîne dans une autre de façon insensible à la casse.
strrpos -- Trouve la position de la dernière occurence d'un caractère dans une chaîne
strspn -- Trouve le premier segment de chaîne
strstr -- Trouve la première occurence dans une chaîne
strtok -- Coupe une chaîne en segments
strtolower -- Renvoit une chaîne en minuscules
strtoupper -- Renvoit une chaîne en majuscules
strtr -- Remplace des chaînes dans une chaîne
substr_compare -- Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters
substr_count -- Compte de le nombre d'occurrences de segments dans une chaîne
substr_replace -- Remplace un segment dans une chaîne
substr -- Retourne un segment de chaîne
trim -- Supprime les espaces en début et fin de chaîne
ucfirst -- Met le premier caractère en majuscule
ucwords -- Met en majuscule la première lettre de tous les mots
vprintf -- Affiche une chaîne formatée
vsprintf -- Retourne une chaîne formatée
wordwrap -- Effectue la césure d'une chaîne

Précédent | Sommaire | Suivant
stream_wrapper_register | Niveau supérieur | addcslashes


addcslashes

(PHP 4 )

addcslashes -- Ajoute des slashes dans une chaîne, à la mode du langage C

Description

string addcslashes ( string str, string charlist)

addcslashes() retourne la chaîne str, après avoir ajouté des anti-slash devant tous les caractères qui sont présents dans la liste charlist. Cette fonction échappe aussi les caractères \n, \r etc. à la mode du langage C. Tous les caractères ayant un code ASCII inférieur à 26, et supérieur à 126 sont remplacés par leur représentation octale.

Attention à l'utilisation des caractères tels que 0, a, b, f, n, r, t et v. Ils seront convertis en \0, \a, \b, \f, \n, \r, et \v. En PHP, \0 (NULL), \r (retour chariot), \n (nouvelle ligne) et \t (tabulation horizontale) sont prédéfinis comme séquences d'échappement, tandis qu'en C, ce sont toutes les séquences cités ci-dessus qui sont des séquences d'échappement.

charlist peut s'écrire "\0..\37", ce qui identifie tous les caractères ASCII dont le code est entre 0 et 31.

Exemple 1. Exemple avec addcslashes()

<?php
  $escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");
?>

Lorsque vous définissez une séquence de caractères dans le paramètre charlist, assurez-vous que vous connaissez bien tous les caractères qui viennent entre vos limites d'intervalles.

Exemple 2. Exemple avec addcslashes() et charlist

<?php
  echo addcslashes('foo[ ]', 'A..z');
// affiche :  \f\o\o\[ \]
// Toutes les majuscules et minuscules seront &eacute;chapp&eacute;es
// ... mais aussi les caract&egrave;res [\]^_` et les tabulations
// retours chariots, nouvelles lignes....
?>
De plus, si le premier caractère d'un intervalle a un code ASCII plus grand que le second, l'intervalle ne sera pas créé. Seules les bornes de l'intervalle et le caractère point (.) seront échappées. Utilisez la fonction ord() pour trouver la valeur ASCII d'un caractère.

Exemple 3. Exemple avec addcslashes() et charlist (2)

<?php
  echo addcslashes("zoo['.']", 'z..A');
// affiche :  \zoo['\.']
?>

Voir aussi
stripcslashes(),
stripslashes(),
htmlspecialchars() et
quotemeta().

Précédent | Sommaire | Suivant
Chaînes de caractères (Strings) | Niveau supérieur | addslashes


addslashes

(PHP 3, PHP 4 )

addslashes -- Ajoute des anti-slashs dans une chaîne

Description

string addslashes ( string str)

addslashes() retourne la chaîne str, après avoir échappé tous les caractères qui doivent l'être, pour être utilisé dans une requête de base de données. Ces caractères sont les guillemets simples ('), guillemets doubles ("), anti-slash (\) et NUL (le caractère NULL).

Note : magic_quotes_gpc est activé par défaut.

Voir aussi
stripslashes(),
htmlspecialchars(),
quotemeta() et
get_magic_quotes_gpc().

Précédent | Sommaire | Suivant
addcslashes | Niveau supérieur | bin2hex


bin2hex

(PHP 3>= 3.0.9, PHP 4 )

bin2hex -- Convertit des données binaires en représentation hexadécimale

Description

string bin2hex ( string str)

bin2hex retourne la chaîne str dont tous les caractères sont représentés par leur équivalent hexadécimal. La chaîne retourneé est une chaîne ASCII. La conversion supporte les caractères binaires, et utilise les bits de poids forts.

Voir aussi pack() et unpack().

Précédent | Sommaire | Suivant
addslashes | Niveau supérieur | chop


chop

chop -- Alias de rtrim()

Description

chop() est un alias de rtrim().

Note : chop() est différente de son équivalent Perl chop(), qui supprime le dernier caractère dans la chaîne.

Précédent | Sommaire | Suivant
bin2hex | Niveau supérieur | chr


chr

(PHP 3, PHP 4 )

chr -- Retourne un caractère spécifique

Description

string chr ( int ascii)

chr retourne une chaîne d'un seul caractère, dont le code ASCII est donné par le paramètre ascii.

Exemple 1. Exemple avec chr()

<?php
/* Ajoute un caract&egrave;re d'&eacute;chappement &agrave; la fin de la cha&icirc;ne $str */
  $str .= chr(27);

/* Ceci est souvent plus pratique, et r&eacute;alise la m&ecirc;me chose */
  $str = sprintf("The string ends in escape: %c", 27);
?>

Vous pouvez trouvez une table des codes ASCII ici : http://www.asciitable.com.

Cette fonction est l'inverse de ord(). Voir aussi sprintf(), et le caractère de formattage %c.

Précédent | Sommaire | Suivant
chop | Niveau supérieur | chunk_split


chunk_split

(PHP 3>= 3.0.6, PHP 4 )

chunk_split -- Scinde une chaîne

Description

string chunk_split ( string body [, int chunklen [, string end]])

chunk_split() scinde la chaîne body en segments de chunklen octets de longueur. Cette fonction est très pratique pour convertir des résultats de base64_encode au format de la RFC 2045. Elle insère le paramètre end (par défaut, "\r\n") tous les chunklen caractères (par défault, 76). Elle retourne la nouvelle chaîne, et ne modifie pas la chaîne originale.

Exemple 1. Exemple avec chunk_split()

<?php
// Formatter des donn&eacute;es pour suivre la norme RFC 2045

  $new_string = chunk_split(base64_encode($data));
?>

Voir aussi
explode(),
split(),
wordwrap() et
RFC 2045.

Précédent | Sommaire | Suivant
chr | Niveau supérieur | convert_cyr_string


convert_cyr_string

(PHP 3>= 3.0.6, PHP 4 )

convert_cyr_string -- Convertit une chaîne d'un jeu de caractères cyrillique à l'autre

Description

string convert_cyr_string ( string str, string from, string to)

convert_cyr_string() retourne la chaîne str, après l'avoir traduite depuis le jeu de caractères cyrillique from vers to. Les paramètres from et to sont des caractères qui représentent les jeux de caractères d'origine et de destination. Les types suivants sont supportés :

  • k - koi8-r

  • w - windows-1251

  • i - iso8859-5

  • a - x-cp866

  • d - x-cp866

  • m - x-mac-cyrillic

Précédent | Sommaire | Suivant
chunk_split | Niveau supérieur | count_chars


count_chars

(PHP 4 )

count_chars -- Retourne des statistiques sur les caractères utilisés dans une chaîne

Description

mixed count_chars ( string string [, int mode])

count_chars compte le nombre d'occurences de tous les octets présents dans la chaîne string et retourne différentes statistiques. Le paramètre optionnel mode vaut par défaut 0. Suivant la valeur de mode, count_chars() retourne les informations suivantes :

  • 0 - un tableau avec l'octet en index, et la fréquence correspondante pour chaque octet.

  • 1 - identique à 0 mais seules les fréquences supérieures à zéro sont listées.

  • 2 - identique à 0 mais seules les fréquences nulles sont listées.

  • 3 - une chaîne contenant tous les octets utilisés est retournée.

  • 4 - une chaîne contenant tous les octets non utilisés est retournée.

Exemple 1. Exemple avec count_chars()

<?php

$data = "Deux D et un F.";

$result = count_chars($data, 0);

for ($i=0; $i < count($result); $i++) {
   if ($result[$i] != 0)
       echo "Il y avait $result[$i] occurence(s) de \"" , chr($i) , "\" dans la phrase.\n";
}

?>

Cela affichera :

Il y avait 4 occurence(s) de " " dans la phrase.
Il y avait 1 occurence(s) de "." dans la phrase.
Il y avait 2 occurence(s) de "D" dans la phrase.
Il y avait 1 occurence(s) de "F" dans la phrase.
Il y avait 2 occurence(s) de "e" dans la phrase.
Il y avait 1 occurence(s) de "n" dans la phrase.
Il y avait 1 occurence(s) de "t" dans la phrase.
Il y avait 2 occurence(s) de "u" dans la phrase.
Il y avait 1 occurence(s) de "x" dans la phrase.

Voir aussi strpos() et substr_count().

Précédent | Sommaire | Suivant
convert_cyr_string | Niveau supérieur | crc32


crc32

(PHP 4 >= 4.0.1)

crc32 -- Calcule la somme de contrôle CRC32

Description

int crc32 ( string str)

crc32() génère la somme de contrôle cyclique CRC 32, calculée sur 32 bits, et appliqué à la chaîne str. Cette fonction est généralement utilisée pour valider l'intégritée de données durant une transmission.

Note : Comme le type d'entier de PHP est signé, et que de nombreuses sommes de contrôle CRC32 aboutissent à un nombre négatif, vous devez utiliser le format "%u" de la fonction sprintf() ou printf() pour obtenir la représentation littérale de la somme de contrôle CRC32.

Cet exemple illustre comment afficher la somme de contrôle avec la fonction printf() :

Exemple 1. Afficher une somme de contrôle CRC32

<?php
  $checksum = crc32("Le vif z&eacute;phyr jubile sur les kumquats du clown gracieux.");
  printf("%u\n", $checksum);
?>

Voir aussi md5() et sha1().

Précédent | Sommaire | Suivant
count_chars | Niveau supérieur | crypt


crypt

(PHP 3, PHP 4 )

crypt -- Chiffrage indéchiffrable (hashing)

Description

string crypt ( string str [, string salt])

crypt() retourne la chaîne str chiffrée avec l'algorithme standard Unix DES, ou bien un des algorithmes disponibles sur la machine. L'argument optionnel salt sera utilisé comme base pour le chiffrement. Reportez vous aux pages de manuel Unix pour plus de détails sur la fonction crypt.

Si l'argument salt n'est pas fourni, PHP en générera un lui-même.

Certains systèmes supportent plus d'un type de chiffrement. En fait, il arrive que le chiffrement DES standard soit remplacé par un algorithme de chiffrement MD5. Le choix du type de chiffrement est effectué en se basant sur la valeur du salt. A l'installation, PHP détermine les possibitilités de la fonction crypt(), et acceptera des salt pour d'autres types de chiffrements. Si aucun salt n'est fourni, PHP va en générer un de deux caractères, à moins que le système par défaut soit MD5, auquel cas un salt compatible MD5 sera généré. PHP définit une constante appelée CRYPT_SALT_LENGTH qui vous dira si un salt de deux caractères s'applique à votre système, ou bien si c'est un salt de 12 caractères.

Si vous utilisez le salt généré, pensez bien que le salt est généré une seule fois. Si vous appelez cette fonction récursivement, cela peut avoir des impacts sur la sécurité et l'apparence du résultat.

crypt(), lorsqu'elle est utilisée avec le chiffrement standard DES, retourne le salt dans les deux premiers caractères de la chaîne retournée. Elle n'utilise que les 8 premiers caractères de str, ce qui fait que toutes les chaînes plus longues, qui ont les mêmes premiers 8 octets retourneront le même résultat (tant que le salt est toujours le même).

Sur les sytèmes où crypt() supporte plusieurs types de chiffrements, les constantes suivantes sont mises à 1 ou 0, suivant que le type correspondant est disponible :

  • CRYPT_STD_DES - Chiffrement DES standard à 2 caractères

  • CRYPT_EXT_DES - Chiffrement DES étendu à 9 caractères

  • CRYPT_MD5 - Chiffrement MD5 à 12 caractères commençant par $1$

  • CRYPT_BLOWFISH - Chiffrement Blowfish à 16 caractères commençant par $2$

Note : Il n'existe pas de fonction de déchiffrement, car la fonction crypt() utilise un algorithme à un seul sens (injection).

Exemple 1. Exemple avec crypt()

<?php
$mot_de_passe = crypt("MonM0TdEPa&&e");
// laissons le salt initialis&eacute; par &php;

/*
  Il vaut mieux passer le r&eacute;sultat complet de crypt() comme salt n&eacute;cessaire
  pour le chiffrement du mot de passe, pour &eacute;viter les probl&egrave;mes entre les
  algorithmes utilis&eacute;s (comme nous le disons ci-dessus, le chiffrement
  standard DES utilise un salt de 2 caract&egrave;res, mais un chiffrement
  MD5 utilise un salt de 12.
*/
if (crypt($utilisateur_input,$mot_de_passe_input) == $mot_de_passe) {
   echo "Mot de passe correct!";
}
?>

Voir aussi md5() et l'extension Mcrypt.

Précédent | Sommaire | Suivant
crc32 | Niveau supérieur | echo


echo

(PHP 3, PHP 4 )

echo -- Affiche une chaîne de caractères

Description

void echo ( string arg1 [, string argn...])

Affiche tous les paramètres.

echo() n'est pas vraiment une fonction (c'est techniquement une structure du langage). Cela fait que vous n'êtes pas obligés d'utiliser des parenthèses. En fait, si vous voulez passer plusieurs paramètres à afficher, vous ne devez pas utiliser de parenthèses. Il n'est pas possible d'utiliser echo() dans un contexte de fonction variable. Dans ce cas, il faut utiliser print() à la place.

Exemple 1. Exemples avec echo()

<?php
  echo "Bonjour le monde";

echo "Cet echo() se
r&eacute;partit sur plusieurs lignes. Il affiche aussi les
nouvelles lignes";

echo "Cet echo() se\nr&eacute;partit sur plusieurs lignes. Il affiche aussi les\nnouvelles lignes";

echo "L'&eacute;chappement de caract&egrave;res se fait : \"comme ceci\".";

// Vous pouvez utiliser des variables avec echo()
$foo = "foobar";
$bar = "barbaz";

echo "foo vaut \"$foo\""; // foo vaut "foobar"

// Vous pouvez aussi utiliser des tableaux
$bar = array("clef" => "foo");

echo "c'est {$bar['clef']} !"; // c'est foo !

// Les guillemets simples annulent le remplacement des variables
echo 'foo vaut $foo'; // foo vaut $foo

// Si vous n'utilisez pas d'autres caract&egrave;res,
// vous pouvez afficher plusieurs variables
// en les s&eacute;parant par des virgules
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

echo <<<END
Cette syntaxe s'intitule le "here document" et
permet d'afficher plusieurs lignes avec de
l'interpolation de variables. Notez que la fin de
la syntaxe doit appara&icirc;tre sur une nouvelle ligne,
avec uniquement un point-virgule, et pas d'espace
de plus !
END;

// comme echo() n'est pas une fonction, le code suivant n'est pas valide
($some_var) ? echo('Oui'): echo('Non');

// Cependant, les lignes suivantes sont valides :
($some_var) ? print('Oui'): print('Non'); // print est une fonction
echo $some_var ? 'Oui': 'Non';
?>

echo() dispose aussi d'une version courte, où vous pouvez faire suivre la balise PHP ouvrante d'un signe égal (=).

Exemple 2. Afficher sans l'aide de echo()

J'ai <?=$foo?> fous.

Note : Cette syntaxe courte n'est possible que si la configuration de short_open_tag a été activée.

Pour une brève discussion à propos des différences entre print() et echo(), consultez cet article des FAQTs Knowledge Base : http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi
print(),
printf() et
flush().

Précédent | Sommaire | Suivant
crypt | Niveau supérieur | explode


explode

(PHP 3, PHP 4 )

explode -- Coupe une chaîne en segments

Description

array explode ( string separator, string string [, int limit])

explode retourne un tableau de chaînes. Ce sont les sous-chaînes, extraites de string, en utilisant le séparateur separator. Si limit est fourni, le tableau retourné aura un maximum de limit éléments, et le dernier élément du tableau contiendra le reste de la chaîne string.

Si separator est une chaîne vide (""), explode() retournera FALSE. Si separator contient une valeur qui n'est pas contenue dans string, alors explode() retournera un tableau, contenant la chaîne string entière.

Note : Le paramètre limit a été ajouté en PHP 4.0.1.

Exemple 1. Exemple avec explode()

<?php
  $pizza = "garniture1 garniture2 garniture3 garniture4";
  $pieces = explode(" ", $pizza);

  $data = "foo:*:1023:1000::/home/foo:/bin/sh";
  list($user,$pass,$uid,$gid,$gecos,$home,$shell) = explode(":",$data);
?>

Note : bien que pour des raisons historiques, implode() accepte les paramètres dans un ordre ou l'autre, explode() ne le peut pas. Vous devez vous assurer que l'argument séparateur separator arrive avant l'argument string.

Voir aussi
preg_split(),
spliti(),
split() et
implode().

Précédent | Sommaire | Suivant
echo | Niveau supérieur | fprintf


fprintf

(PHP 5 CVS only)

fprintf -- Ecrit une chaîne formatée dans un flux

Description

int fprintf ( resource handle, string format [, mixed args])

fprintf() écrit la chaîne produite avec le format format dans le flux représenté par handle.

Le paramètre format est composé de zéro, une ou plusieurs directives : des caractères ordinaires (excluant %) qui sont copiés directement dans le résultat sans modification, et des spécifications de conversion, qui sont exploitées avec un des paramètres suivants. Cette technique s'applique à fprintf(), sprintf() et printf().

Chaque spécification de conversion est constituée d'un signe pourcentage, (%), suivi par un ou plusieurs éléments, dans cet ordre :

  1. Un remplisseur optionnel qui indique quel caractère sera utilisé pour compléter le résultat jusqu'à la longueur requise. Ce peut être le caractère d'espace, ou le caractère 0. Par défaut, le remplissage se fait avec des espaces. Un autre caractère de remplissage peut être spécifié en le préfixant avec un guillemet simple (') : voir les exemples ci-dessous.

  2. Un spécificateur d'alignement qui indique si le résultat doit être aligné à gauche ou à droite. Par défaut, le résultat est aligné à gauche. Le caractère - fera que le résultat est aligné à droite.

  3. Un nombre optionnel, spécificateur de taille indique le nombre minimum de caractères que cette conversion doit fournir en résultat.

  4. Un spécificateur de précision qui indique le nombre de décimales qui doivent être affichées pour les nombres à virgule flottante. Cette option n'a pas d'effet pour les autres types que float. Une auter fonction pratique pour formatter les nombres à virgule flottante est number_format().

  5. Un spécificateur de type qui indique le type avec lequel l'argument sera traité. Plusieurs types possibles :

    % - un caractère de pourcentage litéral. Aucun argument n'est nécessaire.
    b - l'argument est traité comme un entier, et présenté comme un nombre binaire.
    c - l'argument est traité comme un entier, et présenté comme le caractère de code ASCII correspondant.
    d - l'argument est traité comme un entier, et présenté comme un nombre décimal signé.
    u - l'argument est traité comme un entier, et présenté comme un nombre décimal non signé.
    f - l'argument est traité comme un nombre à virgule flottante (type float), et présenté comme un nombre à virgule flottante.
    o - l'argument est traité comme un entier, et présenté comme un nombre octal.
    s - l'argument est traité et présenté comme une chaîne de caractères.
    x - l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en minuscules).
    X - l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en majuscules).

Voir aussi
printf(),
sprintf(),
sscanf(),
fscanf(),
vsprintf() et
number_format().

Exemples

Exemple 1. Entiers avec zéros initiaux sprintf()

<?php
  $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>

Exemple 2. Format monétaire avec sprintf()

<?php
  $money1 = 68.75;
  $money2 = 54.35;
  $money = $money1 + $money2;
  // $money contient "123.1";
  $formatted = sprintf("%01.2f", $money);
  // $formatted contient "123.10"

Précédent | Sommaire | Suivant
explode | Niveau supérieur | get_html_translation_table


get_html_translation_table

(PHP 4 )

get_html_translation_table -- Retourne la table de traduction des entités utilisée par htmlspecialchars() et htmlentities()

Description

array get_html_translation_table ( int table [, int quote_style])

get_html_translation_table() retourne la table de traduction des entités utilisée en interne par les fonctions htmlspecialchars() et htmlentities(). Il existe deux constantes (HTML_ENTITIES et HTML_SPECIALCHARS), qui vous permettent de spécifier la table que vous souhaitez. Et comme dans les fonctions htmlspecialchars() et htmlentities(), vous pouvez optionnellement spécifier le type de guillemets que vous voulez utiliser. Le comportement par défaut est le mode ENT_COMPAT. Pour la description de ces modes, reportez vous à htmlspecialchars().

Exemple 1. Exemple avec la table de traduction des caractères en entités HTML

<?php
  $trans = get_html_translation_table(HTML_ENTITIES);
  $str = "Hallo & <Frau> & Kr&auml;mer";
  $encoded = strtr($str, $trans);
?>
La variable $encoded contient maintenant "Hallo &amp; &lt;Frau&gt; &amp; Kr&auml;mer".

Un truc pratique est d'utiliser array_flip() pour changer la direction de la traduction.

Exemple 2. Exemple avec inversion de la table de traduction des caractères en entités HTML

<?php
  $trans = array_flip($trans);
  $original = strtr($encoded, $trans);
?>
Le contenu de $original sera alors : "Hallo & <Frau> & Krämer".

Voir aussi
htmlspecialchars(),
htmlentities(),
strtr() et
array_flip().

Précédent | Sommaire | Suivant
fprintf | Niveau supérieur | hebrev


hebrev

(PHP 3, PHP 4 )

hebrev -- Convertit un texte logique hébreux en texte visuel

Description

string hebrev ( string hebrew_text [, int max_chars_per_line])

hebrev convertit le texte logique hébreux hebrew_text en texte visuel. Le paramètre optionnel max_chars_per_line indique le nombre maximum de caractères par lignes dans le résultat. hebrev() essaie d'éviter de scinder les mots.

Voir aussi hebrevc().

Précédent | Sommaire | Suivant
get_html_translation_table | Niveau supérieur | hebrevc


hebrevc

(PHP 3, PHP 4 )

hebrevc -- Convertit un texte logique hébreux en texte visuel, avec retours à la ligne

Description

string hebrevc ( string hebrew_text [, int max_chars_per_line])

hebrevc() est similaire à hebrev() à la différence qu'elle convertit les nouvelles lignes (\n) en "<br>\n". Le paramètre optionnel max_chars_per_line indique le nombre maximum de caractères par lignes dans le résultat. hebrevc() essaie d'éviter de scinder les mots.

Voir aussi hebrev().

Précédent | Sommaire | Suivant
hebrev | Niveau supérieur | html_entity_decode


html_entity_decode

(PHP 4 >= 4.3.0)

html_entity_decode -- Convertit toutes les entités HTML en caractères normaux

Description

string html_entity_decode ( string string [, int quote_style [, string charset]])

html_entity_decode() est la fonction contraire de htmlentities() : elle convertit les entités HTML de la chaîne string en caractères normaux.

Le paramètre optionnel quote_style vous permet de définir ce qu'il adviendra des guillemets simples et doubles. Ce paramètre prend l'une des valeurs suivantes (et la valeur par défaut est ENT_COMPAT) :

Tableau 1. Constantes disponibles pour quote_style

Constante | Description
ENT_COMPAT | Convertit les guillemets doubles et ignore les guillemets simples.
ENT_QUOTES | Convertit les guillemets doubles et les guillemets simples.
ENT_NOQUOTES | Convertit les guillemets simples et ignore les guillemets doubles.

Le jeu de caractères ISO-8859-1 est utilisé par défaut, comme paramètre charset. Ce paramètre permet de choisir le jeu de caractères utilisés dans la conversion.

Les jeux de caractères suivantes sont disponibles et supportés par PHP 4.3.0 et plus récent.

Tableau 2. Jeux de caractères supportés

Jeux de caractères | Description
ISO-8859-1 | Europe occidentale, Latin-1
ISO-8859-15 | Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manque au Latin-1(ISO-8859-1).
UTF-8 | Unicode 8 bits multi octets, compatible avec l'ASCII
cp1252 | Jeux de caractères spécifique de Windows pour l'Europe occidentale.
BIG5 | Chinois traditionnel, principalement utilisé à Taiwan.
GB2312 | Chinois simplifié, officiel.
BIG5-HKSCS | Big5 avec les extensions de Hong Kong, chinois traditionnel.
Shift_JIS | Japonais
EUCJP | Japonais

Note : Les autres jeux de caractères ne sont pas reconnus, et le ISO-8859-1 sera utilisé à la place.

Exemple 1. Décoder des entités HTML

<?php
  $orig = "J'ai \"sorti\" le <b>chien</b> tout &agrave; l'heure";
  $a = htmlentities($orig);
  $b = html_entity_decode($a);

  echo $a; // J'ai &quot;sorti&quot; le &lt;b&gt;chien&lt;/b&gt; tout &amp;agrave; l'heure
  echo $b; // J'ai "sorti" le <b>chien</b> tout &agrave; l'heure

// Pour les utilisateurs ayant des versions ant&eacute;rieures &agrave; PHP 4.3.0 :
  function unhtmlentities ($string) {
    $trans_tbl = get_html_translation_table (HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    return strtr ($string, $trans_tbl);
  }

  $c = unhtmlentities($a);
  echo $c;
// J'ai "sorti" le <b>chien</b> tout &agrave; l'heure
?>

Note : Vous pourriez vous demander pouquoi trim(html_entity_decode('&nbsp;')); ne résuit pas la chaîne à la chaîne vide. C'est parceque l'entité '&nbsp;' n'est pas un code ASCII 32 (qui serait supprimé par trim()) mais un code ASCII 160 (0xa0) dans le jeu de caractères par défaut ISO 8859-1.

Voir aussi
htmlentities(),
htmlspecialchars(),
get_html_translation_table(),
htmlspecialchars() et
urldecode().

Précédent | Sommaire | Suivant
hebrevc | Niveau supérieur | htmlentities


htmlentities

(PHP 3, PHP 4 )

htmlentities -- Convertit tous les caractères éligibles en entités HTML

Description

string htmlentities ( string string [, int quote_style [, string charset]])

htmlentities est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits. Comme htmlspecialchars(), cette fonction prend un deuxième argument optionnel, qui indique comment doivent être traités les guillemets doubles et simples. Vous pouvez utiliser l'une des constantes suivantes :

Tableau 1. Constantes disponibles pour quote_style

Nom | Description
ENT_COMPAT | Convertit les guillemets doubles, et ignore les guillemets simples
ENT_QUOTES | Convertit les guillemets doubles et les guillemets simples
ENT_NOQUOTES | Ignore les guillemets doubles et les guillemets simples

Le support du paramètre optionnel quote a été ajouté en PHP 4.0.3.

Comme htmlspecialchars(), cette fonction prend un troisième argument optionnel qui définit le jeux de caractères utilisé durant la conversion. Le support de cet argument a été ajouté en PHP 4.1.0. Actuellement, le jeu de caractères ISO-8859-1 est utilisé par défaut.

Les jeux de caractères suivantes sont disponibles et supportés par PHP 4.3.0 et plus récent.

Tableau 2. Jeux de caractères supportés

Jeux de caractères | Description
ISO-8859-1 | Europe occidentale, Latin-1
ISO-8859-15 | Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manque au Latin-1(ISO-8859-1).
UTF-8 | Unicode 8 bits multi octets, compatible avec l'ASCII
cp1252 | Jeux de caractères spécifique de Windows pour l'Europe occidentale.
BIG5 | Chinois traditionnel, principalement utilisé à Taiwan.
GB2312 | Chinois simplifié, officiel.
BIG5-HKSCS | Big5 avec les extensions de Hong Kong, chinois traditionnel.
Shift_JIS | Japonais
EUCJP | Japonais

Note : Les autres jeux de caractères ne sont pas reconnus, et le ISO-8859-1 sera utilisé à la place.

Si vous voulez réaliser l'opération inverse, vous devez utiliser la fonction html_entity_decode().

Exemple 1. Exemple avec htmlentities()

<?php
$str = "Un 'apostrophe' en <b>gras</b>";

// Affiche : Un 'apostrophe' en &lt;b&gt;gras&lt;/b&gt;
echo htmlentities($str);

// Affiche : Un &#039;apostrophe&#039; en &lt;b&gt;gras&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>

Voir aussi
html_entity_decode(),
get_html_translation_table(),
htmlspecialchars(),
nl2br() et
urlencode().

Précédent | Sommaire | Suivant
html_entity_decode | Niveau supérieur | htmlspecialchars


htmlspecialchars

(PHP 3, PHP 4 )

htmlspecialchars -- Convertit les caractères spéciaux en entités HTML

Description

string htmlspecialchars ( string string [, int quote_style [, string charset]])

Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. htmlspecialchars() remplace tous ces caractères par leur équivalent dans la chaîne string. Cette conversion est très pratique pour la programmation web. Si vous devez remplacer tous les caractères, utilisez plutôt htmlentities() à la place.

htmlspecialchars() est pratique pour éviter que des données fournies par les utilisateurs contiennent des balises HTML, comme pour un forum ou un chat. Cette fonction prend un deuxième argument optionnel, qui indique comment doivent être traités les guillemets doubles et simples. Vous pouvez utiliser l'une des constantes suivantes : ENT_COMPAT, la constante par défaut, va convertir les guillemets doubles, et ignorer les guillemets simples; ENT_QUOTES va convertir les guillemets doubles et les guillemets simples; ENT_NOQUOTES va ignorer les guillemets doubles et les guillemets simples.

Les remplacements effectués sont :

  • '&' (ampersand) devient '&amp;'

  • '"' (guillemets doubles) devient '&quot;' lorsque ENT_NOQUOTES n'est pas utilisé.

  • ''' (single quote) devient '&#039;' uniquement lorsque ENT_QUOTES est utilisé.

  • '<' (supérieur à) devient '&lt;'

  • '>' (inférieur à) devient '&gt;'

Exemple 1. Exemple avec htmlspecialchars()

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
// &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

Notez que cette fonction ne fait aucun autre remplacement que ceux qui sont listés ci-dessus. Pour faire un remplacement total, voyez plutôt htmlentities(). Le support pour le second argument optionnel a été ajouté en PHP 3.0.17 et PHP 4.0.3.

cette fonction prend un troisième argument optionnel qui définit le jeux de caractères utilisé durant la conversion. Le support de cet argument a été ajouté en PHP 4.1.0.

Les jeux de caractères suivantes sont disponibles et supportés par PHP 4.3.0 et plus récent.

Tableau 1. Jeux de caractères supportés

Jeux de caractères | Description
ISO-8859-1 | Europe occidentale, Latin-1
ISO-8859-15 | Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manque au Latin-1(ISO-8859-1).
UTF-8 | Unicode 8 bits multi octets, compatible avec l'ASCII
cp1252 | Jeux de caractères spécifique de Windows pour l'Europe occidentale.
BIG5 | Chinois traditionnel, principalement utilisé à Taiwan.
GB2312 | Chinois simplifié, officiel.
BIG5-HKSCS | Big5 avec les extensions de Hong Kong, chinois traditionnel.
Shift_JIS | Japonais
EUCJP | Japonais

Note : Les autres jeux de caractères ne sont pas reconnus, et le ISO-8859-1 sera utilisé à la place.

Voir aussi
get_html_translation_table(),
htmlentities() et
nl2br().

Précédent | Sommaire | Suivant
htmlentities | Niveau supérieur | implode


implode

(PHP 3, PHP 4 )

implode -- Rassemble les éléments d'un tableau en une chaîne

Description

string implode ( string glue, array pieces)

string implode ( string glue, array pieces)

implode retourne une chaîne contenant la représentation en chaîne de caractères de tous les éléments du tableau pieces, dans le même ordre, avec la chaîne glue, placée entre deux éléments.

Exemple 1. Exemple avec implode()

<?php
  $array = array('nom', 'email', 'telephone');
  $comma_separated = implode(",", $array);

  print $comma_separated;
  // nom,email,telephone
?>

Note : implode() peut, pour des raisons historiques, accepter les paramètres dans un sens ou dans l'autre. Pour des raisons de cohérence avec explode(), toutefois, il est préférable d'utiliser l'ordre des arguments tels que documenté.

Note : Depuis PHP 4.3.0, le paramètre the glue de implode() est optionnel, et par défaut, il vaut la chaîne vide ''.

Voir aussi explode() et split().

Précédent | Sommaire | Suivant
htmlspecialchars | Niveau supérieur | join


join

(PHP 3, PHP 4 )

join -- Rassemble les éléments d'un tableau en une chaîne

Description

string join ( string glue, array pieces)

join() est un alias de implode().

Voir aussi
explode(),
implode() et
split().

Précédent | Sommaire | Suivant
implode | Niveau supérieur | levenshtein


levenshtein

(PHP 3>= 3.0.17, PHP 4 >= 4.0.1)

levenshtein -- Calcule la distance Levenshtein entre deux chaînes

Description

int levenshtein ( string str1, string str2)

int levenshtein ( string str1, string str2, int cost_ins, int cost_rep, int cost_del)

int levenshtein ( string str1, string str2, function cost)

levenshtein() calcule la distance Levenshtein entre deux chaînes de caractères. Elle retournera -1 si l'un des deux arguments contient plus de 255 caractères (cela devrait être plus que suffisant pour faire des comparaisons dans un dictionnaire ou annuaire, et personne de sérieux ne fera de comparaison génétique en PHP).

La distance Levenshtein est définie comme le nombre minimal de caractères qu'il faut remplacer, insérer ou modifier pour transformer la chaîne str1 en str2. La complexité de l'algorithme est en O(m*n), où n et m sont les tailles respectives de str1 et str2 : c'est plutôt bien, en comparaison de similar_text(), qui est en O(max(n,m)**3), mais cela reste très coûteux.

Dans sa forme la plus simple, levenshtein() va prendre uniquement deux chaînes de caractères comme paramètres, et calculer simplement le nombre d'insertions, de remplacements et d'effacements nécessaires pour tranformer str1 en str2.

La deuxième variante de la fonction prend trois paramètres supplémentaires qui représentent les coûts d'insertions, de remplacements et d'effacements. C'est une version plus générale de la première fonction, mais qui est un peu moins efficace.

La troisième variante (qui n'est pas implémentée actuellement), est la version la plus générale, mais la plus lente. Elle appelera une fonction utilisateur qui déterminera le coût de chaque opération.

La fonction utilisateur qui sera appelée reçoit les arguments suivants :

  • Opération à réaliser : 'I', 'R' ou 'D'

  • Caractère dans str1

  • Caractère dans str2

  • Position dans str1

  • Position dans str2

  • Caractères restants dans str1

  • Caractères restants dans str2

Cette fonction doit retourner un entier positif, qui représente le coût de cette opération particulière. Il peut ne prendre en compte que certains des paramètres fournis.

Grâce à cette fonction utilisateur, il est possible de prendre en compte la pertinence ou la valeur des caractères eux-mêmes, ou encore le contexte, pour définir le coûts d'une insertion, d'un effacement ou d'un remplacement. Cela se fait en perdant toutes les optimisations faîtes en terme d'exploitation du CPU et des buffers.

Voir aussi
soundex(),
similar_text() et
metaphone().

Précédent | Sommaire | Suivant
join | Niveau supérieur | localeconv


localeconv

(PHP 4 >= 4.0.5)

localeconv -- Lit la configuration locale

Description

array localeconv ( void )

localeconv() retourne un tableau associatif contenant les informations de formats localisée pour les nombres et la monnaie.

localeconv() retourne les formats en fonction de la configuration effectuée avec setlocale(). Le tableau associatif qui est retourné contient les index suivants :

Index du tableau | Description
decimal_point | Séparateur décimal
thousands_sep | Séparateur de milliers
grouping | Tableau contenant les regroupements numériques
int_curr_symbol | Symbole monétaire international (i.e. EUR)
currency_symbol | Symbole monétaire local (i.e. €)
mon_decimal_point | Séparateur décimal monétaire
mon_thousands_sep | Séparateur de milliers monétaires
mon_grouping | Tableau contenant les regroupements numériques monétaires
positive_sign | Signe des valeurs positives
negative_sign | Signe des valeurs négatives
int_frac_digits | Nombre international de décimales
frac_digits | Nombre local de décimales
p_cs_precedes | TRUE si le currency_symbol précède une valeur positive et FALSE s'il lui succède.
p_sep_by_space | TRUE si un espace sépare currency_symbol d'une valeur positive, et FALSE sinon.
n_cs_precedes | TRUE si currency_symbol précède une valeur négative, et FALSE s'il lui succède.
n_sep_by_space | TRUE si un espace sépare currency_symbol d'une valeur négative, et FALSE sinon.
p_sign_posn

0 | Des parenthèses entourent la valeur et le symbole monétaire
1 | Le signe précède la valeur et le symbole monétaire
2 | Le signe suit la valeur et le symbole monétaire
3 | Le signe précède immédiatement la valeur et le symbole monétaire
4 | Le signe suit immédiatement la valeur et le symbole monétaire

n_sign_posn

0 | Des parenthèses entourent la valeur et le symbole monétaire
1 | Le signe précède la valeur et le symbole monétaire
2 | Le signe suit la valeur et le symbole monétaire
3 | Le signe précède immédiatement la valeur et le symbole monétaire
4 | Le signe suit immédiatement la valeur et le symbole monétaire

Les champs de regroupements contiennent des tableaux qui définissent la manière dont les nombres doivent être regroupés. Par exemple, le champ de regroupement pour en_US contiendra deux éléments, avec les valeurs 3 et 3. Si un élément de tableau contient CHAR_MAX, aucun autre regroupement n'est fait. Si un élément de tableau contient 3, l'élément précédent doit être utilisé.

Exemple 1. Exemple avec localeconv()

<?php
setlocale(LC_ALL, "en_US");

$locale_info = localeconv();

echo "<PRE>\n";
echo "---------------------------------------------------------\n";
echo "  Informations mon&eacute;taires pour la configuration locale : \n";
echo "---------------------------------------------------------\n";

echo "int_curr_symbol:   {$locale_info["int_curr_symbol"]}\n";
echo "currency_symbol:   {$locale_info["currency_symbol"]}\n";
echo "mon_decimal_point: {$locale_info["mon_decimal_point"]}\n";
echo "mon_thousands_sep: {$locale_info["mon_thousands_sep"]}\n";
echo "positive_sign:     {$locale_info["positive_sign"]}\n";
echo "negative_sign:     {$locale_info["negative_sign"]}\n";
echo "int_frac_digits:   {$locale_info["int_frac_digits"]}\n";
echo "frac_digits:       {$locale_info["frac_digits"]}\n";
echo "p_cs_precedes:     {$locale_info["p_cs_precedes"]}\n";
echo "p_sep_by_space:    {$locale_info["p_sep_by_space"]}\n";
echo "n_cs_precedes:     {$locale_info["n_cs_precedes"]}\n";
echo "n_sep_by_space:    {$locale_info["n_sep_by_space"]}\n";
echo "p_sign_posn:       {$locale_info["p_sign_posn"]}\n";
echo "n_sign_posn:       {$locale_info["n_sign_posn"]}\n";
echo "</PRE>\n";
?>

La constante CHAR_MAX est aussi définie pour être utilisée comme indiqué ci-dessus.

Voir aussi setlocale().

Précédent | Sommaire | Suivant
levenshtein | Niveau supérieur | ltrim


ltrim

(PHP 3, PHP 4 )

ltrim -- Supprime les caractères invisibles de début de chaîne

Description

string ltrim ( string str [, string charlist])

ltrim() retourne la chaîne str, après avoir supprimé les caractères invisibles de début de chaîne. Si le second paramètre charlist a été omis, ltrim() supprimera les caractères suivants :

  • " " (ASCII 32 (0x20)), un espace ordinaire.

  • " " (ASCII 9 (0x09)), une tabulation.

  • "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).

  • "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).

  • "\0" (ASCII 0 (0x00)), le caractère NUL.

  • "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.

Il est aussi possible de spécifier les caractères à supprimer en utilisant le paramètre charlist. Listez simplement les caractères que vous voulez supprimer dans ce paramètre. Avec .., vous pourrez spécifier des intervalles de caractères.

Exemple 1. Exemple avec ltrim()

<?php

$text = "        Voici quelques mots :) ...  ";
$trimmed = ltrim($text);
// $trimmed = "Voici quelques mots :) ...  "
$trimmed = ltrim($text,"     .");
// $trimmed = "Voici quelques mots :) ...  "
$clean = ltrim($binary,"\0x00..\0x1F");
// supprime tous les caract&egrave;res de contr&ocirc;le ASCII au d&eacute;but de la cha&icirc;ne de caract&egrave;res.
// (de 0 &agrave; 31 inclus)
?>

Note : Le second paramètre a été ajouté en PHP 4.1.0.

Voir aussi trim() et rtrim().

Précédent | Sommaire | Suivant
localeconv | Niveau supérieur | md5_file


md5_file

(PHP 4 >= 4.2.0)

md5_file -- Calcule le md5 d'un fichier

Description

string md5_file ( string filename [, bool raw_output])

md5_file() calcule le MD5 du fichier filename en utilisant l'algorithme RSA Data Security, Inc. MD5 Message-Digest Algorithm, puis retourne la valeur ainsi calculée. Le résultat est un nombre de 32 caractères hexadécimaux. Si le paramètre optionnel raw_output vaut TRUE, le digest MD5 est retourné au format binaire brut, avec une taille de 16.

Note : Le paramètre optionnel raw_output a été ajouté en PHP 5.0.0 et vaut par défaut FALSE.

md5_file() a la même utilité que la commande en ligne md5sum.

Voir aussi
md5(),
crc32() et
sha1_file().

Précédent | Sommaire | Suivant
ltrim | Niveau supérieur | md5


md5

(PHP 3, PHP 4 )

md5 -- Calcule le md5 d'une chaîne

Description

string md5 ( string str [, bool raw_output])

md5 calcule le MD5 de la chaîne de caractères str en utilisant l'algorithme RSA Data Security, Inc. MD5 Message-Digest Algorithm, et retourne le résultat. Le résultat est un nombre de 32 caractères hexadécimaux.

Note : Le paramètre raw_output a été ajouté en PHP 5.0.0 et vaut par défaut FALSE.

Exemple 1. Exemple avec md5()

<?php
$str = 'pomme';

if (md5($str) === 'ede0f9c3a1d2093e3f48fcafd3c70915') {
    echo "Voulez vous une golden ou une spartan?";
    exit;
}
?>

Voir aussi
crc32(),
md5_file() et
sha1().

Précédent | Sommaire | Suivant
md5_file | Niveau supérieur | metaphone


metaphone

(PHP 4 )

metaphone -- Calcule la clé métaphone

Description

string metaphone ( string str)

metaphone() calcule la clé metaphone de la chaîne de caractères str.

metaphone() est similaire à la fonction soundex() : elle créée une clé similaire pour des mots dont la prononciation est proche. C'est une fonction qui est plus précise que soundex() car elle prend en compte la prononciation anglaise. La clé metaphone générée est de taille variable.

metaphone() fonctionne en anglais, et n'utilise pas les spécificités de la langue française. Les résultats sur des termes français peuvent être des plus aléatoires.

Metaphone a été développé par Lawrence Philips <lphilips@verity.com>. Cette méthode est décrite dans le livre ["Practical Algorithms for Programmers", Binstock & Rex, Addison Wesley, 1995].

Précédent | Sommaire | Suivant
md5 | Niveau supérieur | money_format


money_format

(PHP 4 >= 4.3.0)

money_format -- Met un nombre au format monétaire

Description

string money_format ( string format, float number)

money_format() retourne le nombre number avec le format financier. Cette fonction fait l'interface avec la fonction strmon() de la librairie C, à la différence près que cette implémentation ne convertit qu'un nombre à la fois.

Le paramètre de format est constitué de la séquence suivante :

  • un caractère %

  • une configuration optionnelle

  • une taille de champ optionnelle

  • une précision à gauche optionnelle

  • une précision à droite optionnelle

  • un caractère de conversion obligatoire

Configuration. Une ou plusieurs des configurations suivantes sont utilisables :

=f

Le caractère = suivi par un octet unique f qui sera utilisé comme caractère de remplissage. Le caractère de remplissage par défaut est espace.

^

Désactive le groupage de caractères (tel que définit dans la configuration locale).

+ ou (

Specifie le style de formatage pour lesnombres positifs et négatifs. Si + est utilisé, les équivalents dans la configuration locale de + et - seront utilisés. Si ( est utilisé, les sommes négatives seront placées entre parenthèses. Si aucune spécification n'est fournie, la valeur par défaut est +.

!

Supprime le simple monétaire dans la chaîne finale.

-

Si fourni, cette configuration fait que les champs seront justifiés à gauche (complétés à droite), au contraire de la configuration par défaut qui est justifiée à droite, et complétée à gauche.

Taille de champs.

w

Un nombre décimal qui spécifie la taille minimale du champ. Le champ sera complété à gauche, à moins que la configuration - ne soit utilisée. Par défaut, cette valeur est de 0.

Précision à gauche.

#n

Le nombre maximal de chiffres (n) attendus à gauche du séparateur décimal (e.g. la virgule). Cette option est généralement utilisée pour conserver l'alignement de colonnes de nombres, en utilisant un caractère pour compléter le nombre si ce dernier a moins de n chiffres. Si le nombre réel de chiffres est plus grand que n, cette specification est ignorée.

Si le groupage n'a pas été supprimé via la configuration ^, les séparateurs de groupage seront insérés avant le caractère de remplissage (le cas échéant). Les séparateurs ne seront pas appliqués aux caractères de remplissage, même si ce caractère est un nombre.

Pour s'assurer de l'alignement, tous les caractères apparaissant avant et après le nombre formaté, tels que les symboles monétaires ou les signes négatif et positif, seront placés au même endroit grâce à des espaces supplémentaires, afin que toutes les tailles des nombres soient les mêmes.

Précision à droite.

.p

Un point suivi par un nombre de décimales (p). Si la valeur de p est 0 (zéro), le séparateur décimal et les décimales seront supprimées. Si aucune précision à droite n'est précisée, la valeur par défaut sera lue dans la configuration locale. Le nombre formaté sera alors arrondi pour satisfaire les contraintes d'affichage.

Caractères de conversion.

i

Le nombre est formaté suivant le format monétaire international de la configuration locale (e.g. pour la France : 1 234,56 F).

n

Le nomre est formaté en fonction du format monétaire national (e.g. pour la configuation de_DE : DM1.234,56).

%

Retourne le caractère %.

Note : La catégorie LC_MONETARY de la configuration locale affecte le comportement de cette fonction. Utilisez setlocale() pour configurer correctement PHP avant d'utiliser cette fonction.

Les caractères placés avant et après la chaîne de formattage seront laissés intacts.

Exemple 1. Exemple avec money_format()

Voici plusieurs exemples d'utilisation de la fonction money_format() avec différentes chaînes de formatage, et configurations locales.

<?php

    $number = 1234.56;

    // Affichons ce nombre au format international pour en_US
    setlocale(LC_MONETARY, 'en_US');
    echo money_format('%i', $number)."\n";
    // USD 1,234.56

    // Et au format italien national avec 2 decimales
    setlocale(LC_MONETARY, 'it_IT');
    echo money_format('%.2n', $number)."\n";
    // L. 1.234,56

    // Utilisation d'un nombre n&eacute;gatif
    $number = -1234.5672;

    // Format US national, avec les parenth&egrave;eses pour les nombres n&eacute;gatifs
    // et 10 chiffres de pr&eacute;cision &agrave; gauche
    setlocale(LC_MONETARY, 'en_US');
    echo money_format('%(#10n', $number)."\n";
    // ($        1,234.57)

    // Format similaire au pr&eacute;c&eacute;dent, en ajoutant 2 d&eacute;cimales
    // pour la pr&eacute;cision &agrave; droite, et en utilisant le caract&egrave;re de remplissage '*'
    echo money_format('%=*(#10.2n', $number)."\n";
    // ($********1,234.57)

    // Utilisons maintenant la justification &agrave; gauche, avec un champ de 14 caract&egrave;res
    // de longs, sans groupage de chiffres, et en utilisant le format international
    // pour de_DE
    setlocale(LC_MONETARY, 'de_DE');
    echo money_format('%=*^-14#8.2i', 1234.56)."\n";
    // DEM 1234,56****

    // Ajoutons encore &agrave; l'exemple pr&eacute;c&eacute;dent
    setlocale(LC_MONETARY, 'en_GB');
    $fmt = 'La valeur finale est %i (apr&egrave;s 10% de remise)';
    echo money_format($fmt, 1234.56)."\n";
    // La valeur finale est GBP 1,234.56 (apr&egrave;s 10% de remise)

?>

Voir aussi
setlocale(),
number_format(),
sprintf(),
printf() et
sscanf().

Précédent | Sommaire | Suivant
metaphone | Niveau supérieur | nl_langinfo


nl_langinfo

(PHP 4 >= 4.1.0)

nl_langinfo -- Rassemble des informations sur la langue et la configuration locale.

Description

string nl_langinfo ( int item)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
money_format | Niveau supérieur | nl2br


nl2br

(PHP 3, PHP 4 )

nl2br -- Insère un retour à la ligne HTML à chaque nouvelle ligne

Description

string nl2br ( string string)

nl2br() retourne string après avoir inséré '<br />' devant toutes les nouvelles lignes.

Note : Depuis PHP 4.0.5, nl2br() est désormais compatible XHTML. Toutes les versions antérieures à 4.0.5 retourneront l'argument string avec '<br>' inséré devant les nouvelles lignes, au lieu de '<br />'.

Voir aussi
htmlspecialchars(),
htmlentities(),
wordwrap() et
str_replace().

Précédent | Sommaire | Suivant
nl_langinfo | Niveau supérieur | number_format


number_format

(PHP 3, PHP 4 )

number_format -- Formate un nombre pour l'affichage

Description

string number_format ( float number [, int decimals])

string number_format ( float number, int decimals, string dec_point, string thousands_sep)

number_format() retourne une chaîne représentant number formaté. number_format() accepte un, deux ou 4 paramètres (mais pas trois).

Si seul le paramètre number est donné, il sera formaté sans partie décimale, mais avec une virgule entre chaque millier.

Si les deux paramètres number et decimals sont fournis, number sera formaté avec decimals décimales, un point (".") comme séparateur décimal et une virgule entre chaque millier.

Avec quatre paramètres, number sera formaté avec decimals décimales, dec_point comme séparateur décimal, et thousands_sep comme séparateur de milliers.

Note : Seul le premier caractère du paramètre thousands_sep est utilisé. Par exemple, si vous utilisez foo comme séparateur de milliers, sur le nombre 1000, number_format() retournera 1f000.

En notation française, on utilise généralement deux chiffres après la virgule, une virgule comme séparateur décimal, et un espace comme séparateur de milliers. Cela donne :

Exemple 1. Exemple avec number_format()

<?php
  $nombre = 1234.56;
// Notation anglaise (par d&eacute;faut)
  $english_format_number = number_format($nombre);
// 1,234.56
// Notation fran&ccedil;aise
  $nombre_format_francais = number_format($nombre, 2, ',', ' ');
// 1 234,56
?>

Voir aussi
sprintf(),
printf() et
sscanf().

Précédent | Sommaire | Suivant
nl2br | Niveau supérieur | ord


ord

(PHP 3, PHP 4 )

ord -- Retourne le code ASCII d'un caractère

Description

int ord ( string string)

ord retourne le code ASCII du premier caractère de string. Cette fonction est le contraire de chr().

Exemple 1. Exemple avec ord()

<?php
  if (ord($str) == 10) {
    echo "Le premier caract&egrave;re de \$str est une nouvelle ligne\n";
  }
?>

Vous pouvez trouver une table des codes ASCII ici : http://www.asciitable.com.

Voir aussi chr().

Précédent | Sommaire | Suivant
number_format | Niveau supérieur | parse_str


parse_str

(PHP 3, PHP 4 )

parse_str -- Analyse une requête HTTP

Description

void parse_str ( string str [, array arr])

parse_str() analyse la chaîne de caractères str comme s'il s'agissait d'une requête HTTP, passée via l'URL, en méthode GET ou POST. Toutes les variables qu'elle y repère sont alors créées, avec leurs valeurs respectives. Si le second paramètre arr est fourni, les variables y seront stockées, sous forme d'index de tableau.

Note : Le support du paramètre optionnel arr a été ajouté en PHP 4.0.3.

Note : Pour accéder à l'URL appelante QUERY_STRING, vous devez utiliser la variable $_SERVER['QUERY_STRING']. Il est aussi intéressant de lire la section sur les variables externes à PHP.

Exemple 1. Exemple avec parse_str()

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>

Voir aussi
parse_url(),
pathinfo(),
set_magic_quotes_runtime() et
urldecode().

Précédent | Sommaire | Suivant
ord | Niveau supérieur | print


print

(PHP 3, PHP 4 )

print -- Affiche une chaîne de caractères

Description

int print ( string arg)

print affiche la chaîne de caractères arg. print retourne toujours 1.

print() n'est pas vraiment une fonction (c'est techniquement une structure du langage). Cela fait que vous n'êtes pas obligés d'utiliser des parenthèses.

Exemple 1. Exemples avec print()

<?php
  print("Bonjour le monde");

  print "print() fonctionne aussi sans les parenth&egrave;ses.";

  print "Ce print() se
r&eacute;partit sur plusieurs lignes. Il affiche aussi les
nouvelles lignes";

  print "Ce print() se\nr&eacute;partit sur plusieurs lignes. Il affiche aussi les\nnouvelles lignes";

  print "L'&eacute;chappement de caract&egrave;res se fait : \"comme ceci\".";

// Vous pouvez utiliser des variables avec print
$foo = "foobar";
$bar = "barbaz";

print "foo vaut $foo"; // foo vaut foobar

// Vous pouvez aussi utiliser des tableaux
$bar = array("clef" => "foo");

print "c'est {$bar['clef']} !"; // c'est foo !

// Les guillemets simples annulent le remplacement des variables
print 'foo vaut $foo'; // foo vaut $foo

print <<<END
Cette syntaxe s'intitule le "here document" et
permet d'afficher plusieurs lignes avec de
l'interpolation de variables. Notez que la fin de
la syntaxe doit appara&icirc;tre sur une nouvelle ligne,
avec uniquement un point-virgule, et pas d'espace
de plus !
END;
?>

Pour une brève discussion à propos des différences entre print() et echo(), consultez cet article des FAQTs Knowledge Base : http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi
echo(),
printf() et
flush().

Précédent | Sommaire | Suivant
parse_str | Niveau supérieur | printf


printf

(PHP 3, PHP 4 )

printf -- Affiche une chaîne de caractères formattée

Description

void printf ( string format [, mixed args])

printf() affiche les arguments args formatés sous forme de chaîne de caractères grâce à args. Les options de formatage sont documentées avec la fonction sprintf().

Voir aussi
print(),
sprintf(),
sscanf(),
fscanf() et
flush().

Précédent | Sommaire | Suivant
print | Niveau supérieur | quoted_printable_decode


quoted_printable_decode

(PHP 3>= 3.0.6, PHP 4 )

quoted_printable_decode -- Convertit une chaîne quoted-printable en chaîne 8 bits

Description

string quoted_printable_decode ( string str)

quoted_printable_decode retourne la chaîne de caractères str, après l'avoir convertie du format quoted printable en format binaire 8 bits. Cette fonction est similaire à imap_qprint(), hormis le fait qu'elle n'exige pas le module IMAP, pour fonctionner.

Précédent | Sommaire | Suivant
printf | Niveau supérieur | quotemeta


quotemeta

(PHP 3, PHP 4 )

quotemeta -- Echappe les méta-caractères

Description

string quotemeta ( string str)

quotemeta retourne la chaîne str après avoir introduit un anti-slash (\) devant tous les caractères suivants :
. \\ + * ? [ ^ ] ( $ )

Voir aussi
addslashes(),
htmlentities(),
htmlspecialchars(),
nl2br() et
stripslashes().

Précédent | Sommaire | Suivant
quoted_printable_decode | Niveau supérieur | rtrim


rtrim

(PHP 3, PHP 4 )

rtrim -- Supprime les espaces de fin de chaîne

Description

string rtrim ( string str [, string charlist])

rtrim() retourne la chaîne str, après avoir supprimé tous les caractères blancs de fin de chaîne. Appelée sans le second paramètre, rtrim() supprimera les caractères suivants :

  • " " (ASCII 32 (0x20)), un espace ordinaire.

  • "\t" (ASCII 9 (0x09)), une tabulation.

  • "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).

  • "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).

  • "\0" (ASCII 0 (0x00)), le caractère NUL.

  • "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.

Il est aussi possible de spécifier les caractères à supprimer en utilisant le paramètre charlist. Listez simplement les caractères que vous voulez supprimer dans ce paramètre. Avec .., vous pourrez spécifier des intervalles de caractères.

Exemple 1. Exemple avec rtrim()

<?php

$text = "        Voici quelques mots :) ...  ";
$trimmed = rtrim($text);
// $trimmed = "        Voici quelques mots :) ..."
$trimmed = rtrim($text,"     .");
// $trimmed = "        Voici quelques mots :)"
$clean = rtrim($binary,"\0x00..\0x1F");
// supprime tous les caract&egrave;res de contr&ocirc;le ASCII au d&eacute;but de la cha&icirc;ne de caract&egrave;res.
// (de 0 &agrave; 31 inclus)
?>

Note : Le second paramètre a été ajouté en PHP 4.1.0.

Voir aussi trim() et ltrim().

Précédent | Sommaire | Suivant
quotemeta | Niveau supérieur | setlocale


setlocale

(PHP 3, PHP 4 )

setlocale -- Modifie les informations de localisation

Description

string setlocale ( mixed category, string locale [, string ...])

string setlocale ( mixed category, array locale)

setlocale() retourne la nouvelle configuration locale, ou FALSE si la localisation n'est pas implémentée sur votre plate-forme, si la variable de localisation n'existe pas, ou si la catégorie spécifiée n'est pas valide. Un nom de catégorie invalide générera un message d'alerte.

category est une constante (ou une chaîne) qui spécifie la catégorie de fonction affectées par la configuration de localisation :

  • LC_ALL pour toutes les constantes suivantes

  • LC_COLLATE pour la comparaison de chaînes de caractères. Voir strcoll()

  • LC_CTYPE pour la classification et la conversion de caractères. Voir strtoupper()

  • LC_MONETARY pour localeconv()

  • LC_NUMERIC pour le spéarateur décimal. Voir localeconv()

  • LC_TIME pour le format de date et d'heure avec strftime()

Si locale est la chaîne vide "", les noms de locales seront pris dans l'environnement, à partir des variables de même noms que les catégories ci-dessus, ou depuis "LANG".

Si locale est NULL ou vaut "0", la configuration locale ne sera pas modifiée, et la configuration courante sera retournée.

Note : La possibilité de passer plusieurs locales est disponible depuis PHP 4.3.0.

setlocale() retourne la valeur de la locale courante, ou bien FALSE si la fonctionnalité de localisation n'est pas implémentée sur votre plate-forme, si la locale spécifiée n'existe pas, ou si la catégorie n'existe pas. Une catégorie invalide causera aussi l'affichage d'un message d'alerte.

Si locale vaut zéro ou "0", la configuration de localisation ne sera pas modifiée, et seule la valeur courante sera retournée.

Note : Passer plusieurs locales n'était pas disponible avant PHP 4.3.0.

setlocale() retourne la nouvelle valeur locale, ou bien FALSE si la fonctionnalité n'est pas implantée sur votre plate forme, que la configuration spécifiée n'existe pas ou que le nom de catégorie est invalide. Un nom de catégorie invalide causera aussi l'affichage d'une alerte. Les noms de catégories et de configurations locales sont disponibles dans la RFC 1766 et ISO 639.

Note : La valeur retournée par setlocale() dépend du système d'explotiation qui fait tourner PHP. La valeur retournée est exactement celle que la fonction setlocale() du système retourne.

Tuyau : Les utilisateurs de Windows trouverons des informations utiles à propos du paramètre locale sur le site web MSDN de Microsoft. Les valeurs de locales supportées peuvent être trouvées ici et les chaînes de pays/région ici. Les systèmes Windows supportent les codes à trois lettres pour les pays/régions spécifiés par ISO 3166-Alpha-3, qui peut être trouvé sur le site web Unicode .

Exemple 1. Exemple avec setlocale()

<?php
    /* Configure le script en hollandais */
    setlocale (LC_ALL, 'nl_NL');

    /* Affiche : vrijdag 22 december 1978 */
    echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));

    /* Essai de diff&eacute;rentes valeurs possible pour l'allemand depuis
       &php; 4.3.0 */
       $loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
    echo "L'identifiant de l'allemand sur ce syst&egrave;me est '$loc_de'";
?>

Exemple 2. Exemple avec setlocale() pour Windows

<?php
    /* Configure le script en hollandais */
    setlocale (LC_ALL, 'nld_nld');

    /* Affiche : vrijdag 22 december 1978 */
    echo strftime ("%A %d %B %Y", mktime (0, 0, 0, 12, 22, 1978));

    /* Essai de diff&eacute;rentes valeurs possible pour l'allemand depuis
       &php; 4.3.0 */
    $loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
       echo "L'identifiant de l'allemand sur ce syst&egrave;me est '$loc_de'";
?>

Précédent | Sommaire | Suivant
rtrim | Niveau supérieur | sha1_file


sha1_file

(PHP 4 >= 4.3.0)

sha1_file -- Calcule le sha1 d'un fichier

Description

string sha1_file ( string filename [, bool raw_output])

sha1_file calcule le sha1 du fichier filename en utilisant US Secure Hash Algorithm 1, puis retourne ce sha1. Le sha1 est un nombre hexadécimal de 40 caractères. En cas d'erreur, FALSE est retourné.

Voir aussi
sha1(),
crc32() et
md5_file()

Précédent | Sommaire | Suivant
setlocale | Niveau supérieur | sha1


sha1

(PHP 4 >= 4.3.0)

sha1 -- Calcule le sha1 d'une chaîne de caractères

Description

string sha1 ( string str [, bool raw_output])

sha1() calcule le sha1 de la chaîne de caractères str en utilisant US Secure Hash Algorithm 1, puis retourne cette valeur. Un sha1 est un nombre hexadécimal de 40 caractères.

Exemple 1. Exemple avec sha1()

<?php
$str = 'pomme';

if (sha1($str) === '752c14ea195c460bac3c3b7896975ee9fd15eeb7') {
    echo "Voulez-vous une golden ou une spartan?";
    exit;
}
?>

Voir aussi
sha1_file(),
crc32() et
md5()

Précédent | Sommaire | Suivant
sha1_file | Niveau supérieur | similar_text


similar_text

(PHP 3>= 3.0.7, PHP 4 )

similar_text -- Calcule la similarité de deux chaînes

Description

int similar_text ( string first, string second [, float percent])

similar_text() calcule la similarité entre les deux chaînes first et second, selon la méthode d'Oliver [1993]. Notez que cette implémentation n'utilise pas la méthode de pile comme dans le pseudo code d'Oliver, mais des appels récursifs, ce qui accélère ou pas le processus. Notez que la complexité de l'algorithme est en O(N**3) où N est la taille de la plus grand chaîne.

Le troisième argument percent est une référence, où similar_text() va calculer la similarité en pourcentage automatiquement. Sinon, elle retourne le nombre de caractères identiques dans les deux chaînes.

Précédent | Sommaire | Suivant
sha1 | Niveau supérieur | soundex


soundex

(PHP 3, PHP 4 )

soundex -- Calcule la clé soundex

Description

string soundex ( string str)

soundex calcule la clé soundex de la chaîne str.

La clé soundex possède la propriété qui fait que deux mots prononcés similairement auront la même clé soundex. Cette fonction est donc utilisée pour simplifier les recherches dans les bases de données, où vous connaissez la prononciation d'un mot ou nom, mais pas son orthographe exacte. Cette fonction retourne une chaîne de 4 caractères, commençant par une lettre.

L'implémentation de la fonction soundex de PHP a été décrite par Donald Knuth dans "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392.

Notez bien que soundex() prend en compte la prononciation à l'anglaise, et non pas à la française. Les résultats pourront donc être très différents de ce que l'on peut attendre. Des versions en langue française de soundex existent, mais elles ne sont pas intégrées dans PHP.

Exemple 1. Exemples avec soundex()

<?php
  soundex("Euler") == soundex("Ellery") == 'E460';
  soundex("Gauss") == soundex("Ghosh") == 'G200';
  soundex("Hilbert") == soundex("Heilbronn") == 'H416';
  soundex("Knuth") == soundex("Kant") == 'K530';
  soundex("Lloyd") == soundex("Ladd") == 'L300';
  soundex("Lukasiewicz") == soundex("Lissajous") == 'L222';
?>

Voir aussi
levenshtein(),
metaphone() et
similar_text().

Précédent | Sommaire | Suivant
similar_text | Niveau supérieur | sprintf


sprintf

(PHP 3, PHP 4 )

sprintf -- Retourne une chaîne formattée

Description

string sprintf ( string format [, mixed args])

sprintf retourne une chaîne formatée, avec le format format et en utilisant les arguments args.

La chaîne de format est composée de zéro, une ou plusieurs directives : les caractères ordinaires (à l'exception de %) qui sont copiés directement dans le résultat, et des spécifications de conversion, qui exploitent chacune un des arguments passé après la chaîne de format. Ces formats s'appliquent à sprintf() et printf().

Chaque spécification de conversion est consistituée d'un signe de pourcentage (%), suivi d'un ou plusieurs des éléments suivants, dans cet ordre :

  1. Un remplisseur optionnel qui indique quel caractère sera utilisé pour compléter le résultat jusqu'à la longueur requise. Ce peut être le caractère d'espace, ou le caractère 0. Par défaut, le remplissage se fait avec des espaces. Un autre caractère de remplissage peut être spécifié en le préfixant avec un guillemet simple (') : voir les exemples ci-dessous.

  2. Un spécificateur d'alignement qui indique si le résultat doit être aligné à gauche ou à droite. Par défaut, le résultat est aligné à gauche. Le caractère - fera que le résultat est aligné à droite.

  3. Un nombre optionnel, spécificateur de taille indique le nombre minimum de caractères que cette conversion doit fournir en résultat.

  4. Un spécificateur de précision qui indique le nombre de décimales qui doivent être affichées pour les nombres à virgule flottante. Cette option n'a pas d'effet pour les autres types que float. Une autre fonction pratique pour formatter les nombres à virgule flottante est number_format().

  5. Un spécificateur de type qui indique le type avec lequel l'argument sera traité. Plusieurs types possibles :

    % - un caractère de pourcentage litéral. Aucun argument n'est nécessaire.
    b - l'argument est traité comme un entier, et présenté comme un nombre binaire.
    c - l'argument est traité comme un entier, et présenté comme le caractère de code ASCII correspondant.
    d - l'argument est traité comme un entier, et présenté comme un nombre décimal signé.
    u - l'argument est traité comme un entier, et présenté comme un nombre décimal non signé.
    f - l'argument est traité comme un nombre à virgule flottante (type float), et présenté comme un nombre à virgule flottante.
    o - l'argument est traité comme un entier, et présenté comme un nombre octal.
    s - l'argument est traité et présenté comme une chaîne de caractères.
    x - l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en minuscules).
    X - l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en majuscules).

Depuis PHP 4.0.6, la chaîne de format supporte le numérotage et l'échange d'arguments. Par exemple :

Exemple 1. Echange d'arguments

<?php
  $format = "Il y a %d singes dans le %s";
  printf($format,$num,$location);
?>
Ce exemple peut afficher par exemple : "Il y a 5 signes dans le bananier". Mais imaginez que la chaîne de format soit créée dans un script séparé (une librairie), ca nous devons internationaliser cet affichage. Nous aurons peut être à écrire :

Exemple 2. Echange d'arguments (2)

<?php
  $format = "Le %s a %d singes";
  printf($format,$num,$location);
?>
Maintenant, nous avons un problème. L'ordre des arguments a été changé, et ne correspond pas à l'ordre des arguments dans le script PHP. Nous souhaitons laisser le code PHP tel quel, et simplement indiquer dans la chaîne de formattage l'ordre dans lequel les arguments doivent être repris. La chaîne de format peut être réécrite ainsi :

Exemple 3. Echange d'arguments (3)

<?php
  $format = "Le %2\$s a %1\$d signes";
  printf($format,$num,$location);
?>
Un des avantages est que vous pouvez désormais exploiter plusieurs fois les arguments sans les répéter. Ainsi :

Exemple 4. Echange d'arguments (4)

<?php
  $format = "Le %2\$s a %1\$d singes.
           C'est un beau %2\$s, avec %1\$d signes.";
  printf($format, $num, $location);
?>

Voir aussi
printf(),
sscanf(),
fscanf() et
number_format().

Exemples avec printf() et sprintf()

Exemple 5. sprintf(): entiers complétés de zéros

<?php
  $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>

Exemple 6. sprintf(): format de monétaire

<?php
  $money1 = 68.75;
  $money2 = 54.35;
  $money = $money1 + $money2;
// echo $money va afficher "123.1";
  $formatted = sprintf("%01.2f", $money);
// echo $formatted va afficher "123.10"
?>

Précédent | Sommaire | Suivant
soundex | Niveau supérieur | sscanf


sscanf

(PHP 4 >= 4.0.1)

sscanf -- Analyse une chaîne à l'aide d'un format

Description

mixed sscanf ( string str, string format [, string var1])

sscanf() est l'inverse de la fonction printf(). sscanf() lit des données dans la chaîne str, et l'interprète en fonction du format format. Si seuls deux paramètres sont fournis, les valeurs trouvées seront retournées sous forme de tableau. Sinon, les valeurs seront placées dans les arguments var1.

Tous les caractères blancs dans la chaîne format correspondent à un caractère blanc dans la chaîne str. Cela signifie que même une tabulation dans la chaîne de format peut correspondre à un simple espace dans la chaîne str.

Exemple 1. Exemple avec sscanf()

<?php
// Lecture d'un num&eacute;ro de s&eacute;rie
  $serial = sscanf("SN/2350001","SN/%d");
// et la date de fabrication
  $mandate = "January 01 2000";
  list($month, $day, $year) = sscanf($mandate,"%s %d %d");
  echo "Le produit $serial a &eacute;t&eacute; fabriqu&eacute; le : $year-".substr($month,0,3)."-$day\n";
?>
Si des paramètres optionnels sont passés, sscanf() retournera le nombre de valeurs assignées. Les paramètres optionnels doivent être passés par référence.

Exemple 2. Exemple avec sscanf() : utilisation des paramètres optionnels

<?php
// lit les informations d'auteur, et g&eacute;n&egrave;re une entr&eacute;e DocBook
  $auth = "24    Lewis Carroll";
  $n = sscanf($auth,"%d    %s %s", &$id, &$first, &$last);
  echo "<author id="$id">
    <firstname>$first</firstname>
    <surname>$last</surname>
</author>\n";
?>

Voir aussi
fscanf(),
printf() et
sprintf().

Précédent | Sommaire | Suivant
sprintf | Niveau supérieur | str_ireplace


str_ireplace

(PHP 5 CVS only)

str_ireplace -- Version insensible à la casse de str_replace()

Description

mixed str_ireplace ( mixed search, mixed replace, mixed subject [, int &count])

str_ireplace() retourne une chaîne de caractères ou un tableau dont toutes les occurences de search dans subject (en ignorant la casse), ont été remplacées par la valeur de replace. Si vous n'avez pas besoin de règles de recherche complexe, il est recommandé d'utiliser cette fonction qui est plus rapide que eregi_replace() ou preg_replace(), exploitant l'option i.

Si subject est un tableau, le remplacement est effectué sur chacun des éléments du sujet subject, et la valeur retournée est un aussi un tableau.

Si search et replace sont des tableaux, alors str_replace() prendra une valeur de chaque tableau, et l'utilisera pour faire le remplacement dans subject. Si replace a moins de valeurs que search, alors une chaîne vide sera utilisée pour effectuer les remplacements. Si search est un tableau et que replace est une chaîne, alors la chaîne de remplacement sera utilisée pour chaque élément de search.

Exemple 1. Exemple avec str_ireplace()

<?php
  $bodytag = str_ireplace("%body%", "black", "<body text=%BODY%>");
?>

Cette fonction est compatible avec les données binaires.

Note : Depuis PHP 5.0, le nombre de valeurs de needle trouvées et remplacées seront retournées dans le paramètre count passé par référence.

Voir aussi
str_replace(),
ereg_replace(),
preg_replace() et
strtr().

Précédent | Sommaire | Suivant
sscanf | Niveau supérieur | str_pad


str_pad

(PHP 4 >= 4.0.1)

str_pad -- Complète une chaîne jusqu'à une taille donnée

Description

string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]])

str_pad retourne la chaîne input, complétée à droite, à gauche ou dans les deux sens, avec la chaîne pad_string jusqu'à ce qu'elle atteigne la taille de pad_length. Si le paramètre optionnel pad_string est omis, input sera complétée avec des espaces. Sinon, cette chaîne sera utilisée.

L'argument optionnel pad_type peut être l'une des constantes suivantes : STR_PAD_RIGHT, STR_PAD_LEFT, ou STR_PAD_BOTH. Si pad_type n'est pas spécifié, il prend la valeur par défaut de STR_PAD_RIGHT.

Si la valeur de pad_length est négative, ou inférieure à la taille courante de la chaîne input, input est retournée inchangée.

Exemple 1. Exemple avec str_pad()

<?php
  $input = "Alien";
  print str_pad($input, 10);                      // affiche "Alien     "
  print str_pad($input, 10, "-=", STR_PAD_LEFT);  // affiche "-=-=-Alien"
  print str_pad($input, 10, "_", STR_PAD_BOTH);   // affiche "__Alien___"
?>

Précédent | Sommaire | Suivant
str_ireplace | Niveau supérieur | str_repeat


str_repeat

(PHP 4 )

str_repeat -- Répéte une chaîne

Description

string str_repeat ( string input, int multiplier)

str_repeat retourne la chaîne input_str répétée multiplier fois. multiplier doit être positif ou nul. Si multiplier vaut 0, la fonction retourne la chaîne vide.

Exemple 1. Exemple avec str_repeat()

<?php
  echo str_repeat("-=", 10);
?>

Ceci affichera "-=-=-=-=-=-=-=-=-=-=".

Voir aussi str_pad() et substr_count().

Précédent | Sommaire | Suivant
str_pad | Niveau supérieur | str_replace


str_replace

(PHP 3>= 3.0.6, PHP 4 )

str_replace -- Remplace toutes les occurrences dans une chaîne

Description

mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count])

str_replace() retourne une chaîne ou un tableau, dont toutes les occurences de search dans subject ont été remplacée par replace. Si vous n'avez pas besoin de règles de remplacement compliquées, utilisez cette fonction de préférence à ereg_replace() et preg_replace().

En PHP 4.0.5 et plus récent, tous les paramètres de str_replace() peuvent être des tableaux.

Si subject est un tableau, alors le remplacement se fera sur chaque élément de celui-ci, et la valeur retournée sera aussi un tableau.

Si search et replace sont des tableaux, alors str_replace() prendra une valeur de chaque tableau, et l'utilisera pour faire le remplacement dans subject. Si replace a moins de valeurs que search, alors une chaîne vide sera utilisée pour effectuer les remplacements. Si search est un tableau et que replace est une chaîne, alors la chaîne de remplacement sera utilisée pour chaque élément de search.

Exemple 1. Exemple avec str_replace()

<?php
// G&eacute;n&egrave;re : <body text='black'>
echo $bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// G&eacute;n&egrave;re : Bnjr l mnd
$voyelles = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
echo $consonnes = str_replace($voyelles, "", "Bonjour le monde");

// G&eacute;n&egrave;re : Vous devriez manger des pizzas, des bi&egrave;rse et des g&acirc;teaux tous les jours.
$phrase  = "Vous devriez manger des fruits, des l&eacute;gumes et des fibres tous les jours.";
$regime = array("fruits", "l&eacute;gumes", "fibres");
$bonne_chere   = array("pizzas", "bi&egrave;res", "g&acirc;teaux");

echo $newphrase = str_replace($regime, $bonne_chere, $phrase);

// Utilisation du compteur d'occurences en PHP 5.0.0
$str = str_replace("a", "", "La disparition est un lipogramme en E.", $count);
echo $count; // 3
?>

str_replace() est compatible avec les chaînes binaires.

Note : str_replace() a été ajoutée en PHP 3.0.6, mais était buggée jusqu'en PHP 3.0.8.

Note : Cette fonction gère les chaînes binaires

Note : Depuis PHP 5.0, le nombre de valeurs de search trouvées et remplacées seront retournées dans le paramètre count passé par référence.

Voir aussi
str_ireplace(),
substr_replace(),
ereg_replace(),
preg_replace() et
strtr().

Précédent | Sommaire | Suivant
str_repeat | Niveau supérieur | str_rot13


str_rot13

(PHP 4 >= 4.2.0)

str_rot13 -- Effectue une transformation rot13

Description

string str_rot13 ( string str)

str_rot13() effectue un encodage ROT13 de la chaîne str et retourne le résultat. L'encodage ROT13 décale toutes les lettres de 13 dans l'alphabet, et laisse tous les autres caractères inchangés. L'encodage et le décodage est fait par la même fonction : passer le résultat de str_rot13() à nouveau comme argument, retournera la chaîne originale.

Précédent | Sommaire | Suivant
str_replace | Niveau supérieur | str_shuffle


str_shuffle

(PHP 4 >= 4.3.0)

str_shuffle -- Mélange les caractères d'une chaîne de caractères

Description

string str_shuffle ( string str)

str_shuffle() mélange les caractères d'une chaîne de caractères. Une permutation de tous les caractères est créée.

Exemple 1. Exemple str_shuffle()

<?php
$str = 'abcdef';
$shuffled = str_shuffle($str);

// Cela va affichier une ligne comme par exemple : bfdaec
print $shuffled;
?>

Voir aussi shuffle() et rand().

Précédent | Sommaire | Suivant
str_rot13 | Niveau supérieur | str_split


str_split

(PHP 5 CVS only)

str_split -- Convertit une chaîne de caractères en tableau

Description

array str_split ( string string [, int split_length])

Convertit une chaîne de caractères en tableau. Si le paramètre optionnel split_length est spécifié, le tableau retourné sera découpé en sous-parties, chacune de taille split_length, sinon, chaque sous-partie aura une taille d'un caractère.

FALSE est retourné si split_length est inférieur à 1. Si la longueur de split_length est supérieure à celle de string, la chaîne entière est retournée dans le premier (et seul) élément du tableau.

Exemple 1. Exemples d'utilisation de str_split()

<?php

$str = "Salut Dave";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

/* L'affichage donnera :

Array
(
    [0] => S
    [1] => a
    [2] => l
    [3] => u
    [4] => t
    [5] =>
    [6] => D
    [7] => a
    [8] => v
    [9] => e
)

Array
(
    [0] => Sal
    [1] => ut
    [2] => Dav
    [3] => e
)
*/
?>

Exemple 2. Exemples liés à str_split()

<?php

$str = "Salut Dave";

print $str{0};  // S
print $str{8};  // v

// Cr&eacute;e : array('S','a','l','u','t',' ','D','a','v','e')
$arr1 = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

?>

Voir aussi
preg_split(),
split(),
count_chars() et
str_word_count().

Précédent | Sommaire | Suivant
str_shuffle | Niveau supérieur | str_word_count


str_word_count

(PHP 4 >= 4.3.0)

str_word_count -- Compte le nombre de mots utilisés dans une chaîne

Description

mixed str_word_count ( string string [, int format])

str_word_count() compte le nombre de mots dans la chaîne string. Si le paramètre optionnel format n'est pas spécifié, alors la valeur retournée sera un entier, représentant le nombre de mots trouvés. Si format est spécifié, la valeur retournée sera un tableau, qui dépend du format format. Les valeurs possibles pour format et le tableau retourné sont :

  • 1 - retourne un tableau contenant tous les mots trouvés dans la chaîne string.

  • 2 - retourne un tableau associatif, où les clés sont représentent la position du mot en regard, dans la chaîne string.

Dans cette fonction, la notion de 'mot' est dépendant de la configuration de localisation. C'est une chaîne qui contient tous les caractères alphabétiques, et qui peut contenir, mais pas commencer par "'" and "-".

Exemple 1. Exemples d'utilisation de str_word_count()

<?php

$str = "Salut l'ami, vous
        avez          une belle mine!";

$a   = str_word_count($str, 1);
$b   = str_word_count($str, 2);
$c   = str_word_count($str);

print_r($a);
print_r($b);
print $c;

/* Le r&eacute;sultat est :
Array
(
    [0] => Salut
    [1] => l'ami
    [2] => vous
    [3] => avez
    [4] => une
    [5] => belle
    [6] => mine
)
Array
(
    [0] => Salut
    [6] => l'ami
    [13] => vous
    [27] => avez
    [41] => une
    [45] => belle
    [51] => mine
)
7

*/
?>

Voir aussi
explode(),
preg_split(),
split(),
count_chars() et
substr_count().

Précédent | Sommaire | Suivant
str_split | Niveau supérieur | strcasecmp


strcasecmp

(PHP 3>= 3.0.2, PHP 4 )

strcasecmp -- Comparaison de chaînes binaires

Description

int strcasecmp ( string str1, string str2)

strcasecmp() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est plus grande que str2, et 0 si les deux chaînes sont égales.

Notez que cette comparaison est insensible à la casse.

Exemple 1. Exemple avec strcasecmp()

<?php
  $var1 = "Hello";
  $var2 = "hello";
  if (strcasecmp($var1, $var2) == 0) {
    echo "$var1 est &eacute;gale &agrave; $var2 (comparaison insensible &agrave; la casse)";
  }
?>

Vior aussi
ereg(),
strcmp(),
substr(),
stristr(),
strncasecmp() et
strstr().

Précédent | Sommaire | Suivant
str_word_count | Niveau supérieur | strchr


strchr

(PHP 3, PHP 4 )

strchr -- Trouve la première occurence d'un caractère dans une chaîne

Description

string strchr ( string haystack, string needle)

strchr() est un alias de strstr().

Précédent | Sommaire | Suivant
strcasecmp | Niveau supérieur | strcmp


strcmp

(PHP 3, PHP 4 )

strcmp -- Comparaison binaire de chaînes

Description

int strcmp ( string str1, string str2)

strcmp() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales.

Notez que cette comparaison est sensible à la casse.

Voir aussi ereg(),
strcasecmp(),
substr(),
stristr(),
strncasecmp(),
strncmp() et
strstr().

Précédent | Sommaire | Suivant
strchr | Niveau supérieur | strcoll


strcoll

(PHP 4 >= 4.0.5)

strcoll -- Comparaison de chaînes localisée

Description

int strcoll ( string str1, string str2)

strcoll() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales. Si la configuration de localisation courante est C ou POSIX, cette fonction est équivalente à strcmp().

Notez que cette comparaison est sensible à la casse, et que contrairement à strcmp(), elle n'est pas compatible avec les chaînes binaires.

Voir aussi
ereg(),
strcmp(),
strcasecmp(),
substr(),
stristr(),
strncasecmp(),
strncmp(),
strstr() et
setlocale().

Précédent | Sommaire | Suivant
strcmp | Niveau supérieur | strcspn


strcspn

(PHP 3>= 3.0.3, PHP 4 )

strcspn -- Trouve un segment de chaîne ne contenant pas certains caractères

Description

int strcspn ( string str1, string str2)

strcspn() retourne la taille du premier segment de str1 qui ne contient aucun des caractères de str2.

Voir aussi strspn().

Précédent | Sommaire | Suivant
strcoll | Niveau supérieur | strip_tags


strip_tags

(PHP 3>= 3.0.8, PHP 4 )

strip_tags -- Supprime les balises HTML et PHP d'une chaîne

Description

string strip_tags ( string str [, string allowable_tags])

strip_tags() retourne la chaîne str après avoir supprimé toutes les balises PHP et HTML du code. Elle génère des alertes si les balises sont incomplètes ou erronées. Elle utilise le même moteur de recherche que fgetss().

Le paramètre optionnel allowable_tags permet d'indiquer les balises qui doivent être conservées.

Note : allowable_tags a été ajouté en PHP 3.0.13 et PHP 4.0b3.

Exemple 1. Exemple avec strip_tags()

<?php
  $string = strip_tags($string, '<a><b><i><u>');
?>

Avertissement

strip_tags() ne modifie pas les attributs des balises que vous autorisez via le paramètre allowable_tags, y compris le style et les onmouseover, que des utilisateurs mal intentionnés peuvent utiliser.

Précédent | Sommaire | Suivant
strcspn | Niveau supérieur | stripcslashes


stripcslashes

(PHP 4 )

stripcslashes -- Supprime les anti-slash d'une chaîne C

Description

string stripcslashes ( string str)

stripcslashes() retourne la chaîne str après avoir supprimé tous les anti-slash. stripcslashes() respecte les séquences spéciales du C, telles que \n, \r ..., les nombres octaux et hexadécimaux.

Voir aussi addcslashes().

Précédent | Sommaire | Suivant
strip_tags | Niveau supérieur | stripos


stripos

(PHP 5 CVS only)

stripos -- Rercherche la position d'une occurence dans une chaîne, sans tenir compte de la casse

Description

int stripos ( string haystack, string needle [, int offset])

stripos() retourne la position numérique de la première occurence de needle dans la chaîne haystack. Contrairement à strpos(), stripos() est insensible à la casse. Et, contrairement à strrpos(), cette fonction peut prendre une chaîne complète comme paramètre needle et cette chaîne complète sera utilisée pour la recherche.

Si le paramètre needle n'est pas trouvé, strpos() retournera FALSE.

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Exemple 1. Exemples avec stripos()

<?php
$findme    = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';

$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);

// Non, 'a' ne fait pas partie de 'xyz'
if ($pos1 === false) {
    echo "La cha&icirc;ne '$findme' n'a pas &eacute;t&eacute; trouv&eacute;e dans la cha&icirc;ne '$mystring'";
}

// Notez l'utilisation de ===.  Un simple == ne donnerait pas le r&eacute;sultat escompt&eacute;
// car la lettre 'a' est &agrave; la position 0th (la premi&egrave;re).
if ($pos2 !== false) {
    echo "La cha&icirc;ne '$findme' a &eacute;t&eacute; trouv&eacute;e dans la cha&icirc;ne '$mystring'";
    echo " et &agrave; la position $pos";
}
?>

Si needle n'est pas une chaîne, elle est convertie en entier, et utilisé comme caractère de code ASCII correspondant.

Le paramètre optionnel offset vous permet de spécifier à partir de quel caractère dans haystack vous souhaitez commencer la recherche. La position retournée sera toujours relative au début de la chaîne haystack.

Voir aussi
strpos(),
strrpos(),
strrchr(),
substr(),
stristr(),
strstr() et
str_ireplace().

Précédent | Sommaire | Suivant
stripcslashes | Niveau supérieur | stripslashes


stripslashes

(PHP 3, PHP 4 )

stripslashes -- Supprimer les anti-slash d'une chaîne

Description

string stripslashes ( string str)

stripslashes() retourne une chaîne dont les anti-slash on été supprimés. \' devient ', etc... Les doubles anti-slash sont réduits à un seul anti-slash. stripslashes() est la fonction inverse de addslashes().

Exemple 1. Exemple avec stripslashes()

<?php
$str = "Avez vous l\\'oreille dure?";

// Affiche : Avez vous l'oreille dure?
echo stripslashes($str);
?>

Voir aussi addslashes().

Précédent | Sommaire | Suivant
stripos | Niveau supérieur | stristr


stristr

(PHP 3>= 3.0.6, PHP 4 )

stristr -- Trouve la première occurence dans une chaîne (insensible à la casse)

Description

string stristr ( string haystack, string needle)

stristr() retourne une sous-chaîne de haystack, allant de la première occurrence de needle jusqu'à la fin de la chaîne. needle et haystack sont traitées sans tenir compte de la casse.

Si needle est introuvable, stristr() retourne FALSE.

Si needle n'est pas une chaîne, elle sera convertie en entier, et utilisée comme code ascii du caractère correspondant.

Exemple 1. Exemple avec stristr()

<?php
  $email = 'USER@EXEMPLE.com';
  $domaine = stristr($email, 'e');
  print $domaine;
// Affiche ER@EXEMPLE.com
?>

Voir aussi
strchr(),
strrchr(),
substr() et
ereg().

Précédent | Sommaire | Suivant
stripslashes | Niveau supérieur | strlen


strlen

(PHP 3, PHP 4 )

strlen -- Calcule la taille d'une chaîne

Description

int strlen ( string str)

strlen() retourne la taille de la chaîne string.

Exemple 1. Exemple avec strlen()

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7
?>

Voir aussi count().

Précédent | Sommaire | Suivant
stristr | Niveau supérieur | strnatcasecmp


strnatcasecmp

(PHP 4 )

strnatcasecmp -- Comparaison de chaînes avec l'algorithme d'"ordre naturel" (insensible à la casse)

Description

int strnatcasecmp ( string str1, string str2)

strnatcasecmp() implémente l'algorithme de comparaison qui ordonne les chaînes tel qu'un homme le ferai. Cette fonction est similaire à la fonction strnatcmp(), mais la comparaison n'est pas sensible à la casse. Pour plus de détails, reportez vous à Natural Order String Comparison de Martin Pool (en anglais).

strnatcasecmp() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales.

Voir aussi
ereg(),
strcasecmp(),
substr(),
stristr(),
strcmp(),
strncmp(),
strncasecmp(),
strnatcmp() et
strstr().

Précédent | Sommaire | Suivant
strlen | Niveau supérieur | strnatcmp


strnatcmp

(PHP 4 )

strnatcmp -- Comparaison de chaînes avec l'algorithme d'"ordre naturel"

Description

int strnatcmp ( string str1, string str2)

strnatcmp() implémente l'algorithme de comparaison qui ordonne les chaînes tel qu'un homme le ferai. Cette fonction est similaire à la fonction strnatcmp(), mais la comparaison n'est pas sensible à la casse. Un exemple de la différence de traitement avec l'algorithme standard est présenté ci-dessous :

Exemple 1. Exemple avec strnatcmp()

<?php
  $arr1 = $arr2 = array("img12.png","img10.png","img2.png","img1.png");
  echo "Tri de cha&icirc;nes standard\n";
  usort($arr1,"strcmp");
  print_r($arr1);
  echo "\nTri de cha&icirc;nes \"ordre naturel\"\n";
  usort($arr2,"strnatcmp");
  print_r($arr2);
?>

Le code ci-dessus générera ce qui suit :

Tri de cha&icirc;nes standard
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Tri de cha&icirc;nes "ordre naturel"
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)
Pour plus de détails, reportez vous à Natural Order String Comparison de Martin Pool (en anglais).

strnatcmp() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales.

Notez que cette comparaison est sensible à la casse.

Voir aussi
ereg(),
strcasecmp(),
substr(),
stristr(),
strcmp(),
strncmp(),
strncasecmp(),
strnatcasecmp(),
strstr(),
natsort() et
natcasesort().

Précédent | Sommaire | Suivant
strnatcasecmp | Niveau supérieur | strncasecmp


strncasecmp

(PHP 4 >= 4.0.2)

strncasecmp -- Compare en binaire des chaînes de caractères

Description

int strncasecmp ( string str1, string str2, int len)

strncasecmp() est similaire à strcasecmp(), à la différence près qu'elle permet de limiter le nombre de caractères utilisés pour comparer str1 et str2, avec le paramètre len. Si une des chaînes est plus courte que len, alors la longueur de cette chaîne sera utilisée pour effectuer la comparaison.

strncasecmp() retourne < 0 si str1 est plus petite que str2; > 0 si str1 est plus grande que str2, et 0 si elles sont égales.

Voir aussi
ereg(),
strcasecmp(),
strcmp(),
substr(),
stristr() et
strstr().

Précédent | Sommaire | Suivant
strnatcmp | Niveau supérieur | strncmp


strncmp

(PHP 4 )

strncmp -- Comparaison binaire des n premiers caractères

Description

int strncmp ( string str1, string str2, int len)

strncmp est identique à la fonction strcmp(), avec la différence que vous pouvez spécifier le nombre maximum de caractères à utiliser pour la comparaison de str1 avec str2 grâce au paramètre len. Si l'une des deux chaînes est plus petite que len, alors la longueur de cette chaîne sera utilisée.

strncmp() retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales.

Notez que cette comparaison est sensible à la casse.

Voir aussi
ereg(),
strncasecmp(),
strcasecmp(),
substr(),
stristr(),
strcmp() et
strstr().

Précédent | Sommaire | Suivant
strncasecmp | Niveau supérieur | strpos


strpos

(PHP 3, PHP 4 )

strpos -- Trouve la position d'un caractère dans une chaîne

Description

int strpos ( string haystack, string needle [, int offset])

strpos() retourne la position numérique de la première occurence de needle dans la chaîne de caractères haystack. Contrairement à la fonction strrpos(), celle-ci peut prendre une chaîne de caractères complète comme paramètre needle et cette chaîne sera utilisée en totalité.

Si needle n'est pas trouvée, la fonction retourne FALSE.

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Exemple 1. Exemple avec strpos()

<?php
  $mystring = 'abc';
  $findme   = 'a';
  $pos = strpos($mystring, $findme);

// Notez l'utilisation de ===.  Un simple == ne donnerait pas le r&eacute;sultat escompt&eacute;
// car la lettre 'a' est &agrave; la position 0 (la premi&egrave;re).
  if ($pos === false) {
    echo "La cha&icirc;ne '$findme' n'a pas &eacute;t&eacute; trouv&eacute;e dans la cha&icirc;ne '$mystring'";
  } else {
    echo "La cha&icirc;ne '$findme' a &eacute;t&eacute; trouv&eacute;e dans la cha&icirc;ne '$mystring'";
    echo " et &agrave; la position $pos";
  }
?>

Si needle n'est pas une chaîne, elle est convertie en entier, et utilisé comme caractère de code ASCII correspondant.

Le paramètre optionnel offset vous permet de spécifier à partir de quel caractère dans haystack vous souhaitez commencer la recherche. La position retournée sera toujours relative au début de la chaîne haystack.

Voir aussi
strrpos(),
stripos(),
strripos(),
strrchr(),
substr(),
stristr() et
strstr().

Précédent | Sommaire | Suivant
strncmp | Niveau supérieur | strrchr


strrchr

(PHP 3, PHP 4 )

strrchr -- Retourne la fin de la chaîne

Description

string strrchr ( string haystack, string needle)

strrchr() retourne le segment de la chaîne haystack qui commence avec la dernière occurrence de needle, jusqu'à la fin de la chaîne haystack.

strrchr() retourne FALSE si needle n'est pas trouvé.

Si needle contient plus d'un caractère, seul le premier sera utilisé.

Si needle n'est pas une chaîne, elle est convertie en entier, et utilisée comme caractère de code ASCII correspondant.

Exemple 1. Exemple avec strrchr()

<?php
// Lit le dernier dossier dans le chemin $PATH
  $dir = substr(strrchr($PATH, ":"), 1);

// Lit tout, apr&egrave;s la derni&egrave;re nouvelle ligne
  $text = "Ligne 1\nLigne 2\nLigne 3";
  $last = substr(strrchr($text, 10), 1 );
?>

Voir aussi
strchr(),
substr(),
stristr() et
strstr().

Précédent | Sommaire | Suivant
strpos | Niveau supérieur | strrev


strrev

(PHP 3, PHP 4 )

strrev -- Inverse une chaîne

Description

string strrev ( string string)

strrev retourne la chaîne string, après avoir changé l'ordre des caractères.

Exemple 1. Inverser une chaîne avec strrev()

<?php
echo strrev("Bonjour le monde!");
// affiche "ednom el ruojnoB"
?>

Précédent | Sommaire | Suivant
strrchr | Niveau supérieur | strripos


strripos

(PHP 5 CVS only)

strripos -- Trouve la position de la dernière occurence d'une chaîne dans une autre de façon insensible à la casse.

Description

int strripos ( string haystack, string needle)

Retourne la position numérique de la dernière occurence de needle dans la chaîne de caractères haystack. Contrairement à strrpos(), strripos() est insensible à la casse. Notez aussi que les positions dans les chaînes commencent à 0, et non à 1.

Si needle n'est pas trouvé, la fonction retourne FALSE.

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur exacte de cette fonction.

Exemple 1. Un exemple simple avec strripos()

<?php
$haystack = 'ababcd';
$needle   = 'aB';

$pos      = strripos($haystack, $needle);

if ($pos === false) {
    echo "D&eacute;sol&eacute;, impossible de trouver ($needle) dans ($haystack)";
} else {
    echo "F&eacute;licitations !\n";
    echo "Nous avons trouv&eacute; le dernier ($needle) dans ($haystack) &agrave; la position ($pos)";
}

/* Outputs:

   F&eacute;licitations !
   Nous avons trouv&eacute; le dernier (aB) dans (ababcd) &agrave; la position (2)

*/
?>

Voir aussi
strrpos(),
strrchr(),
substr() et
stristr().

Précédent | Sommaire | Suivant
strrev | Niveau supérieur | strrpos


strrpos

(PHP 3, PHP 4 )

strrpos -- Trouve la position de la dernière occurence d'un caractère dans une chaîne

Description

int strrpos ( string haystack, char needle)

strrpos() retourne la position numérique de la dernière occurence du caractère needle dans la chaîne haystack. Notez que needle doit être un caractère unique. Si une chaîne est passée dans ce paramètre, seul le premier caractère sera utilisé.

Si needle n'est pas trouvé, strrpos() retournera FALSE.

Note : Il est facile de confondre le résultat "caractère trouvé à la position 0" et "caractère non trouvé". Voici comment faire la différence :

Exemple 1. Exemple avec strrpos()

<?php
// A partir de PHP 4.0b3 :
  $pos = strrpos($machaine, "b");
  if ($pos === false) { // note : trois signes &eacute;gal
    // pas trouv&eacute;
  }

// en versions plus anciennes que 4.0b3 :
  $pos = strrpos($machaine, "b");
  if (!is_integer($pos)) {
    // pas trouv&eacute;
  }
?>

Si needle n'est pas une chaîne, elle est convertie en entier, et utilisée comme caractère de code ASCII correspondant.

Voir aussi
strpos(),
strripos(),
strrchr(),
substr(),
stristr() et
strstr().

Précédent | Sommaire | Suivant
strripos | Niveau supérieur | strspn


strspn

(PHP 3>= 3.0.3, PHP 4 )

strspn -- Trouve le premier segment de chaîne

Description

int strspn ( string str1, string str2)

strspn() retourne la taille du segment initial de la chaîne str1 qui est entièrement constitué de caractères contenus dans str2.

Exemple 1. Exemple avec strspn()

<?php
  echo strspn("421 est la r&eacute;ponse, mais quelle est la question ...", "1234567890");
?>
va afficher 3, car la chaîne "421" est le plus long segment initial de "421 est la réponse, mais quelle est la question ...", dont tous les caractères sont contenus dans "1234567890".

Voir aussi strcspn().

Précédent | Sommaire | Suivant
strrpos | Niveau supérieur | strstr


strstr

(PHP 3, PHP 4 )

strstr -- Trouve la première occurence dans une chaîne

Description

string strstr ( string haystack, string needle)

strstr() retourne une sous-chaîne de haystack, allant de la première occurrence de needle jusqu'à la fin de la chaîne.

Si needle est introuvable, strstr() retourne FALSE.

Si needle n'est pas une chaîne, elle sera convertie en entier, et utilisée comme code ascii du caractère correspondant.

Note : strstr() est sensible à la casse. Pour une fonctionnalité identique, mais insensible à la casse, reportez-vous à stristr().

Exemple 1. Exemple avec strstr()

<?php
  $email = 'user@example.com';
  $domaine = strstr($email, '@');
  print $domaine;
// Affiche @example.com
?>

Voir aussi
ereg(),
preg_match(),
strchr(),
stristr(),
strpos(),
strrchr() et
substr().

Précédent | Sommaire | Suivant
strspn | Niveau supérieur | strtok


strtok

(PHP 3, PHP 4 )

strtok -- Coupe une chaîne en segments

Description

string strtok ( string arg1, string arg2)

strtok() coupe la chaîne arg1 en segments, chaque segment étant délimité par arg2. Par exemple, si vous avez une chaîne telle que "Voici un exemple", vous pouvez en extraire les différents mots en utilisant cette fonction :

Exemple 1. Exemple avec strtok()

<?php
  $string = "Ceci est    un exemple\ninteressant";
/* Utilisez aussi les nouvelles lignes et les tabulations comme s&eacute;parateur de mots */
  $tok = strtok($string," \n    ");
  while ($tok) {
    echo "Mot = $tok<br>";
    $tok = strtok(" \n    ");
 }
?>

Notez que seul le premier appel à strtok() nécessite les deux arguments. Tous les appels ultérieurs à strtok() ne nécessitent que la chaîne à découper. Pour initialiser à nouveau strtok(), ou pour recommencer, fournissez à nouveau le paramètre arg2. La chaîne arg1 sera découpé dès que l'un des caractères de arg2 est trouvé.

Le comportement de cette fonction avec la chaîne vide a changé depuis PHP 4.1.0. L'ancien comportement était de retourner une chaîne vide, tandis que le nouveau comportement, plus correct, retourne FALSE

Exemple 2. Ancien comportement de strtok()

$first_token  = strtok('/chose', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Affiche :
    string(0) ""
    string(9) "chose"
*/

Exemple 3. Nouveau comportement de strtok()

$first_token  = strtok('/chose', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Affiche :
    string(9) "chose"
    bool(false)
*/

De plus, soyez prudents avec les séparateurs qui sont égaux à "0". Ces valeurs s'évaluent comme FALSE dans les expression conditionnelles.

Voir aussi split() et explode().

Précédent | Sommaire | Suivant
strstr | Niveau supérieur | strtolower


strtolower

(PHP 3, PHP 4 )

strtolower -- Renvoit une chaîne en minuscules

Description

string strtolower ( string str)

strtolower() retourne string, après avoir converti tous les caractères alphabétique en minuscules.

Notez que la notion d'"alphabétique" est déterminée par la configuration de localisation. Cela signifie que pour la configuration par défaut "C", les caractères tels que les voyelles accentuées (comme é, è ou à) ne seront pas convertis.

Exemple 1. Exemple avec strtolower()

<?php
  $str = "Marie A un Petit Agneau, et l'aime TR&egrave;s fORt.";
  $str = strtolower($str);
  print $str;
// Affiche : marie a un petit agneau, et l'aime tr&egrave;s fort.
?>

Voir aussi
strtoupper(),
ucfirst() et
ucwords().

Précédent | Sommaire | Suivant
strtok | Niveau supérieur | strtoupper


strtoupper

(PHP 3, PHP 4 )

strtoupper -- Renvoit une chaîne en majuscules

Description

string strtoupper ( string string)

strtoupper() retourne string, après avoir converti tous les caractères alphabétique en majuscules.

Notez que la notion d'"alphabétique" est déterminée par la configuration de localisation. Cela signifie que pour la configuration par défaut "C", les caractères tels que les voyelles accentuées (comme é, è ou à) ne seront pas converties.

Exemple 1. Exemple avec strtoupper()

<?php
  $str = "Marie A un Petit Agneau, et l'aime TR&egrave;s fORt.";
  $str = strtoupper($str);
  print $str;
// Affiche : MARIE A UN PETIT AGNEAU, ET L'AIME TRES FORT.
?>

Voir aussi
strtolower(),
ucfirst() et
ucwords().

Précédent | Sommaire | Suivant
strtolower | Niveau supérieur | strtr


strtr

(PHP 3, PHP 4 )

strtr -- Remplace des chaînes dans une chaîne

Description

string strtr ( string str, string from, string to)

string strtr ( string str, array replace_pairs)

strtr() retourne la chaîne str, après avoir remplacé chaque caractère du paramètre from par son équivalent dans le paramètre to.

Si from et to sont de tailles différentes, les caractères en trop dans l'un ou l'autre seront ignorés.

Exemple 1. Exemple avec strtr()

<?php
  $addr = strtr($addr, "&auml;&acirc;&ouml;", "aao");
?>

strtr() peut être appelé avec uniquement deux arguments. Dans ce cas, elle se comporte d'une autre façon : from doit alors être un tableau associatif de paires, qui seront remplacées dans la chaîne str. strtr() commence toujours par rechercher la chaîne la plus longue, et ne travaille pas sur des segments qu'elle a déjà modifié.

Exemple 2. Exemple avec strtr() avec deux arguments

<?php
  $trans = array("Bonjour" => "salut", "salut" => "bonjour");
  echo strtr("Bonjour &agrave; tous, j'ai dit bonjour", $trans);
?>

Cet exemple va afficher :

Salut &agrave; tous, j'ai dit bonjour

Note : Les paramètres optionnels to et from ont été ajoutés en PHP 4.0.0.

Voir aussi ereg_replace().

Précédent | Sommaire | Suivant
strtoupper | Niveau supérieur | substr_compare


substr_compare

(no version information, might be only in CVS)

substr_compare -- Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters

Description

int substr_compare ( string main_str, string str, int offset [, int length [, bool case_sensitivity]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
strtr | Niveau supérieur | substr_count


substr_count

(PHP 4 )

substr_count -- Compte de le nombre d'occurrences de segments dans une chaîne

Description

int substr_count ( string haystack, string needle)

substr_count() retourne le nombre d'occurences de needle dans la chaîne haystack.

Exemple 1. Exemple avec substr_count()

<?php
  print substr_count("Ceci est un test", "ci");
  // affiche 1
?>

Précédent | Sommaire | Suivant
substr_compare | Niveau supérieur | substr_replace


substr_replace

(PHP 4 )

substr_replace -- Remplace un segment dans une chaîne

Description

string substr_replace ( string string, string replacement, int start [, int length])

substr_replace() remplace un segment de la chaîne string par la chaîne replacement. Le segment est délimité par start et éventuellement par length. Le résultat est retourné.

Si start est positif, le remplacement se fera à partir du start-ième caractère de string.

Si start est négatif, le remplacement se fera à partir du start-ième caractère en partant de la fin de la chaîne string.

Si length est fourni et positif, il représentera la longueur du segment de code remplacé dans la chaîne string. S'il est négatif, il représentera la longueur du segment remplacé, mais compté dans l'ordre inverse de la chaîne string. S'il est omis, il prendra la valeur par défaut de la taille de la chaîne, et remplacera tout jusqu'à la fin de la chaîne string.

Exemple 1. Exemple avec substr_replace()

<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original : $var<hr>\n";

// Remplace toute la cha&icirc;ne $var par  'bob'.
echo substr_replace($var, 'bob', 0) . "<br>\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br>\n";

// Insert 'bob' au d&eacute;but de la cha&icirc;ne
echo substr_replace($var, 'bob', 0, 0) . "<br>\n";

// Remplace la s&eacute;quence 'MNRPQR' par 'bob'.
echo substr_replace($var, 'bob', 10, -1) . "<br>\n";
echo substr_replace($var, 'bob', -7, -1) . "<br>\n";

// Efface la s&eacute;quence 'MNRPQR' de $var.
echo substr_replace($var, '', 10, -1) . "<br>\n";
?>

Voir aussi str_replace() et substr().

Précédent | Sommaire | Suivant
substr_count | Niveau supérieur | substr


substr

(PHP 3, PHP 4 )

substr -- Retourne un segment de chaîne

Description

string substr ( string string, int start [, int length])

substr() retourne le segment de string défini par start et length.

Si start est positif, la chaîne retournée commencera au caractère numéro start, dans la chaîne string. Le premier caractère est numéroté zéro.

Exemple 1. Exemple avec substr()

<?php
$rest = substr("abcdef", 1);    // retourne "bcdef"
$rest = substr("abcdef", 1, 3); // retourne "bcd"
$rest = substr("abcdef", 0, 4); // retourne "abcd"
$rest = substr("abcdef", 0, 8); // retourne "abcdef"

// Acc&eacute;der aux caract&egrave;res via les accolades
$string = 'abcdef';
echo $string{0};                // retourne a
echo $string{3};                // retourne d
?>

Si start est négatif, la chaîne retournée commencera au caractère numéro start dans la chaîne string.

Exemple 2. Exemple de start négatif

<?php
$rest = substr("abcdef", -1);    // retourne "f"
$rest = substr("abcdef", -2);    // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>

Si length est fourni et positif, la chaîne retournée contiendra au plus length caractères, en commençant à partir du caractère start (en fonction de la taille de la chaîne string). Si string est plus petite que start, substr() retournera FALSE.

Si length est fourni et négatif, alors le même nombre de caractères sera omis, en partant de la fin de la chaîne string. Si start représente une position hors de la chaîne, une chaîne vide sera retournée.

Exemple 3. Utiliser une valeur négative de length

<?php
$rest = substr("abcdef", 0, -1);  // retourne "abcde"
$rest = substr("abcdef", 2, -1);  // retourne "cde"
$rest = substr("abcdef", 4, -4);  // retourne ""
$rest = substr("abcdef", -3, -1); // retourne "de"
?>

Voir aussi
strrchr(),
substr_replace(),
ereg() et
trim().

Précédent | Sommaire | Suivant
substr_replace | Niveau supérieur | trim


trim

(PHP 3, PHP 4 )

trim -- Supprime les espaces en début et fin de chaîne

Description

string trim ( string str [, string charlist])

trim() retourne la chaîne str, après avoir supprimé les caractères invisibles en début et fin de chaîne. Si le second paramètre charlist a été omis, trim() supprimera les caractères suivants :

  • " " (ASCII 32 (0x20)), un espace ordinaire.

  • "\t" (ASCII 9 (0x09)), une tabulation.

  • "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).

  • "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).

  • "\0" (ASCII 0 (0x00)), le caractère NUL.

  • "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.

Il est aussi possible de spécifier les caractères à supprimer en utilisant le paramètre charlist. Listez simplement les caractères que vous voulez supprimer dans ce paramètre. Avec .., vous pourrez spécifier des intervalles de caractères.

Exemple 1. Exemple avec trim()

<?php

$text = "        Voici quelques mots :) ...  ";
$trimmed = trim($text);
// $trimmed = "Voici quelques mots :) ..."
$trimmed = trim($text,"     .");
// $trimmed = "Voici quelques mots :)"
$clean = trim($binary,"\0x00..\0x1F");
// supprime tous les caract&egrave;res de contr&ocirc;le ASCII au d&eacute;but de la cha&icirc;ne de caract&egrave;res.
// (de 0 &agrave; 31 inclus)
?>

Note : Le second paramètre a été ajouté en PHP 4.1.0.

Voir aussi ltrim() et rtrim().

Précédent | Sommaire | Suivant
substr | Niveau supérieur | ucfirst


ucfirst

(PHP 3, PHP 4 )

ucfirst -- Met le premier caractère en majuscule

Description

string ucfirst ( string str)

ucfirst retourne la chaîne str après avoir remplacé le premier caractère par sa majuscule, si le premier caractère est alphabétique.

Notez que la notion d'"alphabétique" est déterminée par la configuration de localisation. Cela signifie que pour la configuration par défaut "C", les caractères tels que les voyelles accentuées (comme é, è ou à) ne seront pas convertis.

Exemple 1. Exemple avec ucfirst()

$foo = 'bonjour tout le monde!';
$foo = ucfirst($foo);             // Bonjour tout le monde!

$bar = 'BONJOUR TOUT LE MONDE!';
$bar = ucfirst($bar);             // BONJOUR TOUT LE MONDE!
$bar = ucfirst(strtolower($bar)); // Bonjour tout le monde!

Voir aussi
strtolower(),
strtoupper() et
ucwords().

Précédent | Sommaire | Suivant
trim | Niveau supérieur | ucwords


ucwords

(PHP 3>= 3.0.3, PHP 4 )

ucwords -- Met en majuscule la première lettre de tous les mots

Description

string ucwords ( string str)

ucwords retourne la chaîne str après avoir mis en majuscule la première lettre de tous les mots, si ce caractère est alphabétique.

Exemple 1. Exemple avec ucwords()

<?php
$foo = 'bonjour tout le monde!';
$foo = ucwords($foo);             // Bonjour Tout Le Monde!

$bar = 'BONJOUR TOUT LE MONDE!';
$bar = ucwords($bar);             // BONJOUR TOUT LE MONDE!
$bar = ucwords(strtolower($bar)); // Bonjour Tout Le Monde!
?>

Note : La définition d'un mot est : toute séquence de caractères qui suit immédiatement un caractère blanc (espace, tabulation, nouvelle ligne, retour chariot, tabulation verticale).

Voir aussi
strtoupper(),
strtolower() et
ucfirst().

Précédent | Sommaire | Suivant
ucfirst | Niveau supérieur | vprintf


vprintf

(PHP 4 >= 4.1.0)

vprintf -- Affiche une chaîne formatée

Description

void vprintf ( string format, array args)

vprintf() affiche le tableau args, sous forme de chaîne formatée grâce à format Le format est le même que celui utilisé par sprintf().

vprintf() fonctionne comme printf() mais accepte un tableau comme argument, au lieu d'une liste d'arguments.

Voir aussi
printf(),
sprintf() et
vsprintf()

Précédent | Sommaire | Suivant
ucwords | Niveau supérieur | vsprintf


vsprintf

(PHP 4 >= 4.1.0)

vsprintf -- Retourne une chaîne formatée

Description

string vsprintf ( string format, array args)

vsprintf() retourne une chaîne formatée à partir du tableau de valeurs args, et en utilisant le format format. Le format est le même que celui utilisé par sprintf().

vsprintf() fonctionne comme sprintf() mais accepte un tableau comme argument, au lieu d'une liste d'arguments.

Voir aussi
sprintf(),
vsprintf() et
vprintf()

Précédent | Sommaire | Suivant
vprintf | Niveau supérieur | wordwrap


wordwrap

(PHP 4 >= 4.0.2)

wordwrap -- Effectue la césure d'une chaîne

Description

string wordwrap ( string str [, int width [, string break [, boolean cut]]])

wordwrap() retourne la chaîne str, après avoir inséré break tous les width caractères.

Par défaut, wordwrap() va automatiquement insérer une nouvelle ligne tous les 75 caractères, si width et break ne sont pas fournis.

Si le paramètre cut est mis à 1, la chaîne sera toujours césurée à la taille width. Si vous avez un mot qui est plus long que la taille de césure, il sera coupé en morceaux.

Note : Le paramètre optionnel cut a été ajouté en PHP 4.0.3.

Exemple 1. Exemple avec wordwrap()

<?php
  $text = "Portez ce vieux whisky au juge blond qui fume.";
  $newtext = wordwrap( $text, 20 );

  echo "$newtext\n";
?>

Cet exemple va afficher :

Portez ce vieux
whisky au juge
blond qui fume.

Exemple 2. Exemple avec wordwrap() avec césure

<?php
  $text = "Un mot tres tres loooooooooooooooooong.";
  $newtext = wordwrap( $text, 8, "\n", 1);

  echo "$newtext\n";
?>

Cet exemple va afficher :

Un mot
tres
tres
looooooo
oooooooo
ooong.

Voir aussi nl2br().

Précédent | Sommaire | Suivant
vsprintf | Niveau supérieur | Sybase


Sybase

Manuel PHP
Précédent Suivant

CIII. Sybase

Introduction

Pré-requis

Installation

Pour activer le support des bases de données Sybase-DB, vous devez compiler PHP avec l'option --with-sybase[=DIR]. DIR est le dossier d'installation de Sybase, et par défaut, il vaut /home/sybase. Pour activer le support de Sybase-CT, vous devez compiler PHP avec l'option --with-sybase-ct[=DIR]. DIR est le dossier d'installation de Sybase, et par défaut, il vaut /home/sybase.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Sybase

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
sybase.allow_persistent | "On" | PHP_INI_SYSTEM
sybase.max_persistent | "-1" | PHP_INI_SYSTEM
sybase.max_links | "-1" | PHP_INI_SYSTEM
sybase.interface_file | "/usr/sybase/interfaces" | PHP_INI_SYSTEM
sybase.min_error_severity | "10" | PHP_INI_ALL
sybase.min_message_severity | "10" | PHP_INI_ALL
sybase.compatability_mode | "Off" | PHP_INI_SYSTEM
magic_quotes_sybase | "Off" | PHP_INI_ALL

Voici un éclaircissement sur l'utilisation des directives de configuration.

sybase.allow_persistent booléen

Activation ou non des connexions persistantes.

sybase.max_persistent entier

Le nombre maximum de connexions Sybase persistantes par processus. -1 signifie illimité.

sybase.max_links entier

Le nombre maximum de connexions Sybase par processus. -1 signifie illimité.

sybase.min_error_severity entier

Le niveau minimal d'erreur à afficher.

sybase.min_message_severity entier

Le niveau minimal de message d'erreur à afficher.

sybase.compatability_mode booléen

Mode de compatibilité avec les anciennes versions de PHP 3.0. Si activé (on), cela va faire que PHP assigne automatiquement des types aux résultats, en fonctions de leur type Sybase, au lieu de les traiter comme des chaînes de caractères. Ce mode de compatibilité ne va pas rester des années, alors essayez de modifier votre code, et de désactiver cette fonctionnalité.

magic_quotes_sybase booléen

Si magic_quotes_sybase est aussi activé, un guillemets simple est échappé avec un guillemet simple au lieu d'un anti-slash, si magic_quotes_gpc ou magic_quotes_runtime est activé.

Sybase-CT

Tableau 2. Options de configuration

Nom | Par défaut | Modifiable
sybct.allow_persistent | "On" | PHP_INI_SYSTEM
sybct.max_persistent | "-1" | PHP_INI_SYSTEM
sybct.max_links | "-1" | PHP_INI_SYSTEM
sybct.min_server_severity | "10" | PHP_INI_ALL
sybct.min_client_severity | "10" | PHP_INI_ALL
sybct.hostname | NULL | PHP_INI_ALL

Voici un éclaircissement sur l'utilisation des directives de configuration.

sybct.allow_persistent booléen

Whether to allow persistent Sybase-CT connections. The default is on.

sybct.max_persistent entier

Le nombre maximum de connexions Sybase-CT persistantes par processus. -1 signifie illimité. C'est aussi la valeur par défaut.

sybct.max_links entier

Le nombre maximum de connexions Sybase-CT par processus, y compris les connexions persistantes. -1 signifie illimité.

sybct.min_server_severity entier

Les messages du serveur ayant une criticité supérieure ou égale à la valeur de cette option seront rapportés comme alertes. Cette valeur peut aussi être modifiée depuis les scripts en appelant la fonction sybase_min_server_severity(). Par défaut, cette option vaut 10.

sybct.min_client_severity entier

Les messages de la librairie cliente ayant une criticité supérieure ou égale à la valeur de cette option seront rapportés comme alertes. Cette valeur peut aussi être modifiée depuis les scripts en appelant la fonction sybase_min_client_severity(). Par défaut, cette option vaut 10.

sybct.hostname chaîne de caractères

Le nom de l'hôte à partir duquel vous prétendez être connecté, afin qu'il soit affiché par sp_who. Par défaut, il n'y a pas de valeur.

sybct.deadlock_retry_count int

Permet de définir le nombre de tentatives de résolution des blocages. La valeur par défaut est -1, ou forever, c'est à dire indéfiniment.

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
sybase_affected_rows -- Retourne le nombre de lignes affectées par la dernière requête Sybase
sybase_close -- Ferme une connexion Sybase
sybase_connect -- Ouvre une connexion à un serveur Sybase
sybase_data_seek -- Déplace le pointeur interne de lignes Sybase
sybase_deadlock_retry_count -- Configure le nombre de tentatives lors de blocages (deadlock)
sybase_fetch_array -- Retourne une ligne Sybase sous la forme d'un tableau
sybase_fetch_assoc -- Lit une ligne de résultat Sybase sous forme de tableau associatif
sybase_fetch_field -- Lit les informations d'un champ Sybase
sybase_fetch_object -- Retourne une ligne Sybase sous la forme d'un objet
sybase_fetch_row -- Retourne une ligne Sybase sous la forme d'un tableau numérique
sybase_field_seek -- Modifie l'index d'un champ Sybase
sybase_free_result -- Libère un résultat Sybase de la mémoire
sybase_get_last_message -- Retourne le dernier message du serveur
sybase_min_client_severity -- Fixe la sévérité minimale du client Sybase
sybase_min_error_severity -- Fixe la sévérité minimale du client pour les erreurs
sybase_min_message_severity -- Fixe la sévérité minimale du client pour les messages
sybase_min_server_severity -- Fixe la sévérité minimale du client pour le serveur Sybase
sybase_num_fields -- Retourne le nombre de champs dans un résultat Sybase
sybase_num_rows -- Retourne le nombre de lignes dans un résultat Sybase
sybase_pconnect -- Ouvre une connexion persistante à un serveur Sybase
sybase_query -- Envoie une requête à une base Sybase
sybase_result -- Lit une valeur dans un résultat
sybase_select_db -- Sélectionne une base de données Sybase
sybase_set_message_handler -- Configure le gestionnaire de message Sybase
sybase_unbuffered_query -- Envoie une requête à Sybase et ne bloque pas

Précédent | Sommaire | Suivant
wordwrap | Niveau supérieur | sybase_affected_rows


sybase_affected_rows

(PHP 3>= 3.0.6, PHP 4 )

sybase_affected_rows -- Retourne le nombre de lignes affectées par la dernière requête Sybase

Description

int sybase_affected_rows ( [resource link_identifier])

sybase_affected_rows() retourne le nombre de lignes affectées par la dernière requête.

sybase_affected_rows() retourne le nombre de lignes affectées par la dernière requête INSERT, UPDATE ou DELETE sur le serveur associé à l'identifiant de connexion link_identifier. Si le lien n'est pas précisé, le dernier lien ouvert est utilisé.

Exemple 1. Exemple avec sybase_affected_rows()

<?php
    /* connexion &agrave; la base */
    sybase_connect('SYBASE', '', '') or
        die("Impossible de se connecter");
    sybase_select_db("db");

    sybase_query("DELETE FROM sometable WHERE id < 10");
    printf ("Nombre de lignes effac&eacute;es : %d\n", sybase_affected_rows());
?>

Le script ci-dessus pourrait afficher :

Nombre de lignes effac&eacute;es : 10

Cette commande ne sert à rien sur les requête SELECT : uniquement sur des requêtes qui modifient les lignes. Pour connaître le nombre de lignes retournées par un SELECT, utilisez sybase_num_rows().

Note : Cette fonction n'est diponible qu'avec la librairie CT Sybase, et non pas avec la librairie DB.

Voir aussi sybase_num_rows().

Précédent | Sommaire | Suivant
Sybase | Niveau supérieur | sybase_close


sybase_close

(PHP 3, PHP 4 )

sybase_close -- Ferme une connexion Sybase

Description

bool sybase_close ( [resource link_identifier])

sybase_close() termine la connexion avec le serveur Sybase associé à l'identifiant de connexion link_identifier.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Notez qu'il n'est pas utile de fermer les connexions non persistantes, car elles seront terminées à la fin du script.

sybase_close() ne ferme pas les connexions persistantes générées par sybase_pconnect().

Voir aussi sybase_connect() et sybase_pconnect().

Précédent | Sommaire | Suivant
sybase_affected_rows | Niveau supérieur | sybase_connect


sybase_connect

(PHP 3, PHP 4 )

sybase_connect -- Ouvre une connexion à un serveur Sybase

Description

resource sybase_connect ( [string servername [, string username [, string password [, string charset [, string appname]]]]])

sybase_connect() retourne un identifiant positif de lien Sybase en cas de succès, et FALSE en cas d'erreur.

sybase_connect() établit une connexion à un serveur Sybase. Le nom de serveur servername doit être valide, défini dans le fichier d'interface.

Si un deuxième appel à sybase_connect() est fait avec les mêmes arguments, une nouvelle connexion ne sera pas établie, mais ce sera l'identifiant de la connexion déjà ouverte qui sera retourné.

La connexion sera fermée dès la fin du script, à moins qu'elle ne soit pas explicitement fermée avec sybase_close().

Exemple 1. Exemple avec sybase_connect()

<?php
    $link = sybase_connect('SYBASE', '', '')
            or die("Impossible de se connecter !");
    print ("Connexion &eacute;tablie");
    sybase_close($link);
?>

Voir aussi sybase_pconnect() et sybase_close().

Précédent | Sommaire | Suivant
sybase_close | Niveau supérieur | sybase_data_seek


sybase_data_seek

(PHP 3, PHP 4 )

sybase_data_seek -- Déplace le pointeur interne de lignes Sybase

Description

bool sybase_data_seek ( resource result_identifier, int row_number)

sybase_data_seek() déplace le pointeur interne de ligne du résutalt Sybase associé à result_identifier jusqu'à la ligne row_number. Le prochain appel à sybase_fetch_row() sans préciser la ligne, retournera la ligne row_number.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi sybase_fetch_row().

Précédent | Sommaire | Suivant
sybase_connect | Niveau supérieur | sybase_deadlock_retry_count


sybase_deadlock_retry_count

(PHP 4 >= 4.3.0)

sybase_deadlock_retry_count -- Configure le nombre de tentatives lors de blocages (deadlock)

Description

void sybase_deadlock_retry_count ( int retry_count)

sybase_deadlock_retry_count() permet de configurer à retry_count le nombre d'essais que Sybase va tenter lorqu'il rencontre un blocage de verrou (deadlocks). Par défaut, tous les blocages sont testés un nombre infini de fois, ou bien jusqu'à ce que le script soit interrompu (par exemple, par la fonction set_time_limit()) ou que la requête réussisse.

Tableau 1. Valeurs pour le paramètre retry_count

-1 | Essai jusqu'à réussir (par défaut)
0 | Ne pas reessayer
n | Ressaye n fois

Note : Cette fonction n'est diponible qu'avec la librairie CT Sybase, et non pas avec la librairie DB.

Précédent | Sommaire | Suivant
sybase_data_seek | Niveau supérieur | sybase_fetch_array


sybase_fetch_array

(PHP 3, PHP 4 )

sybase_fetch_array -- Retourne une ligne Sybase sous la forme d'un tableau

Description

array sybase_fetch_array ( resource result)

sybase_fetch_array() retourne un tableau qui contient la ligne demandée, ou FALSE s'il ne reste plus de ligne.

sybase_fetch_array() est une version évoluée de sybase_fetch_row(). En plus d'enregistrer les données dans un tableau à index numérique, cette fonction peut aussi les enregistrer dans un tableau associatif, en utilisant les nom des champs comme clés.

Il est très important de noter quesybase_fetch_array() N'est PAS nettement plus lent que sybase_fetch_row(), tandis qu'elle fourni un confort d'utilisation notable.

Exemple 1. Cas des colonnes de noms identiques avec Sybase

<?php
    $dbh= sybase_connect('SYBASE', '', '');
    $q= sybase_query(
        'SELECT * FROM p, a WHERE p.person_id= a.person_id',
        $dbh
    );
    var_dump(sybase_fetch_array($q));
    sybase_close($dbh);
?>

L'exemle ci-dessus va produire l'affichage suivant (en supposant que les tables ont toutes les deux des colonnes appelées person_id) :

array(4) {
  [0]=>
  int(1)
  ["person_id"]=>
  int(1)
  [1]=>
  int(1)
  ["person_id1"]=>
  int(1)
}

   Voir aussi
sybase_fetch_row(),
   sybase_fetch_assoc() et
   sybase_fetch_object().

Précédent | Sommaire | Suivant
sybase_deadlock_retry_count | Niveau supérieur | sybase_fetch_assoc


sybase_fetch_assoc

(PHP 4 >= 4.3.0)

sybase_fetch_assoc -- Lit une ligne de résultat Sybase sous forme de tableau associatif

Description

array sybase_fetch_assoc ( resource result)

sybase_fetch_assoc() retourne un tableau contenant la ligne lue, ou bien FALSE si il n'y a plus de lignes.

sybase_fetch_assoc() est une alternative de sybase_fetch_row() qui utilise les noms de colonnes plutôt que des entiers commes index dans le tableau de résultat. Les colonnes de différentes tables ayant le même nom sont retournées sur la forme name, name1, name2, ..., nameN.

Il est important de noter qu'utiliser sybase_fetch_assoc() n'est pas significativement plus lent que sybase_fetch_row(), tout en procurant un niveau de confort accru.

Voir aussi
sybase_fetch_array(),
sybase_fetch_object() et
sybase_fetch_row().

Précédent | Sommaire | Suivant
sybase_fetch_array | Niveau supérieur | sybase_fetch_field


sybase_fetch_field

(PHP 3, PHP 4 )

sybase_fetch_field -- Lit les informations d'un champ Sybase

Description

object sybase_fetch_field ( resource result [, int field_offset])

sybase_fetch_field() retourne un objet contenant les informations du champ.

sybase_fetch_field() sert à obtenir des informations à propos des champs dans le résultat result. Si l'offset du champ n'est pas précisé, le champ suivant est traité.

Les propriétés des objets sont :

  • name - column name. nom de la colonne. Si la colonne est un résultat de fonction, le nom de cette fonction devient computed#N, où #N est un numéro de série.

  • column_source - la table d'origine de la colonne.

  • max_length - taille maximale de la colonne

  • numeric - 1 si la colonne est de type numérique.

  • type - type de données de la colonne

Voir aussi sybase_field_seek().

Précédent | Sommaire | Suivant
sybase_fetch_assoc | Niveau supérieur | sybase_fetch_object


sybase_fetch_object

(PHP 3, PHP 4 )

sybase_fetch_object -- Retourne une ligne Sybase sous la forme d'un objet

Description

object sybase_fetch_object ( resource result [, mixed object])

sybase_fetch_object() retourne un objet qui contient la ligne demandée, en cas de succès, et FALSE en cas d'erreur.

sybase_fetch_object() est similaire à sybase_fetch_array(), avec une différence : c'est un objet qui est retourné à la place d'un tableau. Indirectement, cela signifie que vous ne pourrez accéder aux valeurs que par les propriétés, et non plus avec des offsets (les nombres sont interdits comme nom de propriété).

Utilisez le second paramètre object pour spécifier le type d'objet que vous voulez retourner. Si ce paramètre est omis, l'objet résultant sera de classe stdClass.

Note : Depuis PHP 4.3.0, cette fonction ne retourne plus les membres numériques.

Ancienne méthode :
object(stdclass)(3) {
  [0]=>
  string(3) "foo"
  ["foo"]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "bar"
}
Nouvelle méthode :
object(stdclass)(3) {
  ["foo"]=>
  string(3) "foo"
  ["bar"]=>
  string(3) "bar"
}

Exemple 1. sybase_fetch_object() retourne l'objet Foo

<?php
    class Foo {
        var $foo, $bar, $baz;
    }

    // {...]
    $qrh= sybase_query('SELECT foo, bar, baz FROM example');
    $foo= sybase_fetch_object($qrh, 'Foo');
    $bar= sybase_fetch_object($qrh, new Foo());
    // {...]
?>

Au niveau de la vitesse, cette fonction est identique à sybase_fetch_array(), et presque aussi rapide que sybase_fetch_row() (la différence est insignifiante).

Voir aussi sybase_fetch_array() et sybase_fetch_row().

Précédent | Sommaire | Suivant
sybase_fetch_field | Niveau supérieur | sybase_fetch_row


sybase_fetch_row

(PHP 3, PHP 4 )

sybase_fetch_row -- Retourne une ligne Sybase sous la forme d'un tableau numérique

Description

array sybase_fetch_row ( resource result)

sybase_fetch_row() retourne un tableau qui contient la ligne demandée, en cas de succès, et FALSE en cas d'erreur.

sybase_fetch_row() lit une ligne dans le résultat associé à l'identifiant de résultat result. La ligne retournée est sous la forme d'un tableau. Chaque champs est enregistré dans un index du tableau, les index commençant à 0.

Les prochains appels à sybase_fetch_row() retourneront la ligne suivante du résultat, ou FALSE, s'il ne reste plus de ligne.

Tableau 1. Types de données

PHP | Sybase
string | VARCHAR, TEXT, CHAR, IMAGE, BINARY, VARBINARY, DATETIME
int | NUMERIC (sans précision), DECIMAL (sans précision), INT, BIT, TINYINT, SMALLINT
float | NUMERIC (avec précision), DECIMAL (avec précision), REAL, FLOAT, MONEY
NULL | NULL

Voir aussi
sybase_result(),
sybase_fetch_array(),
sybase_fetch_assoc(),
sybase_fetch_object() et
sybase_data_seek(),
sybase_fetch_assoc().

Précédent | Sommaire | Suivant
sybase_fetch_object | Niveau supérieur | sybase_field_seek


sybase_field_seek

(PHP 3, PHP 4 )

sybase_field_seek -- Modifie l'index d'un champ Sybase

Description

bool sybase_field_seek ( resource result, int field_offset)

sybase_field_seek() modifie l'index d'un champ. Le prochain appel à la fonction sybase_fetch_field() sans préciser l'index du champ retournera ce champ.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Voir aussi sybase_fetch_field().

Précédent | Sommaire | Suivant
sybase_fetch_row | Niveau supérieur | sybase_free_result


sybase_free_result

(PHP 3, PHP 4 )

sybase_free_result -- Libère un résultat Sybase de la mémoire

Description

bool sybase_free_result ( resource result)

sybase_free_result() n'est vraiment utile que si vous risquez d'utiliser trop de mémoire durant votre script. La mémoire occupée par les résultats est automatiquement libérée à la fin du script. Mais, si vous êtes sûr de ne pas avoir besoin du résultat ultérieurement.

Précédent | Sommaire | Suivant
sybase_field_seek | Niveau supérieur | sybase_get_last_message


sybase_get_last_message

(PHP 3, PHP 4 )

sybase_get_last_message -- Retourne le dernier message du serveur

Description

string sybase_get_last_message ( void )

sybase_get_last_message() retourne le dernier message rapporté par le serveur.

Voir aussi sybase_min_message_severity().

Précédent | Sommaire | Suivant
sybase_free_result | Niveau supérieur | sybase_min_client_severity


sybase_min_client_severity

(PHP 3, PHP 4 )

sybase_min_client_severity -- Fixe la sévérité minimale du client Sybase

Description

void sybase_min_client_severity ( int severity)

sybase_min_client_severity() fixe la sévérité minimale du client.

Note : Cette fonction n'est diponible qu'avec la librairie CT Sybase, et non pas avec la librairie DB.

Voir aussi sybase_min_server_severity().

Précédent | Sommaire | Suivant
sybase_get_last_message | Niveau supérieur | sybase_min_error_severity


sybase_min_error_severity

(PHP 3, PHP 4 )

sybase_min_error_severity -- Fixe la sévérité minimale du client pour les erreurs

Description

void sybase_min_error_severity ( int severity)

sybase_min_error_severity() fixe la sévérité minimale du client pour les erreurs.

Voir aussi sybase_min_message_severity().

Précédent | Sommaire | Suivant
sybase_min_client_severity | Niveau supérieur | sybase_min_message_severity


sybase_min_message_severity

(PHP 3, PHP 4 )

sybase_min_message_severity -- Fixe la sévérité minimale du client pour les messages

Description

void sybase_min_message_severity ( int severity)

sybase_min_message_severity() fixe la sévérité minimale du client pour les messages.

Voir aussi sybase_min_error_severity().

Précédent | Sommaire | Suivant
sybase_min_error_severity | Niveau supérieur | sybase_min_server_severity


sybase_min_server_severity

(PHP 3, PHP 4 )

sybase_min_server_severity -- Fixe la sévérité minimale du client pour le serveur Sybase

Description

void sybase_min_server_severity ( int severity)

sybase_min_server_severity() fixe la sévérité minimale du client pour le serveur.

Note : Cette fonction n'est diponible qu'avec la librairie CT Sybase, et non pas avec la librairie DB.

Voir aussi sybase_min_client_severity().

Précédent | Sommaire | Suivant
sybase_min_message_severity | Niveau supérieur | sybase_num_fields


sybase_num_fields

(PHP 3, PHP 4 )

sybase_num_fields -- Retourne le nombre de champs dans un résultat Sybase

Description

int sybase_num_fields ( resource result)

sybase_num_fields() retourne le nombre de champs du résultat result.

Voir aussi
sybase_db_query(),
sybase_query(),
sybase_fetch_field() et
sybase_num_rows().

Précédent | Sommaire | Suivant
sybase_min_server_severity | Niveau supérieur | sybase_num_rows


sybase_num_rows

(PHP 3, PHP 4 )

sybase_num_rows -- Retourne le nombre de lignes dans un résultat Sybase

Description

int sybase_num_rows ( resource result)

sybase_num_rows() retourne le nombre de lignes du résultat result.

Voir aussi
sybase_num_fields(),
sybase_query() et
sybase_fetch_row().

Précédent | Sommaire | Suivant
sybase_num_fields | Niveau supérieur | sybase_pconnect


sybase_pconnect

(PHP 3, PHP 4 )

sybase_pconnect -- Ouvre une connexion persistante à un serveur Sybase

Description

int sybase_pconnect ( string servername, string username, string password [, string charset])

sybase_pconnect() retourne un identifiant de connexion positif en cas de succès, et FALSE en cas d'erreur.

sybase_connect() se comporte comme sybase_connect() avec deux différence majeures :

Premièrement, lors de la connexion, la fonction va chercher une connexion (persistante) déjà ouverte, avec le même hôte, nom de compte et mot de passe. Si une telle connexion est trouvée, un identifiant de cette connexion est retourné, plutôt que d'en ouvrir une nouvelle.

Deuxièmement, la connexion au serveur SyBase ne sera pas terminée lors de la fin du script. Au contraire, le lien sera maintenu pour des connexions ultérieures. sybase_close() ne fermera pas un lien crée par sybase_pconnect().

Ce type de lien est dit 'persistant'.

Voir aussi sybase_connect().

Précédent | Sommaire | Suivant
sybase_num_rows | Niveau supérieur | sybase_query


sybase_query

(PHP 3, PHP 4 )

sybase_query -- Envoie une requête à une base Sybase

Description

resource sybase_query ( string query, resource link_identifier)

sybase_query() retourne un identifiant de résultat positif en cas de succès, et FALSE sinon.

sybase_query() envoie une requête à la base de données courante, sur le serveur associé à l'identifiant de connexion. Si l'identifiant de connexion n'est pas précisé, la fonction essaiera d'utiliser la dernière connexion ouverte. Si aucune connexion n'a été ouverte, la fonction va tenter d'ouvrir une connexion avec la fonction sybase_connect().

Voir aussi sybase_select_db() et sybase_connect().

Précédent | Sommaire | Suivant
sybase_pconnect | Niveau supérieur | sybase_result


sybase_result

(PHP 3, PHP 4 )

sybase_result -- Lit une valeur dans un résultat

Description

string sybase_result ( resource result, int row, mixed field)

sybase_result() retourne le contenu d'une cellule. L'argument field peut être l'index du champ, ou bien le nom du champ, ou encore, le nom de la table " point " le nom du champ. Si la colonne a été aliasée ('SELECT foo AS bar FROM...'), utilisez l'alias à la place du nom de la colonne.

Lorsque vous travaillez sur des résultats de grande taille, vous devriez utiliser les autres fonctions qui lisent une ligne entière (voir plus loin). Etant donné que ces fonctions lisent une ligne entière, elles sont BEAUCOUP plus rapide que sybase_result(). De plus, l'utilisation d'index numérique est beaucoup plus rapide que les noms des champs, ou les noms des tables et des champs.

Fonctions de substitution, à haute efficacité : sybase_fetch_row(), sybase_fetch_array() et sybase_fetch_object().

Précédent | Sommaire | Suivant
sybase_query | Niveau supérieur | sybase_select_db


sybase_select_db

(PHP 3, PHP 4 )

sybase_select_db -- Sélectionne une base de données Sybase

Description

bool sybase_select_db ( string database_name [, resource link_identifier])

sybase_select_db() change la base de données courante et active sur le serveur associé avec l'identifiant de connexion link_identifier. Si link_identifier n'est pas précisé, le dernier lien ouvert est utilisé. Si aucun lien n'a été ouvert, la fonction va tenter d'en établir un en appelant sybase_connect().

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Tous les prochains appels à sybase_query() seront faits dans la base de données courante et active.

Voir aussi
sybase_connect(),
sybase_pconnect() et
sybase_query().

Précédent | Sommaire | Suivant
sybase_result | Niveau supérieur | sybase_set_message_handler


sybase_set_message_handler

(PHP 4 >= 4.3.0)

sybase_set_message_handler -- Configure le gestionnaire de message Sybase

Description

bool sybase_set_message_handler ( callback handler)

sybase_set_message_handler() configure la fonction handler pour qu'il soit le gestionnaire des messages générés par le serveur Sybase. Vous pouvez spécifier le nom d'une fonction globale, ou bien utiliser un tableau pour spécifier un objet et un nom de méthode.

Le gestionnaire attend 5 arguments, dans l'ordre suivant : numéro de message, sévérité, état, numéro de ligne et description. Les 4 premiers paramètre sont des entiers, et le dernier est une chaîne de caractères. Si ce gestionnaire retourne la valeur FALSE, PHP retournera un message d'erreur classique.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Fonction de callback pour sybase_set_message_handler()

<?php
    function msg_handler($msgnumber, $severity, $state, $line, $text) {
        var_dump($msgnumber, $severity, $state, $line, $text);
    }

    sybase_set_message_handler('msg_handler');
?>

Exemple 2. Classe de callback pour sybase_set_message_handler()

<?php
    class Sybase {
        function handler($msgnumber, $severity, $state, $line, $text) {
            var_dump($msgnumber, $severity, $state, $line, $text);
        }
    }

    $sybase= new Sybase();
    sybase_set_message_handler(array($sybase, 'handler'));
?>

Exemple 3. Gestion des messages non traités de sybase_set_message_handler()

<?php
    // Retournez FALSE si vous voulez indiquer que vous ne savez pas
    // traiter ce message. Cette erreur est alors affich&eacute;e sous la forme
    // d'une alerte, comme si il n'y avait pas de gestionnaire install&eacute;.
    function msg_handler($msgnumber, $severity, $state, $line, $text) {
        if (257 == $msgnumber) return FALSE;
        var_dump($msgnumber, $severity, $state, $line, $text);
    }

    sybase_set_message_handler('msg_handler');
?>

Précédent | Sommaire | Suivant
sybase_select_db | Niveau supérieur | sybase_unbuffered_query


sybase_unbuffered_query

(PHP 4 >= 4.3.0)

sybase_unbuffered_query -- Envoie une requête à Sybase et ne bloque pas

Description

resource sybase_unbuffered_query ( string query, resource link_identifier)

sybase_unbuffered_query() retourne une ressource Sybase result en cas de réussite, et FALSE sinon.

sybase_unbuffered_query() envoie la requete query au serveur Sybase actif, représenté par link_identifier. Si link_identifier n'est pas spécifié, la dernière connexion ouverte sera utilisée. Si aucune connexion n'a été ouverte, la fonction essaiera d'établir un lien avec sybase_connect(), et de l'utiliser.

Contrairement à sybase_query(),
sybase_unbuffered_query() lit uniquement la première
ligne lue. sybase_fetch_array() et les fonctions
similaires lisent les lignes nécessaires. sybase_data_seek()
lit jusqu'à la prochaine ligne. Ce comportement fournit des performances
accrues pour les résultats de grande taille.

sybase_num_rows() ne retournera le nombre de lignes correct que si toutes les lignes du résultat ont été lues. Pour Sybase, le nombre de ligne n'est pas connu, et doit être calculé par le programme client.

Note : Si vous ne lisez pas toutes les lignes du résultat avant d'exécuter une nouvelle requête, PHP va générer une alerte, et annuler toutes les lignes qui restent à lire. Pour éviter cela, utilise la fonction sybase_free_result() qui va annuler les lignes restantes.

Le paramètre optionnel store_result peut valoir FALSE pour indiquer que les lignes ne doivent pas être ramené en mémoire, afin de réduire la consommation, surtout dans le cas de très grands résultats.

Exemple 1. Exemple avec sybase_unbuffered_query()

<?php
       $dbh= sybase_connect('SYBASE', '', '');
       $q= sybase_unbuffered_query('select firstname, lastname from huge_table', $dbh, FALSE);
       sybase_data_seek($q, 10000);
       $i= 0;
       while ($row= sybase_fetch_row($q)) {
               echo $row[0].' '.$row[0];
               if ($i++ > 40000) break;
       }
       sybase_free_result($q);
       sybase_close($dbh);
?>

Précédent | Sommaire | Suivant
sybase_set_message_handler | Niveau supérieur | Tidy


Tidy

Manuel PHP
Précédent Suivant

CIV. Tidy

Introduction

Tidy est une interface avec la bibliothèque Tidy HTML, pour nettoyer et manipuler les documents HTML, et les traiter sous forme de balises hiérarchisées.

Pré-requis

Pour utiliser Tidy, vous devez disposer de la bibliothèque libtidy, qui est téléchargeable sur le site de http://tidy.sourceforge.net/.

Installation

Tidy est actuellement disponible pour PHP 4.3.x et PHP 5 en tant qu'extension PECL. L'extension est disponible sur http://pecl.php.net/package/tidy.

Si PEAR est disponible sur votre système *nix vous pouvez utiliser l'installeur PEAR pour avoir l'extension tidy, avec la commande suivante : pear -v install tidy.

Vous pouvez aussi télécharger l'archive tar.gz et installer tidy à la main :

Exemple 1. installation de tidy à la main

gunzip tidy-xxx.tgz
tar -xvf tidy-xxx.tar
cd tidy-xxx
phpize
./configure && make && make install

Les utilisateurs de windows peuvent télécharger la dll de l'extension php_tidy.dll à partir de http://snaps.php.net/win32/PECL_STABLE/.

Table des matières
tidy_access_count -- Retourne le nombre d'alertes d'accessibilité Tidy rencontrée dans le document
tidy_clean_repair -- Effectue les opérations de nettoyage et de réparation préparées pour un fichier HTML
tidy_config_count -- Retourne le nombre d'erreurs de configuration Tidy rencontrées dans le document
tidy_diagnose -- Etablit le diagnostic pour le document analysé et réparé
tidy_error_count -- Retourne le nombre d'erreurs Tidy rencontrées dans le document
tidy_get_body -- Retourne un objet TidyNode, commencé à partir de la balise >BODY<
tidy_get_config -- Lit la configuration Tidy courante
tidy_get_error_buffer -- Retourne les alertes et erreurs qui sont survenues lors de l'analyse du document
tidy_get_head -- Retourne un objet TidyNode à partir de la balise >HEAD<
tidy_get_html_ver -- Détecte le version du code HTML utilisée dans un document
tidy_get_html -- Retourne un objet TidyNode commençant à la balise >HTML<
tidy_get_output -- Retourne une chaîne représentant les balises telles qu'analysées par Tidy
tidy_get_release -- Lit la date de publication de la bibliothèque Tidy
tidy_get_root -- Retourne un objet TidyNode représentant la racine du document HTML
tidy_get_status -- Lit le statut du document spécifié
tidy_getopt -- Retourne la valeur de l'option de configuration Tidy
tidy_is_xhtml -- Indique si le document est un document XML générique
tidy_load_config -- Charge une configuration ASCII Tidy
tidy_node->attributes -- Retourne un tableau avec les attributs de l'objet Tidy
tidy_node->children -- Retourne un tableau avec les noeuds Tidy fils
tidy_node->get_attr -- Retourne la valeur de l'attribut spécifié
tidy_node->get_nodes -- Retourne un tableau avec les noeuds placés sous le noeud courant, avec l'identifiant spécifié
tidy_node->has_children -- Retourne TRUE si ce noeud à un fils
tidy_node->has_siblings -- Retourne TRUE si le noeud a des frères
tidy_node->is_asp -- Retourne TRUE si ce noeud Tidy est ASP
tidy_node->is_comment -- Retourne TRUE si ce noeud représente un commentaire
tidy_node->is_html -- Retourne TRUE si le noeud fait partie d'un document HTML
tidy_node->is_jsp -- Retourne TRUE si ce noeud est JSP
tidy_node->is_jste -- Retourne TRUE si ce noeud est JSTE
tidy_node->is_text -- Retourne TRUE si ce noeud représente du texte (pas de balises)
tidy_node->is_xhtml -- Retourne TRUE si le noeud fait partie d'un document XHTML
tidy_node->is_xml -- Retourne TRUE si ce noeud Tidy fait partie d'un document XML
tidy_node->next -- Retourne le prochain frère du noeud courant
tidy_node->prev -- Retourne le frère précédent de ce noeud
tidy_node->tidy_node -- Constructeur de l'objet TidyNode
tidy_parse_file -- Analyse les balises d'un fichier ou d'une URI
tidy_parse_string -- Analyse un document HTML contenu dans une chaîne, avec Tidy
tidy_repair_file -- Répare un fichier en utilisant un fichier de configuration optionnel
tidy_repair_string -- Répare une chaîne HTML en utilisant un fichier de configuration optionnel
tidy_reset_config -- Redonne les valeurs de configuration par défaut de Tidy
tidy_save_config -- Sauve la configuration courant dans un fichier. Seules les valeurs différentes des valeurs par défaut sont sauvées.
tidy_set_encoding -- Modifie le jeu de caractères pour les entrées/sorties de l'analyseur Tidy.
tidy_setopt -- Modifie la valeur de l'option de configuration Tidy
tidy_warning_count -- Retourne le nombre d'alertes Tidy rencontrées dans le document HTML

Précédent | Sommaire | Suivant
sybase_unbuffered_query | Niveau supérieur | tidy_access_count


tidy_access_count

(no version information, might be only in CVS)

tidy_access_count -- Retourne le nombre d'alertes d'accessibilité Tidy rencontrée dans le document

Description

int tidy_access_count ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
Tidy | Niveau supérieur | tidy_clean_repair


tidy_clean_repair

(no version information, might be only in CVS)

tidy_clean_repair -- Effectue les opérations de nettoyage et de réparation préparées pour un fichier HTML

Description

bool tidy_clean_repair ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_access_count | Niveau supérieur | tidy_config_count


tidy_config_count

(no version information, might be only in CVS)

tidy_config_count -- Retourne le nombre d'erreurs de configuration Tidy rencontrées dans le document

Description

int tidy_config_count ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_clean_repair | Niveau supérieur | tidy_diagnose


tidy_diagnose

(no version information, might be only in CVS)

tidy_diagnose -- Etablit le diagnostic pour le document analysé et réparé

Description

bool tidy_diagnose ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_config_count | Niveau supérieur | tidy_error_count


tidy_error_count

(no version information, might be only in CVS)

tidy_error_count -- Retourne le nombre d'erreurs Tidy rencontrées dans le document

Description

int tidy_error_count ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_diagnose | Niveau supérieur | tidy_get_body


tidy_get_body

(no version information, might be only in CVS)

tidy_get_body -- Retourne un objet TidyNode, commencé à partir de la balise >BODY<

Description

object tidy_get_body ( resource tidy)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction n'est disponible qu'avec Zend Engine 2, cela signifie PHP >= 5.0.0.

Précédent | Sommaire | Suivant
tidy_error_count | Niveau supérieur | tidy_get_config


tidy_get_config

(no version information, might be only in CVS)

tidy_get_config -- Lit la configuration Tidy courante

Description

array tidy_get_config ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_body | Niveau supérieur | tidy_get_error_buffer


tidy_get_error_buffer

(no version information, might be only in CVS)

tidy_get_error_buffer -- Retourne les alertes et erreurs qui sont survenues lors de l'analyse du document

Description

string tidy_get_error_buffer ( [bool detailed])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_config | Niveau supérieur | tidy_get_head


tidy_get_head

(no version information, might be only in CVS)

tidy_get_head -- Retourne un objet TidyNode à partir de la balise >HEAD<

Description

object tidy_get_head ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction n'est disponible qu'avec Zend Engine 2, cela signifie PHP >= 5.0.0.

Précédent | Sommaire | Suivant
tidy_get_error_buffer | Niveau supérieur | tidy_get_html_ver


tidy_get_html_ver

(no version information, might be only in CVS)

tidy_get_html_ver -- Détecte le version du code HTML utilisée dans un document

Description

int tidy_get_html_ver ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_head | Niveau supérieur | tidy_get_html


tidy_get_html

(no version information, might be only in CVS)

tidy_get_html -- Retourne un objet TidyNode commençant à la balise >HTML<

Description

object tidy_get_html ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction n'est disponible qu'avec Zend Engine 2, cela signifie PHP >= 5.0.0.

Précédent | Sommaire | Suivant
tidy_get_html_ver | Niveau supérieur | tidy_get_output


tidy_get_output

(no version information, might be only in CVS)

tidy_get_output -- Retourne une chaîne représentant les balises telles qu'analysées par Tidy

Description

string tidy_get_output ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_html | Niveau supérieur | tidy_get_release


tidy_get_release

(no version information, might be only in CVS)

tidy_get_release -- Lit la date de publication de la bibliothèque Tidy

Description

string tidy_get_release ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_output | Niveau supérieur | tidy_get_root


tidy_get_root

(no version information, might be only in CVS)

tidy_get_root -- Retourne un objet TidyNode représentant la racine du document HTML

Description

object tidy_get_root ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : Cette fonction n'est disponible qu'avec Zend Engine 2, cela signifie PHP >= 5.0.0.

Précédent | Sommaire | Suivant
tidy_get_release | Niveau supérieur | tidy_get_status


tidy_get_status

(no version information, might be only in CVS)

tidy_get_status -- Lit le statut du document spécifié

Description

int tidy_get_status ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_root | Niveau supérieur | tidy_getopt


tidy_getopt

(no version information, might be only in CVS)

tidy_getopt -- Retourne la valeur de l'option de configuration Tidy

Description

mixed tidy_getopt ( string option)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_get_status | Niveau supérieur | tidy_is_xhtml


tidy_is_xhtml

(no version information, might be only in CVS)

tidy_is_xhtml -- Indique si le document est un document XML générique

Description

bool tidy_is_xhtml ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_getopt | Niveau supérieur | tidy_load_config


tidy_load_config

(no version information, might be only in CVS)

tidy_load_config -- Charge une configuration ASCII Tidy

Description

void tidy_load_config ( string filename, string encoding)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_is_xhtml | Niveau supérieur | tidy_node->attributes


tidy_node->attributes

(no version information, might be only in CVS)

tidy_node->attributes -- Retourne un tableau avec les attributs de l'objet Tidy

Description

array tidy_node->attributes ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_load_config | Niveau supérieur | tidy_node->children


tidy_node->children

(no version information, might be only in CVS)

tidy_node->children -- Retourne un tableau avec les noeuds Tidy fils

Description

array tidy_node->children ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->attributes | Niveau supérieur | tidy_node->get_attr


tidy_node->get_attr

(no version information, might be only in CVS)

tidy_node->get_attr -- Retourne la valeur de l'attribut spécifié

Description

tidy_attr tidy_node->get_attr ( int attrib_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->children | Niveau supérieur | tidy_node->get_nodes


tidy_node->get_nodes

(no version information, might be only in CVS)

tidy_node->get_nodes -- Retourne un tableau avec les noeuds placés sous le noeud courant, avec l'identifiant spécifié

Description

array tidy_node->get_nodes ( int node_id)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->get_attr | Niveau supérieur | tidy_node->has_children


tidy_node->has_children

(no version information, might be only in CVS)

tidy_node->has_children -- Retourne TRUE si ce noeud à un fils

Description

bool tidy_node->has_children ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->get_nodes | Niveau supérieur | tidy_node->has_siblings


tidy_node->has_siblings

(no version information, might be only in CVS)

tidy_node->has_siblings -- Retourne TRUE si le noeud a des frères

Description

bool tidy_node->has_siblings ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->has_children | Niveau supérieur | tidy_node->is_asp


tidy_node->is_asp

(no version information, might be only in CVS)

tidy_node->is_asp -- Retourne TRUE si ce noeud Tidy est ASP

Description

bool tidy_node->is_asp ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->has_siblings | Niveau supérieur | tidy_node->is_comment


tidy_node->is_comment

(no version information, might be only in CVS)

tidy_node->is_comment -- Retourne TRUE si ce noeud représente un commentaire

Description

bool tidy_node->is_comment ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_asp | Niveau supérieur | tidy_node->is_html


tidy_node->is_html

(no version information, might be only in CVS)

tidy_node->is_html -- Retourne TRUE si le noeud fait partie d'un document HTML

Description

bool tidy_node->is_html ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_comment | Niveau supérieur | tidy_node->is_jsp


tidy_node->is_jsp

(no version information, might be only in CVS)

tidy_node->is_jsp -- Retourne TRUE si ce noeud est JSP

Description

bool tidy_node->is_jsp ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_html | Niveau supérieur | tidy_node->is_jste


tidy_node->is_jste

(no version information, might be only in CVS)

tidy_node->is_jste -- Retourne TRUE si ce noeud est JSTE

Description

bool tidy_node->is_jste ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_jsp | Niveau supérieur | tidy_node->is_text


tidy_node->is_text

(no version information, might be only in CVS)

tidy_node->is_text -- Retourne TRUE si ce noeud représente du texte (pas de balises)

Description

bool tidy_node->is_text ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_jste | Niveau supérieur | tidy_node->is_xhtml


tidy_node->is_xhtml

(no version information, might be only in CVS)

tidy_node->is_xhtml -- Retourne TRUE si le noeud fait partie d'un document XHTML

Description

bool tidy_node->is_xhtml ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_text | Niveau supérieur | tidy_node->is_xml


tidy_node->is_xml

(no version information, might be only in CVS)

tidy_node->is_xml -- Retourne TRUE si ce noeud Tidy fait partie d'un document XML

Description

bool tidy_node->is_xml ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_xhtml | Niveau supérieur | tidy_node->next


tidy_node->next

(no version information, might be only in CVS)

tidy_node->next -- Retourne le prochain frère du noeud courant

Description

tidy_node tidy_node->next ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->is_xml | Niveau supérieur | tidy_node->prev


tidy_node->prev

(no version information, might be only in CVS)

tidy_node->prev -- Retourne le frère précédent de ce noeud

Description

tidy_node tidy_node->prev ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->next | Niveau supérieur | tidy_node->tidy_node


tidy_node->tidy_node

(no version information, might be only in CVS)

tidy_node->tidy_node -- Constructeur de l'objet TidyNode

Description

void tidy_node->tidy_node ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->prev | Niveau supérieur | tidy_parse_file


tidy_parse_file

(no version information, might be only in CVS)

tidy_parse_file -- Analyse les balises d'un fichier ou d'une URI

Description

bool tidy_parse_file ( string file [, bool use_include_path])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_node->tidy_node | Niveau supérieur | tidy_parse_string


tidy_parse_string

(no version information, might be only in CVS)

tidy_parse_string -- Analyse un document HTML contenu dans une chaîne, avec Tidy

Description

bool tidy_parse_string ( string input)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_parse_file | Niveau supérieur | tidy_repair_file


tidy_repair_file

(no version information, might be only in CVS)

tidy_repair_file -- Répare un fichier en utilisant un fichier de configuration optionnel

Description

bool tidy_repair_file ( string filename [, string config_file [, bool use_include_path]])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_parse_string | Niveau supérieur | tidy_repair_string


tidy_repair_string

(no version information, might be only in CVS)

tidy_repair_string -- Répare une chaîne HTML en utilisant un fichier de configuration optionnel

Description

bool tidy_repair_string ( string data [, string config_file])

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_repair_file | Niveau supérieur | tidy_reset_config


tidy_reset_config

(no version information, might be only in CVS)

tidy_reset_config -- Redonne les valeurs de configuration par défaut de Tidy

Description

string tidy_reset_config ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_repair_string | Niveau supérieur | tidy_save_config


tidy_save_config

(no version information, might be only in CVS)

tidy_save_config -- Sauve la configuration courant dans un fichier. Seules les valeurs différentes des valeurs par défaut sont sauvées.

Description

bool tidy_save_config ( string filename)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_reset_config | Niveau supérieur | tidy_set_encoding


tidy_set_encoding

(no version information, might be only in CVS)

tidy_set_encoding -- Modifie le jeu de caractères pour les entrées/sorties de l'analyseur Tidy.

Description

bool tidy_set_encoding ( string encoding)

Configure l'encodage pour les documents en entrée et en sortie. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. La valeurs possibles de encoding sont ascii, latin1, raw, utf8, iso2022, mac, win1252, utf16le, utf16be, utf16, big5 et shiftjis.

Précédent | Sommaire | Suivant
tidy_save_config | Niveau supérieur | tidy_setopt


tidy_setopt

(no version information, might be only in CVS)

tidy_setopt -- Modifie la valeur de l'option de configuration Tidy

Description

bool tidy_setopt ( string option, mixed newvalue)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_set_encoding | Niveau supérieur | tidy_warning_count


tidy_warning_count

(no version information, might be only in CVS)

tidy_warning_count -- Retourne le nombre d'alertes Tidy rencontrées dans le document HTML

Description

int tidy_warning_count ( void )

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
tidy_setopt | Niveau supérieur | Analyseur de code PHP


Analyseur de code PHP

Manuel PHP
Précédent Suivant

CV. Analyseur de code PHP

Introduction

Les fonctions du tokenizer fournissent une interface avec l'analyseur interne de PHP, intégré dans le moteur Zend. En utilisant ces fonctions, vous pouvez écrire votre propre système d'analyse des sources PHP, ou bien des outils de modification du code, sans avoir à refaire toute l'analyse lexicale.

Voir aussi l'annexe sur les tokens.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

A partir de PHP 4.3.0, ces fonctions sont activées par défaut. Pour les anciennes versions, vous devez compiler PHP avec l'option --enable-tokenizer. Vous pouvez désactiver le support de l'extension tokenizer avec l'option --disable-tokenizer.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Note : Le support automatique du tokenizer est disponible depuis PHP 4.3.0.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

T_INCLUDE (entier)

T_INCLUDE_ONCE (entier)

T_EVAL (entier)

T_REQUIRE (entier)

T_REQUIRE_ONCE (entier)

T_LOGICAL_OR (entier)

T_LOGICAL_XOR (entier)

T_LOGICAL_AND (entier)

T_PRINT (entier)

T_PLUS_EQUAL (entier)

T_MINUS_EQUAL (entier)

T_MUL_EQUAL (entier)

T_DIV_EQUAL (entier)

T_CONCAT_EQUAL (entier)

T_MOD_EQUAL (entier)

T_AND_EQUAL (entier)

T_OR_EQUAL (entier)

T_XOR_EQUAL (entier)

T_SL_EQUAL (entier)

T_SR_EQUAL (entier)

T_BOOLEAN_OR (entier)

T_BOOLEAN_AND (entier)

T_IS_EQUAL (entier)

T_IS_NOT_EQUAL (entier)

T_IS_IDENTICAL (entier)

T_IS_NOT_IDENTICAL (entier)

T_IS_SMALLER_OR_EQUAL (entier)

T_IS_GREATER_OR_EQUAL (entier)

T_SL (entier)

T_SR (entier)

T_INC (entier)

T_DEC (entier)

T_INT_CAST (entier)

T_DOUBLE_CAST (entier)

T_STRING_CAST (entier)

T_ARRAY_CAST (entier)

T_OBJECT_CAST (entier)

T_BOOL_CAST (entier)

T_UNSET_CAST (entier)

T_NEW (entier)

T_EXIT (entier)

T_IF (entier)

T_ELSEIF (entier)

T_ELSE (entier)

T_ENDIF (entier)

T_LNUMBER (entier)

T_DNUMBER (entier)

T_STRING (entier)

T_STRING_VARNAME (entier)

T_VARIABLE (entier)

T_NUM_STRING (entier)

T_INLINE_HTML (entier)

T_CHARACTER (entier)

T_BAD_CHARACTER (entier)

T_ENCAPSED_AND_WHITESPACE (entier)

T_CONSTANT_ENCAPSED_STRING (entier)

T_ECHO (entier)

T_DO (entier)

T_WHILE (entier)

T_ENDWHILE (entier)

T_FOR (entier)

T_ENDFOR (entier)

T_FOREACH (entier)

T_ENDFOREACH (entier)

T_DECLARE (entier)

T_ENDDECLARE (entier)

T_AS (entier)

T_SWITCH (entier)

T_ENDSWITCH (entier)

T_CASE (entier)

T_DEFAULT (entier)

T_BREAK (entier)

T_CONTINUE (entier)

T_OLD_FUNCTION (entier)

T_FUNCTION (entier)

T_CONST (entier)

T_RETURN (entier)

T_USE (entier)

T_GLOBAL (entier)

T_STATIC (entier)

T_VAR (entier)

T_UNSET (entier)

T_ISSET (entier)

T_EMPTY (entier)

T_CLASS (entier)

T_EXTENDS (entier)

T_OBJECT_OPERATOR (entier)

T_DOUBLE_ARROW (entier)

T_LIST (entier)

T_ARRAY (entier)

T_LINE (entier)

T_FILE (entier)

T_COMMENT (entier)

T_ML_COMMENT (entier)

T_OPEN_TAG (entier)

T_OPEN_TAG_WITH_ECHO (entier)

T_CLOSE_TAG (entier)

T_WHITESPACE (entier)

T_START_HEREDOC (entier)

T_END_HEREDOC (entier)

T_DOLLAR_OPEN_CURLY_BRACES (entier)

T_CURLY_OPEN (entier)

T_PAAMAYIM_NEKUDOTAYIM (entier)

T_DOUBLE_COLON (entier)

Exemples

Voici un exemple simple de script PHP qui utilise le tokenizer pour lire un fichier, supprimer tous les commentaires de la source, et afficher uniquement du code.

Exemple 1. Suppression de commentaires avec le tokenizer

<?php
  $source = file_get_contents("un_script.php");
  $tokens = token_get_all($source);
  foreach ($tokens as $token) {
    if (is_string($token)) {
      // token d'un seul caract&egrave;re
      echo $token;
    } else {
      // tableau de tokens
      list($id, $text) = $token;
      switch($id) {
        case T_COMMENT:
        case T_ML_COMMENT:
          // aucune action sur les commentaires
          break;
        default:
          // tout le reste doit &ecirc;tre affich&eacute;
          echo $text;
          break;
      }
    }
  }
?>
Table des matières
token_get_all -- Scinde un code source en éléments de base
token_name -- Lit le nom d'un élément de code source

Précédent | Sommaire | Suivant
tidy_warning_count | Niveau supérieur | token_get_all


token_get_all

(PHP 4 >= 4.2.0)

token_get_all -- Scinde un code source en éléments de base

Description

array token_get_all ( string source)

token_get_all() analyse le code source source et retourne les éléments de code que le Zend engine a scanné. Cette fonction retourne un tableau contenant la liste des descriptions des éléments. Chaque élément du tableau peut être un caractère unique ou bien un tableau contenant un identifiant de token et la représentation de ce code source.

Exemple 1. Exemple avec token_get_all()

<?php
  $tokens = token_get_all(";");
// => array(";");
  $tokens = token_get_all("foreach")
// => array(T_FOREACH => "foreach");
  $tokens = token_get_all("/* comment */")
// => array(T_ML_COMMENT => "/* comment */");
?>

Précédent | Sommaire | Suivant
Analyseur de code PHP | Niveau supérieur | token_name


token_name

(PHP 4 >= 4.2.0)

token_name -- Lit le nom d'un élément de code source

Description

string token_name ( int token)

token_name() retourne le nom de l'élément de code PHP token. Ce nom correspond au nom de la constante équivalente.

Exemple 1. Exemple avec token_name()

<?php
  // 260 est la valeur correspondante &agrave; l'&eacute;l&eacute;ment T_REQUIRE
  echo token_name(260);        // -> "T_REQUIRE"

  // Une constante d'&eacute;l&eacute;ment correspond &agrave; son propre nom
  echo token_name(T_FUNCTION); // -> "T_FUNCTION"
?>

Précédent | Sommaire | Suivant
token_get_all | Niveau supérieur | URL


URL

Manuel PHP
Précédent Suivant

CVI. URL

Introduction

Fonctions permettant de traiter les URL : encoder, décoder, et analyser.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
base64_decode -- Décode une chaîne en MIME base64
base64_encode -- Encode une chaîne en MIME base64
get_meta_tags -- Extrait tous les méta tags d'un fichier
http_build_query -- Génère une chaîne de requête en encodage URL
parse_url -- Analyse une URL et retourne ses composants
rawurldecode -- Décode une chaîne URL
rawurlencode -- Encode une chaîne en URL, selon la RFC1738
urldecode -- Décode une chaîne encodée URL
urlencode -- Encode une chaîne en URL

Précédent | Sommaire | Suivant
token_name | Niveau supérieur | base64_decode


base64_decode

(PHP 3, PHP 4 )

base64_decode -- Décode une chaîne en MIME base64

Description

string base64_decode ( string encoded_data)

base64_decode() décode encoded_data et retourne les données décodées ou FALSE en cas d'echec. Les informations initiales peuvent être binaires.

Voir aussi base64_encode() et la RFC 2045 section 6.8.

Précédent | Sommaire | Suivant
URL | Niveau supérieur | base64_encode


base64_encode

(PHP 3, PHP 4 )

base64_encode -- Encode une chaîne en MIME base64

Description

string base64_encode ( string data)

base64_encode() retourne data encodé en base64. Cet encodage est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits, comme par exemple, les corps de mail.

Une chaîne encodée Base64 prend, grosso modo, 33% de plus que les données initiales.

Voir aussi base64_decode(), chunk_split() et la RFC 2045 section 6.8.

Précédent | Sommaire | Suivant
base64_decode | Niveau supérieur | get_meta_tags


get_meta_tags

(PHP 3>= 3.0.4, PHP 4 )

get_meta_tags -- Extrait tous les méta tags d'un fichier

Description

array get_meta_tags ( string filename [, int use_include_path])

get_meta_tags() ouvre le fichier filename et l'analyse ligne par ligne à la recherche de balises <meta>, de la forme

Exemple 1. Exemple de Meta Tags

<meta name="author" content="name">
<meta name="keywords" content="php documentation">
<meta name="DESCRIPTION" content="a php manual">
<meta name="geo.position" content="49.33;-86.59">
</head> <!-- cesse l'analyse ici -->
Attention au format des nouvelles lignes : PHP utilise une fonction native pour analyser le fichier, et les fichiers Mac ne seront pas reconnus.

La valeur de la propriété sera utilisé comme clé du tableau, et sa valeur comme valeur correspondante de la clé. Vous pourrez ainsi passer en revue facilement ce tableau avec les fonctions de tableaux standard. Les caractères spéciaux présents dans la valeur seront replacés par un souligné ("_"), et le reste est converti en minuscule.

En donnant la valeur de 1 au paramètre optionnel use_include_path fera que get_meta_tags() recherchera aussi le fichier dans l'include path.

Exemple 2. Résultat de get_meta_tags()

<?php
// Supposons que les balises ci-dessus sont disponibles sur exemple.com
  $tags = get_meta_tags('http://www.exemple.com/');

// Notez que les cl&eacute;s sont en minuscule, et
// le . a &eacute;t&eacute; remplac&eacute; par _ dans la cl&eacute;
  print $tags['author'];       // nom
  print $tags['keywords'];     // documentation php
  print $tags['description'];  // un manuel PHP
  print $tags['geo_position']; // 49.33;-86.59
?>

Note : Depuis PHP 4.0.5, get_meta_tags() supporte les attributs HTML sans guillemets.

Voir aussi htmlentities() et urlencode().

Précédent | Sommaire | Suivant
base64_encode | Niveau supérieur | http_build_query


http_build_query

(no version information, might be only in CVS)

http_build_query -- Génère une chaîne de requête en encodage URL

Description

string http_build_query ( array formdata [, string numeric_prefix])

http_build_query() génère une chaîne en encodage URL, construite à partir du tableau indexé ou associatif formdata. formdata peut être un tableau ou un objet contenant une structure mono-dimensionnelle simple, ou un tableau de tableaux (qui peuvent aussi contenir des tableaux). Si des indices numériques sont utilisés dans le tableau de base et que numeric_prefix est fourni, il sera utilisé pour préfixer les noms des index pour les éléments du tableau de base seulement. Cela permet de générer des noms de variables valides, si les données sont ensuites décodées par PHP ou une application CGI.

Exemple 1. Utilisation simple de http_build_query()

<?php
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor

?>

Exemple 2. http_build_query() avec tableau indexé.

<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');

echo http_build_query($data);
/* affiche :
      0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
 */

echo http_build_query($data, 'myvar_');
/* affiche :
      myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor
 */
?>

Exemple 3. http_build_query() avec tableau complexe

<?php
$data = array('user'=>array('name'=>'Bob Smith',
                            'age'=>47,
                            'sex'=>'M',
                            'dob'=>'5/12/1956'),
              'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
              'children'=>array('bobby'=>array('age'=>12,
                                               'sex'=>'M'),
                                'sally'=>array('age'=>8,
                                               'sex'=>'F')),
              'CEO');

echo http_build_query($data, 'flags_');
?>

cet exemple va afficher : (sur plusieurs lignes pour lisibilité)

user[name]=Bob+Smith&user[age]=47&user[sex]=M&user[dob]=5%1F12%1F1956&
pastimes[0]=golf&pastimes[1]=opera&pastimes[2]=poker&pastimes[3]=rap&
children[bobby][age]=12&children[bobby][sex]=M&children[sally][age]=8&
children[sally][sex]=F&flags_0=CEO

Note : Seuls les éléments indéxés numériquement ("CEO") dans le tableau de base sont préfixés. Les autres indices numériques à d'autres niveaux n'ont pas besoins d'être préfixés pour avoir des noms valides.

Exemple 4. Utilisation de http_build_query() avec un objet

<?php
class myClass {
  var $foo;
  var $baz;

  function myClass() {
    $this->foo = 'bar';
    $this->baz = 'boom';
  }
}

$data = new myClass();

echo http_build_query($data); // foo=bar&baz=boom

?>

Voir aussi
parse_str(),
parse_url(),
urlencode() et
array_walk().

Précédent | Sommaire | Suivant
get_meta_tags | Niveau supérieur | parse_url


parse_url

(PHP 3, PHP 4 )

parse_url -- Analyse une URL et retourne ses composants

Description

array parse_url ( string url)

parse_url() retourne un tableau associatif contenant les composants de l'URL. Si l'un des composants n'est pas présent dans l'URL, l'entrée correspondante dans le tableau ne sera pas créée. Les composants sone :

  • scheme - e.g. http

  • host

  • port

  • user

  • pass

  • path

  • query - après le point d'interrogation?

  • fragment - après le signe dièse #

Cette function n'est pas destinée à valider des URL, mais à les scinder en parties. Les URL partielles sont aussi acceptés, parse_url() essaie alors de l'analyser correctement.

Note : parse_url() ne fonctionne que avec les URL absolues.

Exemple 1. Exemple avec parse_url()

$ php -r 'print_r( parse_url("http://username:password@hostname/path?arg=value#anchor"));'
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

$ php -r 'print_r( parse_url("http://invalid_host..name/"));'
Array
(
    [scheme] => http
    [host] => invalid_host..name
    [path] => /
)

Voir aussi
pathinfo(),
parse_str(),
dirname() et
basename().

Précédent | Sommaire | Suivant
http_build_query | Niveau supérieur | rawurldecode


rawurldecode

(PHP 3, PHP 4 )

rawurldecode -- Décode une chaîne URL

Description

string rawurldecode ( string str)

rawurldecode() retourne une chaîne dont les séquences de caractères %xy, avec xy deux valeurs hexadécimales, auront été remplacées par le caractère ASCII correspondant. Par exemple, la chaîne
foo%20bar%40baz
devient
foo bar@baz
.

   Voir aussi
   rawurlencode(),
   urldecode() et
urlencode().

Précédent | Sommaire | Suivant
parse_url | Niveau supérieur | rawurlencode


rawurlencode

(PHP 3, PHP 4 )

rawurlencode -- Encode une chaîne en URL, selon la RFC1738

Description

string rawurlencode ( string str)

rawurlencode() retourne une chaîne dont tous les caractères non-alpha-numériques (hormis
-_.
) auront été remplacés par des séquences %xy (%), avec xy deux valeurs hexadécimales. Ce codage est conforme à la RFC1738 qui évite que les caractères spéciaux soient interprétés comme des délimiteurs, et pour protéger les URL lors du transfert (contrairement à certains systèmes email). Par exemple, si vous voulez mettre un mot de passe dans une URL de ftp :

Exemple 1. Exemple avec rawurlencode()

echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
     '@ftp.my.com/x.txt">';
Ou, si vous transmettez un chemin dans une URL

Exemple 2. Exemple avec rawurlencode()

echo '<a href="http://x.com/department_list_script/',
    rawurlencode('ventes et marketing/Bruxelles'), '">';

Voir aussi
rawurldecode(),
urldecode() et
urlencode(), et la
RFC 2045 section 6.8..

Précédent | Sommaire | Suivant
rawurldecode | Niveau supérieur | urldecode


urldecode

(PHP 3, PHP 4 )

urldecode -- Décode une chaîne encodée URL

Description

string urldecode ( string str)

urldecode() décode toutes les séquences %## et les remplace par leur valeur. La chaîne ainsi décodée est retournée.

Exemple 1. Exemple avec urldecode()

<?php
  $a = split('&', $QUERY_STRING);
  $i = 0;
  while ($i < count ($a)) {
    $b = split ('=', $a[$i]);
    echo 'La valeur du param&egrave;tre ', htmlspecialchars(urldecode($b[0])),
         ' est ', htmlspecialchars(urldecode($b[1])), "<BR>";
    $i++;
  }
?

Voir aussi
urlencode(),
rawurlencode() et
rawurldecode().

Précédent | Sommaire | Suivant
rawurlencode | Niveau supérieur | urlencode


urlencode

(PHP 3, PHP 4 )

urlencode -- Encode une chaîne en URL

Description

string urlencode ( string str)

urlencode() retourne une chaîne dont les caractères non alpha-numériques (hormis -_.) sont remplacés par des séquences commençant par un caractère pourcentage (%), suivi de deux chiffres hexadécimaux. Les espaces sont remplacés par des signes plus (+). Ce codage est celui qui est utilisé pour poster des informations dans les formulaires HTML. Le type MIME est application/x-www-form-urlencoded. Ce codage est différent de celui spécifié dans la RFC1738 (voir rawurlencode()) : pour des raisons historiques, les espaces sont remplacés par des signes plus (+). urlencode() est pratique pour transmettre des informations via une URL. C'est aussi un moyen de passer des informations d'une page à l'autre.

Exemple 1. Exemple avec urlencode()

<?php
  echo '<A HREF="moncgi?foo=', urlencode ($userinput), '">';
?>

Note: Faites bien attention aux variables qui ressemblent à des entités HTML, comme par exemple &amp, &copy et &pound, qui sont analysées par le client web et remplacée par leur valeur. C'est un vrai problème qui a été montré par le W3C depuis longtemps. La référence est ici : http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2. PHP supporte le remplacement de séparateur d'arguments par un point-virgule, comme recommandé par le W3C, grâce à la directive arg_separator .ini. Malheureusement, la plupart des clients web n'envoient pas leurs données de formulaire avec des points-virgules. Une solution plus portable est d'utiliser &amp; à la place de & comme séparateur. Vous n'avez alors pas à changer la directive arg_separator. Laissez-la à &, mais encodez vos URL avec htmlentities().

Exemple 2. Exemple avec urlencode() et htmlentities()

<?php
  echo '<A HREF="moncgi?foo=', htmlentities (urlencode ($userinput) ), '">';
?>

Voir aussi
urldecode(),
htmlentities(),
rawurldecode() et
rawurlencode().

Précédent | Sommaire | Suivant
urldecode | Niveau supérieur | Variables


Variables

Manuel PHP
Précédent Suivant

CVII. Variables

Introduction

Pour plus de détails sur le comportement des variables, reportez vous à la section Variables du chapitre Référence du langage.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
unserialize_callback_func | "" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

unserialize_callback_func string

La fonction de callback d'unserialize sera appelée (avec le nom de la classe non définie en paramètre), si le délinéarisateur ne trouve pas la classe spécifiée, ou si la fonction n'implémente pas la classe manquante. Ne configurez cette option que si vous souhaitez vraiment implémenter une telle fonction.

Voir aussi unserialize().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
doubleval -- Alias de floatval()
empty -- Détermine si une variable contient une valeur non nulle
floatval -- Convertit une chaîne en nombre à virgule flottante
get_defined_vars -- Liste toutes les variables définies
get_resource_type -- Retourne le type de ressource
gettype -- Retourne le type de la variable
import_request_variables -- Importe les variables de GET/POST/Cookie dans l'environnement global
intval -- Retourne la valeur numérique entière équivalent d'une variable
is_array -- Détermine si une variable est un tableau
is_bool -- Détermine si une variable est un booléen
is_callable -- Détermine si l'argument peut être appelé comme fonction
is_double -- Alias de is_float()
is_float -- Détermine si une variable est de type float
is_int -- Détermine si une variable est de type integer
is_integer -- Détermine si une variable est de type int
is_long -- Alias de is_int()
is_null -- Indique si une variable vaut NULL
is_numeric -- Détermine si une variable est un type numérique
is_object -- Détermine si une variable est de type object
is_real -- Détermine si une variable est de type real
is_resource -- Détermine si une variable est une ressource
is_scalar -- Indique si une variable est un scalaire
is_string -- Détermine si une variable est de type chaîne
isset -- Détermine si une variable est affectée
print_r -- Affiche des informations lisibles pour une variable
serialize -- Linéarise une variable
settype -- Affecte un type à une variable
strval -- Retourne la valeur de la variable, au format chaîne
unserialize -- Crée une variable PHP à partir d'une valeur linéarisée
unset -- Détruit une variable
var_dump -- Affiche les informations d'une variable.
var_export -- Retourne le code PHP utilisé pour générer une variable

Précédent | Sommaire | Suivant
urlencode | Niveau supérieur | doubleval


doubleval

doubleval -- Alias de floatval()

Description

doubleval() est un alias de floatval().

Note : Cet alias est un reste de la vague de renommage de fonctions. Dans les anciennes versions de PHP, vous aurez besoin d'utiliser cette fonction, qui est un alias de floatval(), car floatval() n'était pas disponible à cette époque.

Précédent | Sommaire | Suivant
Variables | Niveau supérieur | empty


empty

(PHP 3, PHP 4 )

empty -- Détermine si une variable contient une valeur non nulle

Description

bool empty ( mixed var)

Note : empty() est une structure de langage.

empty() retourne la valeur FALSE si la variable var est affectée ou bien a une valeur différente de 0; la valeur TRUE dans les autres cas.

Exemple 1. Exemple avec empty()

<?php
 $var = 0;
  if (empty($var)) { // retourne &true;
    print 'soit $var vaut 0, soit il n\'est pas d&eacute;fini';
  }
  if (!isset($var)) { // retourne &false;
    print '$var n'est pas d&eacute;finie';
  }
?>

Notez que cette fonction n'a pas de sens si elle est utilisée sur autre chose qu'une variable. i.e. empty (addslashes ($name)) n'a pas de sens, car cela revient à vérifier une entité qui n'est pas une variable.

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi isset() et unset().

Précédent | Sommaire | Suivant
doubleval | Niveau supérieur | floatval


floatval

(PHP 4 >= 4.2.0)

floatval -- Convertit une chaîne en nombre à virgule flottante

Description

float floatval ( mixed var)

floatval() retourne la valeur de type float (nombre à virgule flottante), extraite à partir du paramètre var.

var peut être n'importe quel type scalaire. Vous ne pouvez pas utiliser floatval() sur un tableau ou un objet.

Exemple 1. Exemple avec floatval()

<?php
  $var = '122.34343Le';
  $float_value_of_var = floatval ($var);
  print $float_value_of_var; // Affiche 122.34343
?>

Voir aussi
intval(),
strval(),
settype() et
Transtypage.

Précédent | Sommaire | Suivant
empty | Niveau supérieur | get_defined_vars


get_defined_vars

(PHP 4 >= 4.0.4)

get_defined_vars -- Liste toutes les variables définies

Description

array get_defined_vars ( void )

get_defined_vars() retourne un tableau multidimensionnel contenant la liste de toutes les variables définies, qu'elles soient des variables d'environnement, de serveurs ou définies par l'utilisateur.

Exemple 1. Exemple avec get_defined_vars()

<?php
  $b = array(1,1,2,3,5,8);

  $arr = get_defined_vars();

// affiche $b
  print_r($arr["b"]);

// affiche le chemin jusqu'&agrave; l'interpr&eacute;teur
// CGI PHP (si PHP est utilis&eacute; en CGI)
// i.e. /usr/local/bin/php
  echo $arr["_"];

// affiche la ligne de commande, s'il y en a une
  print_r($arr["argv"]);

// affiche toutes les variables serveurs
  print_r($arr["HTTP_SERVER_VARS"]);

// affiche toutes les cl&eacute;s disponibles dans les tableaux de variables
  print_r(array_keys(get_defined_vars()));
?>

Voir aussi get_defined_functions() et get_defined_constants().

Précédent | Sommaire | Suivant
floatval | Niveau supérieur | get_resource_type


get_resource_type

(PHP 4 >= 4.0.2)

get_resource_type -- Retourne le type de ressource

Description

string get_resource_type ( resource handle)

get_resource_type() retourne une chaîne représentant le type de ressources de handle. Si le paramètre n'est pas une ressource valide, une erreur est générée.

Exemple 1. Exemple avec get_resource_type()

<?php
  $c = mysql_connect();
  echo get_resource_type($c)."\n";
// affiche : mysql link
// (lien mysql)
  $fp = fopen("foo","w");
  echo get_resource_type($fp)."\n";
// affiche : file
// (fichier)
  $doc = new_xmldoc("1.0");
  echo get_resource_type($doc->doc)."\n";
// affiche : domxml document
// (document domxml)
?>

Précédent | Sommaire | Suivant
get_defined_vars | Niveau supérieur | gettype


gettype

(PHP 3, PHP 4 )

gettype -- Retourne le type de la variable

Description

string gettype ( mixed var)

gettype() retourne le type de la variable PHP var.

Avertissement

N'utilisez jamais gettype() pour vérifier un type, car la chaîne retournée est sujette à modification sans préavis dans une version ultérieure. De plus, c'est bien plus long comme cela, car cela implique une comparaison de chaîne.

A la place, utilisez les fonctions is_*.

Les chaînes de caractères que peut retourner la fonction sont les suivantes :

  • "boolean" (depuis PHP 4)

  • "integer"

  • "double" (pour des raisons historiques, "double" est retournée lorsqu'une valeur de type float est fournie, au lieu de la chaîne "float")

  • "string"

  • "array"

  • "object"

  • "resource" (depuis PHP 4)

  • "NULL" (depuis PHP 4)

  • "user function" (PHP 3 uniquement, abandonné)

  • "unknown type"

En PHP 4, il est recommandé d'utiliser function_exists() et method_exists() pour remplacer l'utilisation de gettype() sur une fonction.

Voir aussi
settype(),
is_array(),
is_bool(),
is_float(),
is_integer(),
is_null(),
is_numeric(),
is_object(),
is_resource(),
is_scalar() et
is_string().

Précédent | Sommaire | Suivant
get_resource_type | Niveau supérieur | import_request_variables


import_request_variables

(PHP 4 >= 4.1.0)

import_request_variables -- Importe les variables de GET/POST/Cookie dans l'environnement global

Description

bool import_request_variables ( string types [, string prefix])

import_request_variables() importe les variables GET/POST/Cookie dans l'environnement global. C'est pratique si vous avez désactivé register_globals, mais que vous voulez enregistrer des variables dans l'environnement global.

En utilisant le paramètre types, vous pouvez spécifier les variables que vous voulez importer. Vous pouvez utiliser 'G', 'P' et 'C' pour désigner respectivement GET, POST et Cookie. Ces caractères ne sont pas sensible la casse, et vous pouvez les combiner entre eux. POST inclus les fichiers uploadés. Notez que l'ordre des lettres est important. En utilisant par exemple "gp", les variables de POST écraseront par les variables de GET, ayant le même nom. Toute autre lettre, autre que GPC est ignorée.

Le paramètre prefix est utilisé comme un préfixe de nom de variable, qui sera ajoutée au début de tous les noms de variables importées. Si vous avez par exemple une variable GET du nom de "userid", et utilisez le préfixe "pref_", la variable ainsi générée s'appellera $pref_userid.

Si vous souhaitez importer d'autres variables dans l'environnement global, comme par exemple $_SERVER, considérez l'utilisation de la fonction extract().

Note : Bien que le paramètre prefix soit optionnel, il sera généré une alerte E_NOTICE si vous ne spécifiez pas de préfixe, ou si vous utilisez une chaîne vide comme préfixe. C'est potentiellement un trou de sécurité. Les alertes de ce niveau ne sont pas affichées par défaut.

Exemple 1. Exemple avec import_request_variables()

<?php
// Ce code va importer les variables GET et POST
// avec un pr&eacute;fixe "rvar_"
import_request_variables("gP", "rvar_");

print $rvar_foo;
?>

Voir aussi $_REQUEST, register_globals, variables prédéfinies et extract().

Précédent | Sommaire | Suivant
gettype | Niveau supérieur | intval


intval

(PHP 3, PHP 4 )

intval -- Retourne la valeur numérique entière équivalent d'une variable

Description

int intval ( mixed var [, int base])

intval() retourne la valeur numérique entière (integer) de la variable var, en convertissant la valeur dans la base spécifiée (par défaut en base 10).

var peut être de type scalaire. Vous ne pouvez pas utiliser la fonction intval() avec un tableau ou un objet.

Voir aussi doubleval(), strval(), settype() et Transtypage.

Précédent | Sommaire | Suivant
import_request_variables | Niveau supérieur | is_array


is_array

(PHP 3, PHP 4 )

is_array -- Détermine si une variable est un tableau

Description

bool is_array ( mixed var)

is_array() renvoie la valeur TRUE si la variable var est un array, FALSE sinon.

Voir aussi
is_float(),
is_int(),
is_integer(),
is_string() et
is_object().

Précédent | Sommaire | Suivant
intval | Niveau supérieur | is_bool


is_bool

(PHP 4 )

is_bool -- Détermine si une variable est un booléen

Description

bool is_bool ( mixed var)

is_bool() retourne TRUE si var est un boolean.

Exemple 1. Exemple avec is_bool()

<?php
$a = false;
$b = 0;

// Comme $a est un bool&eacute;en, ceci est vrai
if (is_bool($a)) {
    print "Oui, c'est un bool&eacute;en";
}

// Comme $b n'est pas un bool&eacute;en, ceci est faux
if (is_bool($b)) {
    print "Oui, c'est un bool&eacute;en";
}
?>

Voir aussi
is_array(),
is_float(),
is_int(),
is_integer(),
is_string() et
is_object().

Précédent | Sommaire | Suivant
is_array | Niveau supérieur | is_callable


is_callable

(PHP 4 >= 4.0.6)

is_callable -- Détermine si l'argument peut être appelé comme fonction

Description

bool is_callable ( mixed var [, bool syntax_only [, string callable_name]])

is_callable vérifie qu'une variable peut être appelée comme fonction. Cette fonction peut vérifier qu'une variable contient un nom de fonction valide, ou bien qu'elle contient un tableau, avec un objet et un nom de méthode.

Le paramètre var peut être le nom d'une fonction stocké dans une variable de chaîen, ou un objet, et un nom de méthode pour cet objet, sous la forme :
array( $unObjet, 'NomDeMethode' )

Si l'argument syntax_only vaut TRUE, la fonction ne va vérifier que si var peut être une fonction ou une méthode. Il va simplement rejeter les variables qui ne sont pas des chaînes, ou des tableaux qui n'ont pas la bonne structure pour être utilisé comme fonction de call back. Les tableaux valides sont supposés n'avoir que deux entrées, le premier étant un objet ou une chaîne, et de second une chaîne.

L'argument callable_name recoit le nom à utiliser ("callable name"). Dans l'exemple ci-dessous, il vaut "uneClasse:uneMethode". Notez que, bien que uneClasse:uneMethode() puisse être appelé sous forme static, ce n'est pas le cas.

Exemple 1. Exemple avec is_callable()

<? php
//  Comment v&eacute;rifier qu'une variable peut &ecirc;tre appel&eacute;e
//  comme fonction?

//
//  Variable simple contenant une fonction
//

function uneFonction() {
}

$fonctionVariable = 'uneFonction';

var_dump( is_callable( $fonctionVariable, false, $callable_name ));  // bool(true)

echo $callable_name, "\n";  // uneFonction

//
//  Tableu contenant une m&eacute;thode
//

class uneClasse {

  function uneMethode() {
  }

}

$unObjet = new uneClasse();

$methodeVariable = array( $unObjet, 'uneMethode' );

var_dump( is_callable( $methodeVariable, true, $callable_name ));  //  bool(true)

echo $callable_name, "\n";  //  uneClasse:uneMethode

?>

Précédent | Sommaire | Suivant
is_bool | Niveau supérieur | is_double


is_double

is_double -- Alias de is_float()

Description

is_double() est un alias de is_float().

Précédent | Sommaire | Suivant
is_callable | Niveau supérieur | is_float


is_float

(PHP 3, PHP 4 )

is_float -- Détermine si une variable est de type float

Description

bool is_float ( mixed var)

Cette fonction est un alias de la fonction is_double().

Voir aussi is_double(),
is_bool(),
is_real(),
is_int(),
is_integer(),
is_string(),
is_object(),
is_array(), et
is_long().

Précédent | Sommaire | Suivant
is_double | Niveau supérieur | is_int


is_int

(PHP 3, PHP 4 )

is_int -- Détermine si une variable est de type integer

Description

bool is_int ( mixed var)

is_int() est un alias de la fonction is_long().

Voir aussi is_bool(),
is_double(),
is_float(),
is_integer(),
is_string(),
is_real(),
is_object(),
is_array(), et
is_long().

Précédent | Sommaire | Suivant
is_float | Niveau supérieur | is_integer


is_integer

(PHP 3, PHP 4 )

is_integer -- Détermine si une variable est de type int

Description

bool is_integer ( mixed var)

Cette fonction est un alias de la fonction is_long().

Voir aussi is_bool(),
is_double(),
is_float(),
is_int(),
is_string(),
is_real(),
is_object(),
is_array(), et
is_long().

Précédent | Sommaire | Suivant
is_int | Niveau supérieur | is_long


is_long

is_long -- Alias de is_int()

Description

is_long() est un alias de is_int().

Précédent | Sommaire | Suivant
is_integer | Niveau supérieur | is_null


is_null

(PHP 4 >= 4.0.4)

is_null -- Indique si une variable vaut NULL

Description

bool is_null ( mixed var)

is_null() retourne TRUE, si var est NULL, et FALSE.

Reportez-vous au type NULL pour savoir quand une variable est considérée comme contenant la valeur NULL ou non.

Voir aussi
NULL,
is_bool(),
is_numeric(),
is_float(),
is_int(),
is_string(),
is_object(),
is_array(),
is_integer() et
is_real()

Précédent | Sommaire | Suivant
is_long | Niveau supérieur | is_numeric


is_numeric

(PHP 4 )

is_numeric -- Détermine si une variable est un type numérique

Description

bool is_numeric ( mixed var)

is_numeric() retourne TRUE si var est un nombre, ou une chaîne numérique, ou FALSE sinon.

Voir aussi
is_bool(),
is_float(),
is_int(),
is_string(),
is_object(),
is_array() et
is_integer().

Précédent | Sommaire | Suivant
is_null | Niveau supérieur | is_object


is_object

(PHP 3, PHP 4 )

is_object -- Détermine si une variable est de type object

Description

bool is_object ( mixed var)

is_object() renvoie TRUE si la variable var est un objet, FALSE sinon.

Voir aussi is_bool(),
is_int(),
is_integer(),
is_float(),
is_string() et
is_array().

Précédent | Sommaire | Suivant
is_numeric | Niveau supérieur | is_real


is_real

(PHP 3, PHP 4 )

is_real -- Détermine si une variable est de type real

Description

bool is_real ( mixed var)

Cette fonction est un alias de la fonction is_double().

Voir aussi is_bool(),
is_long(),
is_int(),
is_integer(),
is_float(),
is_double(),
is_object(),
is_string(), et
is_array().

Précédent | Sommaire | Suivant
is_object | Niveau supérieur | is_resource


is_resource

(PHP 4 )

is_resource -- Détermine si une variable est une ressource

Description

bool is_resource ( mixed var)

is_resource() retourne TRUE si la variable var est une ressource PHP, sinon FALSE.

Les ressources peuvent être des pointeurs de fichiers, des identifiants de résultats SQL, qui sont allouées et libérées en interne, par PHP, et qui peuvent demander un peut de nettoyage lorsqu'elle sont devenues inutiles, mais pas encore supprimées.

Précédent | Sommaire | Suivant
is_real | Niveau supérieur | is_scalar


is_scalar

(PHP 4 >= 4.0.5)

is_scalar -- Indique si une variable est un scalaire

Description

bool is_scalar ( mixed var)

is_scalar() retourne TRUE si la variable var est scalaire, et FALSE sinon.

Les variables scalaires sont celles qui contiennent des entiers, des nombres à virgule flottante, des chaînes de caractères ou des booléens. Par exemple :

Exemple 1. Exemple avec is_scalar()

<?php
function show_var($var) {
    if (is_scalar($var))
        echo $var;
    else
        var_dump($var);
}
$pi = 3.1416;
$proteines = array("hemoglobine", "cytochrome c oxidase", "ferredoxine");
show_var($pi);
// affiche : 3.1416
show_var($proteines)
// affiche:
// array(3) {
//   [0]=>
//   string(10) "hemoglobine"
//   [1]=>
//   string(20) "cytochrome c oxidase"
//   [2]=>
//   string(10) "ferredoxine"
// }
?>

Voir aussi
is_bool(),
is_numeric(),
is_float(),
is_int(),
is_real(),
is_string(),
is_object(),
is_array() et
is_integer().

Précédent | Sommaire | Suivant
is_resource | Niveau supérieur | is_string


is_string

(PHP 3, PHP 4 )

is_string -- Détermine si une variable est de type chaîne

Description

bool is_string ( mixed var)

is_string() renvoie TRUE si la variable var est du type chaîne de caractères (string), FALSE sinon.

Voir aussi
is_bool(),
is_int(),
is_integer(),
is_float(),
is_real(),
is_object() et
is_array().

Précédent | Sommaire | Suivant
is_scalar | Niveau supérieur | isset


isset

(PHP 3, PHP 4 )

isset -- Détermine si une variable est affectée

Description

bool isset ( mixed var [, mixed var [, ...]])

Note : isset() est une structure du langage.

isset() renvoie TRUE si la variable var est définie, FALSE sinon.

Si une variable a été détruite avec la fonction unset(), la fonction isset() renverra FALSE. isset() reverra FALSE lors du test d'une variable de valeur NULL. Notez aussi que le caractère nul ("\0") n'est pas équivalent à la constante PHP NULL.

Exemple 1. Exemple avec isset()

<?php

$var = '';

// Ceci est vrai, alors le texte est affich&eacute;
if (isset($var)) {
    print "Cette variable existe, donc je peux l'afficher.";
}

// Dans les exemples suivants, nous utilisons var_dump() pour afficher
// le retour de la fonction isset().

$a = "test";
$b = "anothertest";

var_dump( isset($a) );      // TRUE
var_dump( isset ($a, $b) ); // TRUE

unset ($a);

var_dump( isset ($a) );     // FALSE
var_dump( isset ($a, $b) ); // FALSE

$foo = NULL;
var_dump( isset ($foo) );   // FALSE

?>

Cela fonctionne aussi avec les tableaux :

Exemple 2. Exemple avec isset() et un tableau

<?php

$a = array ('test' => 1, 'bonjour' => NULL);

var_dump( isset ($a['test']) );            // TRUE
var_dump( isset ($a['foo']) );             // FALSE
var_dump( isset ($a['bonjour']) );           // FALSE

// La cl&eacute; 'bonjour' vaut NULL est est consid&eacute;r&eacute;e comme non existante
// Si vous voulez v&eacute;rifier l'existance de cette cl&eacute;e, utilisez cette fonction
var_dump( array_key_exists('bonjour', $a) ); // TRUE

?>

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi
empty(), unset()
defined(),
array_key_exists() et l'opérateur de contrôle
de rapport d'erreur @.

Précédent | Sommaire | Suivant
is_string | Niveau supérieur | print_r


print_r

(PHP 4 )

print_r -- Affiche des informations lisibles pour une variable

Description

bool print_r ( mixed expression [, bool return])

print_r() affiche des informations à propos d'une variable, de manière à ce qu'elle soit lisible. Pour une chaîne, un entier ou un double, la valeur sera elle même sera affichée. Pour les tableaux, les valeurs seront présentées dans un format qui montre les clés et les valeurs. Une notation similaire est disponible pour les objets.

Gardez en tête que print_r() place le pointeur de tableau à la fin du tableau. Utilisez reset() pour le ramener au début.

Exemple 1. Exemple avec print_r()

<pre>
<?php
    $a = array ('a' => 'pomme',
                'b' => 'banane',
                'c' => array ('x',
                              'y',
                              'z'));
    print_r ($a);
?>
</pre>

va afficher
<pre>
Array
(
    [a] => pomme
    [b] => banane
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

Si vous voulez obtenir le résultat de print_r() dans une chaîne, utilisez le paramètre return. Si ce paramètre vaut TRUE, print_r() retournera ce qu'il aurait affiché.

Exemple 2. Utilisation du paramètre return de print_r()

<?php
    $b = array ('m' => 'mangue', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
    $resultat = print_r ($b, true);
    //$resultat contient maintenant le r&eacute;sultat de print_r()
?>

Note : Si vous devez récupérer le résultat de print_r() avec une version de PHP plus ancienne que 4.3.0, utilisez les fonctions de bufferisation de sortie.

Note : Le paramètre return a été ajouté en PHP 4.3.0.

Note : Avant PHP 4.0.4, print_r() bouclera à l'infini si un array ou un object contient une référence sur lui même. Un exemple classique est notamment la ligne print_r($GLOBALS) car $GLOBALS est lui même une variable globale, qui donc, contient une référence sur elle même.

Voir aussi
ob_start(),
var_dump() et
var_export().

Précédent | Sommaire | Suivant
isset | Niveau supérieur | serialize


serialize

(PHP 3>= 3.0.5, PHP 4 )

serialize -- Linéarise une variable

Description

string serialize ( mixed value)

serialize() retourne une chaîne contenant une représentation linéaire de value, pour stockage.

C'est une technique pratique pour stocker ou passer des valeurs de PHP entre scripts, sans perdre ni leur structure, ni leur type.

Pour récupérer une variable linéarisée, et retrouver une variable, utilisez unserialize(). serialize() acceptent les types integer, double, string, array (multidimensionnels) et object (les propriétés des objets seront linéarisées, mais pas les méthodes).

Exemple 1. Exemple avec serialize()

<?php
// $session_data contient un tableau multi-dimensionnel , avec les
// informations de session de l'utilisateur courant. On utilise serialize()
// pour les stocker dans une base de donn&eacute;es
$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn,
      "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata)) {
    $stmt = odbc_prepare($conn,
     "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, &$sqldata)) {
        /* Un probl&egrave;me est survenu ! */
    }
}
?>

Précédent | Sommaire | Suivant
print_r | Niveau supérieur | settype


settype

(PHP 3, PHP 4 )

settype -- Affecte un type à une variable

Description

bool settype ( mixed var, string type)

settype() force le type de la variable var en type.

Les valeurs possibles pour le paramètre type sont :

  • "boolean" (ou, depuis PHP 4.2.0, "bool")

  • "integer" (ou, depuis PHP 4.2.0, "int")

  • "float" (uniquement depuis PHP 4.2.0. Pour les anciennes versions, utilisez l'alternative "double")

  • "string"

  • "array"

  • "object"

  • "null" (depuis PHP 4.2.0)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec settype()

$foo = "5bar"; // cha&icirc;ne
$bar = true;   // bool&eacute;en

settype($foo, "integer"); // $foo vaut maintenant 5   (integer)
settype($bar, "string");  // $bar vaut maintenant "1" (string)

Voir aussi gettype(), transtypage et définition du type.

Précédent | Sommaire | Suivant
serialize | Niveau supérieur | strval


strval

(PHP 3, PHP 4 )

strval -- Retourne la valeur de la variable, au format chaîne

Description

string strval ( mixed var)

strval() retourne la valeur de la variable var, au format chaîne de caractères.

var peut être un scalaire. Vous ne pouvez pas utiliser la fonction strval() avec des tableaux ou des objets.

Voir aussi doubleval(), intval(), settype() et Transtypage.

Précédent | Sommaire | Suivant
settype | Niveau supérieur | unserialize


unserialize

(PHP 3>= 3.0.5, PHP 4 )

unserialize -- Crée une variable PHP à partir d'une valeur linéarisée

Description

mixed unserialize ( string str [, string callback])

unserialize() prend une variable linéarisée (voir serialize()) et la convertit en variable PHP. La valeur convertie est retournée par la fonction, et peut être de type integer, double, string, array ou object. Les objets linéarisés perdent leurs méthodes.

Directive unserialize_callback_func : Il est possible de définir une fonction de callback qui sera appelée si une classe undéfinie est utilisée lors de la délinéarisation (ce qui évitera de voir l'objet recevoir le type d'objet incomplet object "__PHP_Incomplete_Class"). Utilisez dans votre fichier php.ini ou le fichier .htaccess, ou encore avec la fonction ini_set(), pour définir une fonction 'unserialize_callback_func'. Chaque fois qu'une classe non définie sera instantiée, cette fonction sera appelée. Pour désactiver cette fonctionnalité, laissez la simplement vide. Notez aussi que cette directive n'est disponible que depuis PHP 4.2.0.

Note : Le paramètre callback est disponible depuis PHP 4.2.0.

Si la variable délinéarisée est un objet, après avoir réussi à le reconstruire, PHP appelera automatiquement la méthode __wakeup() si elle existe.

Exemple 1. Exemple avec la directive unserialize_callback_func

<?php
  $serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';

  // directive unserialize_callback_func disponible depuis PHP 4.2.0
  ini_set('unserialize_callback_func','moncallback');
  // configure votre fonction de callback :  moncallbackfunction

  function moncallback($classname) {
    // Incluez simplement in fichier contenant votre d&eacute;finition de classe
    // vous saurez quelle classe gr&acirc;ce &agrave; $classname
  }
?>

Note : En PHP 3, les méthodes ne sont pas préservées lors de la délinéarisation d'un bojet. PHP 4 lève cette limitation, et stocke désormais les méthodes et les membres. Voyez le chapitre sur la Linéarisation des objets du chapitre Classes et Objets.

Exemple 2. Exemple avec unserialize()

<?php
// Ici, on utilise <function>unserialize</function> pour charger les donn&eacute;es de sessions
// depuis la base de donn&eacute;es, dans $session_data. Cet exemple compl&egrave;te
// celui fourni avec <function>serialize</function>.
$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array ($PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) {
    // si la pr&eacute;paration ou la lecture &eacute;choue, on cr&eacute;e un tableau vide
    $session_data = array();
} else {
    // les donn&eacute;es sauv&eacute;es sont dasn $tmp[0].
    $session_data = unserialize ($tmp[0]);
    if (!is_array ($session_data)) {
    // Erreur... initialisation &agrave; tableau vide
    $session_data = array();
    }
}
?>

Voir aussi serialize().

Précédent | Sommaire | Suivant
strval | Niveau supérieur | unset


unset

(PHP 3, PHP 4 )

unset -- Détruit une variable

Description

void unset ( mixed var [, mixed var [, ...]])

unset() détruit les variables var. Notez qu'en PHP 3, unset() retournait toujours TRUE (en fait, la valeur entière 1). unset() n'est plus une véritable fonction : c'est une structure du langage, ce qui fait qu'elle ne retourne pas de valeur. Lire la valeur retournée par unset() (dans une variable, par exemple), retourne une erreur d'analyse.

Exemple 1. Exemple avec unset()

<?php
// Destruction d'une seule variable
unset ($foo);
// Destruction d'un &eacute;l&eacute;ment de tableau
unset ($bar['quux']);
// Destruction de plusieurs variables
unset ($foo1, $foo2, $foo3);
?>

Le comportement de unset() à l'intérieur d'une fonction peut varier suivant le type de variable que vous voulez détruire.

Si une variable globale est détruite avec unset() depuis une fonction, seule la variable locale sera détruite. Le variable globale gardera la valeur acquise avant l'appel à unset().

Exemple 2. Exemple avec unset() dans un contexte de fonction

<?php
function destroy_foo() {
    global $foo;
    unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>

L'exemple ci dessus affichera :

bar

Si une variable qui est passée par référence est détruite à l'intérieur d'une fonction, seule la variable locale sera détruite. La variable globale conservera la dernière valeur qu'elle avait avant l'appel de unset().

Exemple 3. Exemple avec unset() sur une référence

<?php
  function foo(&$bar) {
    unset($bar);
    $bar = "bla";
  }
  $bar = 'truc';
  echo "$bar\n";
  foo($bar);
  echo "$bar\n";
?>

L'exemple ci dessus va afficher :

truc
truc

Si une variable statique est détruite à l'intérieure d'une fonction unset() détruira la référence à la variable statique, plutôt que la variable statique elle même.

Exemple 4. Exemple avec unset() avec une variable statique

<?php
  function foo() {
    static $a;
    $a++;
       echo "$a\n";
    unset($a);
  }
  foo();
  foo();
  foo();
?>

L'affichage du script ci-dessus donnera :

1
2
3

Si vous voulez détruire une variable globale, depuis une fonction, vous pouvez utiliser le tableau $globals :

Exemple 5. Exemple avec unset() avec une variable globale

<?php

function foo() {
    unset($GLOBALS['bar']);
}
$bar = "truc";
foo();
?>

Note : unset() est une structure du langage et non pas une fonction.

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi
array_splice(),
isset() et
empty().

Précédent | Sommaire | Suivant
unserialize | Niveau supérieur | var_dump


var_dump

(PHP 3>= 3.0.5, PHP 4 )

var_dump -- Affiche les informations d'une variable.

Description

void var_dump ( mixed expression [, mixed expression [, ...]])

var_dump() retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux sont explorés recursivement, avec des indentations, pour mettre en valeur leur structure.

Tuyau : Comme pour toutes les fonctions qui affichent directement des résultats au navigateur, vous pouvez utiliser les fonctions de gestion des sorties pour capturer le contenu de cette fonction et le sauver, par exemple, dans une chaîne.

Comparez var_dump() et print_r().

Exemple 1. Exemple avec var_dump()

<PRE>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_dump ($a);

/* affichage :
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

*/

$b = 3.1;
$c = TRUE;
var_dump($b,$c);

/* affichage :
float(3.1)
bool(true)

*/
?>
</PRE>

Précédent | Sommaire | Suivant
unset | Niveau supérieur | var_export


var_export

(PHP 4 >= 4.2.0)

var_export -- Retourne le code PHP utilisé pour générer une variable

Description

mixed var_export ( mixed expression [, bool return])

var_export() retourne des données structurés sur la variable expression. C'est le même principe que var_dump() mais le résultat retourné est du code PHP.

Par défaut, le code sera affiché, mais vous pouvez retourner ce code dans une variable en passant TRUE pour le paramètre de return.

Comparez var_export() avec var_dump().

Exemple 1. Exemple avec var_export()

<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);

/* affiche :
array (
  0 => 1,
  1 => 2,
  2 =>
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
*/

$b = 3.1;
$v = var_export($b, TRUE);
echo $v;

/* affiche :
3.1
*/
?>
</pre>

Précédent | Sommaire | Suivant
var_dump | Niveau supérieur | vpopmail


vpopmail

Manuel PHP
Précédent Suivant

CVIII. vpopmail

Introduction

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Cette extension a été déplacée vers PECL depuis PHP 4.3.0.

Installation

En PHP 4, ces fonctions ne sont disponibles que si PHP a été configuréé avec --with-vpopmail[=DIR].

Table des matières
vpopmail_add_alias_domain_ex -- Ajoute un alias à un domaine virtuel
vpopmail_add_alias_domain -- Ajout un alias pour un domaine virtuel
vpopmail_add_domain_ex -- Ajoute un nouvaeu domaine virtuel
vpopmail_add_domain -- Ajoute un nouveau domaine virtuel
vpopmail_add_user -- Ajoute un nouvel utilisateur à un domaine virtuel
vpopmail_alias_add -- Ajoute un alias virtuel
vpopmail_alias_del_domain -- Efface tous les alias virtuels d'un domaine
vpopmail_alias_del -- Efface tous les alias d'un utilisateur
vpopmail_alias_get_all -- Lit toutes les lignes d'alias d'un domaine
vpopmail_alias_get -- Lit toutes les lignes d'un alias de domaine
vpopmail_auth_user -- Valide le mot de passe d'un utilisateur pour un domaine. Retourne TRUE/FALSE
vpopmail_del_domain_ex -- Efface un domaine virtuel
vpopmail_del_domain -- Efface un domaine virtuel
vpopmail_del_user -- Efface un utilisateur d'un domaine virtuel
vpopmail_error -- Lit le dernier message d'erreur vpopmail
vpopmail_passwd -- Remplace le mot de passe d'un utilisateur virtuel
vpopmail_set_user_quota -- Modifie le quota d'un utilisateur virtuel

Précédent | Sommaire | Suivant
var_export | Niveau supérieur | vpopmail_add_alias_domain_ex


vpopmail_add_alias_domain_ex

(4.0.5 - 4.2.3 only)

vpopmail_add_alias_domain_ex -- Ajoute un alias à un domaine virtuel

Description

bool vpopmail_add_alias_domain_ex ( string olddomain, string newdomain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail | Niveau supérieur | vpopmail_add_alias_domain


vpopmail_add_alias_domain

(4.0.5 - 4.2.3 only)

vpopmail_add_alias_domain -- Ajout un alias pour un domaine virtuel

Description

bool vpopmail_add_alias_domain ( string domain, string aliasdomain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_add_alias_domain_ex | Niveau supérieur | vpopmail_add_domain_ex


vpopmail_add_domain_ex

(4.0.5 - 4.2.3 only)

vpopmail_add_domain_ex -- Ajoute un nouvaeu domaine virtuel

Description

bool vpopmail_add_domain_ex ( string domain, string passwd [, string quota [, string bounce [, bool apop]]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_add_alias_domain | Niveau supérieur | vpopmail_add_domain


vpopmail_add_domain

(4.0.5 - 4.2.3 only)

vpopmail_add_domain -- Ajoute un nouveau domaine virtuel

Description

bool vpopmail_add_domain ( string domain, string dir, int uid, int gid)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_add_domain_ex | Niveau supérieur | vpopmail_add_user


vpopmail_add_user

(4.0.5 - 4.2.3 only)

vpopmail_add_user -- Ajoute un nouvel utilisateur à un domaine virtuel

Description

bool vpopmail_add_user ( string user, string domain, string password [, string gecos [, bool apop]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_add_domain | Niveau supérieur | vpopmail_alias_add


vpopmail_alias_add

(4.1.0 - 4.2.3 only)

vpopmail_alias_add -- Ajoute un alias virtuel

Description

bool vpopmail_alias_add ( string user, string domain, string alias)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_add_user | Niveau supérieur | vpopmail_alias_del_domain


vpopmail_alias_del_domain

(4.1.0 - 4.2.3 only)

vpopmail_alias_del_domain -- Efface tous les alias virtuels d'un domaine

Description

bool vpopmail_alias_del_domain ( string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_alias_add | Niveau supérieur | vpopmail_alias_del


vpopmail_alias_del

(4.1.0 - 4.2.3 only)

vpopmail_alias_del -- Efface tous les alias d'un utilisateur

Description

bool vpopmail_alias_del ( string user, string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_alias_del_domain | Niveau supérieur | vpopmail_alias_get_all


vpopmail_alias_get_all

(4.1.0 - 4.2.3 only)

vpopmail_alias_get_all -- Lit toutes les lignes d'alias d'un domaine

Description

array vpopmail_alias_get_all ( string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_alias_del | Niveau supérieur | vpopmail_alias_get


vpopmail_alias_get

(4.1.0 - 4.2.3 only)

vpopmail_alias_get -- Lit toutes les lignes d'un alias de domaine

Description

array vpopmail_alias_get ( string alias, string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_alias_get_all | Niveau supérieur | vpopmail_auth_user


vpopmail_auth_user

(4.0.5 - 4.2.3 only)

vpopmail_auth_user -- Valide le mot de passe d'un utilisateur pour un domaine. Retourne TRUE/FALSE

Description

bool vpopmail_auth_user ( string user, string domain, string password [, string apop])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_alias_get | Niveau supérieur | vpopmail_del_domain_ex


vpopmail_del_domain_ex

(4.0.5 - 4.2.3 only)

vpopmail_del_domain_ex -- Efface un domaine virtuel

Description

bool vpopmail_del_domain_ex ( string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_auth_user | Niveau supérieur | vpopmail_del_domain


vpopmail_del_domain

(4.0.5 - 4.2.3 only)

vpopmail_del_domain -- Efface un domaine virtuel

Description

bool vpopmail_del_domain ( string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_del_domain_ex | Niveau supérieur | vpopmail_del_user


vpopmail_del_user

(4.0.5 - 4.2.3 only)

vpopmail_del_user -- Efface un utilisateur d'un domaine virtuel

Description

bool vpopmail_del_user ( string user, string domain)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_del_domain | Niveau supérieur | vpopmail_error


vpopmail_error

(4.0.5 - 4.2.3 only)

vpopmail_error -- Lit le dernier message d'erreur vpopmail

Description

string vpopmail_error ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_del_user | Niveau supérieur | vpopmail_passwd


vpopmail_passwd

(4.0.5 - 4.2.3 only)

vpopmail_passwd -- Remplace le mot de passe d'un utilisateur virtuel

Description

bool vpopmail_passwd ( string user, string domain, string password)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_error | Niveau supérieur | vpopmail_set_user_quota


vpopmail_set_user_quota

(4.0.5 - 4.2.3 only)

vpopmail_set_user_quota -- Modifie le quota d'un utilisateur virtuel

Description

bool vpopmail_set_user_quota ( string user, string domain, string quota)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
vpopmail_passwd | Niveau supérieur | API windows


API windows

Manuel PHP
Précédent Suivant

CIX. API windows

Introduction

Cette extension est une API générique d'accès aux DLL. Elle a été originalement écrite pour accéder aux API Win32 depuis PHP, mais vous pouvez l'utiliser pour accéder à d'autres fonctions exportées par des DLL.

Actuellement, les types supportés sont les types PHP génériques (chaînes de caractères, booléens, nombres, entiers et NULL), et les types que vous définissez avec w32api_deftype().

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Pré-requis

Cette extension ne fonctionne qu'avec le système Windows.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension définit un type de ressource, utilisé pour les types de données créé par l'utilisateur. Le nom de cette ressource est "dynaparm".

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

DC_MICROSOFT (entier)

DC_BORLAND (entier)

DC_CALL_CDECL (entier)

DC_CALL_STD (entier)

DC_RETVAL_MATH4 (entier)

DC_RETVAL_MATH8 (entier)

DC_CALL_STD_BO (entier)

DC_CALL_STD_MS (entier)

DC_CALL_STD_M8 (entier)

DC_FLAG_ARGPTR (entier)

Exemples

Cet exemple lit la durée de vie du système, et l'affiche dans une boîte :

Exemple 1. Lit la durée de vie de la machine, et l'affiche

<?php
// D&eacute;finit les constantes n&eacute;cessaire, issues de
// Visual Studio/Tools/Winapi/WIN32API.txt
define("MB_OK", 0);

// Chargement de l'extension
dl("php_w32api.dll");

// Enregistrement de la fonction GetTickCount, provenant de kernel32.dll
w32api_register_function("kernel32.dll",
                         "GetTickCount",
                         "long");

// Enregistrement de la fonction MessageBoxA issue de User32.dll
w32api_register_function("User32.dll",
                         "MessageBoxA",
                         "long");

// Lecture de la dur&eacute;e de vie de la machine
$ticks = GetTickCount();

// Conversion en texte lisible
$secs  = floor($ticks / 1000);
$mins  = floor($secs / 60);
$hours = floor($mins / 60);

$str = sprintf("Vous utilisez cet ordinateur depuis  : ".
                "\r\n %d millisecondes, ou \r\n %d secondes".
                "ou \r\n %d minutes ou\r\n %d heures %d minutes.",
                $ticks,
                $secs,
                $mins,
                $hours,
                $mins - ($hours*60));

// Affiche le message dans une bo&icirc;te de dialogue avec un bouton OK
MessageBoxA(NULL,
            $str,
            "Uptime Information",
            MB_OK);
?>
Table des matières
w32api_deftype -- Définit un type pour utilisation avec les fonctions windows API
w32api_init_dtype -- Crée une instance de type de données et la remplit
w32api_invoke_function -- Appelle une fonction windows 32
w32api_register_function -- Enregistre une fonction win32 dans PHP
w32api_set_call_method -- Modifie le type d'appel de la fonction

Précédent | Sommaire | Suivant
vpopmail_set_user_quota | Niveau supérieur | w32api_deftype


w32api_deftype

(4.2.0 - 4.2.3 only)

w32api_deftype -- Définit un type pour utilisation avec les fonctions windows API

Description

bool w32api_deftype ( string typename, string member1_type, string member1_name [, string ... [, string ...]])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Si vous voulez définir un type de données pour l'utiliser dans un appel à l'API w32api, vous devez utiliser la fonction w32api_deftype(). Cette fonction prend 2n+1 arguments, où n est le nombre de membre du type typename. Ce nom est suivi du type de membre member1_type, puis de son nom member1_name, par paire. Un membre peut être de type défini par le programmeur. Tous les noms de types sont sensibles à la casse. Les noms de type intégrés doivent être founis en minuscules. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
API windows | Niveau supérieur | w32api_init_dtype


w32api_init_dtype

(4.2.0 - 4.2.3 only)

w32api_init_dtype -- Crée une instance de type de données et la remplit

Description

resource w32api_init_dtype ( string typename, mixed value [, mixed ...])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

w32api_init_dtype() crée une instance du type typename, et remplis les valeurs avec les données val1, val2,... Le nom du type typename est sensible à la casse. Il faut donner les valeurs dans le même ordre que lors de la définition du type, avec w32api_deftype(). Le type de la ressource retournée est dynaparm.

Précédent | Sommaire | Suivant
w32api_deftype | Niveau supérieur | w32api_invoke_function


w32api_invoke_function

(4.2.0 - 4.2.3 only)

w32api_invoke_function -- Appelle une fonction windows 32

Description

mixed w32api_invoke_function ( string funcname, mixed argument [, mixed ...])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

w32api_invoke_function() essaie de trouver la fonction préalablement enregistrée, appelée funcname, en lui passant les arguments passés après funcname. Le type retourné est celui que vous avez enregistré avec la fonction. La valeur est celle retournée par la fonction. Les arguments peuvent être n'importe lequel de ceux de PHP, ou un type défini via la fonction w32api_deftype().

Précédent | Sommaire | Suivant
w32api_init_dtype | Niveau supérieur | w32api_register_function


w32api_register_function

(4.2.0 - 4.2.3 only)

w32api_register_function -- Enregistre une fonction win32 dans PHP

Description

bool w32api_register_function ( string library, string function_name, string return_type)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

w32api_register_function() essaie de trouver la fonction function_name dans la librairie library, et essaie de l'importer en PHP. La fonction sera alors enregistrée avec un type de valeur de retour donné. Ce type peut être un type générique de PHP ou bien un type défini par le programmeur avec la fonction w32api_deftype(). Tous les noms de type sont sensibles à la casse. Les types intégrés doivent être fournis en minuscules. Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
w32api_invoke_function | Niveau supérieur | w32api_set_call_method


w32api_set_call_method

(4.2.0 - 4.2.3 only)

w32api_set_call_method -- Modifie le type d'appel de la fonction

Description

void w32api_set_call_method ( int method)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

w32api_set_call_method() modifie le type d'appel de la fonction. Le paramètre method peut être l'une des constantes suivantes : DC_CALL_CDECL ou DC_CALL_STD. Par défaut, c'est DC_CALL_STD.

Précédent | Sommaire | Suivant
w32api_register_function | Niveau supérieur | WDDX


WDDX

Manuel PHP
Précédent Suivant

CX. WDDX

Introduction

Ces fonctions fonctionnent grâce à WDDX.

Pré-requis

Pour utiliser WDDX, vous devez installer la librairie EXPAT (qui est fournie avec la distribution d'Apache 1.3.7 ou plus récent).

Installation

Après avoir installé Expat, compilez PHP avec --enable-wddx.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Notez bien que toutes les fonctions qui enregistrent des données, utilisent le premier élément d'un tableau pour savoir si ce tableau doit être enregistré sous la forme d'un tableau, ou d'une structure. Si le premier élément a une clé de type chaîne, le tableau sera enregistré sous la forme d'une structure, et sinon, sous la forme d'un tableau.

Exemple 1. Enregistrer une valeur simple

<?php
  print wddx_serialize_value("Exemple de paquet de PHP &agrave; WDDX", "Paquet PHP");
?>

Cet exemple va produire le résultat suivant :

<wddxPacket version='1.0'><header><comment>Paquet PHP</comment></header><data><string>Exemple de paquet de PHP &agrave; WDDX</string></data></wddxPacket>

Exemple 2. Utilisation de paquets incrémentaux

<?php
  $pi = 3.1415926;
  $packet_id = wddx_packet_start("PHP");
  wddx_add_vars($packet_id, "pi");

/* Supposons que $villes provient d'une base de donn&eacute;es */
  $villes = array("Paris", "Montr&eacute;al", "Lyon");
  wddx_add_vars($packet_id, "villes");

  $packet = wddx_packet_end($packet_id);
  print $packet;
?>

Cet exemple donnera :

<wddxPacket version='1.0'><header><comment>PHP</comment></header><data><struct><var name='pi'><number>3.1415926</number></var><var name='villes'><array length='3'><string>Paris</string><string>Montr&eacute;al</string><string>Lyon</string></array></var></struct></data></wddxPacket>

Table des matières
wddx_add_vars -- Ajouter des variables à un paquet WDDX
wddx_deserialize -- Lire un paquet WDDX
wddx_packet_end -- Clos un paquet WDDX
wddx_packet_start -- Commencer un nouveau paquet WDDX avec une structure
wddx_serialize_value -- Enregistrer une valeur dans un paquet WDDX
wddx_serialize_vars -- Enregistrer plusieurs valeurs dans un paquet WDDX

Précédent | Sommaire | Suivant
w32api_set_call_method | Niveau supérieur | wddx_add_vars


wddx_add_vars

(PHP 3>= 3.0.7, PHP 4 )

wddx_add_vars -- Ajouter des variables à un paquet WDDX

Description

bool wddx_add_vars ( int packet_id, mixed name_var [, mixed ...])

wddx_add_vars() sert à enregistrer les variables passées en argument, et les ajouter au paquet repéré par son identifiant packet_id. Les variables enregistrées sont spécifiées de la même façon que pour wddx_serialize_vars().

Précédent | Sommaire | Suivant
WDDX | Niveau supérieur | wddx_deserialize


wddx_deserialize

(PHP 3>= 3.0.7, PHP 4 )

wddx_deserialize -- Lire un paquet WDDX

Description

mixed wddx_deserialize ( string packet)

wddx_deserialize() prend la chaîne packet et la lit. Cette fonction retourne un résultat qui peut être une chaîne, un nombre ou un tableau. Notez que les structures sont lues sous la forme de tableaux associatifs.

Précédent | Sommaire | Suivant
wddx_add_vars | Niveau supérieur | wddx_packet_end


wddx_packet_end

(PHP 3>= 3.0.7, PHP 4 )

wddx_packet_end -- Clos un paquet WDDX

Description

string wddx_packet_end ( int packet_id)

wddx_packet_end() clos un paquet WDDX repéré par son identifiant packet_id.

Précédent | Sommaire | Suivant
wddx_deserialize | Niveau supérieur | wddx_packet_start


wddx_packet_start

(PHP 3>= 3.0.7, PHP 4 )

wddx_packet_start -- Commencer un nouveau paquet WDDX avec une structure

Description

int wddx_packet_start ( [string comment])

wddx_packet_start() sert à créer un nouveau paquet WDDX, pour pouvoir y faire des ajouts incrémentaux de variables. Cette fonction prend un argument optionnel comment et retourne un identifiant de paquet, qui servira à d'autres fonctions. Elle va automatiquement créer une définition de structure dans le paquet, pour accueillir des variables.

Précédent | Sommaire | Suivant
wddx_packet_end | Niveau supérieur | wddx_serialize_value


wddx_serialize_value

(PHP 3>= 3.0.7, PHP 4 )

wddx_serialize_value -- Enregistrer une valeur dans un paquet WDDX

Description

string wddx_serialize_value ( mixed var [, string comment])

wddx_serialize_value() sert à créer un paquet WDDX à partir d'une seule valeur. Cette fonction prend la valeur de var, et un argument optionnel comment qui apparaîtra dans l'en-tête du paquet, et retourne un paquet WDDX.

Précédent | Sommaire | Suivant
wddx_packet_start | Niveau supérieur | wddx_serialize_vars


wddx_serialize_vars

(PHP 3>= 3.0.7, PHP 4 )

wddx_serialize_vars -- Enregistrer plusieurs valeurs dans un paquet WDDX

Description

string wddx_serialize_vars ( mixed var_name [, mixed ...])

wddx_serialize_vars() sert à créer un paquet WDDX avec une structure qui contient la représentation des variables passées en arguments.

wddx_serialize_vars() prend un nombre variable d'arguments, chacun d'entre eux pouvant être une chaîne contenant le nom d'une variable, ou un tableau de chaîne de nom de variable, ou même d'autres tableaux.

Exemple 1. wddx_serialize_vars()

<?php
  $a = 1;
  $b = 5.5;
  $c = array("bleu", "orange", "violet");
  $d = "colors";
  $clvars = array("c", "d");
  print wddx_serialize_vars("a", "b", $clvars);
?>

L'exemple ci-dessus donnera : <wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var> <var name='b'><number>5.5</number></var><var name='c'><array length='3'> <string>bleu</string><string>orange</string><string>violet</string></array> </var><var name='d'><string>colors</string></var></struct></data></wddxPacket>

Précédent | Sommaire | Suivant
wddx_serialize_value | Niveau supérieur | Analyseur syntaxique XML


Analyseur syntaxique XML

Manuel PHP
Précédent Suivant

CXI. Analyseur syntaxique XML

Introduction

Le langage XML (eXtensible Markup Language (Langage à Balises Etendu)) est un format structuré de données pour les échanges sur le web. C'est un standard défini par le consortium World Wide Web (W3C). Plus d'informations à propos du XML et des technologies afférentes sont accessibles (en anglais) http://www.w3.org/XML/.

Cette extension PHP supporte la librairie expat de James Clark sous PHP. Cela vous permettra d'analyser mais pas de valider les documents XML. Il supporte trois types de codage différents, disponibles aussi sous PHP: US-ASCII, ISO-8859-1 et UTF-8. UTF-16 n'est pas supporté.

Cette extension vous permet de créer des analyseurs XML puis de définir des points d'entrée pour chaque événement XML. Les analyseurs XML disposent de quelques paramétrages.

Pré-requis

Cette extension de PHP utilise expat, disponible à http://www.jclark.com/xml/expat.html. Le fichier Makefile livré avec expat ne construit pas par défaut de librairie : il faut utiliser la ligne suivante :
libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@
Les sources RPM de expat sont disponibles à http://sourceforge.net/projects/expat/.

Installation

Ces fonctions sont activées par défaut, et utilisent la librairie expat fournie avec la distribution. Vous pouvez désactiver le support de XML en utilisant l'option de compilation --disable-xml. Si vous compilez PHP comme module Apache et avec les versions 1.3.9 ou plus récent, PHP va automatiquement utiliser la librairie fournie par Apache. Si vous ne souhaitez pas utiliser la librairie expat fournie avec PHP, il faut que vous compiliez PHP avec l'option --with-expat-dir=DIR, où DIR est le dossier d'installation de votre librairie expat.

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

xml

La ressource xml est retournée par xml_parser_create() et xml_parser_create_ns(), et représente un analysueur XML à utiliser avec les autres fonctions de l'extension.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

XML_ERROR_NONE (entier)

XML_ERROR_NO_MEMORY (entier)

XML_ERROR_SYNTAX (entier)

XML_ERROR_NO_ELEMENTS (entier)

XML_ERROR_INVALID_TOKEN (entier)

XML_ERROR_UNCLOSED_TOKEN (entier)

XML_ERROR_PARTIAL_CHAR (entier)

XML_ERROR_TAG_MISMATCH (entier)

XML_ERROR_DUPLICATE_ATTRIBUTE (entier)

XML_ERROR_JUNK_AFTER_DOC_ELEMENT (entier)

XML_ERROR_PARAM_ENTITY_REF (entier)

XML_ERROR_UNDEFINED_ENTITY (entier)

XML_ERROR_RECURSIVE_ENTITY_REF (entier)

XML_ERROR_ASYNC_ENTITY (entier)

XML_ERROR_BAD_CHAR_REF (entier)

XML_ERROR_BINARY_ENTITY_REF (entier)

XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (entier)

XML_ERROR_MISPLACED_XML_PI (entier)

XML_ERROR_UNKNOWN_ENCODING (entier)

XML_ERROR_INCORRECT_ENCODING (entier)

XML_ERROR_UNCLOSED_CDATA_SECTION (entier)

XML_ERROR_EXTERNAL_ENTITY_HANDLING (entier)

XML_OPTION_CASE_FOLDING (entier)

XML_OPTION_TARGET_ENCODING (entier)

XML_OPTION_SKIP_TAGSTART (entier)

XML_OPTION_SKIP_WHITE (entier)

gestionnaires d'évènements

Les gestionnaires d'évènements XML sont:

Tableau 1. Les gestionnaires d'évènements XML

Fonction PHP de configuration du gestionnaire | Description de l'événement
xml_set_element_handler() | Un événement est généré à chaque fois que l'analyseur XML rencontre une balise de début ou de fin. Deux gestionnaires sont disponibles : un pour le début, et un pour la fin.
xml_set_character_data_handler() | "Character data" correspond grosso modo à tout ce qui n'est pas une balise XML, y compris les espaces entre les balises. Notez bien que l'analyseur XML n'ajoute ou n'efface aucun espace, et que c'est à l'application (c'est-à-dire vous) de décider de la signification de ces espaces.
xml_set_processing_instruction_handler() | Les programmeurs PHP sont habitués aux instructions exécutables (processing instructions ou PIs). <?php ?> est une instruction exécutable où php est appelé programme cible. Ces instructions sont gérées de manière spécifiques, (sauf le programme cible, qui est réservé à XML).
xml_set_default_handler() | Tout ce qui n'a pas trouvé de gestionnaire est transmis au gestionnaire par défaut. Vous retrouverez par exemple, les déclarations de type de document dans ce gestionnaire.
xml_set_unparsed_entity_decl_handler() | Ce gestionnaire est appelé pour gérer les déclaration des entités non analysés.
xml_set_notation_decl_handler() | Ce gestionnaire est appelé pour gérer les notations.
xml_set_external_entity_ref_handler() | Ce gestionnaire est appelé lorsque l'analyseur XML trouve une référence à un fichier externe. Cela peut être un fichier, ou une URL. Reportez-vous à entité externe pour un exemple.

Problèmes de casse

Les fonctions de gestion des balises peuvent rencontrer des balises en minuscule, majuscule ou encore dans un mélange des deux. En XML, la procédure standard est d' "identifier les séquences de caractère qui ne sont pas reconnues comme majuscule, et de les remplacer par leur équivalent majuscule". En d'autres termes, XML met toutes lettres en majuscules.

Par défaut, tous les noms des éléments qui sont transmis aux fonctions de gestion sont mises en majuscule. Ce comportement est contrôlé par l'analyseur XML, et peut être lu et modifié avec les fonctions respectives xml_parser_get_option() et xml_parser_set_option(), respectivement.

Codes d'erreurs

Les constantes suivantes sont définies comme des codes d'erreurs XML : (retournée par xml_parse())

XML_ERROR_NONE
XML_ERROR_NO_MEMORY
XML_ERROR_SYNTAX
XML_ERROR_NO_ELEMENTS
XML_ERROR_INVALID_TOKEN
XML_ERROR_UNCLOSED_TOKEN
XML_ERROR_PARTIAL_CHAR
XML_ERROR_TAG_MISMATCH
XML_ERROR_DUPLICATE_ATTRIBUTE
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
XML_ERROR_PARAM_ENTITY_REF
XML_ERROR_UNDEFINED_ENTITY
XML_ERROR_RECURSIVE_ENTITY_REF
XML_ERROR_ASYNC_ENTITY
XML_ERROR_BAD_CHAR_REF
XML_ERROR_BINARY_ENTITY_REF
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
XML_ERROR_MISPLACED_XML_PI
XML_ERROR_UNKNOWN_ENCODING
XML_ERROR_INCORRECT_ENCODING
XML_ERROR_UNCLOSED_CDATA_SECTION
XML_ERROR_EXTERNAL_ENTITY_HANDLING

Codage des caractères

L'extension XML de PHP supporte les caractères Unicode grâce à différents codages. Il y a deux types de codages de caractères : le codage à la source et le codage à la cible. PHP utilise le UTF-8 comme représentation interne.

L'encodage à la source est effectué lors de l'analyse du fichier par XML. Lors de la création d'un analyseur XML), un type de codage à la source doit être spécifié (et il ne pourra plus être modifié jusqu'à la destruction de l'analyseur). Les codages supportés sont : ISO-8859-1, US-ASCII et UTF-8. Les deux derniers sont des codages à un seul octet, c'est-à-dire que les caractères sont représentés sur un seul octet. UTF-8 peut représenter des caractères composés par un nombre variable de bits (jusqu'à 21), allant de 1 à quatre octets. Le codage par défaut utilisé par PHP ISO-8859-1.

Le codage à la cible est effectué lorsque PHP transfert les données aux gestionnaires XML. Lorsqu'un analyseur est créé, le codage à la cible est spécifié de la même façon que le codage à la source, mais il peut être modifié à tout moment. Le codage à la cible affectera les balises, tout comme les données brutes, et les noms des instructions exécutables.

Si l'analyseur XML rencontre un caractère qu'il ne connaît pas (hors limite, par exemple), il retournera une erreur.

Si PHP rencontre un caractère dans le document XML analysé, qu'il ne peut pas représenter dans le codage à la cible choisi, le caractère sera remplacé par un point d'interrogation (cette attitude est susceptible de changer ultérieurement).

Exemples

Voici une liste d'exemple de code PHP qui analyse un document XML.

Exemple de structure XML

Ce premier exemple affiche la structure de l'élément de début dans un document avec indentation.

Exemple 1. Afficher une structure XML

<?php
$file = "donnees.xml";
$depth = array();

function debutElement($parser, $name, $attrs) {
    global $depth;
    for ($i = 0; $i < $depth[$parser]; $i++) {
        print "  ";
    }
    print "$name\n";
    $depth[$parser]++;
}

function finElement($parser, $name) {
    global $depth;
    $depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "debutElement", "finElement");
if (!($fp = fopen($file, "r"))) {
    die("Impossible d'ouvrir le fichier XML");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("erreur XML : %s &agrave; la ligne %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

Transtypage XML -> HTML

Exemple 2. Transtypage XML -> HTML

Cet exemple remplace les balises XML d'un document par des balises HTML. Les éléments inconnus seront ignorés. Bien entendu, cet exemple sera appliqué à un type précis de fichiers XML.
<?php
$file = "data.xml";
$map_array = array(
    "BOLD"     => "B",
    "EMPHASIS" => "I",
    "LITERAL"  => "TT"
);

function startElement($parser, $name, $attrs) {
    global $map_array;
    if ($htmltag == $map_array[$name]) {
        print "<$htmltag>";
    }
}

function endElement($parser, $name) {
    global $map_array;
    if ($htmltag == $map_array[$name]) {
        print "</$htmltag>";
    }
}

function characterData($parser, $data) {
    print $data;
}

$xml_parser = xml_parser_create();
// Utilisons la gestion de casse, de mani&egrave;re &agrave; &ecirc;tre s&ucirc;rs de trouver la balise dans $map_array
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("Impossible de trouver le fichier XML");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("erreur XML : %s &agrave; la ligne %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

Entité externe

Cet exemple exploite les références externes de XML : il est possible d'utiliser un gestionnaire d'entité externe pour inclure et analyser les documents, tous comme les instructions exécutables peuvent servir à inclure et analyser d'autres documents, et aussi fournir une indication de confiance (voir plus bas).

Le document XML qui est utilisé dans cet exemple est fourni plus loin dans l'exemple (xmltest.xml et xmltest2.xml).

Exemple 3. Entité externe

<?php
$file = "xmltest.xml";

function trustedFile($file) {
    // only trust local files owned by ourselves
    if (!eregi("^([a-z]+)://", $file)
        && fileowner($file) == getmyuid()) {
            return true;
    }
    return false;
}

function startElement($parser, $name, $attribs) {
    print "<<font color=\"#0000cc\">$name</font>";
    if (sizeof($attribs)) {
        while (list($k, $v) = each($attribs)) {
            print " <font color=\"#009900\">$k</font>=\"<font
                   color=\"#990000\">$v</font>\"";
        }
    }
    print ">";
}

function endElement($parser, $name) {
    print "</<font color=\"#0000cc\">$name</font>>";
}

function characterData($parser, $data) {
    print "<b>$data</b>";
}

function PIHandler($parser, $target, $data) {
    switch (strtolower($target)) {
        case "php":
            global $parser_file;
            // If the parsed document is "trusted", we say it is safe
            // to execute PHP code inside it.  If not, display the code
            // instead.
            if (trustedFile($parser_file[$parser])) {
                eval($data);
            } else {
                printf("Untrusted PHP code: <i>%s</i>",
                        htmlspecialchars($data));
            }
            break;
    }
}

function defaultHandler($parser, $data) {
    if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
        printf('<font color="#aa00aa">%s</font>',
                htmlspecialchars($data));
    } else {
        printf('<font size="-1">%s</font>',
                htmlspecialchars($data));
    }
}

function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,
                                  $publicId) {
    if ($systemId) {
        if (!list($parser, $fp) = new_xml_parser($systemId)) {
            printf("Could not open entity %s at %s\n", $openEntityNames,
                   $systemId);
            return false;
        }
        while ($data = fread($fp, 4096)) {
            if (!xml_parse($parser, $data, feof($fp))) {
                printf("erreur XML : %s &agrave; la ligne %d lors de l'analyse de l'entit&eacute; %s\n",
                       xml_error_string(xml_get_error_code($parser)),
                       xml_get_current_line_number($parser), $openEntityNames);
                xml_parser_free($parser);
                return false;
            }
        }
        xml_parser_free($parser);
        return true;
    }
    return false;
}

function new_xml_parser($file) {
    global $parser_file;

    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    xml_set_processing_instruction_handler($xml_parser, "PIHandler");
    xml_set_default_handler($xml_parser, "defaultHandler");
    xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");

    if (!($fp = @fopen($file, "r"))) {
        return false;
    }
    if (!is_array($parser_file)) {
        settype($parser_file, "array");
    }
    $parser_file[$xml_parser] = $file;
    return array($xml_parser, $fp);
}

if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
    die("Impossible d'ouvrir le fichier XML");
}

print "<pre>";
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("Erreur XML : %s &agrave; la ligne %d\n",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
print "</pre>";
print "parse complete\n";
xml_parser_free($xml_parser);

?>

Exemple 4. xmltest.xml

<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
 <TITLE>Title &plainEntity;</TITLE>
 <para>
  <informaltable>
   <tgroup cols="3">
    <tbody>
     <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row>
     <row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
 &systemEntity;
 <section id="about">
  <title>About this Document</title>
  <para>
   <!-- Ceci est un commentaire -->
   <?php print 'Salut! Ceci est PHP version '.phpversion(); ?>
  </para>
 </section>
</chapter>

Ce fichier est inclus depuis xmltest.xml:

Exemple 5. xmltest2.xml

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
   <element attrib="value"/>
   &testEnt;
   <?php print "Ceci est du code PHP qui est ex&eacute;cut&eacute;."; ?>
</foo>

Table des matières
utf8_decode -- Convertit une chaîne UTF-8 en ISO-8859
utf8_encode -- Convertit une chaîne ISO-8859-1 en UTF-8
xml_error_string -- Lit le message d'erreur de l'analyseur XML
xml_get_current_byte_index -- Retourne l'index de l'octet courant d'un analyseur XML
xml_get_current_column_number -- Retourne le nombre courant de colonne d'un analyseur XML.
xml_get_current_line_number -- Retourne le numéro de ligne courant d'un analyseur XML.
xml_get_error_code -- Retourne le nombre courant de colonne d'un analyseur XML
xml_parse_into_struct -- Analyse une structure XML
xml_parse -- Commence l'analyse d'un fichier XML
xml_parser_create_ns -- Crée un analyseur XML
xml_parser_create -- Création d'un analyseur XML
xml_parser_free -- Détruit un analyseur XML
xml_parser_get_option -- Lit les options d'un analyseur XML
xml_parser_set_option -- Affecte les options d'un analyseur XML
xml_set_character_data_handler -- Affecte les gestionnaires de texte littéral
xml_set_default_handler -- Affecte le gestionnaire XML par défaut
xml_set_element_handler -- Affecte les gestionnaires de début et de fin de balise XML
xml_set_end_namespace_decl_handler -- Configure le gestionnaire XML de données
xml_set_external_entity_ref_handler -- Configure le gestionnaire XML de références externes
xml_set_notation_decl_handler -- Configure le gestionnaire XML de notations
xml_set_object -- Utilise un analyseur XML à l'intérieur d'un objet.
xml_set_processing_instruction_handler -- Affecte les gestionnaires d'instructions exécutables.
xml_set_start_namespace_decl_handler -- Configure le gestionnaire de caractères
xml_set_unparsed_entity_decl_handler -- Affecte les gestionnaires d'entités non déclarés

Précédent | Sommaire | Suivant
wddx_serialize_vars | Niveau supérieur | utf8_decode


utf8_decode

(PHP 3>= 3.0.6, PHP 4 )

utf8_decode -- Convertit une chaîne UTF-8 en ISO-8859

Description

string utf8_decode ( string data)

utf8_decode() décode la chaîne data, en supposant qu'elle est au format UTF-8, et la convertit au format ISO-8859-1.

Voir aussi utf8_encode() pour plus de détails sur le codage UTF-8.

Précédent | Sommaire | Suivant
Analyseur syntaxique XML | Niveau supérieur | utf8_encode


utf8_encode

(PHP 3>= 3.0.6, PHP 4 )

utf8_encode -- Convertit une chaîne ISO-8859-1 en UTF-8

Description

string utf8_encode ( string data)

utf8_encode() code la chaîne data au format UTF-8, et retourne la version codée. UTF-8 est un mécanisme standardisé utilisé par Unicode pour coder les caractère de grande taille dans des flux d'octets. UTF-8 est transparent pour les caractères ASCII, il est auto-synchronisé (c'est à dire qu'un programme peut toujours savoir dans un flux d'octet où un caractère commence), et peut être utilisé pour faire des comparaisons de chaînes standard, comme pour le tri. PHP utilise l'UTF-8 pour coder les caractères jusqu'à 4 octets comme ceci :

Tableau 1. UTF-8 encoding

octets | bits | représentation
1 | 7 | 0bbbbbbb
2 | 11 | 110bbbbb 10bbbbbb
3 | 16 | 1110bbbb 10bbbbbb 10bbbbbb
4 | 21 | 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
Chaque b représente un bit qui peut être utilisé pour enregistrer un caractère.

Précédent | Sommaire | Suivant
utf8_decode | Niveau supérieur | xml_error_string


xml_error_string

(PHP 3>= 3.0.6, PHP 4 )

xml_error_string -- Lit le message d'erreur de l'analyseur XML

Description

string xml_error_string ( int code)

code

Un message d'erreur, issu de xml_get_error_code().

xml_error_string() retourne la chaîne avec un message textuel, décrivant l'erreur code, ou FALSE si aucune description n'a été trouvée.

Précédent | Sommaire | Suivant
utf8_encode | Niveau supérieur | xml_get_current_byte_index


xml_get_current_byte_index

(PHP 3>= 3.0.6, PHP 4 )

xml_get_current_byte_index -- Retourne l'index de l'octet courant d'un analyseur XML

Description

int xml_get_current_byte_index ( resource parser)

parser

Une référence sur un analyseur XML valide.

xml_get_current_byte_index() retourne FALSE si parser n'est pas valide, ou sinon, retourne l'index de l'octet d'analyse courante de l'analyseur XML.

Précédent | Sommaire | Suivant
xml_error_string | Niveau supérieur | xml_get_current_column_number


xml_get_current_column_number

(PHP 3>= 3.0.6, PHP 4 )

xml_get_current_column_number -- Retourne le nombre courant de colonne d'un analyseur XML.

Description

int xml_get_current_column_number ( resource parser)

parser

Une référence sur un analyseur XML valide.

xml_get_current_column_number() retourne FALSE si parser n'est pas valide, ou sinon, retourne le numéro de colonne courante de la ligne courante de l'analyseur, qui correspond à la position d'analyse courante de l'analyseur XML.

Précédent | Sommaire | Suivant
xml_get_current_byte_index | Niveau supérieur | xml_get_current_line_number


xml_get_current_line_number

(PHP 3>= 3.0.6, PHP 4 )

xml_get_current_line_number -- Retourne le numéro de ligne courant d'un analyseur XML.

Description

int xml_get_current_line_number ( resource parser)

parser

Une référence sur un analyseur XML valide.

xml_get_current_line_number() retourne FALSE si parser n'est pas valide, ou sinon, retourne le numéro de la ligne en cours d'analyse.

Précédent | Sommaire | Suivant
xml_get_current_column_number | Niveau supérieur | xml_get_error_code


xml_get_error_code

(PHP 3>= 3.0.6, PHP 4 )

xml_get_error_code -- Retourne le nombre courant de colonne d'un analyseur XML

Description

int xml_get_error_code ( resource parser)

xml_get_error_code() retourne FALSE si parser n'est pas valide, ou sinon, retourne le numéro de colonne courante de la ligne courante de l'analyseur, qui correspond à la position d'analyse courante de l'analyseur XML.

Précédent | Sommaire | Suivant
xml_get_current_line_number | Niveau supérieur | xml_parse_into_struct


xml_parse_into_struct

(PHP 3>= 3.0.8, PHP 4 )

xml_parse_into_struct -- Analyse une structure XML

Description

int xml_parse_into_struct ( resource parser, string data, array &values [, array &index])

xml_parse_into_struct() analyse le fichier XML data, et le place dans deux tableaux : le premier index contient des pointeurs sur la position des valeurs correspondantes dans le tableau values. Ces deux paramètres sont passés par références.

Ci-dessous, vous trouverez un exemple qui illustre la structure des deux tableaux générés par la fonction. On utilise une balise simple note, placée dans une autre balise para. On analyse le tout, et on affiche la structure générée :

Exemple 1. Exemple avec xml_parse_into_struct()

<?php
  $simple = "<para><note>Simple Note</note></para>";
  $p = xml_parser_create();
  xml_parse_into_struct($p, $simple, $vals, $index);
  xml_parser_free($p);
  echo "Tableau d'index \n";
  print_r($index);
  echo "\nTableau de valeurs \n";
  print_r($vals);
?>

Lors de l'exécution du code, l'affichage sera :

Tableau d'index
Array
(
    [PARA] => Array
        (
            [0] => 0
            [1] => 2
        )

    [NOTE] => Array
        (
            [0] => 1
        )

)

Tableau de valeurs
Array
(
    [0] => Array
        (
            [tag] => PARA
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => NOTE
            [type] => complete
            [level] => 2
            [value] => Simple Note
        )

    [2] => Array
        (
            [tag] => PARA
            [type] => close
            [level] => 1
        )

)

L'analyse événementielle (comme celle de expat), peut se révéler complexe lorsque le document XML est complexe. xml_parse_into_struct() ne génère pas d'objet de type DOM, mais il génère plutôt des structures qui peuvent être parcourues à la façon d'un arbre. Considérons le fichier suivant, qui représente une petite base de données XML :

Exemple 2. moldb.xml - Petite base de données moléculaire

<?xml version="1.0"?>
<moldb>

    <molecule>
        <name>Alanine</name>
        <symbol>ala</symbol>
        <code>A</code>
        <type>hydrophobic</type>
    </molecule>

    <molecule>
        <name>Lysine</name>
        <symbol>lys</symbol>
        <code>K</code>
        <type>charged</type>
    </molecule>

</moldb>
Et maintenant, un code qui analyse le document, et génère les objets ad hoc :

Exemple 3. parsemoldb.php : Analyse moldb.xml et crée un tableau d'objets moléculaires

<?php

class AminoAcid {
    var $name;  // nom aa
    var $symbol;    // symbole &agrave; trois lettres
    var $code;  // code &agrave; une lettre
    var $type;  // hydrophobique, charg&eacute; ou neutre

    function AminoAcid ($aa) {
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}

function readDatabase($filename) {
    // read the xml database of aminoacids
    $data = implode("",file($filename));
    $parser = xml_parser_create();
    xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
    xml_parse_into_struct($parser,$data,$values,$tags);
    xml_parser_free($parser);

    // loop through the structures
    foreach ($tags as $key=>$val) {
        if ($key == "molecule") {
            $molranges = $val;
            // each contiguous pair of array entries are the
            // lower and upper range for each molecule definition
            for ($i=0; $i < count($molranges); $i+=2) {
                    $offset = $molranges[$i] + 1;
                $len = $molranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}

function parseMol($mvalues) {
    for ($i=0; $i < count($mvalues); $i++)
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    return new AminoAcid($mol);
}

$db = readDatabase("moldb.xml");
echo "** Base d'objets AminoAcid :\n";
print_r($db);

?>

Après exécution de parsemoldb.php, la variable $db contient un tableau d'objets AminoAcid, et l'affichage le confirme :

** Base d'objets AminoAcid :
Array
(
    [0] => aminoacid Object
        (
            [name] => Alanine
            [symbol] => ala
            [code] => A
            [type] => hydrophobic
        )

    [1] => aminoacid Object
        (
            [name] => Lysine
            [symbol] => lys
            [code] => K
            [type] => charged
        )

)

Précédent | Sommaire | Suivant
xml_get_error_code | Niveau supérieur | xml_parse


xml_parse

(PHP 3>= 3.0.6, PHP 4 )

xml_parse -- Commence l'analyse d'un fichier XML

Description

bool xml_parse ( resource parser, string data [, bool is_final])

parser

une référence sur l'analyseur XML à utiliser.

data

Une partie des données à analyser. Un document peut être analysé morceau par morceau, en appelant xml_parse() plusieurs fois, tant que le paramètre isfinal est mis à TRUE pour le dernier morceau.

isfinal (optional)

S'il vaut TRUE, data est la dernière partie à analyser.

Lorsqu'un document XML est analysé, les gestionnaires d'événements sont appelés aussi souvent que nécessaire, et retournent TRUE ou FALSE.

TRUE est retourné lorsque l'analyse a été concluante, et FALSE en cas d'échec, ou si parser n'est pas un analyseur valide. Lors d'un échec d'analyse, la cause de l'erreur peut être obtenue grâce aux fonctions xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() et xml_get_current_byte_index().

Précédent | Sommaire | Suivant
xml_parse_into_struct | Niveau supérieur | xml_parser_create_ns


xml_parser_create_ns

(PHP 4 >= 4.0.5)

xml_parser_create_ns -- Crée un analyseur XML

Description

resource xml_parser_create_ns ( [string encoding [, string separator]])

xml_parser_create_ns() crée un nouvel analyseur XML avec le support des espaces de noms, et retourne une ressource, qui pourra être utilisée avec les autres fonctions XML.

Avec un analyseur qui supporte les espaces de noms, les balises qui sont passées aux différentes fonctions de gestion seront constituées du nom de l'espace et du nom de balise, séparé par la chaîne seperator ou par ':', par défaut.

Le paramètre optionnel encoding spécifie le jeu de caractères que le XML doit traiter. Les jeux de caractères supportés sont "ISO-8859-1", qui est aussi la valeur par défaut si encoding est omis, "UTF-8" et "US-ASCII".

Voir aussi xml_parser_create() et xml_parser_free().

Précédent | Sommaire | Suivant
xml_parse | Niveau supérieur | xml_parser_create


xml_parser_create

(PHP 3>= 3.0.6, PHP 4 )

xml_parser_create -- Création d'un analyseur XML

Description

resource xml_parser_create ( [string encoding])

xml_parser_create() crée un analyseur XML et retourne une référence sur cet analyseur pour qu'il puisse être utilisé ultérieurement par d'autres fonctions XML. xml_parser_create() retourne FALSE en cas d'erreur.

encoding (optionnel)

Le codage de caractère de l'analyseur. Les codages suivants sont supportés :

ISO-8859-1 (par défaut)
US-ASCII
UTF-8

Voir aussi xml_parser_create_ns() et xml_parser_free().

Précédent | Sommaire | Suivant
xml_parser_create_ns | Niveau supérieur | xml_parser_free


xml_parser_free

(PHP 3>= 3.0.6, PHP 4 )

xml_parser_free -- Détruit un analyseur XML

Description

bool xml_parser_free ( resource parser)

parser

Une référence sur un analyseur XML.

xml_parser_free() retourne FALSE si parser n'est pas une référence valide, ou sinon, détruit l'analyseur et retourne TRUE.

Précédent | Sommaire | Suivant
xml_parser_create | Niveau supérieur | xml_parser_get_option


xml_parser_get_option

(PHP 3>= 3.0.6, PHP 4 )

xml_parser_get_option -- Lit les options d'un analyseur XML

Description

mixed xml_parser_get_option ( resource parser, int option)

parser

Une référence sur un analyseur XML valide.

option

L'option demandée. Reportez-vous à xml_parser_set_option() pour avoir la liste des options disponibles.

xml_parser_get_option() retourne FALSE si parser n'est pas valide, ou sinon, retourne la valeur de l'option demandée.

Reportez-vous à xml_parser_set_option() pour avoir la liste des options disponibles.

Précédent | Sommaire | Suivant
xml_parser_free | Niveau supérieur | xml_parser_set_option


xml_parser_set_option

(PHP 3>= 3.0.6, PHP 4 )

xml_parser_set_option -- Affecte les options d'un analyseur XML

Description

bool xml_parser_set_option ( resource parser, int option, mixed value)

parser

Une référence vers un analyseur XML.

option

L'option à modifier. Voir ci-dessous :

value

La nouvelle valeur de l'option.

xml_parser_set_option() retourne FALSE si parser n'est pas une référence valide sur un analyseur XML, ou si l'option n'a pas pu être modifiée. Sinon, l'option est effectivement modifiée, et la fonction retourne TRUE.

Les options suivantes sont disponibles :

Tableau 1. options d'analyseur XML

Option | Type de données | Description
XML_OPTION_CASE_FOLDING | entier | Contrôle la gestion de la casse des balises de cet analyseur XML. Par défaut, activé.
XML_OPTION_TARGET_ENCODING | string | Modifie le codage à la cible utilisé par cet analyseur XML. Par défaut, c'est celui qui a été spécifié lors de l'appel de xml_parser_create(). Les codages supportés sont ISO-8859-1, US-ASCII et UTF-8.

Précédent | Sommaire | Suivant
xml_parser_get_option | Niveau supérieur | xml_set_character_data_handler


xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_character_data_handler -- Affecte les gestionnaires de texte littéral

Description

bool xml_set_character_data_handler ( resource parser, callback handler)

xml_set_character_data_handler() affecte les gestionnaires de début et de fin de l'analyseur XML parser. handler est une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créer parser.

La fonction handler doit accepter deux paramètres : handler ( resource parser, string data)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

data

Le second paramètre, data, contient les caractères sous la forme d'une chaîne.

Si un gestionnaire reçoit une chaîne vide ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_character_data_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon, ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_parser_set_option | Niveau supérieur | xml_set_default_handler


xml_set_default_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_default_handler -- Affecte le gestionnaire XML par défaut

Description

bool xml_set_default_handler ( resource parser, callback handler)

xml_set_default_handler() affecte le gestionnaire par défaut de l'analyseur XML parser. handler est une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créer parser.

La fonction handler doit accepter deux paramètres: handler ( resource parser, string data)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

data

Le second paramètre, data, contient les caractères sous la forme d'une chaîne. Cela peut être une déclaration XML, un type de document, une entité ou d'autre données pour qui aucun gestionnaire n'est prévu.

Si un gestionnaire reçoit une chaîne vide ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_default_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon, ou si parser n'est pas un analyseur.

Il n'est pas pour l'instant possible d'utiliser des objets pour servir de gestionnaire. Reportez-vous à xml_set_object() pour utiliser l'analyseur XML depuis un objet.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_character_data_handler | Niveau supérieur | xml_set_element_handler


xml_set_element_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_element_handler -- Affecte les gestionnaires de début et de fin de balise XML

Description

bool xml_set_element_handler ( resource parser, callback start_element_handler, callback end_element_handler)

xml_set_element_handler() affecte les gestionnaires de début et de fin de l'analyseur XML parser. startelementhandler et endelementhandler sont des chaînes qui contiennent les noms de fonctions qui existent lorsque xml_parse() est appelé pour créer parser.

La fonction startelementhandler doit accepter trois paramètres: start_element_handler ( resource parser, string name, array attribs)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

name

Le deuxième paramètre, name, contient le nom de l'élément qui a provoqué l'appel du gestionnaire. Si l'analyseur gère la casse, cet élément sera en majuscule.

attribs

Le troisième paramètre, attribs, contient un tableau associatif avec les attributs de l'éléments (s'il en existe). Les clés de ce tableau seront les noms des attributs, et les valeurs seront les valeurs correspondantes des attributs. Les noms des attributs seront mis en majuscule si l'analyseur gère la casse. Les valeurs des attributs seront intouchées.

L'ordre original des attributs peut être retrouvé en passant en revue le tableau attribs, avec la fonction each(). La première clé sera la première clé du tableau.

La fonction endelementhandler doit accepter deux paramètres: end_element_handler ( resource parser, string name)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

name

Le second paramètre, name, contient le nom de l'élément qui a provoqué l'appel du gestionnaire. Si l'analyseur gère la casse, cet élément sera en majuscule.

Si un gestionnaire reçoit une chaîne vide, ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_element_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon, ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_default_handler | Niveau supérieur | xml_set_end_namespace_decl_handler


xml_set_end_namespace_decl_handler

(PHP 4 >= 4.0.5)

xml_set_end_namespace_decl_handler -- Configure le gestionnaire XML de données

Description

bool xml_set_end_namespace_decl_handler ( resource pind, callback handler)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_element_handler | Niveau supérieur | xml_set_external_entity_ref_handler


xml_set_external_entity_ref_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_external_entity_ref_handler -- Configure le gestionnaire XML de références externes

Description

bool xml_set_external_entity_ref_handler ( resource parser, callback handler)

xml_set_external_entity_ref_handler() affecte le gestionnaire d'entité externe de l'analyseur XML parser. handler et endelementhandler sont des chaînes qui contiennent les noms de fonction qui existent lorsque xml_parse() est appelé pour créer le parser.

La fonction handler doit accepter 5 paramètres, et retourner un entier. Si la valeur retourné par le gestionnaire est FALSE (comme par exemple si aucune valeur n'est retournée), l'analyseur XML s'arrêtera, et la fonction xml_get_error_code() retournera XML_ERROR_EXTERNAL_ENTITY_HANDLING. handler ( resource parser, string open_entity_names, string base, string system_id, string public_id)

parser

Le premier paramètre,parser, est une référence sur l'analyseur XML qui appelle cette fonction.

openentitynames

Le deuxième paramètre, openentitynames, est la liste de noms d'entité, séparés par des espaces. Ces entités sont accessibles à l'analyse par cet entité (y compris le nom de l'entité reférencé).

base

La meilleure base de résolution de l'identifiant système de cet entité externe. Actuellement, ce paramètre est toujours une chaîne vide.

systemid

Identifiant système pour cet entité externe.

publicid

Le cinquième paramètre, publicid, est l'identifiant public, comme spécifié dans la déclaration d'entité, ou un chaîne vide, si aucune déclaration n'a été spécifiée. L'espace dans l'identifiant public sera normalisé comme spécifié dans les spécifications XML.

Si un gestionnaire reçoit une chaîne vide, ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_external_entity_ref_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_end_namespace_decl_handler | Niveau supérieur | xml_set_notation_decl_handler


xml_set_notation_decl_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_notation_decl_handler -- Configure le gestionnaire XML de notations

Description

bool xml_set_notation_decl_handler ( resource parser, callback handler)

xml_set_notation_decl_handler() affecte les gestionnaires de début et de fin de l'analyseur XML parser. handler est une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créer parser.

Une notation est une partie du DTD du document, qui a le format suivant :
<!NOTATION <parameter>name</parameter>
{ <parameter>systemid</parameter> | <parameter>publicid</parameter>?>
Reportez-vous à la section des spécifications XML 1.0 pour connaître les notations des entités externes.

La fonction handler doit accepter cinq paramètres : handler ( resource parser, string notation_name, string base, string system_id, string public_id)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

notationname

Le nom de la notation,name, comme précisé dans le format de notation ci-dessus.

base

La meilleure base de résolution de l'identifiant système de cette entité externe. Actuellement, ce paramètre est toujours une chaîne vide.

systemid

Identifiant système pour cet entité externe.

publicid

Identifiant public pour cet entité externe.

Si un gestionnaire reçoit une chaîne vide ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_notation_decl_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_external_entity_ref_handler | Niveau supérieur | xml_set_object


xml_set_object

(PHP 4 )

xml_set_object -- Utilise un analyseur XML à l'intérieur d'un objet.

Description

void xml_set_object ( resource parser, object object)

xml_set_object() rend l'analyseur parser utilisable depuis un objet. Toutes les méthodes de callback, affectées par xml_set_element_handler(), seront les méthodes de cet objet.

<?php
class xml  {
    var $parser;

    function xml()
    {
        $this->parser = xml_parser_create();

        xml_set_object($this->parser, &$this);
        xml_set_element_handler($this->parser, "tag_open", "tag_close");
        xml_set_character_data_handler($this->parser, "cdata");
    }

    function parse($data)
    {
        xml_parse($this->parser, $data);
    }

    function tag_open($parser, $tag, $attributes)
    {
        var_dump($parser, $tag, $attributes);
    }

    function cdata($parser, $cdata)
    {
        var_dump($parser, $cdata);
    }

    function tag_close($parser, $tag)
    {
        var_dump($parser, $tag);
    }

} // end of class xml

$xml_parser = new xml();
$xml_parser->parse("<A ID='hallo'>PHP</A>");
?>

Précédent | Sommaire | Suivant
xml_set_notation_decl_handler | Niveau supérieur | xml_set_processing_instruction_handler


xml_set_processing_instruction_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_processing_instruction_handler -- Affecte les gestionnaires d'instructions exécutables.

Description

bool xml_set_processing_instruction_handler ( resource parser, callback handler)

xml_set_processing_instruction_handler() affecte le gestionnaire d'instructions exécutables de l'analyseur XML parser. handler est une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créer parser.

Une instruction exécutable a la forme suivante :

Exemple 1. Structure d'instruction exécutable

<?
       target
       data
Vous pouvez mettre du code PHP entre ces balises, mais soyez conscient d'une des limitations des instructions exécutables de XML : la balise de fin d'instruction exécutable (?>) ne peut être échappée, ce qui fait que cette séquence NE DOIT JAMAIS apparaître dans le code PHP placé dans le document PHP. Si un tel texte apparaît, la balise de fin d'instruction exécutable sera reconnue, et le reste du code sera considéré comme des données brutes (et donc, pas exécutées).

La fonction handler doit accepter trois paramètres: handler ( resource parser, string target, string data)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

target

Le second paramètre, target, contient l'application cible.

data

Le troisième paramètre, data, contient le code sous la forme d'une chaîne.

Si un gestionnaire reçoit une chaîne vide, ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_processing_instruction_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon, ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_object | Niveau supérieur | xml_set_start_namespace_decl_handler


xml_set_start_namespace_decl_handler

(PHP 4 >= 4.0.5)

xml_set_start_namespace_decl_handler -- Configure le gestionnaire de caractères

Description

bool xml_set_start_namespace_decl_handler ( resource pind, callback hdl)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_processing_instruction_handler | Niveau supérieur | xml_set_unparsed_entity_decl_handler


xml_set_unparsed_entity_decl_handler

(PHP 3>= 3.0.6, PHP 4 )

xml_set_unparsed_entity_decl_handler -- Affecte les gestionnaires d'entités non déclarés

Description

bool xml_set_unparsed_entity_decl_handler ( resource parser, callback handler)

xml_set_unparsed_entity_decl_handler() affecte les gestionnaires d'entité non déclaré de l'analyseur XML parser. handler est une chaîne qui contient le nom d'une fonction qui existe lorsque xml_parse() est appelé pour créer parser.

Ce gestionnaire sera appelé si l'analyseur XML rencontre une déclaration d'entité externe avec une déclaration de NDATA, comme suit :
<!ENTITY <parameter>name</parameter> {<parameter>publicid</parameter> | <parameter>systemid</parameter>}
        NDATA <parameter>notationname</parameter>

Reportez-vous à la section des spécifications XML 1.0 pour connaître les notations des entités externes.

La fonction handler doit accepter six paramètres: handler ( resource parser, string entity_name, string base, string system_id, string public_id, string notation_name)

parser

Le premier paramètre, parser, est une référence sur l'analyseur XML qui appelle cette fonction.

entityname

Le nom de l'entité qui va être définie

base

La meilleure base de résolution de l'identifiant système de cette entité externe. Actuellement, ce paramètre est toujours une chaîne vide.

systemid

Identifiant système pour cet entité externe.

publicid

Identifiant public pour cet entité externe.

notationname

Nom de la notation de cette entité. (Voir xml_set_notation_decl_handler()).

Si un gestionnaire reçoit une chaîne vide ou FALSE, c'est qu'il est en train d'être désactivé.

xml_set_unparsed_entity_decl_handler() retourne TRUE si le gestionnaire est actif, et FALSE sinon, ou si parser n'est pas un analyseur.

Note : A la place d'un nom de fonction, un tableau contenant une référence d'objet et un nom de méthode peut aussi être utilisé.

Précédent | Sommaire | Suivant
xml_set_start_namespace_decl_handler | Niveau supérieur | XML-RPC


XML-RPC

Manuel PHP
Précédent Suivant

CXII. XML-RPC

Introduction

Ces fonctions servent à écrire des serveurs et clients XML-RPC. Vous trouverez plus d'informations sur XML-RPC sur le site http://www.xmlrpc.com/, et plus de documenation sur cette extension et ses fonctions à http://xmlrpc-epi.sourceforge.net/.

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Le support de XML-RPC en PHP n'est pas activé par défaut. Vous avez besoin de l'activer grâce à l'option de compilation --with-xmlrpc[=DIR]. Cette extension est fournie avec PHP depuis la version 4.1.0.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration XML-RPC

Nom | Par défaut | Modiable
xmlrpc_errors | "0" | PHP_INI_SYSTEM
xmlrpc_error_number | "0" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Table des matières
xmlrpc_decode_request -- Décode le code XML en variables PHP natives
xmlrpc_decode -- Décode le code XML en types PHP natifs
xmlrpc_encode_request -- Génère le code XML d'une requête de méthode
xmlrpc_encode -- Génère le code XML pour une valeur PHP
xmlrpc_get_type -- Retourne le type XMLRPC d'une valeur PHP. Particulièrement pratique pour les types chaînes de type base64 et datetime
xmlrpc_parse_method_descriptions -- Décode le code XML en une liste de descriptions de méthodes
xmlrpc_server_add_introspection_data -- Ajoute des données d'introspection
xmlrpc_server_call_method -- Analyse une requête XML est appelle les méthodes associées
xmlrpc_server_create -- Crée un serveur XMLRPC
xmlrpc_server_destroy -- Détruit un serveur XMLRPC
xmlrpc_server_register_introspection_callback -- Enregsitre une fonction PHP pour générer la documentation
xmlrpc_server_register_method -- Enregistre une fonction PHP avec une méthode
xmlrpc_set_type -- Modifie le type XMLRPC, base64 ou datetime, pour une chaînes de caractères PHP

Précédent | Sommaire | Suivant
xml_set_unparsed_entity_decl_handler | Niveau supérieur | xmlrpc_decode_request


xmlrpc_decode_request

(PHP 4 >= 4.1.0)

xmlrpc_decode_request -- Décode le code XML en variables PHP natives

Description

array xmlrpc_decode_request ( string xml, string &method [, string encoding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
XML-RPC | Niveau supérieur | xmlrpc_decode


xmlrpc_decode

(PHP 4 >= 4.1.0)

xmlrpc_decode -- Décode le code XML en types PHP natifs

Description

array xmlrpc_decode ( string xml [, string encoding])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_decode_request | Niveau supérieur | xmlrpc_encode_request


xmlrpc_encode_request

(PHP 4 >= 4.1.0)

xmlrpc_encode_request -- Génère le code XML d'une requête de méthode

Description

string xmlrpc_encode_request ( string method, mixed params)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_decode | Niveau supérieur | xmlrpc_encode


xmlrpc_encode

(PHP 4 >= 4.1.0)

xmlrpc_encode -- Génère le code XML pour une valeur PHP

Description

string xmlrpc_encode ( mixed value)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_encode_request | Niveau supérieur | xmlrpc_get_type


xmlrpc_get_type

(PHP 4 >= 4.1.0)

xmlrpc_get_type -- Retourne le type XMLRPC d'une valeur PHP. Particulièrement pratique pour les types chaînes de type base64 et datetime

Description

string xmlrpc_get_type ( mixed value)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_encode | Niveau supérieur | xmlrpc_parse_method_descriptions


xmlrpc_parse_method_descriptions

(PHP 4 >= 4.1.0)

xmlrpc_parse_method_descriptions -- Décode le code XML en une liste de descriptions de méthodes

Description

array xmlrpc_parse_method_descriptions ( string xml)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_get_type | Niveau supérieur | xmlrpc_server_add_introspection_data


xmlrpc_server_add_introspection_data

(PHP 4 >= 4.1.0)

xmlrpc_server_add_introspection_data -- Ajoute des données d'introspection

Description

int xmlrpc_server_add_introspection_data ( resource server, array desc)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_parse_method_descriptions | Niveau supérieur | xmlrpc_server_call_method


xmlrpc_server_call_method

(PHP 4 >= 4.1.0)

xmlrpc_server_call_method -- Analyse une requête XML est appelle les méthodes associées

Description

mixed xmlrpc_server_call_method ( resource server, string xml, mixed user_data [, array output_options])

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_add_introspection_data | Niveau supérieur | xmlrpc_server_create


xmlrpc_server_create

(PHP 4 >= 4.1.0)

xmlrpc_server_create -- Crée un serveur XMLRPC

Description

resource xmlrpc_server_create ( void )

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_call_method | Niveau supérieur | xmlrpc_server_destroy


xmlrpc_server_destroy

(PHP 4 >= 4.1.0)

xmlrpc_server_destroy -- Détruit un serveur XMLRPC

Description

int xmlrpc_server_destroy ( resource server)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_create | Niveau supérieur | xmlrpc_server_register_introspection_callback


xmlrpc_server_register_introspection_callback

(PHP 4 >= 4.1.0)

xmlrpc_server_register_introspection_callback -- Enregsitre une fonction PHP pour générer la documentation

Description

bool xmlrpc_server_register_introspection_callback ( resource server, string function)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_destroy | Niveau supérieur | xmlrpc_server_register_method


xmlrpc_server_register_method

(PHP 4 >= 4.1.0)

xmlrpc_server_register_method -- Enregistre une fonction PHP avec une méthode

Description

bool xmlrpc_server_register_method ( resource server, string method_name, string function)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_register_introspection_callback | Niveau supérieur | xmlrpc_set_type


xmlrpc_set_type

(PHP 4 >= 4.1.0)

xmlrpc_set_type -- Modifie le type XMLRPC, base64 ou datetime, pour une chaînes de caractères PHP

Description

bool xmlrpc_set_type ( string value, string type)

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xmlrpc_server_register_method | Niveau supérieur | XSLT


XSLT

Manuel PHP
Précédent Suivant

CXIII. XSLT

Introduction

Cette extension PHP fourni une API indépendante pour les transformations XSLT. Actuellement, seul Sablotron est supporté. Le support d'autres librairies comme Xalan ou libxslt est prévu.

XSLT (Extensible Stylesheet Language (XSL) Transformations) est un langage de transformation des documents XML en d'autres documents XML. C'est un standard défini par le consortium World Wide Web (W3C). Les informations sur le XLST et ses technologies sont disponibles à http://www.w3.org/TR/xslt.

Note : Cette extension est différente de l'extension sablotron qui était distribuée dans les versions de PHP avant la 4.1. Actuellement, seule la nouvelle extension XSLT est supportée. Si vous souhaitez du support pour les anciennes extensions, posez vos questions sur les listes de diffusions PHP.

Pré-requis

Cette extension utilise Sablotron et expat, qui sont toutes les deux disponibles à http://www.gingerall.com/. Les sources comme les exécutables sont proposés.

Installation

Sous UNIX, lancez configure avec l'option --with-sablot ou --with-xslt-sablot. La librairie Sablotron doit être installée là où le compilateur peut la trouver.

Assurez vous que vous avez la même librairie, compilée avec Sablotron que celle qui est fournie avec PHP. Les options de configuration : --with-expat-dir=DIR --with-iconv-dir=DIR sont disponibles pour vous aider à les spécifier correctement. Lorsque vous demandez de l'aide, mentionnez toujours ces directives, ainsi que si vous avez d'autres librairies installées sur votre système. Naturellement, fournissez les numéros de version.

Support de JavaScript E-XSLT : Si vous compilez Sablotron avec le support JavaScript, vous devez spécifier cette option : --with-sablot-js.

Note aux utilisateurs Win32 : Afin d'activer ce module dans l'environnement Windows, vous devez copier les librairies sablot.dll depuis le dossier DLL de PHP/Win32 dans le dossier système SYSTEM32 de votre machine (par exemple : C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32).

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

XSLT_SILENT (entier)

Ignore tous les rapports d'erreurs. C'est une option générique pour toutes les interfaces qui seront ajoutées plus tard.

XSLT_SAB_PARSE_PUBLIC_ENTITIES (entier)

Commande à Sablotron de faire l'analyse des entités publics. Par défaut, cette option est désactivée.

XSLT_SAB_DISABLE_ADDING_META (entier)

Ne pas ajouter le méta-tag "Content-Type" pour les générations HTML. La valeur par défaut est choisie lors de la compilation de Sablotron.

XSLT_SAB_DISABLE_STRIPPING (entier)

Arrête la suppression des espaces (pour les fichiers de données uniquement).

XSLT_SAB_IGNORE_DOC_NOT_FOUND (entier)

Considère les documents non résolus (la fonction document()) comme non-bloquant.

Table des matières
xslt_create -- Crée un nouvel analyseur XSLT
xslt_errno -- Retourne le numéro d'erreur XSLT courant
xslt_error -- Retourne le message d'erreur courant
xslt_free -- Détruit un analyseur XSLT
xslt_process -- Transforme des données XML avec XSLT
xslt_set_base -- Configure l'URI de base de toutes les transformations XSLT
xslt_set_encoding -- Configure le jeu de caractères pour l'analyse des documents XML
xslt_set_error_handler -- Configure le gestionnaire d'erreurs du processeur XSLT
xslt_set_log -- Configure le fichier d'historique pour les messages XSLT
xslt_set_sax_handler -- Modifie les gestionnaires SAX de l'analyseur XSLT
xslt_set_sax_handlers -- Configure les gestionnaires SAX qui seront appelés pour gérer les documents XML
xslt_set_scheme_handler -- Configure les gestionnaires de Scheme du processeur XSLT
xslt_set_scheme_handlers -- Configure un gestionnaire de Scheme pour un processeur XSLT

Précédent | Sommaire | Suivant
xmlrpc_set_type | Niveau supérieur | xslt_create


xslt_create

(PHP 4 >= 4.0.3)

xslt_create -- Crée un nouvel analyseur XSLT

Description

resource xslt_create ( void )

xslt_create() retourne une ressource d'analyseur XSLT. Il sera nécessaire pour les appels ultérieurs aux fonctions.

Précédent | Sommaire | Suivant
XSLT | Niveau supérieur | xslt_errno


xslt_errno

(PHP 4 >= 4.0.3)

xslt_errno -- Retourne le numéro d'erreur XSLT courant

Description

int xslt_errno ( resource xh)

xslt_errno() le numéro courant d'erreur, pour l'analyseur XSLT xh.

Précédent | Sommaire | Suivant
xslt_create | Niveau supérieur | xslt_error


xslt_error

(PHP 4 >= 4.0.3)

xslt_error -- Retourne le message d'erreur courant

Description

mixed xslt_error ( resource xh)

xslt_errno() retourne le message d'erreur courant, pour l'analyseur xh.

Exemple 1. Gestion d'erreurs avec xslt_error() et xslt_errno()

<?php

$xh = xslt_create();
$result = xslt_process($xh, 'dog.xml', 'pets.xsl');
if (!$result) {
    die(sprintf("Impossible de traiter le document XSLT [%d]: %s",
                xslt_errno($xh), xslt_error($xh)));
}

echo $result;

xslt_free($xh);
?>

Voir aussi xslt_errno().

Précédent | Sommaire | Suivant
xslt_errno | Niveau supérieur | xslt_free


xslt_free

(PHP 4 >= 4.0.3)

xslt_free -- Détruit un analyseur XSLT

Description

void xslt_free ( resource xh)

xslt_free() détruit l'analyseur XSLT xh.

Précédent | Sommaire | Suivant
xslt_error | Niveau supérieur | xslt_process


xslt_process

(PHP 4 >= 4.0.3)

xslt_process -- Transforme des données XML avec XSLT

Description

mixed xslt_process ( resource xh, string xmlcontainer, string xslcontainer [, string resultcontainer [, array arguments [, array parameters]]])

xslt_process() fait partie de la nouvelle vague de fonctions XSLT. Elle vous permet de réaliser des transformations XSLT en utilisant n'importe quelle type de source : des conteneurs. Cela se fait grâce à l'utilisation de buffers d'arguments : un concept issu de Sablotron (actuellement, c'est le seul processeur XSLT qui le supporte). Les conteneurs sont par défaut des fichiers qui contiennent le document à traiter. Le conteneur de résultat est par défaut un fichier qui recevra le document traité. Si le conteneur de résultat n'est pas fourni (l'argument vaut alors NULL), le résultat sera retourné par la fonction.

Avertissement

Cette fonction a vu ses arguments être modifié depuis la version PHP 4.0.6. Ne placez pas le code XML ou XSL dans les deuxième et troisième arguments, car cela engendrera une erreur de segmentation (segmentation fault), dans les versions de Sablotron 0.95 et plus récentes.

Les conteneurs peuvent aussi être modifiés via le tableau $arguments.

Le type le plus simple de transformation réalisable avec xslt_process() est la transformation d'un fichier XML avec un fichier XSLT, en plaçant le résultat dans un troisième fichier. Faire cela avec Sablotron est très facile...

Exemple 1. Utilisation de xslt_process() pour transformer un fichier XML avec un fichier XSL en un autre fichier XML

<?php

// Allocation du processuer XSLT
$xh = xslt_create();

// Traitement du document
if (xslt_process($xh, 'sample.xml', 'sample.xsl', 'result.xml')) {
    print "R&eacute;ussi. sample.xml a &eacute;t&eacute; transform&eacute; par sample.xsl en result.xml";
    print ", result.xml contient ceci : \n<br>\n";
    print "<pre>\n";
    readfile('result.xml');
    print "</pre>\n";
}
else {
    print "D&eacute;sol&eacute;, sample.xml n'a pu &ecirc;tre transform&eacute; par sample.xsl en ";
    print " result.xml. La raison est " . xslt_error($xh) . " et ";
    print " le code d'erreur est " . xslt_errno($xh);
}

xslt_free($xh);

?>

Même si cette fonctionnalité est très pratique, il arrive souvent qu'en environnement web, vous vouliez être capable d'afficher directement votre résultat. Par conséquent, si vous omettez le troisième argument de xslt_process(), ou que vous fournissez la valeur NULL à la place, la fonction va automatiquement retourner le résultat de la transformation XSLT, au lieu de l'écrire dans un fichier.

Exemple 2. Utilisation de xslt_process() pour transformer un fichier XML avec un fichier XSL et le placer dans une variable

<?php

// Allocation d'un analyseur XSLT
$xh = xslt_create();

// Traitement du document
$result = xslt_process($xh, 'sample.xml', 'sample.xsl');
if ($result) {
    print "R&eacute;ussi. sample.xml a &eacute;t&eacute; transform&eacute; par sample.xsl en result.xml";
    print ", result.xml contient ceci : \n<br>\n";
    print "<pre>\n";
    print $result;
    print "</pre>\n";
}
else {
    print "D&eacute;sol&eacute;, sample.xml n'a pu &ecirc;tre transform&eacute; par sample.xsl en ";
    print " result.xml. La raison est " . xslt_error($xh) . " et ";
    print " le code d'erreur est " . xslt_errno($xh);
}

xslt_free($xh);

?>

Les deux cas de transformations XSLT ci-dessus sont les cas les plus simples, quand on parle de transformation XSLT, et ce sont les cas les plus courants, mais il existe des situations où vous obtenez vos données XML et XSLT de sources externes comme des sockets ou des bases de données. Dans ces cas, vous avez déjà les données dans une variable, et en mode de production, écrire ces données dans des fichiers serait trop inefficace. C'est là ou la syntaxe de buffers d'arguments de XSLT prend la relève. Au lieu de fichier en terme d'arguments XML et XSLT, vous pouvez passer des buffers d'arguments, qui sont alors substitués en valeur au cinquième argument de la fonction xslt_process(). L'exemple suivant vous montre comment traiter du XML et du XSLT issus de variable, et de retrouver le résultat dans une troisième variable.

Exemple 3. Utilisation de xslt_process() pour transformer une variable XML avec une autre variable XSL et placer le résultat dans une variable

<?php
// $xml et $xsl contiennent des donn&eacute;es XML et XSL

$arguments = array(
     '/_xml' => $xml,
     '/_xsl' => $xsl
);

// Allocation d'un analyseur XSLT
$xh = xslt_create();

// Traitement du document
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
if ($result) {
    print "R&eacute;ussi. sample.xml a &eacute;t&eacute; transform&eacute; par sample.xsl en result.xml";
    print ", result.xml contient ceci : \n<br>\n";
    print "<pre>\n";
    print $result;
    print "</pre>\n";
}
else {
    print "D&eacute;sol&eacute;, sample.xml n'a pu &ecirc;tre transform&eacute; par sample.xsl en ";
    print " result.xml. La raison est " . xslt_error($xh) . " et ";
    print " le code d'erreur est " . xslt_errno($xh);
}
xslt_free($xh);
?>

Finalement, le dernier argument de xslt_process() représente un tableau de tous les paramètres que vous souhaitez passer au document XSLT. Ces paramètres sont accessibles depuis le fichier XSL en utilisant l'instruction <xsl:param name="parameter_name">. Les paramètres doivent être encodés au format UTF-8 et leur valeur sera interprétée comme une chaîne de caractères par l'analyseur Sablotron. En d'autres termes, vous ne pouvez pas passer des groupes de noeuds (node-sets) comme paramètre au document XSLT.

Note : Notez que file:// est nécessaire au début des chemin si vous utilisez Windows.

Précédent | Sommaire | Suivant
xslt_free | Niveau supérieur | xslt_set_base


xslt_set_base

(PHP 4 >= 4.0.5)

xslt_set_base -- Configure l'URI de base de toutes les transformations XSLT

Description

void xslt_set_base ( resource xh, string uri)

xslt_set_base() configure l'URI de base de toutes les transformations XSLT. L'URI est utilisée avec les instructions Xpath pour résoudre les commandes document(), et les autres commandes qui ont des accès externes.

Note : Notez bien que file:// est nécessaire dans tous les chemins que vous utiliserez, si vous êtes sous Windows.

Précédent | Sommaire | Suivant
xslt_process | Niveau supérieur | xslt_set_encoding


xslt_set_encoding

(PHP 4 >= 4.0.5)

xslt_set_encoding -- Configure le jeu de caractères pour l'analyse des documents XML

Description

void xslt_set_encoding ( resource xh, string encoding)

xslt_set_encoding() configure le jeu de caractères pour l'analyse des documents XML. Lorsque vous utilisez Sablotron, cette option est uniquement disponible lorsque vous compilez Sablotron avec le support des jeux de caractères.

Précédent | Sommaire | Suivant
xslt_set_base | Niveau supérieur | xslt_set_error_handler


xslt_set_error_handler

(PHP 4 >= 4.0.4)

xslt_set_error_handler -- Configure le gestionnaire d'erreurs du processeur XSLT

Description

void xslt_set_error_handler ( resource xh, mixed handler)

xslt_set_error_handler() configure le gestionnaire d'erreur du processeur XSLT identifié par xh. Le gestionnaire sera appelé à chaque fois qu'une erreur survient durant les transformations XSLT.

Précédent | Sommaire | Suivant
xslt_set_encoding | Niveau supérieur | xslt_set_log


xslt_set_log

(PHP 4 >= 4.0.6)

xslt_set_log -- Configure le fichier d'historique pour les messages XSLT

Description

void xslt_set_log ( resource xh, mixed log)

xh

Une ressource d'analyseur XSLT.

log

Ce paramètre doit être un booléen, qui active ou non l'enregistrement dans le fichier d'historique.

xslt_set_log() vous permet de configurer le fichier dans lequel vous voulez enregistrer les messages XSLT. Les messages XSLT sont différents des messages d'erreurs, car les messages ne sont pas des messages d'erreurs, mais plutôt des descriptions de l'état de l'analyseur. Ils sont très pratiques pour déboguer du code XSLT.

Par défaut, l'enregistrement dans l'historique est désactivé. Afin de l'activer, vous devez appeler xslt_set_log() avec le booléen qui active l'enregistrement, puis, si vous le voulez, indiquer un fichier de débogage. Il faut alors passer un nom de fichier :

Exemple 1. Utilisation de l'enregistrement de messages XSLT

<?php

$xh = xslt_create();
xslt_set_log($xh, true);
xslt_set_log($xh, getcwd() . 'mon_fichier.log');

$result = xslt_process($xh, 'chien.xml', 'animal.xsl');
echo $result;

xslt_free($xh);
?>

Note : Notez bien que file:// est nécessaire dans tous les chemins que vous utiliserez, si vous êtes sous Windows.

Précédent | Sommaire | Suivant
xslt_set_error_handler | Niveau supérieur | xslt_set_sax_handler


xslt_set_sax_handler

(4.0.3 - 4.0.6 only)

xslt_set_sax_handler -- Modifie les gestionnaires SAX de l'analyseur XSLT

Description

void xslt_set_sax_handler ( resource xh, array handlers)

xslt_set_sax_handler() remplace les gestionnaires SAX de l'analyseur XSLT xh par handlers. Les gestionnaires SAX sont représentés par un tableau à deux dimensions, avec le format suivant. Les éléments du premier niveau sont optionnels.

Exemple 1. Format des gestionnaires avec xslt_set_sax_handler()

array(
[document] =>
    array(
        start document handler,
        end document handler
    ),
[element] =>
    array(
        start element handler,
        end element handler
    ),
[namespace] =>
    array(
        start namespace handler,
        end namespace handler
    ),
[comment] => comment handler,
[pi] => processing instruction handler,
[character] => character data handler
)

Précédent | Sommaire | Suivant
xslt_set_log | Niveau supérieur | xslt_set_sax_handlers


xslt_set_sax_handlers

(PHP 4 >= 4.0.6)

xslt_set_sax_handlers -- Configure les gestionnaires SAX qui seront appelés pour gérer les documents XML

Description

void xslt_set_sax_handlers ( resource processor, array handlers)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xslt_set_sax_handler | Niveau supérieur | xslt_set_scheme_handler


xslt_set_scheme_handler

(4.0.5 - 4.0.6 only)

xslt_set_scheme_handler -- Configure les gestionnaires de Scheme du processeur XSLT

Description

void xslt_set_scheme_handler ( resource xh, array handlers)

xslt_set_scheme_handler() configure les gestionnaires de Scheme, pour le processeur XSLT identifié par sa ressource xh. Les gestionnaires Scheme doivent être fournis sous forme de tableau (tous les éléments sont optionnels) :

Exemple 1. Configuration des gestionnaires de Scheme pour XSLT

array(
[get_all] => get all handler,
[open] => open handler,
[get] => get handler,
[put] => put handler,
[close] => close handler
)

Précédent | Sommaire | Suivant
xslt_set_sax_handlers | Niveau supérieur | xslt_set_scheme_handlers


xslt_set_scheme_handlers

(PHP 4 >= 4.0.6)

xslt_set_scheme_handlers -- Configure un gestionnaire de Scheme pour un processeur XSLT

Description

void xslt_set_scheme_handlers ( resource processor, array handlers)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
xslt_set_scheme_handler | Niveau supérieur | YAZ


YAZ

Manuel PHP
Précédent Suivant

CXIV. YAZ

Introduction

Cette extension offre à PHP l'interface avec les produits YAZ, qui implémentent le protocole Z39.50. Avec cette extension, vous pouvez facilement implémenter un client Z39.50 qui analyse ou scanne des serveurs Z39.50 en parallèle.

Le module masque l'essentiel de la complexité de Z39.50, ce qui le rend très facile à utiliser. Il supporte les connexions peristantes de manière similaire à celles supportées par les serveurs SQL : cela signifie qu'une connexion est partagée entre plusieurs scripts PHP, ce qui évite les opérations de connexions.

YAZ est disponible sur http://www.indexdata.dk/yaz/. Vous pouvez trouver des informations, des scripts d'exemples, etc. pour cette extension sur http://www.indexdata.dk/phpyaz/.

Installation

Compilez YAZ (ANSI/NISO Z39.50 support) et installez-le. Compilez PHP avec vos modules et ajoutez l'option --with-yaz[=DIR]. Les instructions sont :

Exemple 1. Installation de YAZ

gunzip -c php-4.3.X.tar.gz|tar xf -
gunzip -c yaz-1.9.Y.tar.gz|tar xf -
cd yaz-1.9.Y
./configure --prefix=/usr
make
make install
cd ../php-4.3.X.
./configure --with-yaz=/usr/bin
make
make install

Si vous utilisez YAZ sous forme d'extension partagée, ajoutez (ou décommentez) la ligne suivante dans le fichier php.ini sous Unix:
extension=php_yaz.so
, et sous Windows :
extension=php_yaz.dll

Sous Windows, php_yaz.dll dépend de yaz.dll. Vous trouverez la librairie yaz.dll dans un sous dossier du dossier dlls de l'archive Zip Win32. Copiez yaz.dll dans un dossier de votre variable d'environnement PATH (c:\winnt\system32 ou c:\windows\system32).

Avertissement

L'extension IMAP ne peut être utilisée simultanément avec l'extension recode ou l'extension YAZ. Ceci est dû au fait que ces deux librairies utilisent un symbole interne commun.

Note : Le problème ci-dessus est résolu en version 2.0 de YAZ.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
yaz.max_links | "100" | PHP_INI_ALL
yaz.log_file | "" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

PHP/YAZ conserve les connexions aux serveurs. Un entier positif représente l'ID d'une connexion particulière.

Le script ci-dessous montre comment effectuer une recherche parallèle. Lorsqu'il est appelé sans paramètres, ce script affiche la requête. Sinon, il effectue la recherche sur les serveurs.

Exemple 2. Recherche parallèle utilisant YAZ

<?php
$num_hosts = count($host);
if (empty($term) || count($host) == 0) {
    echo '<form method="get">
    <input type="checkbox"
    name="host[]" value="bagel.indexdata.dk/gils">
        GILS test
    <input type="checkbox"
    name="host[]" value="localhost:9999/Default">
        local test
    <input type="checkbox" checked="1"
    name="host[]" value="z3950.bell-labs.com/books">
        BELL Labs Library
    <br>
    RPN Query:
    <input type="text" size="30" name="term">
    <input type="submit" name="action" value="Search">
    ';
} else {
    echo 'Vous avez recherch&eacute; '.htmlspecialchars($term).'<br>';
    for ($i = 0; $i > $num_hosts; $i++) {
        $id[] = yaz_connect($host[$i]);
        yaz_syntax($id[$i],"sutrs");
        yaz_search($id[$i],"rpn",$term);
    }
    yaz_wait();
    for ($i = 0; $i < $num_hosts; $i++) {
        echo '<hr>'.$host[$i].":";
        $error = yaz_error($id[$i]);
        if (!empty($error)) {
            echo "Erreur: $error";
        } else {
            $hits = yaz_hits($id[$i]);
            echo "Nombre de r&eacute;sultats : $hits";
        }
        echo '<dl>';
        for ($p = 1; $p <= 10; $p++) {
            $rec = yaz_record($id[$i],$p,"string");
            if (empty($rec)) continue;
            echo "<dt><B>$p</B></dt><dd>";
            nl2br($rec);
            echo "</dd>";
        }
        echo '</dl>';
    }
}
?>

Table des matières
yaz_addinfo -- Retourne plus de détails après une erreur
yaz_ccl_conf -- Configure l'analyseur CCL
yaz_ccl_parse -- Appelle l'analyseur CCL
yaz_close -- Ferme une connexion YAZ
yaz_connect -- Prépare une connexion à un hôte YAZ
yaz_database -- Spécifie la base d'une session YAZ
yaz_element -- Spécifie le type d'éléments YAZ à lire
yaz_errno -- Retourne le numéro d'erreur
yaz_error -- Retourne une description de l'erreur
yaz_get_option -- Retourne la valeur d'une option de connexion YAZ
yaz_hits -- Retourne le nombre de résultats de la dernière recherche
yaz_itemorder -- Prépare une requête Z39.50 Item Order avec le package ILL-Request
yaz_present -- Prépare à la lecture (Z39.50 present).
yaz_range -- Spécifie le nombre maximal de résultat à lire
yaz_record -- Retourne un résultat
yaz_scan_result -- Retourne le résultat d'un scan
yaz_scan -- Prépare un scan
yaz_schema -- Spécifie le schema de lecture
yaz_search -- Prépare une recherche
yaz_set_option -- Modifie une ou plusieurs options de connexion YAZ
yaz_sort -- Configure les critères de tri
yaz_syntax -- Spécifie la syntaxe de lecture des lignes
yaz_wait -- Attend l'exécution d'une requête

Précédent | Sommaire | Suivant
xslt_set_scheme_handlers | Niveau supérieur | yaz_addinfo


yaz_addinfo

(PHP 4 >= 4.0.1)

yaz_addinfo -- Retourne plus de détails après une erreur

Description

string yaz_addinfo ( resource id)

yaz_addinfo() retourne plus de détails après la dernière erreur survenue. Une chaîne vide est retournée si la dernière opération a été réussie, ou bien si aucune autre information n'est disponible.

Voir aussi yaz_error().

Précédent | Sommaire | Suivant
YAZ | Niveau supérieur | yaz_ccl_conf


yaz_ccl_conf

(PHP 4 >= 4.0.5)

yaz_ccl_conf -- Configure l'analyseur CCL

Description

int yaz_ccl_conf ( resource id, array config)

yaz_ccl_conf() configure l'analyseur CCL de requête de l'hôte id, avec les définitions de points d'accès (CCL qualifiers) et leur équivalent en RPN. Pour cabler une requête spécifique vers un appel RPN, utilisez yaz_ccl_parse(). Chaque index du tableau config est un nom de champ CCL et la valeur correspondante contient une chaîne spécifiant le code RPN. Ce code est une séquence de paires "attribut-type, attribute-valeur". Les "attribut-type" et "attribut-valeur" sont séparés par le signe égal (=). Chaque paire est séparée par un espace ("=").

Exemple 1. Exemple de configuration CCL

Dans l'exemple ci-dessous, l'analyseur CCL est configuré pour supporter trois champs CCL : ti, au et isbn. Chaque champ correspond à son équivalent BIB-1. On suppose que chaque variable $id est un hôte de destination.

<?php
  $field["ti"] = "1=4";
  $field["au"] = "1=1";
  $field["isbn"] = "1=7";
  yaz_ccl_conf($id,$field);
?>

Précédent | Sommaire | Suivant
yaz_addinfo | Niveau supérieur | yaz_ccl_parse


yaz_ccl_parse

(PHP 4 >= 4.0.5)

yaz_ccl_parse -- Appelle l'analyseur CCL

Description

bool yaz_ccl_parse ( resource id, string query, array & result)

yaz_ccl_parse() appelle l'analyseur CCL. Il convertit une requête CCL FIND en une requête RPN qui peut être passée à yaz_search() pour effectuer une recherche. Pour définir un champ CCL valide, utilisez la fonction yaz_ccl_conf() avant celle-ci. Si la requête query a pu être convertie en RPN, yaz_ccl_parse() retourne TRUE, et l'index rpn du tableau result contient une requête RPN valide. Si la requête n'a pas pu être convertie, (pour n'importe quelle raison, comme syntaxe invalide, champ inconnu...), yaz_ccl_parse() retourne FALSE. Trois index sont alors créés dans le tableau de résultat : errorcode (code d'erreur CCL, un entier), errorstring (message d'erreur CCL), et errorpos position estimée de l'erreur dans la requête (entier, position en nombre de caractères).

Exemple 1. Configuration CCL

Dans l'exemple ci-dessous, l'analyseur CCL est configuré pour supporter trois champs CCL : ti, au et isbn. Chaque champ correspond à son équivalent BIB-1. On suppose que la variable $id est la resource de connexion.
<?php
  $fields["ti"] = "1=4";
  $fields["au"] = "1=1";
  $fields["isbn"] = "1=7";
  yaz_ccl_conf($id,$fields);
?>

Précédent | Sommaire | Suivant
yaz_ccl_conf | Niveau supérieur | yaz_close


yaz_close

(PHP 4 >= 4.0.1)

yaz_close -- Ferme une connexion YAZ

Description

bool yaz_close ( resource id)

yaz_close() ferme une connexion à un hôte YAZ. L'application ne pourra plus utiliser l'identifiant de connexion id. id est un identifiant d'hôte, retourné par yaz_connect().

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
yaz_ccl_parse | Niveau supérieur | yaz_connect


yaz_connect

(PHP 4 >= 4.0.1)

yaz_connect -- Prépare une connexion à un hôte YAZ

Description

resource yaz_connect ( string zurl [, mixed options])

yaz_connect() retourne un identifiant positif en cas de succès, et FALSEsinon.

yaz_connect() prépare une connexion à un serveur Z39.50. zurl est de la forme "host[:port][/database]". Si port est omis, 210 est utilisé. Si database est omis, default est utilisé. yaz_connect() n'est pas bloquante, et ne tente pas d'établir une socket. En fait, elle ne fait que préparer la connexion pour exécution ultérieure par yaz_wait().

Si le second argument options est fourni sous la forme d'une chaîne, il est traité comme une chaîne d'authentification Z39.50 V2 (OpenAuth).

Si options est fourni sous la forme d'un tableau, le contenu du tableau servira d'options. Notez que ce tableau d'options est supporté depuis PHP 4.1.0.

Options yaz_connect()

user

Nom d'utilisateur pour l'authentification.

group

Groupe d'authentification.

password

Mot de passe d'authentification.

cookie

Cookie de session (proxy YAZ).

proxy

Proxy de connexion (proxy YAZ).

persistent

Un booléen. Si il vaut TRUE la connexion sera persistante; Si il vaut FALSE, la connexion ne le sera pas. Par défaut, les connexions sont persistantes.

piggyback

Un booléen. Si il vaut TRUE, piggyback est activé pour les recherches. Si il vaut FALSE, piggyback est désactivé. Par défaut, piggyback est activé. Activer piggyback est plus efficace, et généralement, cela économise des aller-retours sur le réseau pour les premières lectures de résultat. Mais peu de serveurs Z39.50 supportent piggyback, ou bien ils ignorent ce jeu de noms. Pour ceux là, il faut que piggyback soit désactivé.

charset

Une chaîne qui spécifie un jeu de caractères à utiliser pour les négotations de langues et jeux de caractères Z39.50. Utilisez des chaînes comme : ISO-8859-1, UTF-8, UTF-16.

La plupart des cibles Z39.50 ne supportent pas cette fonctionnalité (et elle est donc ignorée). Plusieurs cibles utilisent l'encodage ISO-8859-1 pour les requêtes et les messages. Les enregistrements MARC21/USMARC ne sont pas affectés par cette configuration.

Note : L'utilisation d'un proxy améliore souvent les performances. Un proxy Z39.50 fait partie du package libre YAZ++.

Précédent | Sommaire | Suivant
yaz_close | Niveau supérieur | yaz_database


yaz_database

(PHP 4 >= 4.0.6)

yaz_database -- Spécifie la base d'une session YAZ

Description

bool yaz_database ( resource id, string databases)

yaz_database() spécifie databases, la ou les bases utilisées lors des recherches, lectures, etc, en remplaçant celles spécifiées lors de l'appel à yaz_connect(). Pour indiquer plusieurs bases de données, séparez les noms par des +.

yaz_database() vous permet d'utiliser différents jeux de bases durant une session.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
yaz_connect | Niveau supérieur | yaz_element


yaz_element

(PHP 4 >= 4.0.1)

yaz_element -- Spécifie le type d'éléments YAZ à lire

Description

bool yaz_element ( resource id, string elementset)

yaz_element() est à utiliser en conjonction avec yaz_search() et yaz_present() pour spécifier le type d'éléments à lire. La majorité des serveurs supporte F (full, tous), et B (brief, bref).

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
yaz_database | Niveau supérieur | yaz_errno


yaz_errno

(PHP 4 >= 4.0.1)

yaz_errno -- Retourne le numéro d'erreur

Description

int yaz_errno ( resource id)

yaz_errno() retourne le numéro d'erreur de la dernière requête. Une valeur positive est retournée si le serveur a retourné un diagnostic. La valeur 0 est retournée si aucune erreur n'est survenue. Une valeur négative indique une erreur sans diagnostic (connexion perdue,...).

yaz_errno() doit être appelée après chaque requête. (après la fin de yaz_wait()), pour savoir si la transaction a réussi ou échoué.

Précédent | Sommaire | Suivant
yaz_element | Niveau supérieur | yaz_error


yaz_error

(PHP 4 >= 4.0.1)

yaz_error -- Retourne une description de l'erreur

Description

string yaz_error ( resource id)

yaz_error() retourne un message d'erreur pour la dernière requête. Une chaîne vide est retournée si la dernière requête a réussi.

yaz_error() retourne un message en anglais, qui correspond au numéro d'erreur retourné par yaz_errno().

Précédent | Sommaire | Suivant
yaz_errno | Niveau supérieur | yaz_get_option


yaz_get_option

(PHP 5 CVS only)

yaz_get_option -- Retourne la valeur d'une option de connexion YAZ

Description

string yaz_get_option ( resource id, string name)

yaz_get_option retourne la valeur de l'option name pour la connexion YAZ name. Si cette option n'est pas définie, une chaîne vide est retournée.

Voyez la description de yaz_set_option() pour connaître les options disponibles.

Précédent | Sommaire | Suivant
yaz_error | Niveau supérieur | yaz_hits


yaz_hits

(PHP 4 >= 4.0.1)

yaz_hits -- Retourne le nombre de résultats de la dernière recherche

Description

int yaz_hits ( resource id)

yaz_hits() retourne le nombre de résultats de la dernière recherche.

Précédent | Sommaire | Suivant
yaz_get_option | Niveau supérieur | yaz_itemorder


yaz_itemorder

(PHP 4 >= 4.0.5)

yaz_itemorder -- Prépare une requête Z39.50 Item Order avec le package ILL-Request

Description

int yaz_itemorder ( resource id, array args)

yaz_itemorder() prépare une requête de type "Extended Services" en utilisant le "Profile" avec "Use of Z39.50 Item Order Extended Service to Transport ILL (Profile/1)". Reportez-vous ici ou aux spécifications. Le paramètre args doit être un tableau associatif, contenant les informations "Item Order" à envoyer. L'index du tableau est le nom ASN.1 correspondant au "tag path". Par exemple, le numéro ISBN sous l'Item-ID est la clé item-id,ISBN.

Les paramètres de ILL-Request sont :

protocol-version-num
transaction-id,initial-requester-id,person-or-institution-symbol,person
transaction-id,initial-requester-id,person-or-institution-symbol,institution
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
transaction-id,transaction-group-qualifier
transaction-id,transaction-qualifier
transaction-id,sub-transaction-qualifier
service-date-time,this,date
service-date-time,this,time
service-date-time,original,date
service-date-time,original,time
requester-id,person-or-institution-symbol,person
requester-id,person-or-institution-symbol,institution
requester-id,name-of-person-or-institution,name-of-person
requester-id,name-of-person-or-institution,name-of-institution
responder-id,person-or-institution-symbol,person
responder-id,person-or-institution-symbol,institution
responder-id,name-of-person-or-institution,name-of-person
responder-id,name-of-person-or-institution,name-of-institution
transaction-type
delivery-address,postal-address,name-of-person-or-institution,name-of-person
delivery-address,postal-address,name-of-person-or-institution,name-of-institution
delivery-address,postal-address,extended-postal-delivery-address
delivery-address,postal-address,street-and-number
delivery-address,postal-address,post-office-box
delivery-address,postal-address,city
delivery-address,postal-address,region
delivery-address,postal-address,country
delivery-address,postal-address,postal-code
delivery-address,electronic-address,telecom-service-identifier
delivery-address,electronic-address,telecom-service-addreess
billing-address,postal-address,name-of-person-or-institution,name-of-person
billing-address,postal-address,name-of-person-or-institution,name-of-institution
billing-address,postal-address,extended-postal-delivery-address
billing-address,postal-address,street-and-number
billing-address,postal-address,post-office-box
billing-address,postal-address,city
billing-address,postal-address,region
billing-address,postal-address,country
billing-address,postal-address,postal-code
billing-address,electronic-address,telecom-service-identifier
billing-address,electronic-address,telecom-service-addreess
ill-service-type
requester-optional-messages,can-send-RECEIVED
requester-optional-messages,can-send-RETURNED
requester-optional-messages,requester-SHIPPED
requester-optional-messages,requester-CHECKED-IN
search-type,level-of-service
search-type,need-before-date
search-type,expiry-date
search-type,expiry-flag
place-on-hold
client-id,client-name
client-id,client-status
client-id,client-identifier
item-id,item-type
item-id,call-number
item-id,author
item-id,title
item-id,sub-title
item-id,sponsoring-body
item-id,place-of-publication
item-id,publisher
item-id,series-title-number
item-id,volume-issue
item-id,edition
item-id,publication-date
item-id,publication-date-of-component
item-id,author-of-article
item-id,title-of-article
item-id,pagination
item-id,ISBN
item-id,ISSN
item-id,additional-no-letters
item-id,verification-reference-source
copyright-complicance
retry-flag
forward-flag
requester-note
forward-note

Il y a quelques paramètres du package Extended Services Request et ItemOrder :

package-name
user-id
contact-name
contact-phone
contact-email
itemorder-item

Précédent | Sommaire | Suivant
yaz_hits | Niveau supérieur | yaz_present


yaz_present

(PHP 4 >= 4.0.5)

yaz_present -- Prépare à la lecture (Z39.50 present).

Description

int yaz_present ( resource id)

yaz_present() prépare PHP à la lecture des résultats, après une recherche. yaz_range() doit être appelée avant celle-ci pour spécifier la plage de résultats à lire.

Précédent | Sommaire | Suivant
yaz_itemorder | Niveau supérieur | yaz_range


yaz_range

(PHP 4 >= 4.0.1)

yaz_range -- Spécifie le nombre maximal de résultat à lire

Description

bool yaz_range ( resource id, int start, int number)

yaz_range() est utilisée conjointement à yaz_search(), pour spécifier le nombre maximal number de résultats à lire, ainsi que la position de début de lecture avec start. Si yaz_range() n'est pas utilisée, start vaudra 1 et number vaudra 10.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Précédent | Sommaire | Suivant
yaz_present | Niveau supérieur | yaz_record


yaz_record

(PHP 4 >= 4.0.1)

yaz_record -- Retourne un résultat

Description

string yaz_record ( resource id, int pos, string type)

yaz_record() retourne un résultat à la position pos, ou une chaîicirc;ne vide si aucun résultat n'est disponible à la position pos.

yaz_record() recherche une ligne dans le résultat, à la position spécifiée. Si aucune ligne n'existe à la position donnée, une chaîne vide est retournée. L'argument type spécifie la forme du résultat retourné : si type vaut "string", la ligne est retournée sous la forme d'une chaîne, prête à l'affichage. Si type vaut "array", la ligne sera retournée sous la forme d'un tableau structuré.

Précédent | Sommaire | Suivant
yaz_range | Niveau supérieur | yaz_scan_result


yaz_scan_result

(PHP 4 >= 4.0.5)

yaz_scan_result -- Retourne le résultat d'un scan

Description

array yaz_scan_result ( resource id [, array & result])

yaz_scan_result() retourne un tableau contenant les termes reçus de l'hôte id, lors de la dernière requête de scan. Le tableau commence à l'index 0. Chaque valeur est une paire, où le premier élément est le terme, et le second est un compte de résultat. Si result est fourni, il sera rempli avec les informations générales de la requête de scan : number (nombre d'entrée retournées), stepsize (taille du pas), position (position du terme), status (statut du Scan).

Précédent | Sommaire | Suivant
yaz_record | Niveau supérieur | yaz_scan


yaz_scan

(PHP 4 >= 4.0.5)

yaz_scan -- Prépare un scan

Description

int yaz_scan ( resource id, string type, string startterm [, array flags])

yaz_scan() prépare une requête "Z39.50 Scan Request". id spécifie l'hôte cible. Le point de départ est donné avec startterm. La forme de spécification du point de départ est donné par type. Actuellement, le type rpn est supporté. Le paramètre optionnel flags donne des informations supplémentaires pour contrôler le comportement de la requête de scan. Actuellement, trois index sont lus dans ce paramètre : number (nombre de termes requis), position (position préférée du terme) et stepSize (taille du pas préférée). Pour réellement envoyer la requête de recherche à l'hôte, et recevoir la réponse, yaz_wait() doit être appelée. A la fin de yaz_wait(), yaz_error() et yaz_scan_result() auront les résultats.

La syntaxe de startterm est similaire aux requêtes RPN, décrites dans yaz_search(). startterm est constitué de zéro ou plus spécifications, avec les opérateurs @attr, suivi par exactement un token.

Exemple 1. Fonction PHP qui scanne les titres sur un serveur YAZ

<?php
  function scan_titles($id, $starterm) {
    yaz_scan($id,"rpn", "@attr 1=4 " . $starterm);
    yaz_wait();
    $errno = yaz_errno($id);
    if ($errno == 0) {
      $ar = yaz_scan_result($id,&$options);
      echo 'Scan r&eacute;ussi; ';
      $ar = yaz_scan_result($id, &$options);
      while(list($key,$val)=each($options)) {
         echo "$key = $val &nbsp;";
      }
      echo '<br><table><tr><td>';
      while(list($key,list($k, $term, $tcount))=each($ar)) {
        if (empty($k)) continue;
        echo "<tr><td>$term</td><td>";
        echo $tcount;
        echo "</td></tr>";
      }
      echo '</table>';
    } else {
      echo "Echec du scan. Erreur: " . yaz_error($id) . "<br />";
    }
  }
?>

Précédent | Sommaire | Suivant
yaz_scan_result | Niveau supérieur | yaz_schema


yaz_schema

(PHP 4 >= 4.2.0)

yaz_schema -- Spécifie le schema de lecture

Description

int yaz_schema ( resource id, string schema)

yaz_schema spécifie le schema de lecture schema pour la connexion id. Le schéma doit être spécifié sous la forme d'un OID (Object Identifier), au format points (comme par exemple 1.2.840.10003.13.4) ou sous la forme d'un schéma enregistré : GILS-schema, Holdings, Zthes, etc. Cette fonction doit être appelée avant yaz_search() et yaz_present().

Précédent | Sommaire | Suivant
yaz_scan | Niveau supérieur | yaz_search


yaz_search

(PHP 4 >= 4.0.1)

yaz_search -- Prépare une recherche

Description

int yaz_search ( resource id, string type, string query)

yaz_search() prépare une recherche sur le serveur identifié par id. type représente le type de requête : seul RPN est supporté actuellement, et dans ce cas, le troisième argument est un préfixe de notation de requête utilisé par YAZ. Comme pour yaz_connect(), yaz_search() n'est pas bloquante, et ne fait que préparer la recherche pour exécution ultérieure, avec yaz_wait().

Requêtes RPN

Les requêtes RPN sont des représentation textuelles des requêtes de type Type-1, comme définit dans le standard Z39.50. Cependant, dans la représentation textuelle utilisée par YAZ, une notation à préfixage est utilisée, c'est-à-dire que l'opérateur précède l'opérande. La chaîne de requête est une séquence de mots réservés, où les espaces sont ignorés, à moins qu'ils n'aient été mis entre guillemets doubles. Les mots réservés qui commencent par un arobase (@) sont considérés comme des opérateurs et traités comme tels.

Tableau 1. Opérateurs RPN

Syntaxe | Description
@and query1 query2 | intersection des requêtes query1 et query2
@or query1 query2 | union des requêtes query1 et query2
@not query1 query2 | requêtes "query1 et non(query2)"
@set name | nomme le résultat
@attrset set query | spécifie le jeu d'attributs de la requête. Cette construction n'est autorisée qu'une seule fois, au début d'une requête.
@attr set type=value query | Applique les attributs à une requête. Le type et la valeur sont des entiers indiquant les types et valeurs des attributs, dans cet ordre. Le jeu, si fourni, spécifie le jeu d'attributs utilisé.

Exemple 1. Exemples de requêtes

Vous pouvez rechercher des termes simples comme
ordinateur
qui identifieront les documents où "ordinateur" apparait. Aucun attribut n'est spécifié.

La requête
"knuth donald"
recherche les documents où "knuth donald" apparait (en supposant que le serveur supporte la recherche par phrase).

Cette requête applique deux attributs à la phrase recherchée :
@attr 1=1003 @attr 4=1 "knuth donald"
Le premier attribut est de type 1 (Bib-1), et sa valeur est 1003 (Auteur). Le second attribut est de type 4 (structure), valeur 1 (phrase), ce qui fait que la requête recherche les documents dont Donald Knuth est l'auteur.

Cette requête
@and @or a b @not @or c d e
sera traduite en notation infix comme ceci : (a or b) and ((c or d) not e).

Un autre exemple plus complexe :
@attrset gils @and @attr 1=4 art @attr 1=2000 company
. La requête utilise l'ensemble de sous attributs GILS. La requête recherche les documents où le mot art apparaît dans le titre (GILS,BIB-1) et dont la société (company) apparaît comme distributeur (GILS).

Vous pouvez trouver plus d'informations sur les requêtes et attributs sur le site de Z39.50 Maintenance Agency.

Note : Si vous préférez une notation plus conviviale, utilisez l'analyseur CCL : yaz_ccl_conf() et yaz_ccl_parse().

Précédent | Sommaire | Suivant
yaz_schema | Niveau supérieur | yaz_set_option


yaz_set_option

(PHP 5 CVS only)

yaz_set_option -- Modifie une ou plusieurs options de connexion YAZ

Description

string yaz_set_option ( resource id, string name, string value)

yaz_set_option modifie l'option name, en lui affectant la nouvelle valeur value, pour la connexion au serveur représentée par id.

Tableau 1. Options de connexion PYP/YAZ

Nom | Description
implementationName | nom de l'implémentation du serveur
implementationVersion | version de l'implémentation du serveur
implementationId | ID de l'implémentation du serveur
schema | schema de lecture. Par défaut, aucun schéma n'est utilisé. Modifier cette option est l'équivalent de l'utilisation de la fonction yaz_schema()
preferredRecordSyntax | Syntaxe des enregistrements en lecture. Par défaut, il n'y a pas de syntaxe. Modifier cette option est l'équivalent de l'utilisation de la fonction yaz_syntax()
start | Décalage du premier enregistrement à lire, via la fonction yaz_search() ou yaz_present(). Les enregistrements sont numérotés à partir de 0. Modifier cette option, en combinaison avec l'option count, est l'équivalent de l'utilisation de la fonction yaz_range(), hormis le fait que les enregistrements sont numérotés à partir de 1 avec yaz_range()
count | Nombre maximal d'enregistrements à lire via yaz_search() et yaz_present().
elementSetName | element-set-name en lecture. Modifier cette option est l'équivalent de l'utilisation de la fonction yaz_element().

Précédent | Sommaire | Suivant
yaz_search | Niveau supérieur | yaz_sort


yaz_sort

(PHP 4 >= 4.1.0)

yaz_sort -- Configure les critères de tri

Description

int yaz_sort ( resource id, string criteria)

yaz_sort permet de configurer les critères de tri, et d'activer le tri Z39.50. Utilisez cette fonction conjointement avec yaz_search() ou yaz_present(). Utiliser cette fonction seule n'a aucun effet. Si elle est utilisée conjointement avec yaz_search(), une commande Z39.50 Sort sera envoyée après chaque retour de recherche, et avant que les résultats ne soient lus avec Z39.50 Present. Le paramètre criteria prend la forme suivante :

field1 flags1 field2 flags2 ...

où field1 spécifie l'attribut primaire de tri, field2 le second, etc... Le champ spécifie soit une combinaison d'attributs numériques, constituée de paire type=valeur, séparée par des virgules (e.g. 1=4,2=1) , soit le champ spécifie un critère en chaîne de caractères (e.g. title). Les options (flags) sont des séquences de caractères, choisis parmis les valeurs suivantes. Ces caractères ne peuvent être séparés par des espaces :

Options de tri

a

Tri ascendant

d

Tri descendant

i

Tri insensible à la casse

s

Tri sensible à la casse

Exemple 1. Critères de tri

Pour effectuer des tris avec l'attribut Bib1 du champ title, de manière insensible à la casse, vous pouvez utiliser le critère suivant :
1=4 ia

Si le second critère de tri doit être l'auteur, en tenant compte de la casse, et dans l'ordre alphabétique, vous pouvez utiliser :
1=4 ia 1=1003 sa

Précédent | Sommaire | Suivant
yaz_set_option | Niveau supérieur | yaz_syntax


yaz_syntax

(PHP 4 >= 4.0.1)

yaz_syntax -- Spécifie la syntaxe de lecture des lignes

Description

int yaz_syntax ( resource id, string syntax)

yaz_syntax() est utilisée conjointement avec yaz_search() pour spécifier la méthode de lecture des lignes. La syntaxe est spécifiée comme un OID (Identifiant d'Objet), en notation brute, séparée par des points (i.e. 1.2.840.10003.5.10), ou bien avec une des valeurs prédéfinies : sutrs, usmarc, grs1, xml, etc... yaz_syntax() doit être utilisée en conjonction avec yaz_search() et yaz_present() pour spécifier la méthode de lecture des résultats.

Précédent | Sommaire | Suivant
yaz_sort | Niveau supérieur | yaz_wait


yaz_wait

(PHP 4 >= 4.0.1)

yaz_wait -- Attend l'exécution d'une requête

Description

int yaz_wait ( [array options])

yaz_wait() exécute les requêtes préparée par les fonctions yaz_search(), yaz_present(), yaz_scan() et yaz_itemorder(). yaz_wait() se termine lorsque tous les hôtes ont terminé leurs requêtes (éventuellement en cas d'erreur).

Si le paramètre options est fourni, il doit contenir les options suivantes, pour modifier le comportement de yaz_wait().

timeout

Configure le délais maximal d'attente, en secondes. Si le serveur n'a pas répondu durant ce délai, la connexion est considérée comme morte et yaz_wait() se termine. Par défaut, ce délai est de 15 secondes.

Précédent | Sommaire | Suivant
yaz_syntax | Niveau supérieur | NIS


NIS

Manuel PHP
Précédent Suivant

CXV. NIS

Introduction

NIS (feu Yellow Pages / Pages jaunes) permet la gestion par le réseau de fichiers d'administration importants (tel un fichier de mot de passe). Pour plus d'informations, reportez vous au manuel NIS, ou à Introduction to YP/NISIntroduction to YP/NIS (en anglais). Il existe un livre en anglais Managing NFS and NIS" par Hal Stern.

Note : Cette extension n'est pas disponible sur les plate-formes Windows.

Pré-requis

Aucun pré-requis pour pouvoir accéder à ces fonctionnalités, en dehors des fonctions standards Unix qui sont toujours disponibles (soit libc, soit libnsl : le script de configuration détectera celle que vous utilisez).

Installation

To get these functions to work, you have to configure PHP with --enable-yp.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

YPERR_BADARGS (integer)

YPERR_BADDB (integer)

YPERR_BUSY (integer)

YPERR_DOMAIN (integer)

YPERR_KEY (integer)

YPERR_MAP (integer)

YPERR_NODOM (integer)

YPERR_NOMORE (integer)

YPERR_PMAP (integer)

YPERR_RESRC (integer)

YPERR_RPC (integer)

YPERR_YPBIND (integer)

YPERR_YPERR (integer)

YPERR_YPSERV (integer)

YPERR_VERS (integer)

Table des matières
yp_all -- Traverse la carte et applique une fonction sur chaque entrée
yp_cat -- Retourne une tableau contenant la carte entière
yp_err_string -- Retourne la chaîne correspondante à l'erreur donnée
yp_errno -- Retourne le code d'erreur de la dernière opération NIS
yp_first -- Retourne le premier couple (clé ; valeur) d'une carte donnée.
yp_get_default_domain -- Retourne le domaine NIS par défaut
yp_master -- Retourne le nom de la machine maître pour une carte.
yp_match -- Retourne la ligne associée
yp_next -- Retourne le couple (clé ; valeur) suivant d'une carte donnée.
yp_order -- Retourne le numéro d'ordre d'une carte

Précédent | Sommaire | Suivant
yaz_wait | Niveau supérieur | yp_all


yp_all

(PHP 4 >= 4.0.6)

yp_all -- Traverse la carte et applique une fonction sur chaque entrée

Description

void yp_all ( string domain, string map, string callback)

Avertissement

Cette fonction n'est pas documentée et seule la liste des arguments est disponible.

Précédent | Sommaire | Suivant
NIS | Niveau supérieur | yp_cat


yp_cat

(PHP 4 >= 4.0.6)

yp_cat -- Retourne une tableau contenant la carte entière

Description

array yp_cat ( string domain, string map)

yp_cat() retourne toutes les entrées de la carte sous forme de tableau associatif dont les clefs et les valeurs sont respectivement les clefs et les entrées de la carte.

Précédent | Sommaire | Suivant
yp_all | Niveau supérieur | yp_err_string


yp_err_string

(PHP 4 >= 4.0.6)

yp_err_string -- Retourne la chaîne correspondante à l'erreur donnée

Description

string yp_err_string ( int errorcode)

yp_err_string() retourne la chaîne d'erreur associée au code erreur errorcode. Très pratique pour savoir exactement ce qui n'a pas fonctionné.

Exemple 1. Exemple

<?php
    echo "Erreur : " . yp_err_string(yp_errno());
?>

Voir aussi yp_errno().

Précédent | Sommaire | Suivant
yp_cat | Niveau supérieur | yp_errno


yp_errno

(PHP 4 >= 4.0.6)

yp_errno -- Retourne le code d'erreur de la dernière opération NIS

Description

int yp_errno ( void )

yp_errno() retourne le code d'erreur de la dernière opération.

Les erreurs possibles sont :

1 Mauvais arguments
2 Erreur RPC - Le domaine n'existe pas
3 Impossible de se connecter à ce domaine
4 Impossible de trouver cette carte sur le serveur
5 Cette clé n'existe pas
6 Erreur yp interne ou erreur client
7 Erreur d'allocation de ressources
8 Il n'y a plus d'enregistrements dans cette carte
9 Impossible de communiquer avec le portmapper
10 Impossible de communiquer avec ypbind
11 Impossible de communiquer avec ypserv
12 Le nom de domaine local n'est pas assigné
13 La base de données yp n'est pas valide
14 Erreur de version yp
15 Accès interdit
16 Base de données occupée

Voir aussi yp_err_string().

Précédent | Sommaire | Suivant
yp_err_string | Niveau supérieur | yp_first


yp_first

(PHP 3>= 3.0.7, PHP 4 )

yp_first -- Retourne le premier couple (clé ; valeur) d'une carte donnée.

Description

array yp_first ( string domain, string map)

yp_first() retourne le premier couple (clé ; valeur) d'une carte donnée, ou FALSE.

Exemple 1. Exemple avec yp_first()

<?php
$entry = yp_first($domain, "passwd.byname");

$key = key($entry);
$value = $entry[$key];

echo "La premi&egrave;re entr&eacute;e de cette carte est " . $key
     . " et sa valeur est " . $value;
?>

Voir aussi yp_next() et yp_get_default_domain().

Précédent | Sommaire | Suivant
yp_errno | Niveau supérieur | yp_get_default_domain


yp_get_default_domain

(PHP 3>= 3.0.7, PHP 4 )

yp_get_default_domain -- Retourne le domaine NIS par défaut

Description

int yp_get_default_domain ( void )

yp_get_default_domain() retourne le nom de domaine NIS par défaut. Ce nom de domaine peut être utilisé pour les futurs appels NIS.

Un domaine NIS peut être décrit comme un regroupement de cartes NIS. Tous les hôtes qui ont besoin d'informations, s'attachent à un domaine. Référez-vous aux documents cités en début de document pour plus de détails.

Exemple 1. Exemple avec le domaine par défaut

<?php
    $domain = yp_get_default_domain();
    echo "Le domaine par d&eacute;faut est : " . $domain;
?>

Précédent | Sommaire | Suivant
yp_first | Niveau supérieur | yp_master


yp_master

(PHP 3>= 3.0.7, PHP 4 )

yp_master -- Retourne le nom de la machine maître pour une carte.

Description

string yp_master ( string domain, string map)

yp_master() retourne le nom de la machine maître d'une carte.

Exemple 1. Exemple de maître NIS

<?php
    $number = yp_master($domain, $mapname);
    echo "Master for this map is: " . $master;
?>

Voir aussi yp_get_default_domain().

Précédent | Sommaire | Suivant
yp_get_default_domain | Niveau supérieur | yp_match


yp_match

(PHP 3>= 3.0.7, PHP 4 )

yp_match -- Retourne la ligne associée

Description

string yp_match ( string domain, string map, string key)

yp_match() retourne la valeur associée à la clé passée en argument, pour la carte spécifiée, ou FALSE. La clé doit exister et être exacte.

Exemple 1. Exemple de recherche NIS

<?php
    $entry = yp_match($domain, "passwd.byname", "joe");
    echo "La valeur trouv&eacute;e est : " . $entry;
?>

Cela affichera :

joe:##joe:11111:100:Joe User:/home/j/joe:/usr/local/bin/bash

Voir aussi yp_get_default_domain().

Précédent | Sommaire | Suivant
yp_master | Niveau supérieur | yp_next


yp_next

(PHP 3>= 3.0.7, PHP 4 )

yp_next -- Retourne le couple (clé ; valeur) suivant d'une carte donnée.

Description

array yp_next ( string domain, string map, string key)

yp_next() retourne le couple (clé ; valeur) suivant la clé donnée d'une carte donnée ou FALSE.

Exemple 1. Exemple avec yp_next()

<?php
    $entry = yp_next($domain, "passwd.byname", "joe");
    if(!$entry) {
        echo "Plus d'autres entr&eacute;es.\n";
    <!-- echo yp_errno() . ": " . yp_err_string(); -->    }
    $key = key($entry);
    echo "L'entr&eacute;e suivante apr&egrave;s "joe" a la cl&eacute; " . $key
          . " et la valeur " . $entry[$key];
?>

Voir aussi yp_first() et yp_get_default_domain().

Précédent | Sommaire | Suivant
yp_match | Niveau supérieur | yp_order


yp_order

(PHP 3>= 3.0.7, PHP 4 )

yp_order -- Retourne le numéro d'ordre d'une carte

Description

int yp_order ( string domain, string map)

yp_order() retourne le numéro d'ordre d'une carte ou FALSE.

Exemple 1. Exemple d'ordre NIS

<?php
$number = yp_order($domain,$mapname);
echo "Le num&eacute;ro d'ordre de cette carte est : " . $number;
?>

Voir aussi yp_get_default_domain().

Précédent | Sommaire | Suivant
yp_next | Niveau supérieur | Accès aux fichiers Zip (Lecture seule)


Accès aux fichiers Zip (Lecture seule)

Manuel PHP
Précédent Suivant

CXVI. Accès aux fichiers Zip (Lecture seule)

Introduction

Ce module permet l'accès transparent aux archives compressées par la méthode ZIP : on peut y lire les fichiers et les dossiers qui y sont contenus.

Pré-requis

Ce module utilise les fonctions de la librairie ZZIPlib, écrite par Guido Draheim. Vous aurez besoin de ZZIPlib version >= 0.10.6.

Notez que ZZIPlib fournit une partie de l'implémentation complète de l'algorithme de compression ZIP, et peut uniquement lire des archives ZIP. Un utilitaire ZIP normal est nécessaire pour créer l'archive elle-même.

Installation

Le support ZIP de PHP n'est pas activé par défaut. Vous aurez besoin de l'activer avec l'option --with-zip dans le fichier de configuration de PHP.

Note : Le support Zip est expérimental avant PHP 4.1.0. Ce manuel est valable pour les versions 4.1.0 et plus récentes de PHP.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Cette extension ne définit aucune constante.

Exemples

Cet exemple ouvre un fichier ZIP, lit chaque fichier de l'archive, et en affiche le contenu. Le fichier d'archive test2.zip utilisé dans cet exemple est fourni dans la distribution source de ZZIPlib.

Exemple 1. Exemple d'utilisation de ZIP

<?php

$zip = zip_open("/tmp/test2.zip");

if ($zip) {

    while ($zip_entry = zip_read($zip)) {
        echo "Nom :               " . zip_entry_name($zip_entry) . "\n";
        echo "Taille r&eacute;elle du fichier : "  . zip_entry_filesize($zip_entry) . "\n";
        echo "Taille compress&eacute;e du fichier : " . zip_entry_compressedsize($zip_entry) . "\n";
        echo "M&eacute;thode de compression : " . zip_entry_compressionmethod($zip_entry) . "\n";

        if (zip_entry_open($zip, $zip_entry, "r")) {
            echo "Contenu du fichier : \n";
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo "$buf\n";

            zip_entry_close($zip_entry);
        }
        echo "\n";

    }

    zip_close($zip);

}

?>
Table des matières
zip_close -- Ferme une archive Zip
zip_entry_close -- Ferme un dossier d'archive
zip_entry_compressedsize -- Lit la taille compressée d'un dossier d'archive
zip_entry_compressionmethod -- Lit la méthode de compression utilisée sur un dossier d'archive
zip_entry_filesize -- Lit la taille décompressée d'un dossier d'archive
zip_entry_name -- Lit le nom du dossier d'archive
zip_entry_open -- Ouvre un fichier d'archive en lecture
zip_entry_read -- Lit le contenu d'un fichier dans un dossier
zip_open -- Ouvre une archive ZIP
zip_read -- Lit la prochaine entrée dans une archive ZIP

Précédent | Sommaire | Suivant
yp_order | Niveau supérieur | zip_close


zip_close

(4.1.0 - 4.3.2 only)

zip_close -- Ferme une archive Zip

Description

void zip_close ( resource zip)

zip_close() ferme l'archive ZIP représentée par la ressource zip. zip doit être une archive ZIP ouverte grâce à la fonction zip_open().

Cette fonction ne retourne aucune valeur.

Voir aussi zip_open() et zip_read().

Précédent | Sommaire | Suivant
Accès aux fichiers Zip (Lecture seule) | Niveau supérieur | zip_entry_close


zip_entry_close

(4.1.0 - 4.3.2 only)

zip_entry_close -- Ferme un dossier d'archive

Description

void zip_entry_close ( resource zip_entry)

zip_entry_close() ferme le dossier d'archive zip_entry. zip_entry doit être un dossier d'archive valide, fournit par zip_entry_open().

Cette fonction ne retourne aucune valeur.

Voir aussi zip_entry_open() et zip_entry_read().

Précédent | Sommaire | Suivant
zip_close | Niveau supérieur | zip_entry_compressedsize


zip_entry_compressedsize

(4.1.0 - 4.3.2 only)

zip_entry_compressedsize -- Lit la taille compressée d'un dossier d'archive

Description

int zip_entry_compressedsize ( resource zip_entry)

zip_entry_compressedsize() retourne la taille compressée du dossier d'archive zip_entry. Le paramètre zip_entry est un dossier d'archive valide, retourné par zip_read().

Voir aussi zip_open() et zip_read().

Précédent | Sommaire | Suivant
zip_entry_close | Niveau supérieur | zip_entry_compressionmethod


zip_entry_compressionmethod

(4.1.0 - 4.3.2 only)

zip_entry_compressionmethod -- Lit la méthode de compression utilisée sur un dossier d'archive

Description

string zip_entry_compressionmethod ( resource zip_entry)

zip_entry_compressionmethod() retourne la méthode de compression utilisée sur le dossier d'archive zip_entry. Le paramètre zip_entry est un dossier d'archive valide, retourné par zip_read().

Voir aussi zip_open() et zip_read().

Précédent | Sommaire | Suivant
zip_entry_compressedsize | Niveau supérieur | zip_entry_filesize


zip_entry_filesize

(4.1.0 - 4.3.2 only)

zip_entry_filesize -- Lit la taille décompressée d'un dossier d'archive

Description

int zip_entry_filesize ( resource zip_entry)

zip_entry_filesize() retourne la taille décompressée du dossier d'archive zip_entry. Le paramètre zip_entry est un dossier d'archive valide, retourné par zip_read().

Voir aussi zip_open() et zip_read().

Précédent | Sommaire | Suivant
zip_entry_compressionmethod | Niveau supérieur | zip_entry_name


zip_entry_name

(4.1.0 - 4.3.2 only)

zip_entry_name -- Lit le nom du dossier d'archive

Description

string zip_entry_name ( resource zip_entry)

zip_entry_name() retourne le nom du dossier d'archive zip_entry. Le paramètre zip_entry est un dossier d'archive valide, retourné par zip_read().

Voir aussi zip_open() et zip_read().

Précédent | Sommaire | Suivant
zip_entry_filesize | Niveau supérieur | zip_entry_open


zip_entry_open

(4.1.0 - 4.3.2 only)

zip_entry_open -- Ouvre un fichier d'archive en lecture

Description

bool zip_entry_open ( resource zip, resource zip_entry [, string mode])

zip_entry_open() ouvre un fichier dans une archive archive ZIP. Le paramètre zip est une ressource d'archive valide, retournée par zip_open(). Le paramètre zip_entry est une ressource de fichier retournée par zip_read(). Le paramètre optionnel mode peut prendre les mêmes valeurs que ceux de la fonction fopen().

Note : Actuellement, mode est ignoré et prend toujours la valeur "rb". C'est lié au fait que cette extension PHP propose uniquement l'accès en lecture. Reportez vous à la fonction fopen() pour plus de détails sur les différents modes, y compris le mode "rb".

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Contrairement à fopen() et les autres fonctions de fichiers, la valeur retournée par zip_entry_open() indique uniquement le résultat de l'opération, et n'est pas nécessaire pour la lecture ou la fermeture du fichier de dossier d'archive.

Voir aussi zip_entry_read() et zip_entry_close().

Précédent | Sommaire | Suivant
zip_entry_name | Niveau supérieur | zip_entry_read


zip_entry_read

(4.1.0 - 4.3.2 only)

zip_entry_read -- Lit le contenu d'un fichier dans un dossier

Description

string zip_entry_read ( resource zip_entry [, int length])

zip_entry_read() lit jusqu'à length octets dans le fichier représenté par zip_entry. Si length est omis, alors zip_entry_read() essaiera de lire un bloc de 1024 octets. Le paramètre zip_entry est un dossier d'archive valide, retourné par zip_read().

Note : Le paramètre length doit ???tre la taille non-compressée que vous voulez lire.

zip_entry_read() retourne les données lues, ou bien FALSE si la fin du fichier est atteinte.

Voir aussi
zip_entry_open(),
zip_entry_close() et
zip_entry_filesize().

Précédent | Sommaire | Suivant
zip_entry_open | Niveau supérieur | zip_open


zip_open

(4.1.0 - 4.3.2 only)

zip_open -- Ouvre une archive ZIP

Description

resource zip_open ( string filename)

zip_open() ouvre une nouvelle archive ZIP. Le paramètre filename est le nom du fichier ZIP à ouvrir.

zip_open() retourne une ressource, à utiliser plus tard avec les fonctions zip_read() et zip_close(), ou bien retourne FALSE si filename n'a pu être ouvert.

Voir aussi zip_read() et zip_close().

Précédent | Sommaire | Suivant
zip_entry_read | Niveau supérieur | zip_read


zip_read

(4.1.0 - 4.3.2 only)

zip_read -- Lit la prochaine entrée dans une archive ZIP

Description

resource zip_read ( resource zip)

zip_read() lit la prochaine entrée dans l'archive ZIP. Le paramètre zip est une archive valide, retournée par zip_open().

zip_read() retourne une ressource de dossier d'archive, à utiliser plus tard avec les autres fonctions de la librairie, ou FALSE s'il n'y a plus d'entrées à lire dans l'archive ZIP.

Voir aussi
zip_open(),
zip_close(),
zip_entry_open() et
zip_entry_read().

Précédent | Sommaire | Suivant
zip_open | Niveau supérieur | Compression Zlib


Compression Zlib

Manuel PHP
Précédent Suivant

CXVII. Compression Zlib

Introduction

Ce module donne accès aux fichiers compressés avec l'utilitaire gzip, grâce à des fonctions semblables aux fonctions d'accès aux fichiers, qui fonctionnent avec les fichiers compressés ou non (mais pas avec les sockets).

Note : La version 4.0.4 a introduit la version étendue de fopen() pour les fichiesr compressés avec GZ. Vous pouvez utiliser le préfixe spécial zlib: dans les URL pour accéder directement et de manière transparente aux fichiers compressés par GZ, avec toutes les fonctions f* habituelles.

En version 4.3.0, ce préfixe spécial est remplacé par zlib:// pour éviter les ambiguités avec les fichiers contenant des deux points :.

Cette fonctionnalité requiert une librarie C qui fournisse la fonction fopencookie(). A ma connaissance, la librairie GNU libc est la seule à fournir cette fonctionnalité.

Pré-requis

Ce module utilise les fonctions de la librairie zlib de Jean-loup Gailly et Mark Adler. Vous devez utiliser zlib version >= 1.0.9 avec ce module.

Installation

Le support de Zlib dans PHP n'est pas activé par défaut. Vous devez compiler PHP avec l'option --with-zlib[=DIR].

La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Note : Le support intégré de zlib est disponible depuis PHP 4.3.0.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

L'extension zlib offre l'option de comprésser de manière transparente les pages PHP à la volée, si le navigateur du visiteur le support. Voici donc les trois options à utiliser dans le php.ini.

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
zlib.output_compression | "Off" | PHP_INI_ALL
zlib.output_compression_level | "-1" | PHP_INI_ALL
zlib.output_handler | "" | PHP_INI_ALL
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

zlib.output_compression booléen/entier

Active ou pas la compression transparente des pages. Si cette option est mise à "On" dans php.ini ou dans la configuration Apache, les pages sont compressées si le navigateur envoie un en-tête "Accept-Encoding: gzip" ou "deflate". Les en-têtes "Content-Encoding: gzip" (respectivement "deflate") et "Vary: Accept-Encoding" sont ajoutés dans la page envoyée au navigateur.

Vous pouvez utiliser ini_set() pour désactiver cette option dans votre script, si les en-têtes n'ont pas encore été envoyé. Si vous émettez un en-tête de type "Content-Type: image/", la compression sera désactivée aussi (afin de parer à un bug de Netscape). Vous pouvez le réactiver en ajoutant la ligne "ini_set('zlib.output_compression', 'On')" après que les en-têtes aient été envoyés.

Cette option accepte aussi des valeurs entières au lieu des booléens, "On"/"Off", ce qui vous permet de configurer la taille du buffer de sortie (par défaut, il vaut 4ko).

Note : output_handler doit être laissé à vide si cette option est activée. Sinon, vous devez utiliser zlib.output_handler.

zlib.output_compression_level integer

Niveau de compression utilisé pour la compression de sortie.

zlib.output_handler string

Vous ne pouvez pas spécifier de gestionnaire de sortie supplémentaire si zlib.output_compression est activée. Cette configuration est la même que output_handler mais dans un ordre différent.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

FORCE_GZIP (entier)

FORCE_DEFLATE (entier)

Exemples

Cet exemple ouvre un fichier temporaire, écrit une page de test dedans, puis affiche le contenu du fichier deux fois.

Exemple 1. Exemple de l'extension Zlib

<?php

$filename = tempnam ('/tmp', 'zlibtest').'.gz';
print "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "C'est juste un test, test, test, test, test, test, test, test!\n";

// ouvre le fichier en &eacute;criture avec la compression maximale
$zp = gzopen($filename, "w9");

// &eacute;crit uen cha&icirc;ne dans le fichier
gzwrite($zp, $s);

// ferme le fichier
gzclose($zp);

// ouvre le fichier en lecture
$zp = gzopen($filename, "r");

// lit 3 caract&egrave;res
print gzread($zp, 3);

// affiche le reste du fichier, puis le ferme
gzpassthru($zp);
gzclose($zp);

print "\n";

// ouvre le fichier et affiche le fichier une seconde fois
if (readgzfile($filename) != strlen($s)) {
        echo "Erreur avec les fonctions zlib!";
}
unlink($filename);
print "</pre>\n</h1></body>\n</html>\n";

?>
Table des matières
gzclose -- Ferme un fichier compressé gzip
gzcompress -- Compresse une chaîne
gzdeflate -- Compresse une chaîne avec la méthode DEFLATE
gzencode -- Crée une chaîne compressée
gzeof -- Indique si la fin d'un fichier compressé est atteinte
gzfile -- Lit la totalité d'un fichier compressé
gzgetc -- Lit un caractère dans un fichier compressé
gzgets -- Lit une ligne dans un fichier compressé
gzgetss -- Lit une ligne dans un fichier compressé, et supprime les balises
gzinflate -- Décompresse une chaîne
gzopen -- Ouvre un fichier compressé avec gzip
gzpassthru -- Affiche le contenu d'un fichier en une seule fois
gzputs -- Ecrit une chaîne dans un fichier compressé
gzread -- Lecture de fichier compressé binaire
gzrewind -- Recommence la lecture du fichier
gzseek -- Déplace le pointeur de lecture
gztell -- Lit la position courante du pointeur de lecture
gzuncompress -- Décompresse une chaîne compressée
gzwrite -- Ecrit dans un fichier compressé, en gzip
readgzfile -- Lit tout le fichier compressé
zlib_get_coding_type -- Retourne la méhode de compression utilisée avec Gzip

Précédent | Sommaire | Suivant
zip_read | Niveau supérieur | gzclose


gzclose

(PHP 3, PHP 4 )

gzclose -- Ferme un fichier compressé gzip

Description

int gzclose ( resource zp)

gzclose() referme le fichier compressé zp.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Précédent | Sommaire | Suivant
Compression Zlib | Niveau supérieur | gzcompress


gzcompress

(PHP 4 >= 4.0.1)

gzcompress -- Compresse une chaîne

Description

string gzcompress ( string data [, int level])

gzcompress() compresse la chaîne data, avec le niveau de de compression level, en utilisant le format de compression zlib. La fonction retourne FALSE si une erreur survient. Le paramètre optionnel level peut prendre des valeurs comprises entre 0 et 9.

Pour plus de détails sur l'algorithme de compression ZLIB, reportez-vous à la RFC "ZLIB Compressed Data Format Specification version 3.3" (RFC 1950).

Note : Ce n'est pas la même chose qu'une compression gzip, qui inclut aussi des en-têtes. Voyez la fonction gzencode() pour cela.

Voir aussi
gzdeflate(),
gzinflate(),
gzuncompress() et
gzencode().

Précédent | Sommaire | Suivant
gzclose | Niveau supérieur | gzdeflate


gzdeflate

(PHP 4 >= 4.0.4)

gzdeflate -- Compresse une chaîne avec la méthode DEFLATE

Description

string gzdeflate ( string data [, int level])

gzdeflate() compresse la chaîne data avec la méthode DEFLATE, ou FALSE si une erreur survient. Le paramètre optionnel level peut prendre des valeurs comprises entre 0 (pas de compression) et 9 (compression maximale). Par défaut, le niveau de compression est le niveau de la librairie Zlib.

Pour plus de détails sur l'algorithme de compression DEFALTE, reportez-vous à la RFC DEFLATE Compressed Data Format Specification version 1.3 (RFC 1951).

Voir aussi
gzinflate(),
gzcompress(),
gzuncompress() et
gzencode().

Précédent | Sommaire | Suivant
gzcompress | Niveau supérieur | gzencode


gzencode

(PHP 4 >= 4.0.4)

gzencode -- Crée une chaîne compressée

Description

string gzencode ( string data [, int level [, int encoding_mode]])

gzencode() retourne la version compressée de la chaîne data, compatible avec le résultat de la commande gzip. Cette fonction retourne FALSE si une erreur survient. Le paramètre optionnel level peut prendre des valeurs comprises entre 0 (pas de compression) et 9 (compression maximale). Par défaut, le niveau de compression est le niveau de la librairie Zlib.

Vous pouvez aussi utiliser les constantes FORCE_GZIP (la valeur par défaut) ou FORCE_DEFLATE comme troisième paramètre optionnel encoding_mode. Si vous utilisez FORCE_DEFLATE, vous obtiendrez une chaîne réduite (deflated) avec les en-têtes Zlib ad hoc, mais sans la somme de contrôle finale CRC32.

Note : level a été ajouté en PHP 4.2. Avant cette version gzencode() n'utilisait que le paramètre data et optionnellement encoding_mode.

La chaîne résultante contient les en-têtes et la structure de données appropriée pour en faire un fichier .gz standard, c'est à dire :

Exemple 1. Créer un fichier gzip

<?php
    $data = implode("", file("bigfile.txt"));
    $gzdata = gzencode($data, 9);
    $fp = fopen("bigfile.txt.gz", "w");
    fwrite($fp, $gzdata);
    fclose($fp);
?>

Pour plus de détails sur le format de fichier GZIP, reportez-vous à la RFC GZIP file format specification version 4.3 (RFC 1952).

Voir aussi
gzcompress()
gzuncompress()
gzdeflate() et
gzinflate().

Précédent | Sommaire | Suivant
gzdeflate | Niveau supérieur | gzeof


gzeof

(PHP 3, PHP 4 )

gzeof -- Indique si la fin d'un fichier compressé est atteinte

Description

int gzeof ( resource zp)

gzeof() retourne TRUE si le pointeur du fichier compressé zp a atteint la fin du fichier, ou si une erreur s'est produite. La fonction retourne FALSE sinon.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Précédent | Sommaire | Suivant
gzencode | Niveau supérieur | gzfile


gzfile

(PHP 3, PHP 4 )

gzfile -- Lit la totalité d'un fichier compressé

Description

array gzfile ( string filename [, int use_include_path])

gzfile() est identique à la fonction readgzfile(), hormis le fait que gzfile() retourne le fichier sous forme de tableau.

Vous pouvez utiliser le second paramètre optionnel en lui donnant la valeur de 1, si vous voulez rechercher le fichier dans l'include_path.

Voir aussi readgzfile() et gzopen().

Précédent | Sommaire | Suivant
gzeof | Niveau supérieur | gzgetc


gzgetc

(PHP 3, PHP 4 )

gzgetc -- Lit un caractère dans un fichier compressé

Description

string gzgetc ( resource zp)

gzgetc() retourne une chaîne contenant un caractère unique (décompressé), lu dans le fichier représenté par zp. gzgetc() retourne FALSE si la fin du fichier est atteinte (contrairement à gzeof()).

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Voir aussi gzopen() et gzgets().

Précédent | Sommaire | Suivant
gzfile | Niveau supérieur | gzgets


gzgets

(PHP 3, PHP 4 )

gzgets -- Lit une ligne dans un fichier compressé

Description

string gzgets ( resource zp, int length)

gzgets() retourne une chaîne non compressée, de taille maximale length - 1 octets, lue dans le fichier représenté par zp. La lecture s'arrête lorsque length - 1 octets ont été lus, ou que la fonction a rencontré une nouvelle ligne ou la fin du fichier (le premier des trois qui survient).

Si une erreur survient, gzgets() retourne FALSE.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Voir aussi
gzopen(),
gzgetc() et
fgets().

Précédent | Sommaire | Suivant
gzgetc | Niveau supérieur | gzgetss


gzgetss

(PHP 3, PHP 4 )

gzgetss -- Lit une ligne dans un fichier compressé, et supprime les balises

Description

string gzgetss ( resource zp, int length [, string allowable_tags])

gzgetss() est identique à la fonction gzgets(), hormis le fait que gzgetss() supprime toutes les balises HTML et PHP dans le texte lu.

Vous pouvez utiliser le troisième paramètre optionnel allowable_tags pour indiquer les balises que vous souhaitez conserver.

Note : allowable_tags a été ajouté en PHP 3.0.13, et PHP 4.0b3.

Voir aussi
gzgets(),
gzopen() et
strip_tags().

Précédent | Sommaire | Suivant
gzgets | Niveau supérieur | gzinflate


gzinflate

(PHP 4 >= 4.0.4)

gzinflate -- Décompresse une chaîne

Description

string gzinflate ( string data [, int length])

gzinflate() prend la chaîne data compressée avec gzdeflate() et retourne la chaîne originale, décompressée, ou bien FALSE en cas d'erreur. gzinflate() retourne une erreur si la chaîne décompressée est plus de 256 fois plus longue que la chaîne compressée data ou plus grande que la taille de length octets, passé comme paramètre optionnel.

Voir aussi
gzcompress().
gzuncompress(),
gzdeflate() et
gzencode().

Précédent | Sommaire | Suivant
gzgetss | Niveau supérieur | gzopen


gzopen

(PHP 3, PHP 4 )

gzopen -- Ouvre un fichier compressé avec gzip

Description

resource gzopen ( string filename, string mode [, int use_include_path])

gzopen() ouvre le fichier filename, compressé avec l'utilitaire gzip, en écriture ou en lecture. Le paramètre de mode mode prend les mêmes valeurs que dans la fonction fopen() ("rb" ou "wb"), mais il accepte aussi un entier, qui représente un niveau de compression ("wb9") ou une heuristique : "f" pour filtrer les données "wb6f", 'h' pour la compression Huffman seulement "wb1h". (voir aussi la description de deflateInit2 dans zlib.h pour plus d'informations sur le paramètre d'heuristique).

gzopen() peut aussi servir pour lire des fichiers qui ne sont pas compressés. Dans ce cas, gzread() lira le fichier, sans décompression.

gzopen() retourne une ressource de fichier. Tout ce que vous lirez à partir de ce pointeur sera décompressé à la volée de manière transparente.

Si l'ouverture du fichier échoue, gzopen() retourne FALSE.

Vous pouvez utiliser le troisième paramètre optionnel en lui donnant la valeur de 1, si vous voulez rechercher le fichier dans l'include_path.

Exemple 1. Exemple avec gzopen()

<?php
  $fp = gzopen ("/tmp/file.gz", "r");
?>

Voir aussi gzclose().

Précédent | Sommaire | Suivant
gzinflate | Niveau supérieur | gzpassthru


gzpassthru

(PHP 3, PHP 4 )

gzpassthru -- Affiche le contenu d'un fichier en une seule fois

Description

int gzpassthru ( resource zp)

gzpassthru() lit toutes les données du fichier zp jusqu'à la fin, puis affiche le résultat (décompressé).

Si une erreur survient, la fonction retourne FALSE, sinon, elle retourne TRUE.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Précédent | Sommaire | Suivant
gzopen | Niveau supérieur | gzputs


gzputs

(PHP 3, PHP 4 )

gzputs -- Ecrit une chaîne dans un fichier compressé

Description

int gzputs ( resource zp, string str [, int length])

gzputs() est un alias de la fonction gzwrite(), et lui est identique en tous points.

Précédent | Sommaire | Suivant
gzpassthru | Niveau supérieur | gzread


gzread

(PHP 3, PHP 4 )

gzread -- Lecture de fichier compressé binaire

Description

string gzread ( resource zp, int length)

gzread() lit jusqu'à length octets dans le fichier compressé gzip, représenté par zp. La lecture s'arrête lorsque length octets (décompressé) ont été lus, ou bien que la fin du fichier a été atteinte.

Exemple 1. Exemple avec gzread()

<?php
// Lit le contenu d'un fichier dans une cha&icirc;ne
  $filename = "/usr/local/something.txt.gz";
  $zd = gzopen($filename, "r");
  $contents = gzread($zd, 10000);
  gzclose($zd);
?>

Voir aussi
gzwrite(),
gzopen(),
gzgets(),
gzgetss(),
gzfile() et
gzpassthru().

Précédent | Sommaire | Suivant
gzputs | Niveau supérieur | gzrewind


gzrewind

(PHP 3, PHP 4 )

gzrewind -- Recommence la lecture du fichier

Description

int gzrewind ( resource zp)

gzrewind() replace le pointeur de position du fichier zp au début du fichier.

Si une erreur survient, la fonction retourne 0.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Voir aussi gzseek() et gztell().

Précédent | Sommaire | Suivant
gzread | Niveau supérieur | gzseek


gzseek

(PHP 3, PHP 4 )

gzseek -- Déplace le pointeur de lecture

Description

int gzseek ( resource zp, int offset)

gzseek() place le pointeur de lecture du fichier zp à la position offset, compté en octets depuis le début du fichier. C'est l'équivalent de la fonction gzseek( zp, offset, SEEK_SET ), en langage C.

Si le fichier est ouvert en lecture, cette fonction est alors émulée, et se révèle extrêment lente. Si le fichier est ouvert en lecture, seuls les déplacements vers l'avant sont supportés : gzseek() compresse alors une série de zéros jusqu'à la position indiquée.

gzseek() retourne 0 en cas de réussite, sinon, elle retourne -1. Notez que placer le pointeur au delà de la fin du fichier n'est pas une erreur.

Voir aussi gztell() et gzrewind().

Précédent | Sommaire | Suivant
gzrewind | Niveau supérieur | gztell


gztell

(PHP 3, PHP 4 )

gztell -- Lit la position courante du pointeur de lecture

Description

int gztell ( resource zp)

gztell() retourne la position du pointeur de lecture dans le fichier zp, c'est à dire sa position dans le fichier.

Si une erreur survient, gztell() retourne FALSE.

zp doit être un fichier compressé valide, retourné par la fonction gzopen().

Voir aussi
gzopen(),
gzseek() et
gzrewind().

Précédent | Sommaire | Suivant
gzseek | Niveau supérieur | gzuncompress


gzuncompress

(PHP 4 >= 4.0.1)

gzuncompress -- Décompresse une chaîne compressée

Description

string gzuncompress ( string data [, int length])

gzuncompress() prend la chaîne data, compressée avec la fonction gzcompress() et retourne la chaîne originale, ou bien FALSE en cas d'erreur. gzuncompress() retourne une erreur si la chaîne décompressée est plus de 256 fois plus longue que la chaîne compressée data ou plus grande que la taille de length octets, passé comme paramètre optionnel.

Voir aussi
gzdeflate(),
gzinflate(),
gzcompress() et
gzencode().

Précédent | Sommaire | Suivant
gztell | Niveau supérieur | gzwrite


gzwrite

(PHP 3, PHP 4 )

gzwrite -- Ecrit dans un fichier compressé, en gzip

Description

int gzwrite ( resource zp, string string [, int length])

gzwrite() écrit le contenu de la chaîne string dans le fichier compressé zp. Si le paramètre length est fourni, l'écriture s'arrêtera lorsque length octets décompressés on été écrit, ou à la fin de la chaîne string : le premier qui arrive.

Notez que si length est donné, la directive magic_quotes_runtime sera ignorée, et les slashs ne seront pas supprimés de la chaîne string.

Voir aussi
gzread(),
gzopen() et
gzputs().

Précédent | Sommaire | Suivant
gzuncompress | Niveau supérieur | readgzfile


readgzfile

(PHP 3, PHP 4 )

readgzfile -- Lit tout le fichier compressé

Description

int readgzfile ( string filename [, int use_include_path])

readgzfile() lit le fichier filename, le décompresse et affiche le résultat.

readgzfile() peut aussi servir à lire un fichier qui n'est pas compressé : dans ce cas, readgzfile() va lire le fichier sans le décompresser.

readgzfile() retourne le nombre d'octets décompressés qui ont été lus dans le fichier. Si une erreur survient, readgzfile() retourne FALSE. Un message d'erreur sera alors affiché, à moins que la fonction n'ait été appelée avec @readgzfile.

Le fichier filename sera ouvert dans le système de fichier, et son contenu sera affiché.

Vous pouvez utiliser le troisième paramètre optionnel en lui donnant la valeur de 1, si vous voulez rechercher le fichier dans l'include_path.

Voir aussi
gzpassthru(),
gzfile() et
gzopen().

Précédent | Sommaire | Suivant
gzwrite | Niveau supérieur | zlib_get_coding_type


zlib_get_coding_type

(PHP 4 >= 4.3.2)

zlib_get_coding_type -- Retourne la méhode de compression utilisée avec Gzip

Description

string zlib_get_coding_type ( void )

zlib_get_coding_type() Retourne la méhode de compression utilisée avec Gzip. Les valeurs possibles sont gzip, deflate et FALSE.

Voir aussi la directive zlib.output_compression.

Précédent | Sommaire | Suivant
readgzfile | Niveau supérieur | Zend API


Zend API

Manuel PHP
Précédent Suivant

VI. Zend API

Hacking the Core of PHP

Those who know don't talk.

Those who talk don't know.

Sometimes, PHP "as is" simply isn't enough. Although these cases are rare for the average user, professional applications will soon lead PHP to the edge of its capabilities, in terms of either speed or functionality. New functionality cannot always be implemented natively due to language restrictions and inconveniences that arise when having to carry around a huge library of default code appended to every single script, so another method needs to be found for overcoming these eventual lacks in PHP.

As soon as this point is reached, it's time to touch the heart of PHP and take a look at its core, the C code that makes PHP go.

Table des matières
24. Overview
25. Extension Possibilities
26. Source Layout
27. PHP's Automatic Build System
28. Creating Extensions
29. Using Extensions
30. Troubleshooting
31. Source Discussion
32. Accepting Arguments
33. Creating Variables
34. Duplicating Variable Contents: The Copy Constructor
35. Returning Values
36. Printing Information
37. Startup and Shutdown Functions
38. Calling User Functions
39. Initialization File Support
40. Where to Go from Here
41. Reference: Some Configuration Macros
42. API Macros
Hacking the Core of PHP

Précédent | Sommaire | Suivant
zlib_get_coding_type |  | Overview


Overview

Manuel PHP
Précédent Suivant

Chapitre 24. Overview

Table des matières
What Is Zend? and What Is PHP?

"Extending PHP" is easier said than done. PHP has evolved to a full-fledged tool consisting of a few megabytes of source code, and to hack a system like this quite a few things have to be learned and considered. When structuring this chapter, we finally decided on the "learn by doing" approach. This is not the most scientific and professional approach, but the method that's the most fun and gives the best end results. In the following sections, you'll learn quickly how to get the most basic extensions to work almost instantly. After that, you'll learn about Zend's advanced API functionality. The alternative would have been to try to impart the functionality, design, tips, tricks, etc. as a whole, all at once, thus giving a complete look at the big picture before doing anything practical. Although this is the "better" method, as no dirty hacks have to be made, it can be very frustrating as well as energy- and time-consuming, which is why we've decided on the direct approach.

Note that even though this chapter tries to impart as much knowledge as possible about the inner workings of PHP, it's impossible to really give a complete guide to extending PHP that works 100% of the time in all cases. PHP is such a huge and complex package that its inner workings can only be understood if you make yourself familiar with it by practicing, so we encourage you to work with the source.

What Is Zend? and What Is PHP?

The name Zend refers to the language engine, PHP's core. The term PHP refers to the complete system as it appears from the outside. This might sound a bit confusing at first, but it's not that complicated (see Figure 24-1). To implement a Web script interpreter, you need three parts:

  1. The interpreter part analyzes the input code, translates it, and executes it.

  2. The functionality part implements the functionality of the language (its functions, etc.).

  3. The interface part talks to the Web server, etc.

Zend takes part 1 completely and a bit of part 2; PHP takes parts 2 and 3. Together they form the complete PHP package. Zend itself really forms only the language core, implementing PHP at its very basics with some predefined functions. PHP contains all the modules that actually create the language's outstanding capabilities.

Figure 24-1. The internal structure of PHP.

The following sections discuss where PHP can be extended and how it's done.

Précédent | Sommaire | Suivant
Zend API | Niveau supérieur | Extension Possibilities


Extension Possibilities

Manuel PHP
Précédent Suivant

Chapitre 25. Extension Possibilities

Table des matières
External Modules
Built-in Modules
The Zend Engine

As shown in Figure 24-1 above, PHP can be extended primarily at three points: external modules, built-in modules, and the Zend engine. The following sections discuss these options.

External Modules

External modules can be loaded at script runtime using the function dl(). This function loads a shared object from disk and makes its functionality available to the script to which it's being bound. After the script is terminated, the external module is discarded from memory. This method has both advantages and disadvantages, as described in the following table:

Advantages | Disadvantages
External modules don't require recompiling of PHP. | The shared objects need to be loaded every time a script is being executed (every hit), which is very slow.
The size of PHP remains small by "outsourcing" certain functionality. | External additional files clutter up the disk.
 | Every script that wants to use an external module's functionality has to specifically include a call to dl(), or the extension tag in php.ini needs to be modified (which is not always a suitable solution).

To sum up, external modules are great for third-party products, small additions to PHP that are rarely used, or just for testing purposes. To develop additional functionality quickly, external modules provide the best results. For frequent usage, larger implementations, and complex code, the disadvantages outweigh the advantages.

Third parties might consider using the extension tag in php.ini to create additional external modules to PHP. These external modules are completely detached from the main package, which is a very handy feature in commercial environments. Commercial distributors can simply ship disks or archives containing only their additional modules, without the need to create fixed and solid PHP binaries that don't allow other modules to be bound to them.

Précédent | Sommaire | Suivant
Overview | Niveau supérieur | Built-in Modules


Built-in Modules

Built-in modules are compiled directly into PHP and carried around with every PHP process; their functionality is instantly available to every script that's being run. Like external modules, built-in modules have advantages and disadvantages, as described in the following table:

Advantages | Disadvantages
No need to load the module specifically; the functionality is instantly available. | Changes to built-in modules require recompiling of PHP.
No external files clutter up the disk; everything resides in the PHP binary. | The PHP binary grows and consumes more memory.

Built-in modules are best when you have a solid library of functions that remains relatively unchanged, requires better than poor-to-average performance, or is used frequently by many scripts on your site. The need to recompile PHP is quickly compensated by the benefit in speed and ease of use. However, built-in modules are not ideal when rapid development of small additions is required.

Précédent | Sommaire | Suivant
Extension Possibilities | Niveau supérieur | The Zend Engine


The Zend Engine

Of course, extensions can also be implemented directly in the Zend engine. This strategy is good if you need a change in the language behavior or require special functions to be built directly into the language core. In general, however, modifications to the Zend engine should be avoided. Changes here result in incompatibilities with the rest of the world, and hardly anyone will ever adapt to specially patched Zend engines. Modifications can't be detached from the main PHP sources and are overridden with the next update using the "official" source repositories. Therefore, this method is generally considered bad practice and, due to its rarity, is not covered in this book.

Précédent | Sommaire | Suivant
Built-in Modules | Niveau supérieur | Source Layout


Source Layout

Manuel PHP
Précédent Suivant

Chapitre 26. Source Layout

Table des matières
Extension Conventions
Macros
Memory Management
Directory and File Functions
String Handling
Complex Types

Note : Prior to working through the rest of this chapter, you should retrieve clean, unmodified source trees of your favorite Web server. We're working with Apache (available at http://www.apache.org/) and, of course, with PHP (available at http://www.php.net/ - does it need to be said?).

Make sure that you can compile a working PHP environment by yourself! We won't go into this issue here, however, as you should already have this most basic ability when studying this chapter.

Before we start discussing code issues, you should familiarize yourself with the source tree to be able to quickly navigate through PHP's files. This is a must-have ability to implement and debug extensions.

The following table describes the contents of the major directories.

Directory | Contents
php4 | Main PHP source files and main header files; here you'll find all of PHP's API definitions, macros, etc. (important). Everything else is below this directory.
php4/ext | Repository for dynamic and built-in modules; by default, these are the "official" PHP modules that have been integrated into the main source tree. From PHP 4.0, it's possible to compile these standard extensions as dynamic loadable modules (at least, those that support it).
php4/main | This directory contains the main php macros and definitions. (important)
php4/pear | Directory for the PHP Extension and Application Repository. This directory contains core PEAR files.
php4/sapi | Contains the code for the different server abstraction layers.
php4/TSRM | Location of the "Thread Safe Resource Manager" (TSRM) for Zend and PHP.
php4/Zend | Location of the Zend Engine files; here you'll find all of Zend's API definitions, macros, etc. (important).

Discussing all the files included in the PHP package is beyond the scope of this chapter. However, you should take a close look at the following files:

  • php4/main/php.h, located in the main PHP directory. This file contains most of PHP's macro and API definitions.

  • php4/Zend/zend.h, located in the main Zend directory. This file contains most of Zend's macros and definitions.

  • php4/Zend/zend_API.h, also located in the Zend directory, which defines Zend's API.

You should also follow some sub-inclusions from these files; for example, the ones relating to the Zend executor, the PHP initialization file support, and such. After reading these files, take the time to navigate around the package a little to see the interdependencies of all files and modules - how they relate to each other and especially how they make use of each other. This also helps you to adapt to the coding style in which PHP is authored. To extend PHP, you should quickly adapt to this style.

Extension Conventions

Zend is built using certain conventions; to avoid breaking its standards, you should follow the rules described in the following sections.

Précédent | Sommaire | Suivant
The Zend Engine | Niveau supérieur | Macros


Macros

For almost every important task, Zend ships predefined macros that are extremely handy. The tables and figures in the following sections describe most of the basic functions, structures, and macros. The macro definitions can be found mainly in zend.h and zend_API.h. We suggest that you take a close look at these files after having studied this chapter. (Although you can go ahead and read them now, not everything will make sense to you yet.)

Précédent | Sommaire | Suivant
Source Layout | Niveau supérieur | Memory Management


Memory Management

Resource management is a crucial issue, especially in server software. One of the most valuable resources is memory, and memory management should be handled with extreme care. Memory management has been partially abstracted in Zend, and you should stick to this abstraction for obvious reasons: Due to the abstraction, Zend gets full control over all memory allocations. Zend is able to determine whether a block is in use, automatically freeing unused blocks and blocks with lost references, and thus prevent memory leaks. The functions to be used are described in the following table:

Function | Description
emalloc() | Serves as replacement for malloc().
efree() | Serves as replacement for free().
estrdup() | Serves as replacement for strdup().
estrndup() | Serves as replacement for strndup(). Faster than estrdup() and binary-safe. This is the recommended function to use if you know the string length prior to duplicating it.
ecalloc() | Serves as replacement for calloc().
erealloc() | Serves as replacement for realloc().

emalloc(), estrdup(), estrndup(), ecalloc(), and erealloc() allocate internal memory; efree() frees these previously allocated blocks. Memory handled by the e*() functions is considered local to the current process and is discarded as soon as the script executed by this process is terminated.

Avertissement

To allocate resident memory that survives termination of the current script, you can use malloc() and free(). This should only be done with extreme care, however, and only in conjunction with demands of the Zend API; otherwise, you risk memory leaks.

Zend also features a thread-safe resource manager to provide better native support for multithreaded Web servers. This requires you to allocate local structures for all of your global variables to allow concurrent threads to be run. Because the thread-safe mode of Zend was not finished back when this was written, it is not yet extensively covered here.

Précédent | Sommaire | Suivant
Macros | Niveau supérieur | Directory and File Functions


Directory and File Functions

The following directory and file functions should be used in Zend modules. They behave exactly like their C counterparts, but provide virtual working directory support on the thread level.

Zend Function | Regular C Function
V_GETCWD() | getcwd()
V_FOPEN() | fopen()
V_OPEN() | open()
V_CHDIR() | chdir()
V_GETWD() | getwd()
V_CHDIR_FILE() | Takes a file path as an argument and changes the current working directory to that file's directory.
V_STAT() | stat()
V_LSTAT() | lstat()

Précédent | Sommaire | Suivant
Memory Management | Niveau supérieur | String Handling


String Handling

Strings are handled a bit differently by the Zend engine than other values such as integers, Booleans, etc., which don't require additional memory allocation for storing their values. If you want to return a string from a function, introduce a new string variable to the symbol table, or do something similar, you have to make sure that the memory the string will be occupying has previously been allocated, using the aforementioned e*() functions for allocation. (This might not make much sense to you yet; just keep it somewhere in your head for now - we'll get back to it shortly.)

Précédent | Sommaire | Suivant
Directory and File Functions | Niveau supérieur | Complex Types


Complex Types

Complex types such as arrays and objects require different treatment. Zend features a single API for these types - they're stored using hash tables.

Note : To reduce complexity in the following source examples, we're only working with simple types such as integers at first. A discussion about creating more advanced types follows later in this chapter.

Précédent | Sommaire | Suivant
String Handling | Niveau supérieur | PHP's Automatic Build System


PHP's Automatic Build System

Manuel PHP
Précédent Suivant

Chapitre 27. PHP's Automatic Build System

PHP 4 features an automatic build system that's very flexible. All modules reside in a subdirectory of the ext directory. In addition to its own sources, each module consists of a config.m4 file, for extension configuration. (for example, see http://www.gnu.org/manual/m4/html_mono/m4.html)

All these stub files are generated automatically, along with .cvsignore, by a little shell script named ext_skel that resides in the ext directory. As argument it takes the name of the module that you want to create. The shell script then creates a directory of the same name, along with the appropriate stub files.

Step by step, the process looks like this:
:~/cvs/php4/ext:> ./ext_skel --extname=my_module
Creating directory my_module
Creating basic files: config.m4 .cvsignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/my_module/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-my_module
5.  $ make
6.  $ ./php -f ext/my_module/my_module.php
7.  $ vi ext/my_module/my_module.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
This instruction creates the aforementioned files. To include the new module in the automatic configuration and build process, you have to run buildconf, which regenerates the configure script by searching through the ext directory and including all found config.m4 files.

The default config.m4 shown in Exemple 27-1 is a bit more complex:

Exemple 27-1. The default config.m4.

dnl $Id: Extending_Zend_Build.xml,v 1.8 2002/10/10 18:13:11 imajes Exp $
dnl config.m4 for extension my_module

dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
dnl [  --with-my_module             Include my_module support])

dnl Otherwise use enable:

dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
dnl [  --enable-my_module           Enable my_module support])

if test "$PHP_MY_MODULE" != "no"; then
  dnl Write more examples of tests here...

  dnl # --with-my_module -> check with-path
  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
  dnl SEARCH_FOR="/include/my_module.h"  # you most likely want to change this
  dnl if test -r $PHP_MY_MODULE/; then # path given as parameter
  dnl   MY_MODULE_DIR=$PHP_MY_MODULE
  dnl else # search default path list
  dnl   AC_MSG_CHECKING([for my_module files in default path])
  dnl   for i in $SEARCH_PATH ; do
  dnl     if test -r $i/$SEARCH_FOR; then
  dnl       MY_MODULE_DIR=$i
  dnl       AC_MSG_RESULT(found in $i)
  dnl     fi
  dnl   done
  dnl fi
  dnl
  dnl if test -z "$MY_MODULE_DIR"; then
  dnl   AC_MSG_RESULT([not found])
  dnl   AC_MSG_ERROR([Please reinstall the my_module distribution])
  dnl fi

  dnl # --with-my_module -> add include path
  dnl PHP_ADD_INCLUDE($MY_MODULE_DIR/include)

  dnl # --with-my_module -> chech for lib and symbol presence
  dnl LIBNAME=my_module # you may want to change this
  dnl LIBSYMBOL=my_module # you most likely want to change this

  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
  dnl [
  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $MY_MODULE_DIR/lib, MY_MODULE_SHARED_LIBADD)
  dnl   AC_DEFINE(HAVE_MY_MODULELIB,1,[ ])
  dnl ],[
  dnl   AC_MSG_ERROR([wrong my_module lib version or lib not found])
  dnl ],[
  dnl   -L$MY_MODULE_DIR/lib -lm -ldl
  dnl ])
  dnl
  dnl PHP_SUBST(MY_MODULE_SHARED_LIBADD)

  PHP_NEW_EXTENSION(my_module, my_module.c, $ext_shared)
fi

If you're unfamiliar with M4 files (now is certainly a good time to get familiar), this might be a bit confusing at first; but it's actually quite easy.

Note: Everything prefixed with dnl is treated as a comment and is not parsed.

The config.m4 file is responsible for parsing the command-line options passed to configure at configuration time. This means that it has to check for required external files and do similar configuration and setup tasks.

The default file creates two configuration directives in the configure script: --with-my_module and --enable-my_module. Use the first option when referring external files (such as the --with-apache directive that refers to the Apache directory). Use the second option when the user simply has to decide whether to enable your extension. Regardless of which option you use, you should uncomment the other, unnecessary one; that is, if you're using --enable-my_module, you should remove support for --with-my_module, and vice versa.

By default, the config.m4 file created by ext_skel accepts both directives and automatically enables your extension. Enabling the extension is done by using the PHP_EXTENSION macro. To change the default behavior to include your module into the PHP binary when desired by the user (by explicitly specifying --enable-my_module or --with-my_module), change the test for $PHP_MY_MODULE to == "yes":
if test "$PHP_MY_MODULE" == "yes"; then dnl
    Action.. PHP_EXTENSION(my_module, $ext_shared)
    fi
This would require you to use --enable-my_module each time when reconfiguring and recompiling PHP.

Note: Be sure to run buildconf every time you change config.m4!

We'll go into more details on the M4 macros available to your configuration scripts later in this chapter. For now, we'll simply use the default files.

Précédent | Sommaire | Suivant
Complex Types | Niveau supérieur | Creating Extensions


Creating Extensions

Manuel PHP
Précédent Suivant

Chapitre 28. Creating Extensions

Table des matières
Compiling Modules

We'll start with the creation of a very simple extension at first, which basically does nothing more than implement a function that returns the integer it receives as parameter. Exemple 28-1 shows the source.

Exemple 28-1. A simple extension.

/* include standard header */
#include "php.h"

/* declaration of functions to be exported */
ZEND_FUNCTION(first_module);

/* compiled function list so Zend knows what's in this module */
zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    {NULL, NULL, NULL}
};

/* compiled module information */
zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
};

/* implement standard "stub" routine to introduce ourselves to Zend */
#if COMPILE_DL_FIRST_MODULE
ZEND_GET_MODULE(firstmod)
#endif

/* implement function that is meant to be made available to PHP */
ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parameter);
}

This code contains a complete PHP module. We'll explain the source code in detail shortly, but first we'd like to discuss the build process. (This will allow the impatient to experiment before we dive into API discussions.)

Note : The example source makes use of some features introduced with the Zend version used in PHP 4.1.0 and above, it won't compile with older PHP 4.0.x versions.

Compiling Modules

There are basically two ways to compile modules:

  • Use the provided "make" mechanism in the ext directory, which also allows building of dynamic loadable modules.

  • Compile the sources manually.

The first method should definitely be favored, since, as of PHP 4.0, this has been standardized into a sophisticated build process. The fact that it is so sophisticated is also its drawback, unfortunately - it's hard to understand at first. We'll provide a more detailed introduction to this later in the chapter, but first let's work with the default files.

The second method is good for those who (for some reason) don't have the full PHP source tree available, don't have access to all files, or just like to juggle with their keyboard. These cases should be extremely rare, but for the sake of completeness we'll also describe this method.

Compiling Using Make. To compile the sample sources using the standard mechanism, copy all their subdirectories to the ext directory of your PHP source tree. Then run buildconf, which will create an updated configure script containing appropriate options for the new extension. By default, all the sample sources are disabled, so you don't have to fear breaking your build process.

After you run buildconf, configure --help shows the following additional modules:

--enable-array_experiments   BOOK: Enables array experiments
  --enable-call_userland       BOOK: Enables userland module
  --enable-cross_conversion    BOOK: Enables cross-conversion module
  --enable-first_module        BOOK: Enables first module
  --enable-infoprint           BOOK: Enables infoprint module
  --enable-reference_test      BOOK: Enables reference test module
  --enable-resource_test       BOOK: Enables resource test module
  --enable-variable_creation   BOOK: Enables variable-creation module

The module shown earlier in Exemple 28-1 can be enabled with --enable-first_module or --enable-first_module=yes.

Compiling Manually. To compile your modules manually, you need the following commands:

Action | Command
Compiling | cc -fpic -DCOMPILE_DL=1 -I/usr/local/include -I. -I.. -I../Zend -c -o <your_object_file> <your_c_file>
Linking | cc -shared -L/usr/local/lib -rdynamic -o <your_module_file> <your_object_file(s)>

The command to compile the module simply instructs the compiler to generate position-independent code (-fpic shouldn't be omitted) and additionally defines the constant COMPILE_DL to tell the module code that it's compiled as a dynamically loadable module (the test module above checks for this; we'll discuss it shortly). After these options, it specifies a number of standard include paths that should be used as the minimal set to compile the source files.

Note: All include paths in the example are relative to the directory ext. If you're compiling from another directory, change the pathnames accordingly. Required items are the PHP directory, the Zend directory, and (if necessary), the directory in which your module resides.

The link command is also a plain vanilla command instructing linkage as a dynamic module.

You can include optimization options in the compilation command, although these have been omitted in this example (but some are included in the makefile template described in an earlier section).

Note: Compiling and linking manually as a static module into the PHP binary involves very long instructions and thus is not discussed here. (It's not very efficient to type all those commands.)

Précédent | Sommaire | Suivant
PHP's Automatic Build System | Niveau supérieur | Using Extensions


Using Extensions

Manuel PHP
Précédent Suivant

Chapitre 29. Using Extensions

Depending on the build process you selected, you should either end up with a new PHP binary to be linked into your Web server (or run as CGI), or with an .so (shared object) file. If you compiled the example file first_module.c as a shared object, your result file should be first_module.so. To use it, you first have to copy it to a place from which it's accessible to PHP. For a simple test procedure, you can copy it to your htdocs directory and try it with the source in Exemple 29-1. If you compiled it into the PHP binary, omit the call to dl(), as the module's functionality is instantly available to your scripts.

Avertissement

For security reasons, you should not put your dynamic modules into publicly accessible directories. Even though it can be done and it simplifies testing, you should put them into a separate directory in production environments.

Exemple 29-1. A test file for first_module.so.

<?php

// remove next comment if necessary
// dl("first_module.so");

$param = 2;
$return = first_module($param);

print("We sent '$param' and got '$return'");

?>

Calling this PHP file in your Web browser should give you the output shown in Figure 29-1.

Figure 29-1. Output of first_module.php.

If required, the dynamic loadable module is loaded by calling the dl() function. This function looks for the specified shared object, loads it, and makes its functions available to PHP. The module exports the function first_module(), which accepts a single parameter, converts it to an integer, and returns the result of the conversion.

If you've gotten this far, congratulations! You just built your first extension to PHP.

Précédent | Sommaire | Suivant
Creating Extensions | Niveau supérieur | Troubleshooting


Troubleshooting

Manuel PHP
Précédent Suivant

Chapitre 30. Troubleshooting

Actually, not much troubleshooting can be done when compiling static or dynamic modules. The only problem that could arise is that the compiler will complain about missing definitions or something similar. In this case, make sure that all header files are available and that you specified their path correctly in the compilation command. To be sure that everything is located correctly, extract a clean PHP source tree and use the automatic build in the ext directory with the fresh files; this will guarantee a safe compilation environment. If this fails, try manual compilation.

PHP might also complain about missing functions in your module. (This shouldn't happen with the sample sources if you didn't modify them.) If the names of external functions you're trying to access from your module are misspelled, they'll remain as "unlinked symbols" in the symbol table. During dynamic loading and linkage by PHP, they won't resolve because of the typing errors - there are no corresponding symbols in the main binary. Look for incorrect declarations in your module file or incorrectly written external references. Note that this problem is specific to dynamic loadable modules; it doesn't occur with static modules. Errors in static modules show up at compile time.

Précédent | Sommaire | Suivant
Using Extensions | Niveau supérieur | Source Discussion


Source Discussion

Manuel PHP
Précédent Suivant

Chapitre 31. Source Discussion

Table des matières
Module Structure
Header File Inclusions
Declaring Exported Functions
Declaration of the Zend Function Block
Declaration of the Zend Module Block
Creation of get_module()
Implementation of All Exported Functions
Summary

Now that you've got a safe build environment and you're able to include the modules into PHP files, it's time to discuss how everything works.

Module Structure

All PHP modules follow a common structure:

  • Header file inclusions (to include all required macros, API definitions, etc.)

  • C declaration of exported functions (required to declare the Zend function block)

  • Declaration of the Zend function block

  • Declaration of the Zend module block

  • Implementation of get_module()

  • Implementation of all exported functions

Précédent | Sommaire | Suivant
Troubleshooting | Niveau supérieur | Header File Inclusions


Header File Inclusions

The only header file you really have to include for your modules is php.h, located in the PHP directory. This file makes all macros and API definitions required to build new modules available to your code.

Tip: It's good practice to create a separate header file for your module that contains module-specific definitions. This header file should contain all the forward definitions for exported functions and include php.h. If you created your module using ext_skel you already have such a header file prepared.

Précédent | Sommaire | Suivant
Source Discussion | Niveau supérieur | Declaring Exported Functions


Declaring Exported Functions

To declare functions that are to be exported (i.e., made available to PHP as new native functions), Zend provides a set of macros. A sample declaration looks like this:
ZEND_FUNCTION ( my_function );

ZEND_FUNCTION declares a new C function that complies with Zend's internal API. This means that the function is of type void and accepts INTERNAL_FUNCTION_PARAMETERS (another macro) as parameters. Additionally, it prefixes the function name with zif. The immediately expanded version of the above definitions would look like this:
void zif_my_function ( INTERNAL_FUNCTION_PARAMETERS );
Expanding INTERNAL_FUNCTION_PARAMETERS results in the following:
void zif_my_function( int ht
                    , zval * return_value
                    , zval * this_ptr
                    , int return_value_used
                    , zend_executor_globals * executor_globals
                    );

Since the interpreter and executor core have been separated from the main PHP package, a second API defining macros and function sets has evolved: the Zend API. As the Zend API now handles quite a few of the responsibilities that previously belonged to PHP, a lot of PHP functions have been reduced to macros aliasing to calls into the Zend API. The recommended practice is to use the Zend API wherever possible, as the old API is only preserved for compatibility reasons. For example, the types zval and pval are identical. zval is Zend's definition; pval is PHP's definition (actually, pval is an alias for zval now). As the macro INTERNAL_FUNCTION_PARAMETERS is a Zend macro, the above declaration contains zval. When writing code, you should always use zval to conform to the new Zend API.

The parameter list of this declaration is very important; you should keep these parameters in mind (see Tableau 31-1 for descriptions).

Tableau 31-1. Zend's Parameters to Functions Called from PHP

Parameter | Description
ht | The number of arguments passed to the Zend function. You should not touch this directly, but instead use ZEND_NUM_ARGS() to obtain the value.
return_value | This variable is used to pass any return values of your function back to PHP. Access to this variable is best done using the predefined macros. For a description of these see below.
this_ptr | Using this variable, you can gain access to the object in which your function is contained, if it's used within an object. Use the function getThis() to obtain this pointer.
return_value_used | This flag indicates whether an eventual return value from this function will actually be used by the calling script. 0 indicates that the return value is not used; 1 indicates that the caller expects a return value. Evaluation of this flag can be done to verify correct usage of the function as well as speed optimizations in case returning a value requires expensive operations (for an example, see how array.c makes use of this).
executor_globals | This variable points to global settings of the Zend engine. You'll find this useful when creating new variables, for example (more about this later). The executor globals can also be introduced to your function by using the macro TSRMLS_FETCH().

Précédent | Sommaire | Suivant
Header File Inclusions | Niveau supérieur | Declaration of the Zend Function Block


Declaration of the Zend Function Block

Now that you have declared the functions to be exported, you also have to introduce them to Zend. Introducing the list of functions is done by using an array of zend_function_entry. This array consecutively contains all functions that are to be made available externally, with the function's name as it should appear in PHP and its name as defined in the C source. Internally, zend_function_entry is defined as shown in Exemple 31-1.

Exemple 31-1. Internal declaration of zend_function_entry.

typedef struct _zend_function_entry {
    char *fname;
    void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
    unsigned char *func_arg_types;
} zend_function_entry;

Entry | Description
fname | Denotes the function name as seen in PHP (for example, fopen, mysql_connect, or, in our example, first_module).
handler | Pointer to the C function responsible for handling calls to this function. For example, see the standard macro INTERNAL_FUNCTION_PARAMETERS discussed earlier.
func_arg_types | Allows you to mark certain parameters so that they're forced to be passed by reference. You usually should set this to NULL.

In the example above, the declaration looks like this:
zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    {NULL, NULL, NULL}
};
You can see that the last entry in the list always has to be {NULL, NULL, NULL}. This marker has to be set for Zend to know when the end of the list of exported functions is reached.

Note : You cannot use the predefined macros for the end marker, as these would try to refer to a function named "NULL"!

The macro ZEND_FE (short for 'Zend Function Entry') simply expands to a structure entry in zend_function_entry. Note that these macros introduce a special naming scheme to your functions - your C functions will be prefixed with zif_, meaning that ZEND_FE(first_module) will refer to a C function zif_first_module(). If you want to mix macro usage with hand-coded entries (not a good practice), keep this in mind.

Tip: Compilation errors that refer to functions named zif_*() relate to functions defined with ZEND_FE.

Tableau 31-2 shows a list of all the macros that you can use to define functions.

Tableau 31-2. Macros for Defining Functions

Macro Name | Description
ZEND_FE(name, arg_types) | Defines a function entry of the name name in zend_function_entry. Requires a corresponding C function. arg_types needs to be set to NULL. This function uses automatic C function name generation by prefixing the PHP function name with zif_. For example, ZEND_FE("first_module", NULL) introduces a function first_module() to PHP and links it to the C function zif_first_module(). Use in conjunction with ZEND_FUNCTION.
ZEND_NAMED_FE(php_name, name, arg_types) | Defines a function that will be available to PHP by the name php_name and links it to the corresponding C function name. arg_types needs to be set to NULL. Use this function if you don't want the automatic name prefixing introduced by ZEND_FE. Use in conjunction with ZEND_NAMED_FUNCTION.
ZEND_FALIAS(name, alias, arg_types) | Defines an alias named alias for name. arg_types needs to be set to NULL. Doesn't require a corresponding C function; refers to the alias target instead.
PHP_FE(name, arg_types) | Old PHP API equivalent of ZEND_FE.
PHP_NAMED_FE(runtime_name, name, arg_types) | Old PHP API equivalent of ZEND_NAMED_FE.

Note: You can't use ZEND_FE in conjunction with PHP_FUNCTION, or PHP_FE in conjunction with ZEND_FUNCTION. However, it's perfectly legal to mix ZEND_FE and ZEND_FUNCTION with PHP_FE and PHP_FUNCTION when staying with the same macro set for each function to be declared. But mixing is not recommended; instead, you're advised to use the ZEND_* macros only.

Précédent | Sommaire | Suivant
Declaring Exported Functions | Niveau supérieur | Declaration of the Zend Module Block


Declaration of the Zend Module Block

This block is stored in the structure zend_module_entry and contains all necessary information to describe the contents of this module to Zend. You can see the internal definition of this module in Exemple 31-2.

Exemple 31-2. Internal declaration of zend_module_entry.

typedef struct _zend_module_entry zend_module_entry;

    struct _zend_module_entry {
    unsigned short size;
    unsigned int zend_api;
    unsigned char zend_debug;
    unsigned char zts;
    char *name;
    zend_function_entry *functions;
    int (*module_startup_func)(INIT_FUNC_ARGS);
    int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    int (*request_startup_func)(INIT_FUNC_ARGS);
    int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);
    char *version;

[ Rest of the structure is not interesting here ]

};

Entry | Description
size, zend_api, zend_debug and zts | Usually filled with the "STANDARD_MODULE_HEADER", which fills these four members with the size of the whole zend_module_entry, the ZEND_MODULE_API_NO, whether it is a debug build or normal build (ZEND_DEBUG) and if ZTS is enabled (USING_ZTS).
name | Contains the module name (for example, "File functions", "Socket functions", "Crypt", etc.). This name will show up in phpinfo(), in the section "Additional Modules."
functions | Points to the Zend function block, discussed in the preceding section.
module_startup_func | This function is called once upon module initialization and can be used to do one-time initialization steps (such as initial memory allocation, etc.). To indicate a failure during initialization, return FAILURE; otherwise, SUCCESS. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MINIT.
module_shutdown_func | This function is called once upon module shutdown and can be used to do one-time deinitialization steps (such as memory deallocation). This is the counterpart to module_startup_func(). To indicate a failure during deinitialization, return FAILURE; otherwise, SUCCESS. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MSHUTDOWN.
request_startup_func | This function is called once upon every page request and can be used to do one-time initialization steps that are required to process a request. To indicate a failure here, return FAILURE; otherwise, SUCCESS. Note: As dynamic loadable modules are loaded only on page requests, the request startup function is called right after the module startup function (both initialization events happen at the same time). To mark this field as unused, use NULL. To declare a function, use the macro ZEND_RINIT.
request_shutdown_func | This function is called once after every page request and works as counterpart to request_startup_func(). To indicate a failure here, return FAILURE; otherwise, SUCCESS. Note: As dynamic loadable modules are loaded only on page requests, the request shutdown function is immediately followed by a call to the module shutdown handler (both deinitialization events happen at the same time). To mark this field as unused, use NULL. To declare a function, use the macro ZEND_RSHUTDOWN.
info_func | When phpinfo() is called in a script, Zend cycles through all loaded modules and calls this function. Every module then has the chance to print its own "footprint" into the output page. Generally this is used to dump environmental or statistical information. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MINFO.
version | The version of the module. You can use NO_VERSION_YET if you don't want to give the module a version number yet, but we really recommend that you add a version string here. Such a version string can look like this (in chronological order): "2.5-dev", "2.5RC1", "2.5" or "2.5pl3".
Remaining structure elements | These are used internally and can be prefilled by using the macro STANDARD_MODULE_PROPERTIES_EX. You should not assign any values to them. Use STANDARD_MODULE_PROPERTIES_EX only if you use global startup and shutdown functions; otherwise, use STANDARD_MODULE_PROPERTIES directly.

In our example, this structure is implemented as follows:
zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL, NULL, NULL, NULL, NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES,
};
This is basically the easiest and most minimal set of values you could ever use. The module name is set to First Module, then the function list is referenced, after which all startup and shutdown functions are marked as being unused.

For reference purposes, you can find a list of the macros involved in declared startup and shutdown functions in Tableau 31-3. These are not used in our basic example yet, but will be demonstrated later on. You should make use of these macros to declare your startup and shutdown functions, as these require special arguments to be passed (INIT_FUNC_ARGS and SHUTDOWN_FUNC_ARGS), which are automatically included into the function declaration when using the predefined macros. If you declare your functions manually and the PHP developers decide that a change in the argument list is necessary, you'll have to change your module sources to remain compatible.

Tableau 31-3. Macros to Declare Startup and Shutdown Functions

Macro | Description
ZEND_MINIT(module) | Declares a function for module startup. The generated name will be zend_minit_<module> (for example, zend_minit_first_module). Use in conjunction with ZEND_MINIT_FUNCTION.
ZEND_MSHUTDOWN(module) | Declares a function for module shutdown. The generated name will be zend_mshutdown_<module> (for example, zend_mshutdown_first_module). Use in conjunction with ZEND_MSHUTDOWN_FUNCTION.
ZEND_RINIT(module) | Declares a function for request startup. The generated name will be zend_rinit_<module> (for example, zend_rinit_first_module). Use in conjunction with ZEND_RINIT_FUNCTION.
ZEND_RSHUTDOWN(module) | Declares a function for request shutdown. The generated name will be zend_rshutdown_<module> (for example, zend_rshutdown_first_module). Use in conjunction with ZEND_RSHUTDOWN_FUNCTION.
ZEND_MINFO(module) | Declares a function for printing module information, used when phpinfo() is called. The generated name will be zend_info_<module> (for example, zend_info_first_module). Use in conjunction with ZEND_MINFO_FUNCTION.

Précédent | Sommaire | Suivant
Declaration of the Zend Function Block | Niveau supérieur | Creation of get_module()


Implementation of All Exported Functions

Implementing the exported functions is the final step. The example function in first_module looks like this:
ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parameter);
}
The function declaration is done using ZEND_FUNCTION, which corresponds to ZEND_FE in the function entry table (discussed earlier).

After the declaration, code for checking and retrieving the function's arguments, argument conversion, and return value generation follows (more on this later).

Précédent | Sommaire | Suivant
Creation of get_module() | Niveau supérieur | Summary


Summary

That's it, basically - there's nothing more to implementing PHP modules. Built-in modules are structured similarly to dynamic modules, so, equipped with the information presented in the previous sections, you'll be able to fight the odds when encountering PHP module source files.

Now, in the following sections, read on about how to make use of PHP's internals to build powerful extensions.

Précédent | Sommaire | Suivant
Implementation of All Exported Functions | Niveau supérieur | Accepting Arguments


Accepting Arguments

Manuel PHP
Précédent Suivant

Chapitre 32. Accepting Arguments

Table des matières
Determining the Number of Arguments
Retrieving Arguments
Old way of retrieving arguments (deprecated)
Dealing with a Variable Number of Arguments/Optional Parameters
Accessing Arguments
Dealing with Arguments Passed by Reference
Assuring Write Safety for Other Parameters

One of the most important issues for language extensions is accepting and dealing with data passed via arguments. Most extensions are built to deal with specific input data (or require parameters to perform their specific actions), and function arguments are the only real way to exchange data between the PHP level and the C level. Of course, there's also the possibility of exchanging data using predefined global values (which is also discussed later), but this should be avoided by all means, as it's extremely bad practice.

PHP doesn't make use of any formal function declarations; this is why call syntax is always completely dynamic and never checked for errors. Checking for correct call syntax is left to the user code. For example, it's possible to call a function using only one argument at one time and four arguments the next time - both invocations are syntactically absolutely correct.

Determining the Number of Arguments

Since PHP doesn't have formal function definitions with support for call syntax checking, and since PHP features variable arguments, sometimes you need to find out with how many arguments your function has been called. You can use the ZEND_NUM_ARGS macro in this case. In previous versions of PHP, this macro retrieved the number of arguments with which the function has been called based on the function's hash table entry, ht, which is passed in the INTERNAL_FUNCTION_PARAMETERS list. As ht itself now contains the number of arguments that have been passed to the function, ZEND_NUM_ARGS has been stripped down to a dummy macro (see its definition in zend_API.h). But it's still good practice to use it, to remain compatible with future changes in the call interface. Note: The old PHP equivalent of this macro is ARG_COUNT.

The following code checks for the correct number of arguments:
if(ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT;
If the function is not called with two arguments, it exits with an error message. The code snippet above makes use of the tool macro WRONG_PARAM_COUNT, which can be used to generate a standard error message (see Figure 32-1).

Figure 32-1. WRONG_PARAM_COUNT in action.

This macro prints a default error message and then returns to the caller. Its definition can also be found in zend_API.h and looks like this:
ZEND_API void wrong_param_count(void);

#define WRONG_PARAM_COUNT { wrong_param_count(); return; }
As you can see, it calls an internal function named wrong_param_count() that's responsible for printing the warning. For details on generating customized error messages, see the later section "Printing Information."

Précédent | Sommaire | Suivant
Summary | Niveau supérieur | Retrieving Arguments


Retrieving Arguments

New parameter parsing API : This chapter documents the new Zend parameter parsing API introduced by Andrei Zmievski. It was introduced in the development stage between PHP 4.0.6 and 4.1.0 .

Parsing parameters is a very common operation and it may get a bit tedious. It would also be nice to have standardized error checking and error messages. Since PHP 4.1.0, there is a way to do just that by using the new parameter parsing API. It greatly simplifies the process of receiving parameteres, but it has a drawback in that it can't be used for functions that expect variable number of parameters. But since the vast majority of functions do not fall into those categories, this parsing API is recommended as the new standard way.

The prototype for parameter parsing function looks like this:
int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...);
The first argument to this function is supposed to be the number of actual parameters passed to your function, so ZEND_NUM_ARGS() can be used for that. The second parameter should always be TSRMLS_CC macro. The third argument is a string that specifies the number and types of arguments your function is expecting, similar to how printf format string specifies the number and format of the output values it should operate on. And finally the rest of the arguments are pointers to variables which should receive the values from the parameters.

zend_parse_parameters() also performs type conversions whenever possible, so that you always receive the data in the format you asked for. Any type of scalar can be converted to another one, but conversions between complex types (arrays, objects, and resources) and scalar types are not allowed.

If the parameters could be obtained successfully and there were no errors during type conversion, the function will return SUCCESS, otherwise it will return FAILURE. The function will output informative error messages, if the number of received parameters does not match the requested number, or if type conversion could not be performed.

Here are some sample error messages:
Warning - ini_get_all() requires at most 1 parameter, 2 given
     Warning - wddx_deserialize() expects parameter 1 to be string, array given
Of course each error message is accompanied by the filename and line number on which it occurs.

Here is the full list of type specifiers:

  • l - long

  • d - double

  • s - string (with possible null bytes) and its length

  • b - boolean

  • r - resource, stored in zval*

  • a - array, stored in zval*

  • o - object (of any class), stored in zval*

  • O - object (of class specified by class entry), stored in zval*

  • z - the actual zval*

The following characters also have a meaning in the specifier string:

  • | - indicates that the remaining parameters are optional. The storage variables corresponding to these parameters should be initialized to default values by the extension, since they will not be touched by the parsing function if the parameters are not passed.

  • / - the parsing function will call SEPARATE_ZVAL_IF_NOT_REF() on the parameter it follows, to provide a copy of the parameter, unless it's a reference.

  • ! - the parameter it follows can be of specified type or NULL (only applies to a, o, O, r, and z). If NULL value is passed by the user, the storage pointer will be set to NULL.

The best way to illustrate the usage of this function is through examples:
/* Gets a long, a string and its length, and a zval. */
long l;
char *s;
int s_len;
zval *param;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "lsz", &l, &s, &s_len, &param) == FAILURE) {
    return;
}

/* Gets an object of class specified by my_ce, and an optional double. */
zval *obj;
double d = 0.5;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "O|d", &obj, my_ce, &d) == FAILURE) {
    return;
}

/* Gets an object or null, and an array.
   If null is passed for object, obj will be set to NULL. */
zval *obj;
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O!a", &obj, &arr) == FAILURE) {
    return;
}

/* Gets a separated array. */
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &arr) == FAILURE) {
    return;
}

/* Get only the first three parameters (useful for varargs functions). */
zval *z;
zend_bool b;
zval *r;
if (zend_parse_parameters(3, "zbr!", &z, &b, &r) == FAILURE) {
    return;
}

Note that in the last example we pass 3 for the number of received parameters, instead of ZEND_NUM_ARGS(). What this lets us do is receive the least number of parameters if our function expects a variable number of them. Of course, if you want to operate on the rest of the parameters, you will have to use zend_get_parameters_array_ex() to obtain them.

The parsing function has an extended version that allows for an additional flags argument that controls its actions.
int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...);

The only flag you can pass currently is ZEND_PARSE_PARAMS_QUIET, which instructs the function to not output any error messages during its operation. This is useful for functions that expect several sets of completely different arguments, but you will have to output your own error messages.

For example, here is how you would get either a set of three longs or a string:
long l1, l2, l3;
char *s;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                             ZEND_NUM_ARGS() TSRMLS_CC,
                             "lll", &l1, &l2, &l3) == SUCCESS) {
    /* manipulate longs */
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                                    ZEND_NUM_ARGS(), "s", &s, &s_len) == SUCCESS) {
    /* manipulate string */
} else {
    php_error(E_WARNING, "%s() takes either three long values or a string as argument",
              get_active_function_name(TSRMLS_C));
    return;
}

With all the abovementioned ways of receiving function parameters you should have a good handle on this process. For even more example, look through the source code for extensions that are shipped with PHP - they illustrate every conceivable situation.

Précédent | Sommaire | Suivant
Accepting Arguments | Niveau supérieur | Old way of retrieving arguments (deprecated)


Old way of retrieving arguments (deprecated)

Deprecated parameter parsing API : This API is deprecated and superseded by the new ZEND parameter parsing API.

After having checked the number of arguments, you need to get access to the arguments themselves. This is done with the help of zend_get_parameters_ex():
zval **parameter;

if(zend_get_parameters_ex(1, &parameter) != SUCCESS)
  WRONG_PARAM_COUNT;
All arguments are stored in a zval container, which needs to be pointed to twice. The snippet above tries to retrieve one argument and make it available to us via the parameter pointer.

zend_get_parameters_ex() accepts at least two arguments. The first argument is the number of arguments to retrieve (which should match the number of arguments with which the function has been called; this is why it's important to check for correct call syntax). The second argument (and all following arguments) are pointers to pointers to pointers to zvals. (Confusing, isn't it?) All these pointers are required because Zend works internally with **zval; to adjust a local **zval in our function,zend_get_parameters_ex() requires a pointer to it.

The return value of zend_get_parameters_ex() can either be SUCCESS or FAILURE, indicating (unsurprisingly) success or failure of the argument processing. A failure is most likely related to an incorrect number of arguments being specified, in which case you should exit with WRONG_PARAM_COUNT.

To retrieve more than one argument, you can use a similar snippet:
zval **param1, **param2, **param3, **param4;

if(zend_get_parameters_ex(4, &param1, &param2, &param3, &param4) != SUCCESS)
    WRONG_PARAM_COUNT;

zend_get_parameters_ex() only checks whether you're trying to retrieve too many parameters. If the function is called with five arguments, but you're only retrieving three of them with zend_get_parameters_ex(), you won't get an error but will get the first three parameters instead. Subsequent calls of zend_get_parameters_ex() won't retrieve the remaining arguments, but will get the same arguments again.

Précédent | Sommaire | Suivant
Retrieving Arguments | Niveau supérieur | Dealing with a Variable Number of Arguments/Optional Parameters


Dealing with a Variable Number of Arguments/Optional Parameters

If your function is meant to accept a variable number of arguments, the snippets just described are sometimes suboptimal solutions. You have to create a line calling zend_get_parameters_ex() for every possible number of arguments, which is often unsatisfying.

For this case, you can use the function zend_get_parameters_array_ex(), which accepts the number of parameters to retrieve and an array in which to store them:
zval **parameter_array[4];

/* get the number of arguments */
argument_count = ZEND_NUM_ARGS();

/* see if it satisfies our minimal request (2 arguments) */
/* and our maximal acceptance (4 arguments) */
if(argument_count < 2 || argument_count > 5)
    WRONG_PARAM_COUNT;

/* argument count is correct, now retrieve arguments */
if(zend_get_parameters_array_ex(argument_count, parameter_array) != SUCCESS)
    WRONG_PARAM_COUNT;
First, the number of arguments is checked to make sure that it's in the accepted range. After that, zend_get_parameters_array_ex() is used to fill parameter_array with valid pointers to the argument values.

A very clever implementation of this can be found in the code handling PHP's fsockopen() located in ext/standard/fsock.c, as shown in Exemple 32-1. Don't worry if you don't know all the functions used in this source yet; we'll get to them shortly.

Exemple 32-1. PHP's implementation of variable arguments in fsockopen().

pval **args[5];
int *sock=emalloc(sizeof(int));
int *sockp;
int arg_count=ARG_COUNT(ht);
int socketd = -1;
unsigned char udp = 0;
struct timeval timeout = { 60, 0 };
unsigned short portno;
unsigned long conv;
char *key = NULL;
FLS_FETCH();

if (arg_count > 5 || arg_count < 2 || zend_get_parameters_array_ex(arg_count,args)==FAILURE) {
    CLOSE_SOCK(1);
    WRONG_PARAM_COUNT;
}

switch(arg_count) {
    case 5:
        convert_to_double_ex(args[4]);
        conv = (unsigned long) (Z_DVAL_P(args[4]) * 1000000.0);
        timeout.tv_sec = conv / 1000000;
        timeout.tv_usec = conv % 1000000;
        /* fall-through */
    case 4:
        if (!PZVAL_IS_REF(*args[3])) {
            php_error(E_WARNING,"error string argument to fsockopen not passed by reference");
        }
        pval_copy_constructor(*args[3]);
        ZVAL_EMPTY_STRING(*args[3]);
        /* fall-through */
    case 3:
        if (!PZVAL_IS_REF(*args[2])) {
            php_error(E_WARNING,"error argument to fsockopen not passed by reference");
            return;
        }
        ZVAL_LONG(*args[2], 0);
        break;
}

convert_to_string_ex(args[0]);
convert_to_long_ex(args[1]);
portno = (unsigned short) Z_LVAL_P(args[1]);

key = emalloc(Z_STRLEN_P(args[0]) + 10);

fsockopen() accepts two, three, four, or five parameters. After the obligatory variable declarations, the function checks for the correct range of arguments. Then it uses a fall-through mechanism in a switch() statement to deal with all arguments. The switch() statement starts with the maximum number of arguments being passed (five). After that, it automatically processes the case of four arguments being passed, then three, by omitting the otherwise obligatory break keyword in all stages. After having processed the last case, it exits the switch() statement and does the minimal argument processing needed if the function is invoked with only two arguments.

This multiple-stage type of processing, similar to a stairway, allows convenient processing of a variable number of arguments.

Précédent | Sommaire | Suivant
Old way of retrieving arguments (deprecated) | Niveau supérieur | Accessing Arguments


Accessing Arguments

To access arguments, it's necessary for each argument to have a clearly defined type. Again, PHP's extremely dynamic nature introduces some quirks. Because PHP never does any kind of type checking, it's possible for a caller to pass any kind of data to your functions, whether you want it or not. If you expect an integer, for example, the caller might pass an array, and vice versa - PHP simply won't notice.

To work around this, you have to use a set of API functions to force a type conversion on every argument that's being passed (see Tableau 32-1).

Note: All conversion functions expect a **zval as parameter.

Tableau 32-1. Argument Conversion Functions

Function | Description
convert_to_boolean_ex() | Forces conversion to a Boolean type. Boolean values remain untouched. Longs, doubles, and strings containing 0 as well as NULL values will result in Boolean 0 (FALSE). Arrays and objects are converted based on the number of entries or properties, respectively, that they have. Empty arrays and objects are converted to FALSE; otherwise, to TRUE. All other values result in a Boolean 1 (TRUE).
convert_to_long_ex() | Forces conversion to a long, the default integer type. NULL values, Booleans, resources, and of course longs remain untouched. Doubles are truncated. Strings containing an integer are converted to their corresponding numeric representation, otherwise resulting in 0. Arrays and objects are converted to 0 if empty, 1 otherwise.
convert_to_double_ex() | Forces conversion to a double, the default floating-point type. NULL values, Booleans, resources, longs, and of course doubles remain untouched. Strings containing a number are converted to their corresponding numeric representation, otherwise resulting in 0.0. Arrays and objects are converted to 0.0 if empty, 1.0 otherwise.
convert_to_string_ex() | Forces conversion to a string. Strings remain untouched. NULL values are converted to an empty string. Booleans containing TRUE are converted to "1", otherwise resulting in an empty string. Longs and doubles are converted to their corresponding string representation. Arrays are converted to the string "Array" and objects to the string "Object".
convert_to_array_ex(value) | Forces conversion to an array. Arrays remain untouched. Objects are converted to an array by assigning all their properties to the array table. All property names are used as keys, property contents as values. NULL values are converted to an empty array. All other values are converted to an array that contains the specific source value in the element with the key 0.
convert_to_object_ex(value) | Forces conversion to an object. Objects remain untouched. NULL values are converted to an empty object. Arrays are converted to objects by introducing their keys as properties into the objects and their values as corresponding property contents in the object. All other types result in an object with the property scalar , having the corresponding source value as content.
convert_to_null_ex(value) | Forces the type to become a NULL value, meaning empty.

Note : You can find a demonstration of the behavior in cross_conversion.php on the accompanying CD-ROM. Figure 32-2 shows the output.

Figure 32-2. Cross-conversion behavior of PHP.

Using these functions on your arguments will ensure type safety for all data that's passed to you. If the supplied type doesn't match the required type, PHP forces dummy contents on the resulting value (empty strings, arrays, or objects, 0 for numeric values, FALSE for Booleans) to ensure a defined state.

Following is a quote from the sample module discussed previously, which makes use of the conversion functions:
zval **parameter;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &parameter) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

convert_to_long_ex(parameter);

RETURN_LONG(Z_LVAL_P(parameter));
After retrieving the parameter pointer, the parameter value is converted to a long (an integer), which also forms the return value of this function. Understanding access to the contents of the value requires a short discussion of the zval type, whose definition is shown in Exemple 32-2.

Exemple 32-2. PHP/Zend zval type definition.

typedef pval zval;

typedef struct _zval_struct zval;

typedef union _zvalue_value {
    long lval;					/* long value */
    double dval;				/* double value */
    struct {
        char *val;
        int len;
    } str;
    HashTable *ht;				/* hash table value */
    struct {
        zend_class_entry *ce;
        HashTable *properties;
    } obj;
} zvalue_value;

struct _zval_struct {
    /* Variable information */
    zvalue_value value;		/* value */
    unsigned char type;	/* active type */
    unsigned char is_ref;
    short refcount;
};

Actually, pval (defined in php.h) is only an alias of zval (defined in zend.h), which in turn refers to _zval_struct. This is a most interesting structure. _zval_struct is the "master" structure, containing the value structure, type, and reference information. The substructure zvalue_value is a union that contains the variable's contents. Depending on the variable's type, you'll have to access different members of this union. For a description of both structures, see Tableau 32-2, Tableau 32-3 and Tableau 32-4.

Tableau 32-2. Zend zval Structure

Entry | Description
value | Union containing this variable's contents. See Tableau 32-3 for a description.
type | Contains this variable's type. For a list of available types, see Tableau 32-4.
is_ref | 0 means that this variable is not a reference; 1 means that this variable is a reference to another variable.
refcount | The number of references that exist for this variable. For every new reference to the value stored in this variable, this counter is increased by 1. For every lost reference, this counter is decreased by 1. When the reference counter reaches 0, no references exist to this value anymore, which causes automatic freeing of the value.

Tableau 32-3. Zend zvalue_value Structure

Entry | Description
lval | Use this property if the variable is of the type IS_LONG, IS_BOOLEAN, or IS_RESOURCE.
dval | Use this property if the variable is of the type IS_DOUBLE.
str | This structure can be used to access variables of the type IS_STRING. The member len contains the string length; the member val points to the string itself. Zend uses C strings; thus, the string length contains a trailing 0x00.
ht | This entry points to the variable's hash table entry if the variable is an array.
obj | Use this property if the variable is of the type IS_OBJECT.

Tableau 32-4. Zend Variable Type Constants

Constant | Description
IS_NULL | Denotes a NULL (empty) value.
IS_LONG | A long (integer) value.
IS_DOUBLE | A double (floating point) value.
IS_STRING | A string.
IS_ARRAY | Denotes an array.
IS_OBJECT | An object.
IS_BOOL | A Boolean value.
IS_RESOURCE | A resource (for a discussion of resources, see the appropriate section below).
IS_CONSTANT | A constant (defined) value.

To access a long you access zval.value.lval, to access a double you use zval.value.dval, and so on. Because all values are stored in a union, trying to access data with incorrect union members results in meaningless output.

Accessing arrays and objects is a bit more complicated and is discussed later.

Précédent | Sommaire | Suivant
Dealing with a Variable Number of Arguments/Optional Parameters | Niveau supérieur | Dealing with Arguments Passed by Reference


Dealing with Arguments Passed by Reference

If your function accepts arguments passed by reference that you intend to modify, you need to take some precautions.

What we didn't say yet is that under the circumstances presented so far, you don't have write access to any zval containers designating function parameters that have been passed to you. Of course, you can change any zval containers that you created within your function, but you mustn't change any zvals that refer to Zend-internal data!

We've only discussed the so-called *_ex() API so far. You may have noticed that the API functions we've used are called zend_get_parameters_ex() instead of zend_get_parameters(), convert_to_long_ex() instead of convert_to_long(), etc. The *_ex() functions form the so-called new "extended" Zend API. They give a minor speed increase over the old API, but as a tradeoff are only meant for providing read-only access.

Because Zend works internally with references, different variables may reference the same value. Write access to a zval container requires this container to contain an isolated value, meaning a value that's not referenced by any other containers. If a zval container were referenced by other containers and you changed the referenced zval, you would automatically change the contents of the other containers referencing this zval (because they'd simply point to the changed value and thus change their own value as well).

zend_get_parameters_ex() doesn't care about this situation, but simply returns a pointer to the desired zval containers, whether they consist of references or not. Its corresponding function in the traditional API, zend_get_parameters(), immediately checks for referenced values. If it finds a reference, it creates a new, isolated zval container; copies the referenced data into this newly allocated space; and then returns a pointer to the new, isolated value.

This action is called zval separation (or pval separation). Because the *_ex() API doesn't perform zval separation, it's considerably faster, while at the same time disabling write access.

To change parameters, however, write access is required. Zend deals with this situation in a special way: Whenever a parameter to a function is passed by reference, it performs automatic zval separation. This means that whenever you're calling a function like this in PHP, Zend will automatically ensure that $parameter is being passed as an isolated value, rendering it to a write-safe state:
my_function(&$parameter);

But this is not the case with regular parameters! All other parameters that are not passed by reference are in a read-only state.

This requires you to make sure that you're really working with a reference - otherwise you might produce unwanted results. To check for a parameter being passed by reference, you can use the macro PZVAL_IS_REF. This macro accepts a zval* to check if it is a reference or not. Examples are given in in Exemple 32-3.

Exemple 32-3. Testing for referenced parameter passing.

zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
    return;

/* check for parameter being passed by reference */
if (!PZVAL_IS_REF(*parameter)) {
{
    zend_error(E_WARNING, "Parameter wasn't passed by reference");
    RETURN_NULL();
}

/* make changes to the parameter */
ZVAL_LONG(*parameter, 10);

Précédent | Sommaire | Suivant
Accessing Arguments | Niveau supérieur | Assuring Write Safety for Other Parameters


Assuring Write Safety for Other Parameters

You might run into a situation in which you need write access to a parameter that's retrieved with zend_get_parameters_ex() but not passed by reference. For this case, you can use the macro SEPARATE_ZVAL, which does a zval separation on the provided container. The newly generated zval is detached from internal data and has only a local scope, meaning that it can be changed or destroyed without implying global changes in the script context:
zval **parameter;

/* retrieve parameter */
zend_get_parameters_ex(1, &parameter);

/* at this stage, <parameter> still is connected */
/* to Zend's internal data buffers */

/* make <parameter> write-safe */
SEPARATE_ZVAL(parameter);

/* now we can safely modify <parameter> */
/* without implying global changes */
SEPARATE_ZVAL uses emalloc() to allocate the new zval container, which means that even if you don't deallocate this memory yourself, it will be destroyed automatically upon script termination. However, doing a lot of calls to this macro without freeing the resulting containers will clutter up your RAM.

Note: As you can easily work around the lack of write access in the "traditional" API (with zend_get_parameters() and so on), this API seems to be obsolete, and is not discussed further in this chapter.

Précédent | Sommaire | Suivant
Dealing with Arguments Passed by Reference | Niveau supérieur | Creating Variables


Creating Variables

Manuel PHP
Précédent Suivant

Chapitre 33. Creating Variables

Table des matières
Overview
Longs (Integers)
Doubles (Floats)
Strings
Booleans
Arrays
Objects
Resources
Macros for Automatic Global Variable Creation
Creating Constants

When exchanging data from your own extensions with PHP scripts, one of the most important issues is the creation of variables. This section shows you how to deal with the variable types that PHP supports.

Overview

To create new variables that can be seen "from the outside" by the executing script, you need to allocate a new zval container, fill this container with meaningful values, and then introduce it to Zend's internal symbol table. This basic process is common to all variable creations:

zval *new_variable;

/* allocate and initialize new container */
MAKE_STD_ZVAL(new_variable);

/* set type and variable contents here, see the following sections */

/* introduce this variable by the name "new_variable_name" into the symbol table */
ZEND_SET_SYMBOL(EG(active_symbol_table), "new_variable_name", new_variable);

/* the variable is now accessible to the script by using $new_variable_name */

The macro MAKE_STD_ZVAL allocates a new zval container using ALLOC_ZVAL and initializes it using INIT_ZVAL. As implemented in Zend at the time of this writing, initializing means setting the reference count to 1 and clearing the is_ref flag, but this process could be extended later - this is why it's a good idea to keep using MAKE_STD_ZVAL instead of only using ALLOC_ZVAL. If you want to optimize for speed (and you don't have to explicitly initialize the zval container here), you can use ALLOC_ZVAL, but this isn't recommended because it doesn't ensure data integrity.

ZEND_SET_SYMBOL takes care of introducing the new variable to Zend's symbol table. This macro checks whether the value already exists in the symbol table and converts the new symbol to a reference if so (with automatic deallocation of the old zval container). This is the preferred method if speed is not a crucial issue and you'd like to keep memory usage low.

Note that ZEND_SET_SYMBOL makes use of the Zend executor globals via the macro EG. By specifying EG(active_symbol_table), you get access to the currently active symbol table, dealing with the active, local scope. The local scope may differ depending on whether the function was invoked from within a function.

If you need to optimize for speed and don't care about optimal memory usage, you can omit the check for an existing variable with the same value and instead force insertion into the symbol table by using zend_hash_update():
zval *new_variable;

/* allocate and initialize new container */
MAKE_STD_ZVAL(new_variable);

/* set type and variable contents here, see the following sections */

/* introduce this variable by the name "new_variable_name" into the symbol table */
zend_hash_update(
    EG(active_symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);
This is actually the standard method used in most modules.

The variables generated with the snippet above will always be of local scope, so they reside in the context in which the function has been called. To create new variables in the global scope, use the same method but refer to another symbol table:
zval *new_variable;

// allocate and initialize new container
MAKE_STD_ZVAL(new_variable);

//
// set type and variable contents here
//

// introduce this variable by the name "new_variable_name" into the global symbol table
ZEND_SET_SYMBOL(&EG(symbol_table), "new_variable_name", new_variable);
The macro ZEND_SET_SYMBOL is now being called with a reference to the main, global symbol table by referring EG(symbol_table).

Note: The active_symbol_table variable is a pointer, but symbol_table is not. This is why you have to use EG(active_symbol_table) and &EG(symbol_table) as parameters to ZEND_SET_SYMBOL - it requires a pointer.

Similarly, to get a more efficient version, you can hardcode the symbol table update:
zval *new_variable;

// allocate and initialize new container
MAKE_STD_ZVAL(new_variable);

//
// set type and variable contents here
//

// introduce this variable by the name "new_variable_name" into the global symbol table
zend_hash_update(
    &EG(symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);
Exemple 33-1 shows a sample source that creates two variables - local_variable with a local scope and global_variable with a global scope (see Figure 9.7). The full example can be found on the CD-ROM.

Note: You can see that the global variable is actually not accessible from within the function. This is because it's not imported into the local scope using global $global_variable; in the PHP source.

Exemple 33-1. Creating variables with different scopes.

ZEND_FUNCTION(variable_creation)
{
    zval *new_var1, *new_var2;

    MAKE_STD_ZVAL(new_var1);
    MAKE_STD_ZVAL(new_var2);

    ZVAL_LONG(new_var1, 10);
    ZVAL_LONG(new_var2, 5);

    ZEND_SET_SYMBOL(EG(active_symbol_table), "local_variable", new_var1);
    ZEND_SET_SYMBOL(&EG(symbol_table), "global_variable", new_var2);

    RETURN_NULL();

}

Précédent | Sommaire | Suivant
Assuring Write Safety for Other Parameters | Niveau supérieur | Longs (Integers)


Longs (Integers)

Now let's get to the assignment of data to variables, starting with longs. Longs are PHP's integers and are very simple to store. Looking at the zval.value container structure discussed earlier in this chapter, you can see that the long data type is directly contained in the union, namely in the lval field. The corresponding type value for longs is IS_LONG (see Exemple 33-2).

Exemple 33-2. Creation of a long.

zval *new_long;

MAKE_STD_ZVAL(new_long);

new_long->type = IS_LONG;
new_long->value.lval = 10;
Alternatively, you can use the macro ZVAL_LONG:
zval *new_long;

MAKE_STD_ZVAL(new_long);
ZVAL_LONG(new_long, 10);

Précédent | Sommaire | Suivant
Creating Variables | Niveau supérieur | Doubles (Floats)


Doubles (Floats)

Doubles are PHP's floats and are as easy to assign as longs, because their value is also contained directly in the union. The member in the zval.value container is dval; the corresponding type is IS_DOUBLE.
zval *new_double;

MAKE_STD_ZVAL(new_double);

new_double->type = IS_DOUBLE;
new_double->value.dval = 3.45;
Alternatively, you can use the macro ZVAL_DOUBLE:
zval *new_double;

MAKE_STD_ZVAL(new_double);
ZVAL_DOUBLE(new_double, 3.45);

Précédent | Sommaire | Suivant
Longs (Integers) | Niveau supérieur | Strings


Strings

Strings need slightly more effort. As mentioned earlier, all strings that will be associated with Zend's internal data structures need to be allocated using Zend's own memory-management functions. Referencing of static strings or strings allocated with standard routines is not allowed. To assign strings, you have to access the structure str in the zval.value container. The corresponding type is IS_STRING:
zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string->type = IS_STRING;
new_string->value.str.len = strlen(string_contents);
new_string->value.str.val = estrdup(string_contents);
Note the usage of Zend's estrdup() here. Of course, you can also use the predefined macro ZVAL_STRING:
zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);
ZVAL_STRING accepts a third parameter that indicates whether the supplied string contents should be duplicated (using estrdup()). Setting this parameter to 1 causes the string to be duplicated; 0 simply uses the supplied pointer for the variable contents. This is most useful if you want to create a new variable referring to a string that's already allocated in Zend internal memory.

If you want to truncate the string at a certain position or you already know its length, you can use ZVAL_STRINGL(zval, string, length, duplicate), which accepts an explicit string length to be set for the new string. This macro is faster than ZVAL_STRING and also binary-safe.

To create empty strings, set the string length to 0 and use empty_string as contents:
new_string->type = IS_STRING;
new_string->value.str.len = 0;
new_string->value.str.val = empty_string;
Of course, there's a macro for this as well (ZVAL_EMPTY_STRING):
MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Précédent | Sommaire | Suivant
Doubles (Floats) | Niveau supérieur | Booleans


Booleans

Booleans are created just like longs, but have the type IS_BOOL. Allowed values in lval are 0 and 1:
zval *new_bool;

MAKE_STD_ZVAL(new_bool);

new_bool->type = IS_BOOL;
new_bool->value.lval = 1;
The corresponding macros for this type are ZVAL_BOOL (allowing specification of the value) as well as ZVAL_TRUE and ZVAL_FALSE (which explicitly set the value to TRUE and FALSE, respectively).

Précédent | Sommaire | Suivant
Strings | Niveau supérieur | Arrays


Arrays

Arrays are stored using Zend's internal hash tables, which can be accessed using the zend_hash_*() API. For every array that you want to create, you need a new hash table handle, which will be stored in the ht member of the zval.value container.

There's a whole API solely for the creation of arrays, which is extremely handy. To start a new array, you call array_init().
zval *new_array;

MAKE_STD_ZVAL(new_array);

array_init(new_array);
array_init() always returns SUCCESS.

To add new elements to the array, you can use numerous functions, depending on what you want to do. Tableau 33-1, Tableau 33-2 and Tableau 33-3 describe these functions. All functions return FAILURE on failure and SUCCESS on success.

Tableau 33-1. Zend's API for Associative Arrays

Function | Description
add_assoc_long(zval *array, char *key, long n);() | Adds an element of type long.
add_assoc_unset(zval *array, char *key);() | Adds an unset element.
add_assoc_bool(zval *array, char *key, int b);() | Adds a Boolean element.
add_assoc_resource(zval *array, char *key, int r);() | Adds a resource to the array.
add_assoc_double(zval *array, char *key, double d);() | Adds a floating-point value.
add_assoc_string(zval *array, char *key, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_assoc_stringl(zval *array, char *key, char *str, uint length, int duplicate); () | Adds a string with the desired length length to the array. Otherwise, behaves like add_assoc_string().
add_assoc_zval(zval *array, char *key, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...

Tableau 33-2. Zend's API for Indexed Arrays, Part 1

Function | Description
add_index_long(zval *array, uint idx, long n);() | Adds an element of type long.
add_index_unset(zval *array, uint idx);() | Adds an unset element.
add_index_bool(zval *array, uint idx, int b);() | Adds a Boolean element.
add_index_resource(zval *array, uint idx, int r);() | Adds a resource to the array.
add_index_double(zval *array, uint idx, double d);() | Adds a floating-point value.
add_index_string(zval *array, uint idx, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_index_stringl(zval *array, uint idx, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string()().
add_index_zval(zval *array, uint idx, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...

Tableau 33-3. Zend's API for Indexed Arrays, Part 2

Function | Description
add_next_index_long(zval *array, long n);() | Adds an element of type long.
add_next_index_unset(zval *array);() | Adds an unset element.
add_next_index_bool(zval *array, int b);() | Adds a Boolean element.
add_next_index_resource(zval *array, int r);() | Adds a resource to the array.
add_next_index_double(zval *array, double d);() | Adds a floating-point value.
add_next_index_string(zval *array, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_next_index_stringl(zval *array, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string()().
add_next_index_zval(zval *array, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...

All these functions provide a handy abstraction to Zend's internal hash API. Of course, you can also use the hash functions directly - for example, if you already have a zval container allocated that you want to insert into an array. This is done using zend_hash_update()() for associative arrays (see Exemple 33-3) and zend_hash_index_update() for indexed arrays (see Exemple 33-4):

Exemple 33-3. Adding an element to an associative array.

zval *new_array, *new_element;
char *key = "element_key";

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

array_init(new_array);

ZVAL_LONG(new_element, 10);

if(zend_hash_update(new_array->value.ht, key, strlen(key) + 1, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // do error handling here
}

Exemple 33-4. Adding an element to an indexed array.

zval *new_array, *new_element;
int key = 2;

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

array_init(new_array);

ZVAL_LONG(new_element, 10);

if(zend_hash_index_update(new_array->value.ht, key, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // do error handling here
}

To emulate the functionality of add_next_index_*(), you can use this:

zend_hash_next_index_insert(ht, zval **new_element, sizeof(zval *), NULL)

Note: To return arrays from a function, use array_init() and all following actions on the predefined variable return_value (given as argument to your exported function; see the earlier discussion of the call interface). You do not have to use MAKE_STD_ZVAL on this.

Tip: To avoid having to write new_array->value.ht every time, you can use HASH_OF(new_array), which is also recommended for compatibility and style reasons.

Précédent | Sommaire | Suivant
Booleans | Niveau supérieur | Objects


Objects

Since objects can be converted to arrays (and vice versa), you might have already guessed that they have a lot of similarities to arrays in PHP. Objects are maintained with the same hash functions, but there's a different API for creating them.

To initialize an object, you use the function object_init():
zval *new_object;

MAKE_STD_ZVAL(new_object);

if(object_init(new_object) != SUCCESS)
{
    // do error handling here
}
You can use the functions described in Tableau 33-4 to add members to your object.

Tableau 33-4. Zend's API for Object Creation

Function | Description
add_property_long(zval *object, char *key, long l);() | Adds a long to the object.
add_property_unset(zval *object, char *key);() | Adds an unset property to the object.
add_property_bool(zval *object, char *key, int b);() | Adds a Boolean to the object.
add_property_resource(zval *object, char *key, long r);() | Adds a resource to the object.
add_property_double(zval *object, char *key, double d);() | Adds a double to the object.
add_property_string(zval *object, char *key, char *str, int duplicate);() | Adds a string to the object.
add_property_stringl(zval *object, char *key, char *str, uint length, int duplicate);() | Adds a string of the specified length to the object. This function is faster than add_property_string() and also binary-safe.
add_property_zval(zval *obect, char *key, zval *container):() | Adds a zval container to the object. This is useful if you have to add properties which aren't simple types like integers or strings but arrays or other objects.

Précédent | Sommaire | Suivant
Arrays | Niveau supérieur | Resources


Resources

Resources are a special kind of data type in PHP. The term resources doesn't really refer to any special kind of data, but to an abstraction method for maintaining any kind of information. Resources are kept in a special resource list within Zend. Each entry in the list has a correspondending type definition that denotes the kind of resource to which it refers. Zend then internally manages all references to this resource. Access to a resource is never possible directly - only via a provided API. As soon as all references to a specific resource are lost, a corresponding shutdown function is called.

For example, resources are used to store database links and file descriptors. The de facto standard implementation can be found in the MySQL module, but other modules such as the Oracle module also make use of resources.

Note : In fact, a resource can be a pointer to anything you need to handle in your functions (e.g. pointer to a structure) and the user only has to pass a single resource variable to your function.

To create a new resource you need to register a resource destruction handler for it. Since you can store any kind of data as a resource, Zend needs to know how to free this resource if its not longer needed. This works by registering your own resource destruction handler to Zend which in turn gets called by Zend whenever your resource can be freed (whether manually or automatically). Registering your resource handler within Zend returns you the resource type handle for that resource. This handle is needed whenever you want to access a resource of this type later and is most of time stored in a global static variable within your extension. There is no need to worry about thread safety here because you only register your resource handler once during module initialization.

The Zend function to register your resource handler is defined as:
ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, char *type_name, int module_number);

There are two different kinds of resource destruction handlers you can pass to this function: a handler for normal resources and a handler for persistent resources. Persistent resources are for example used for database connection. When registering a resource, either of these handlers must be given. For the other handler just pass NULL.

zend_register_list_destructors_ex() accepts the following parameters:

ld | Normal resource destruction handler callback
pld | Pesistent resource destruction handler callback
type_name | A string specifying the name of your resource. It's always a good thing to specify an unique name within PHP for the resource type so when the user for example calls var_dump($resource); he also gets the name of the resource.
module_number | The module_number is automatically available in your PHP_MINIT_FUNCTION function and therefore you just pass it over.

The return value is an unique integer ID for your resource type.

The resource destruction handler (either normal or persistent resources) has the following prototype:
void resource_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC);
The passed rsrc is a pointer to the following structure:
typedef struct _zend_rsrc_list_entry {

    void *ptr;
    int type;
    int refcount;

} zend_rsrc_list_entry;
The member void *ptr is the actual pointer to your resource.

Now we know how to start things, we define our own resource we want register within Zend. It is only a simple structure with two integer members:
typedef struct {

    int resource_link;
    int resource_type;

} my_resource;
Our resource destruction handler is probably going to look something like this:
void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

    // You most likely cast the void pointer to your structure type

    my_resource *my_rsrc = (my_resource *) rsrc->ptr;

    // Now do whatever needs to be done with you resource. Closing
    // Files, Sockets, freeing additional memory, etc.
    // Also, don't forget to actually free the memory for your resource too!

    do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
}

Note : One important thing to mention: If your resource is a rather complex structure which also contains pointers to memory you allocated during runtime you have to free them before freeing the resource itself!

Now that we have defined

  1. what our resource is and

  2. our resource destruction handler

we can go on and do the rest of the steps:

  1. create a global variable within the extension holding the resource ID so it can be accessed from every function which needs it

  2. define the resource name

  3. write the resource destruction handler

  4. and finally register the handler

// Somewhere in your extension, define the variable for your registered resources.
    // If you wondered what 'le' stands for: it simply means 'list entry'.
    static int le_myresource;

    // It's nice to define your resource name somewhere
    #define le_myresource_name  "My type of resource"

    [...]

    // Now actually define our resource destruction handler
    void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

        my_resource *my_rsrc = (my_resource *) rsrc->ptr;
        do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
    }

    [...]

    PHP_MINIT_FUNCTION(my_extension) {

        // Note that 'module_number' is already provided through the
        // PHP_MINIT_FUNCTION() function definition.

        le_myresource = zend_register_resource_destructors_ex(my_destruction_handler, NULL, le_myresource_name, module_number);

        // You can register additional resources, initialize
        // your global vars, constants, whatever.
    }

To actually register a new resource you use can either use the zend_register_resource() function or the ZEND_REGISTER_RESOURE() macro, both defined in zend_list.h . Although the arguments for both map 1:1 it's a good idea to always use macros to be upwards compatible:
int ZEND_REGISTER_RESOURCE(zval *rsrc_result, void *rsrc_pointer, int rsrc_type);

rsrc_result | This is an already initialized zval * container.
rsrc_pointer | Your resource pointer you want to store.
rsrc_type | The type which you received when you registered the resource destruction handler. If you followed the naming scheme this would be le_myresource.

The return value is an unique integer identifier for that resource.

What is really going on when you register a new resource is it gets inserted in an internal list in Zend and the result is just stored in the given zval * container:
rsrc_id = zend_list_insert(rsrc_pointer, rsrc_type);

    if (rsrc_result) {
        rsrc_result->value.lval = rsrc_id;
        rsrc_result->type = IS_RESOURCE;
    }

    return rsrc_id;
The returned rsrc_id uniquly identifies the newly registered resource. You can use the macro RETURN_RESOURE to return it to the user:
RETURN_RESOURCE(rsrc_id)

Note : It is common practice that if you want to return the resource immidiately to the user you specify the return_value as the zval * container.

Zend now keeps track of all references to this resource. As soon as all references to the resource are lost, the destructor that you previously registered for this resource is called. The nice thing about this setup is that you don't have to worry about memory leakages introduced by allocations in your module - just register all memory allocations that your calling script will refer to as resources. As soon as the script decides it doesn't need them anymore, Zend will find out and tell you.

Now that the user got his resource, at some point he is passing it back to one of your functions. The value.lval inside the zval * container contains the key to your resource and thus can be used to fetch the resource with the following macro: ZEND_FETCH_RESOURCE:
ZEND_FETCH_RESOURCE(rsrc, rsrc_type, rsrc_id, default_rsrc_id, resource_type_name, resource_type)

rsrc | This is your pointer which will point to your previously registered resource.
rsrc_type | This is the typecast argument for your pointer, e.g. myresource *.
rsrc_id | This is the address of the zval *container the user passed to your function, e.g. &z_resource if zval *z_resource is given.
default_rsrc_id | This integer specifies the default resource ID if no resource could be fetched or -1.
resource_type_name | This is the name of the requested resource. It's a string and is used when the resource can't be found or is invalid to form a meaningful error message.
resource_type | The resource_type you got back when registering the resource destruction handler. In our example this was le_myresource.

This macro has no return value. It is for the developers convenience and takes care of TSRMLS arguments passing and also does check if the resource could be fetched. It throws a warning message and returns the current PHP function with NULL if there was a problem retrieving the resource.

To force removal of a resource from the list, use the function zend_list_delete(). You can also force the reference count to increase if you know that you're creating another reference for a previously allocated value (for example, if you're automatically reusing a default database link). For this case, use the function zend_list_addref(). To search for previously allocated resource entries, use zend_list_find(). The complete API can be found in zend_list.h.

Précédent | Sommaire | Suivant
Objects | Niveau supérieur | Macros for Automatic Global Variable Creation


Macros for Automatic Global Variable Creation

In addition to the macros discussed earlier, a few macros allow easy creation of simple global variables. These are nice to know in case you want to introduce global flags, for example. This is somewhat bad practice, but Table Tableau 33-5 describes macros that do exactly this task. They don't need any zval allocation; you simply have to supply a variable name and value.

Tableau 33-5. Macros for Global Variable Creation

Macro | Description
SET_VAR_STRING(name, value) | Creates a new string.
SET_VAR_STRINGL(name, value, length) | Creates a new string of the specified length. This macro is faster than SET_VAR_STRING and also binary-safe.
SET_VAR_LONG(name, value) | Creates a new long.
SET_VAR_DOUBLE(name, value) | Creates a new double.

Précédent | Sommaire | Suivant
Resources | Niveau supérieur | Creating Constants


Creating Constants

Zend supports the creation of true constants (as opposed to regular variables). Constants are accessed without the typical dollar sign ($) prefix and are available in all scopes. Examples include TRUE and FALSE, to name just two.

To create your own constants, you can use the macros in Tableau 33-6. All the macros create a constant with the specified name and value.

You can also specify flags for each constant:

  • CONST_CS - This constant's name is to be treated as case sensitive.

  • CONST_PERSISTENT - This constant is persistent and won't be "forgotten" when the current process carrying this constant shuts down.

To use the flags, combine them using a inary OR:
// register a new constant of type "long"
     REGISTER_LONG_CONSTANT("NEW_MEANINGFUL_CONSTANT", 324, CONST_CS |
     CONST_PERSISTENT);
There are two types of macros - REGISTER_*_CONSTANT andREGISTER_MAIN_*_CONSTANT. The first type creates constants bound to the current module. These constants are dumped from the symbol table as soon as the module that registered the constant is unloaded from memory. The second type creates constants that remain in the symbol table independently of the module.

Tableau 33-6. Macros for Creating Constants

Macro | Description
REGISTER_LONG_CONSTANT(name, value, flags) REGISTER_MAIN_LONG_CONSTANT(name, value, flags) | Registers a new constant of type long.
REGISTER_DOUBLE_CONSTANT(name, value, flags) REGISTER_MAIN_DOUBLE_CONSTANT(name, value, flags) | Registers a new constant of type double.
REGISTER_STRING_CONSTANT(name, value, flags) REGISTER_MAIN_STRING_CONSTANT(name, value, flags) | Registers a new constant of type string. The specified string must reside in Zend's internal memory.
REGISTER_STRINGL_CONSTANT(name, value, length, flags) REGISTER_MAIN_STRINGL_CONSTANT(name, value, length, flags) | Registers a new constant of type string. The string length is explicitly set to length. The specified string must reside in Zend's internal memory.

Précédent | Sommaire | Suivant
Macros for Automatic Global Variable Creation | Niveau supérieur | Duplicating Variable Contents: The Copy Constructor


Duplicating Variable Contents: The Copy Constructor

Manuel PHP
Précédent Suivant

Chapitre 34. Duplicating Variable Contents: The Copy Constructor

Sooner or later, you may need to assign the contents of one zval container to another. This is easier said than done, since the zval container doesn't contain only type information, but also references to places in Zend's internal data. For example, depending on their size, arrays and objects may be nested with lots of hash table entries. By assigning one zval to another, you avoid duplicating the hash table entries, using only a reference to them (at most).

To copy this complex kind of data, use the copy constructor. Copy constructors are typically defined in languages that support operator overloading, with the express purpose of copying complex types. If you define an object in such a language, you have the possibility of overloading the "=" operator, which is usually responsible for assigning the contents of the lvalue (result of the evaluation of the left side of the operator) to the rvalue (same for the right side).

Overloading means assigning a different meaning to this operator, and is usually used to assign a function call to an operator. Whenever this operator would be used on such an object in a program, this function would be called with the lvalue and rvalue as parameters. Equipped with that information, it can perform the operation it intends the "=" operator to have (usually an extended form of copying).

This same form of "extended copying" is also necessary for PHP's zval containers. Again, in the case of an array, this extended copying would imply re-creation of all hash table entries relating to this array. For strings, proper memory allocation would have to be assured, and so on.

Zend ships with such a function, called zend_copy_ctor() (the previous PHP equivalent was pval_copy_constructor()).

A most useful demonstration is a function that accepts a complex type as argument, modifies it, and then returns the argument:

zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
   return;
}

// do modifications to the parameter here

// now we want to return the modified container:
*return_value == *parameter;
zval_copy_ctor(return_value);

The first part of the function is plain-vanilla argument retrieval. After the (left out) modifications, however, it gets interesting: The container of parameter is assigned to the (predefined) return_value container. Now, in order to effectively duplicate its contents, the copy constructor is called. The copy constructor works directly with the supplied argument, and the standard return values are FAILURE on failure and SUCCESS on success.

If you omit the call to the copy constructor in this example, both parameter and return_value would point to the same internal data, meaning that return_value would be an illegal additional reference to the same data structures. Whenever changes occurred in the data that parameter points to, return_value might be affected. Thus, in order to create separate copies, the copy constructor must be used.

The copy constructor's counterpart in the Zend API, the destructor zval_dtor(), does the opposite of the constructor.

Précédent | Sommaire | Suivant
Creating Constants | Niveau supérieur | Returning Values


Returning Values

Manuel PHP
Précédent Suivant

Chapitre 35. Returning Values

Returning values from your functions to PHP was described briefly in an earlier section; this section gives the details. Return values are passed via the return_value variable, which is passed to your functions as argument. The return_value argument consists of a zval container (see the earlier discussion of the call interface) that you can freely modify. The container itself is already allocated, so you don't have to run MAKE_STD_ZVAL on it. Instead, you can access its members directly.

To make returning values from functions easier and to prevent hassles with accessing the internal structures of the zval container, a set of predefined macros is available (as usual). These macros automatically set the correspondent type and value, as described in Tableau 35-1 and Tableau 35-2.

Note : The macros in Tableau 35-1 automatically return from your function, those in Tableau 35-2 only set the return value; they don't return from your function.

Tableau 35-1. Predefined Macros for Returning Values from a Function

Macro | Description
RETURN_RESOURCE(resource) | Returns a resource.
RETURN_BOOL(bool) | Returns a Boolean.
RETURN_NULL() | Returns nothing (a NULL value).
RETURN_LONG(long) | Returns a long.
RETURN_DOUBLE(double) | Returns a double.
RETURN_STRING(string, duplicate) | Returns a string. The duplicate flag indicates whether the string should be duplicated using estrdup().
RETURN_STRINGL(string, length, duplicate) | Returns a string of the specified length; otherwise, behaves like RETURN_STRING. This macro is faster and binary-safe, however.
RETURN_EMPTY_STRING() | Returns an empty string.
RETURN_FALSE | Returns Boolean false.
RETURN_TRUE | Returns Boolean true.

Tableau 35-2. Predefined Macros for Setting the Return Value of a Function

Macro | Description
RETVAL_RESOURCE(resource) | Sets the return value to the specified resource.
RETVAL_BOOL(bool) | Sets the return value to the specified Boolean value.
RETVAL_NULL | Sets the return value to NULL.
RETVAL_LONG(long) | Sets the return value to the specified long.
RETVAL_DOUBLE(double) | Sets the return value to the specified double.
RETVAL_STRING(string, duplicate) | Sets the return value to the specified string and duplicates it to Zend internal memory if desired (see also RETURN_STRING).
RETVAL_STRINGL(string, length, duplicate) | Sets the return value to the specified string and forces the length to become length (see also RETVAL_STRING). This macro is faster and binary-safe, and should be used whenever the string length is known.
RETVAL_EMPTY_STRING | Sets the return value to an empty string.
RETVAL_FALSE | Sets the return value to Boolean false.
RETVAL_TRUE | Sets the return value to Boolean true.

Complex types such as arrays and objects can be returned by using array_init() and object_init(), as well as the corresponding hash functions on return_value. Since these types cannot be constructed of trivial information, there are no predefined macros for them.

Précédent | Sommaire | Suivant
Duplicating Variable Contents: The Copy Constructor | Niveau supérieur | Printing Information


Printing Information

Manuel PHP
Précédent Suivant

Chapitre 36. Printing Information

Table des matières
zend_printf()
zend_error()
Including Output in phpinfo()
Execution Information

Often it's necessary to print messages to the output stream from your module, just as print() would be used within a script. PHP offers functions for most generic tasks, such as printing warning messages, generating output for phpinfo(), and so on. The following sections provide more details. Examples of these functions can be found on the CD-ROM.

zend_printf()

zend_printf() works like the standard printf(), except that it prints to Zend's output stream.

Précédent | Sommaire | Suivant
Returning Values | Niveau supérieur | zend_error()


Execution Information

You can also print execution information, such as the current file being executed. The name of the function currently being executed can be retrieved using the function get_active_function_name(). This function returns a pointer to the function name and doesn't accept any arguments. To retrieve the name of the file currently being executed, use zend_get_executed_filename(). This function accesses the executor globals, which are passed to it using the TSRMLS_C macro. The executor globals are automatically available to every function that's called directly by Zend (they're part of the INTERNAL_FUNCTION_PARAMETERS described earlier in this chapter). If you want to access the executor globals in another function that doesn't have them available automatically, call the macro TSRMLS_FETCH() once in that function; this will introduce them to your local scope.

Finally, the line number currently being executed can be retrieved using the function zend_get_executed_lineno(). This function also requires the executor globals as arguments. For examples of these functions, see Exemple 36-2.

Exemple 36-2. Printing execution information.

zend_printf("The name of the current function is %s<br>", get_active_function_name(TSRMLS_C));
zend_printf("The file currently executed is %s<br>", zend_get_executed_filename(TSRMLS_C));
zend_printf("The current line being executed is %i<br>", zend_get_executed_lineno(TSRMLS_C));

Précédent | Sommaire | Suivant
Including Output in phpinfo() | Niveau supérieur | Startup and Shutdown Functions


Startup and Shutdown Functions

Manuel PHP
Précédent Suivant

Chapitre 37. Startup and Shutdown Functions

Startup and shutdown functions can be used for one-time initialization and deinitialization of your modules. As discussed earlier in this chapter (see the description of the Zend module descriptor block), there are module, and request startup and shutdown events.

The module startup and shutdown functions are called whenever a module is loaded and needs initialization; the request startup and shutdown functions are called every time a request is processed (meaning that a file is being executed).

For dynamic extensions, module and request startup/shutdown events happen at the same time.

Declaration and implementation of these functions can be done with macros; see the earlier section "Declaration of the Zend Module Block" for details.

Précédent | Sommaire | Suivant
Execution Information | Niveau supérieur | Calling User Functions


Calling User Functions

Manuel PHP
Précédent Suivant

Chapitre 38. Calling User Functions

You can call user functions from your own modules, which is very handy when implementing callbacks; for example, for array walking, searching, or simply for event-based programs.

User functions can be called with the function call_user_function_ex(). It requires a hash value for the function table you want to access, a pointer to an object (if you want to call a method), the function name, return value, number of arguments, argument array, and a flag indicating whether you want to perform zval separation.

ZEND_API int call_user_function_ex(HashTable *function_table, zval *object,
zval *function_name, zval **retval_ptr_ptr,
int param_count, zval **params[],
int no_separation);

Note that you don't have to specify both function_table and object; either will do. If you want to call a method, you have to supply the object that contains this method, in which case call_user_function()automatically sets the function table to this object's function table. Otherwise, you only need to specify function_table and can set object to NULL.

Usually, the default function table is the "root" function table containing all function entries. This function table is part of the compiler globals and can be accessed using the macro CG. To introduce the compiler globals to your function, call the macro TSRMLS_FETCH once.

The function name is specified in a zval container. This might be a bit surprising at first, but is quite a logical step, since most of the time you'll accept function names as parameters from calling functions within your script, which in turn are contained in zval containers again. Thus, you only have to pass your arguments through to this function. This zval must be of type IS_STRING.

The next argument consists of a pointer to the return value. You don't have to allocate memory for this container; the function will do so by itself. However, you have to destroy this container (using zval_dtor()) afterward!

Next is the parameter count as integer and an array containing all necessary parameters. The last argument specifies whether the function should perform zval separation - this should always be set to 0. If set to 1, the function consumes less memory but fails if any of the parameters need separation.

Exemple 38-1 shows a small demonstration of calling a user function. The code calls a function that's supplied to it as argument and directly passes this function's return value through as its own return value. Note the use of the constructor and destructor calls at the end - it might not be necessary to do it this way here (since they should be separate values, the assignment might be safe), but this is bulletproof.

Exemple 38-1. Calling user functions.

zval **function_name;
zval *retval;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &function_name) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

if((*function_name)->type != IS_STRING)
{
    zend_error(E_ERROR, "Function requires string argument");
}

TSRMSLS_FETCH();

if(call_user_function_ex(CG(function_table), NULL, *function_name, &retval, 0, NULL, 0) != SUCCESS)
{
    zend_error(E_ERROR, "Function call failed");
}

zend_printf("We have %i as type<br>", retval->type);

*return_value = *retval;
zval_copy_ctor(return_value);
zval_ptr_dtor(&retval);

<?php

dl("call_userland.so");

function test_function()
{

    print("We are in the test function!<br>");

    return("hello");

}

$return_value = call_userland("test_function");

print("Return value: \"$return_value\"<br>");
?>

Précédent | Sommaire | Suivant
Startup and Shutdown Functions | Niveau supérieur | Initialization File Support


Initialization File Support

Manuel PHP
Précédent Suivant

Chapitre 39. Initialization File Support

PHP 4 features a redesigned initialization file support. It's now possible to specify default initialization entries directly in your code, read and change these values at runtime, and create message handlers for change notifications.

To create an .ini section in your own module, use the macros PHP_INI_BEGIN() to mark the beginning of such a section and PHP_INI_END() to mark its end. In between you can use PHP_INI_ENTRY() to create entries.
PHP_INI_BEGIN()
PHP_INI_ENTRY("first_ini_entry",  "has_string_value", PHP_INI_ALL, NULL)
PHP_INI_ENTRY("second_ini_entry", "2",                PHP_INI_SYSTEM, OnChangeSecond)
PHP_INI_ENTRY("third_ini_entry",  "xyz",              PHP_INI_USER, NULL)
PHP_INI_END()
The PHP_INI_ENTRY() macro accepts four parameters: the entry name, the entry value, its change permissions, and a pointer to a change-notification handler. Both entry name and value must be specified as strings, regardless of whether they really are strings or integers.

The permissions are grouped into three sections:PHP_INI_SYSTEM allows a change only directly in the php.ini file; PHP_INI_USER allows a change to be overridden by a user at runtime using additional configuration files, such as .htaccess; and PHP_INI_ALL allows changes to be made without restrictions. There's also a fourth level, PHP_INI_PERDIR, for which we couldn't verify its behavior yet.

The fourth parameter consists of a pointer to a change-notification handler. Whenever one of these initialization entries is changed, this handler is called. Such a handler can be declared using the PHP_INI_MH macro:
PHP_INI_MH(OnChangeSecond);             // handler for ini-entry "second_ini_entry"

// specify ini-entries here

PHP_INI_MH(OnChangeSecond)
{

    zend_printf("Message caught, our ini entry has been changed to %s<br>", new_value);

    return(SUCCESS);

}
The new value is given to the change handler as string in the variable new_value. When looking at the definition of PHP_INI_MH, you actually have a few parameters to use:
#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value,
                                  uint new_value_length, void *mh_arg1,
                                  void *mh_arg2, void *mh_arg3)
All these definitions can be found in php_ini.h. Your message handler will have access to a structure that contains the full entry, the new value, its length, and three optional arguments. These optional arguments can be specified with the additional macros PHP_INI_ENTRY1 (allowing one additional argument), PHP_INI_ENTRY2 (allowing two additional arguments), and PHP_INI_ENTRY3 (allowing three additional arguments).

The change-notification handlers should be used to cache initialization entries locally for faster access or to perform certain tasks that are required if a value changes. For example, if a constant connection to a certain host is required by a module and someone changes the hostname, automatically terminate the old connection and attempt a new one.

Access to initialization entries can also be handled with the macros shown in Tableau 39-1.

Tableau 39-1. Macros to Access Initialization Entries in PHP

Macro | Description
INI_INT(name) | Returns the current value of entry name as integer (long).
INI_FLT(name) | Returns the current value of entry name as float (double).
INI_STR(name) | Returns the current value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory.
INI_BOOL(name) | Returns the current value of entry name as Boolean (defined as zend_bool, which currently means unsigned char).
INI_ORIG_INT(name) | Returns the original value of entry name as integer (long).
INI_ORIG_FLT(name) | Returns the original value of entry name as float (double).
INI_ORIG_STR(name) | Returns the original value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory.
INI_ORIG_BOOL(name) | Returns the original value of entry name as Boolean (defined as zend_bool, which currently means unsigned char).

Finally, you have to introduce your initialization entries to PHP. This can be done in the module startup and shutdown functions, using the macros REGISTER_INI_ENTRIES() and UNREGISTER_INI_ENTRIES():
ZEND_MINIT_FUNCTION(mymodule)
{

    REGISTER_INI_ENTRIES();

}

ZEND_MSHUTDOWN_FUNCTION(mymodule)
{

    UNREGISTER_INI_ENTRIES();

}

Précédent | Sommaire | Suivant
Calling User Functions | Niveau supérieur | Where to Go from Here


Where to Go from Here

Manuel PHP
Précédent Suivant

Chapitre 40. Where to Go from Here

You've learned a lot about PHP. You now know how to create dynamic loadable modules and statically linked extensions. You've learned how PHP and Zend deal with internal storage of variables and how you can create and access these variables. You know quite a set of tool functions that do a lot of routine tasks such as printing informational texts, automatically introducing variables to the symbol table, and so on.

Even though this chapter often had a mostly "referential" character, we hope that it gave you insight on how to start writing your own extensions. For the sake of space, we had to leave out a lot; we suggest that you take the time to study the header files and some modules (especially the ones in the ext/standard directory and the MySQL module, as these implement commonly known functionality). This will give you an idea of how other people have used the API functions - particularly those that didn't make it into this chapter.

Précédent | Sommaire | Suivant
Initialization File Support | Niveau supérieur | Reference: Some Configuration Macros


Reference: Some Configuration Macros

Manuel PHP
Précédent Suivant

Chapitre 41. Reference: Some Configuration Macros

Table des matières
config.m4

config.m4

The file config.m4 is processed by buildconf and must contain all the instructions to be executed during configuration. For example, these can include tests for required external files, such as header files, libraries, and so on. PHP defines a set of macros that can be used in this process, the most useful of which are described in Tableau 41-1.

Tableau 41-1. M4 Macros for config.m4

Macro | Description
AC_MSG_CHECKING(message) | Prints a "checking <message>" text during configure.
AC_MSG_RESULT(value) | Gives the result to AC_MSG_CHECKING; should specify either yes or no as value.
AC_MSG_ERROR(message) | Prints message as error message during configure and aborts the script.
AC_DEFINE(name,value,description) | Adds #define to php_config.h with the value of value and a comment that says description (this is useful for conditional compilation of your module).
AC_ADD_INCLUDE(path) | Adds a compiler include path; for example, used if the module needs to add search paths for header files.
AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath) | Specifies an additional library to link.
AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest) | Quite a powerful macro, adding the module with description to the configure --help output. PHP checks whether the option --with-<modulename> is given to the configure script. If so, it runs the script unconditionaltest (for example, --with-myext=yes), in which case the value of the option is contained in the variable $withval. Otherwise, it executes conditionaltest.
PHP_EXTENSION(modulename, [shared]) | This macro is a must to call for PHP to configure your extension. You can supply a second argument in addition to your module name, indicating whether you intend compilation as a shared module. This will result in a definition at compile time for your source as COMPILE_DL_<modulename>.

Précédent | Sommaire | Suivant
Where to Go from Here | Niveau supérieur | API Macros


API Macros

Manuel PHP
Précédent Suivant

Chapitre 42. API Macros

A set of macros was introduced into Zend's API that simplify access to zval containers (see Tableau 42-1).

Tableau 42-1. API Macros for Accessing zval Containers

Macro | Refers to
Z_LVAL(zval) | (zval).value.lval
Z_DVAL(zval) | (zval).value.dval
Z_STRVAL(zval) | (zval).value.str.val
Z_STRLEN(zval) | (zval).value.str.len
Z_ARRVAL(zval) | (zval).value.ht
Z_LVAL_P(zval) | (*zval).value.lval
Z_DVAL_P(zval) | (*zval).value.dval
Z_STRVAL_P(zval_p) | (*zval).value.str.val
Z_STRLEN_P(zval_p) | (*zval).value.str.len
Z_ARRVAL_P(zval_p) | (*zval).value.ht
Z_LVAL_PP(zval_pp) | (**zval).value.lval
Z_DVAL_PP(zval_pp) | (**zval).value.dval
Z_STRVAL_PP(zval_pp) | (**zval).value.str.val
Z_STRLEN_PP(zval_pp) | (**zval).value.str.len
Z_ARRVAL_PP(zval_pp) | (**zval).value.ht

Précédent | Sommaire | Suivant
Reference: Some Configuration Macros | Niveau supérieur | PHP API: Interface pour les extensions


PHP API: Interface pour les extensions

Manuel PHP
Précédent Suivant

VII. PHP API: Interface pour les extensions

Table des matières
43. API de flux les auteurs d'extensions

Précédent | Sommaire | Suivant
API Macros |  | API de flux les auteurs d'extensions


API de flux les auteurs d'extensions

Manuel PHP
Précédent Suivant

Chapitre 43. API de flux les auteurs d'extensions

Table des matières
Présentation
Eléments de bases
Les flux qui sont des ressources
Référence des API communes de flux
Streams Dir API Reference
API des flux pour les fichiers
Streams Socket API Reference
Streams Structures
Constantes de flux

Présentation

Les flux de PHP proposent une approche unifiée à la gestion des fichiers et sockets, depuis une extension PHP. En utilisant l'API standard, les flux vous permettent d'accéder à des fichiers, des sockets, des URL, de la mémoire ou encore des objets définis dans des scripts. Les flux (streams en anglais), sont une API flexible et dynamique, dynamiquement chargée dans les modules (et les scripts!).

Le but des flux est de proposer une API confortables pour les programmeurs, lors des manipulations de fichiers, URL et autres sources de données linéaires. L'API unifiée est très simple à comprendre : elle est plus ou moins basée sur la famille de fonction classiques C d'entrée/sortie (avec les mêmes concepts pour la plupart des fonctions) : les programmeurs C ne seront pas dépaysés.

L'API des flux intervient à différents niveaux : à la base, elle définit un objet php_stream, qui représente les sources de données. A un niveau au dessus, l'API défini un objet php_stream_wrapper qui s'interface avec l'API de bas niveau, pour lire et écrire les données et méta données, dans les sources.

Les flux peuvent être converti en pilotes pour fichiers, de manière à être utilisé par des librairies tierce-partie avec beaucoup de facilité. Cela autorise ces librairies à accéder aux données directement depuis des sources représentées par des URL. Si votre système supporte la fonction fopencookie(), vous pouvez même passer n'importe quel flux PHP à une autre librairie qui utilise les entrée/sortie standard ANSI!

Précédent | Sommaire | Suivant
PHP API: Interface pour les extensions | Niveau supérieur | Eléments de bases


Eléments de bases

Utiliser les flux ressemble énormément à l'utilisation des fonctions d'entrée/sortie standard ANSI streams. La principale différence est que vous devez créer le pointeur de flux d'abord. Dans la plupart des cas, vous utiliserez la fonction php_stream_open_wrapper() pour l'obtenir. Cette fonction ressemble à fopen(), comme le montre l'exemple ci-dessous :

Exemple 43-1. Exemple de flux qui affiche la page de PHP.net

php_stream * stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);
if (stream) {
    while(!php_stream_eof(stream)) {
        char buf[1024];

        if (php_stream_gets(stream, buf, sizeof(buf))) {
            printf(buf);
        } else {
            break;
        }
    }
    php_stream_close(stream);
}

La table ci-dessous montre les fonctions de flux équivalentes aux fonctions ANSI. Sauf indication contraire, les fonctionnalités sont les mêmes.

Tableau 43-1. ANSI stdio equivalent functions in the Streams API

Fonction ANSI | Fonction Flux PHP | Notes
fopen | php_stream_open_wrapper | Les flux incluent des paramètres supplémentaires
fclose | php_stream_close |
fgets | php_stream_gets |
fread | php_stream_read | Le paramètre nmemb est suppos avoir la valeur 1 : le prototype ressemble plutôt à read(2)
fwrite | php_stream_write | Le paramètre nmemb est suppos avoir la valeur 1 : le prototype ressemble plutôt à write(2)
fseek | php_stream_seek |
ftell | php_stream_tell |
rewind | php_stream_rewind |
feof | php_stream_eof |
fgetc | php_stream_getc |
fputc | php_stream_putc |
fflush | php_stream_flush |
puts | php_stream_puts | Identique à puts, et non pas à fputs
fstat | php_stream_stat | Les informations des flux sont plus riches

Précédent | Sommaire | Suivant
API de flux les auteurs d'extensions | Niveau supérieur | Les flux qui sont des ressources


Les flux qui sont des ressources

Tous les flux sont enregitrés comme des ressources lorsqu'il sont créés. Cela garantit qu'ils seront convenablement déblayés de la mémoire, même en cas d'erreur fatale. Toutes les fonctions du sytème de fichier de PHP opère sur des ressources : cela signifie que vos extensions peuvent accepter des pointeurs de fichiers comme paramètre, et retourner des flux. L'API des flux rend ce processus très convivial.

Exemple 43-2. Comment accepter un flux comme paramètre d'entrée

PHP_FUNCTION(example_write_hello)
{
    zval *zstream;
    php_stream *stream;

    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstream))
        return;

    php_stream_from_zval(stream, &zstream);

    /* Vous pouvez maintenant utiliser votre flux. Cependant, vous ne
       "poss&eacute;dez" pas le flux, mais le script le poss&egrave;de. Cela signifie
       que vous de DEVEZ PAS fermer le flux, car sinon, PHP va crasher! */

    php_stream_write(stream, "hello\n");

    RETURN_TRUE();
}

Exemple 43-3. Comment retourner un flux depuis une fonction

PHP_FUNCTION(example_open_php_home_page)
{
    php_stream *stream;

    stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);

    php_stream_to_zval(stream, return_value);

    /* A partir de ce moment, le flux appartient au script.
      Si vous le fermer ici, vous allez faire crasher PHP! */
}

Comme les flux sont automatiquement déblayés de la mémoire, il est tentant de penser que vous pouvez être des programmeurs paresseux et ne pas vous préoccuper de la fermeture du flux lorsque vous en avez terminé avec lui. Même si une telle approche fonctionnera probablement, ce n'est pas une bonne idée pour un bon nombre de raisons : les flux conservent des verrous sur les ressources systèmes durant un temps plus long, ce qui fait que laisser le verrous empêche d'autres processus d'accéder à cette ressource. Si le script gère un grand nombre de fichier, l'accumulation de ressources, en terme de mémoire et de nombre de fichiers ouverts, causer l'échec des requêtes du serveur web. Cela n'est plus aussi séduisant, n'est-ce pas? L'API de flux inclut un peu de magie pour que vous puissiez garder votre code propre : si un flux n'est pas fermé par votre code alors qu'il devrait l'être, vous trouverez des informations de débogage dans le fichier d'historique d'erreur de votre serveur web.

Note : Utilisez toujours une version de débogagge de PHP lorsque vous développez (--enable-debug lors de la configuration de la compilation) car de nombreux efforts ont été fait pour vous aider à traquer les fuites de mémoire.

Dans certains cas, il est pratique de garder un flux ouvert pour toute la durée de la requête, afin de l'utiliser comme fichier d'historique. Ecrire le code nécessaire au nettoyage propre d'un tel fichier n'est pas difficile, mais ce sont plusieurs lignes e code qui ne sont pas strictement nécessaire. Pour vous éviter l'écriture de ce code, vous pouvez marquer le flux pour qu'il soit automatiquement libéré lorsque viendra le temps de libérer les ressources. Pour cela, vous pouvez utiliser la fonction php_stream_auto_cleanup().

Précédent | Sommaire | Suivant
Eléments de bases | Niveau supérieur | Référence des API communes de flux


Référence des API communes de flux

Table des matières
php_stream_stat_path -- Lit l'état du fichier ou de l'URL
php_stream_stat -- Lit le statut du cache associé au flux
php_stream_open_wrapper -- Ouvre un flux sur un fichier ou une URL
php_stream_read -- Lit des octets depuis un flux dans un buffer
php_stream_write -- écrit des octets depuis un buffer vers un flux
php_stream_eof -- Vérifie que le pointeur n'est pas au bout du flux
php_stream_getc -- Lit un octet dans un flux
php_stream_gets -- Lit une ligne de données d'un flux dans un buffer
php_stream_close -- Ferme un flux
php_stream_flush -- Vide les buffers dans le flux
php_stream_seek -- Modifie la position du pointeur de flux
php_stream_tell -- Détermine la position du pointeur dans un flux
php_stream_copy_to_stream -- Copie des données d'un flux à l'autre
php_stream_copy_to_mem -- Copie des données depuis un flux dans un buffer
php_stream_make_seekable -- Convertit un flux en flux avec un pointeur de position
php_stream_cast -- Convertit un flux en une autre forme, comme un FILE* ou une socket
php_stream_can_cast -- Détermine si un flux peut être converti en une autre forme, comme FILE* ou socket
php_stream_is_persistent -- Détermine si un flux est un flux persistant
php_stream_is -- Détermine si un flux est d'un type particulier
php_stream_passthru -- Affiche toutes les données restantes d'un flux
php_register_url_stream_wrapper -- Enregistre un gestionnaire pour l'API de flux
php_unregister_url_stream_wrapper -- Désenregistre un gestionnaire pour l'API de flux
php_stream_open_wrapper_ex -- Ouvre un flux avec un fichier ou une URL, en spécifiant le contexte
php_stream_open_wrapper_as_file -- Ouvre un flux avec un fichier ou une URL, et le convertit en pointeur FILE*
php_stream_filter_register_factory -- Enregistre une usine à filtres avec l'API des flux
php_stream_filter_unregister_factory -- Supprime une usine à filtres des API de flux

Précédent | Sommaire | Suivant
Les flux qui sont des ressources | Niveau supérieur | php_stream_stat_path


Streams Dir API Reference

Table des matières
php_stream_opendir -- Ouvre un dossier pour le lister
php_stream_readdir -- Lit le fichier suivant dans un dossier
php_stream_rewinddir -- Replace le flux de dossier au début
php_stream_closedir -- Ferme un flux de dossier, et libère les ressources

Les fonctions ci-dessous fonctionnent sur les dossiers locaux, mais aussi sur les dossier distants (en supposant que le gestionnaire sache le faire!).

Précédent | Sommaire | Suivant
php_stream_filter_unregister_factory | Niveau supérieur | php_stream_opendir


API des flux pour les fichiers

Table des matières
php_stream_fopen_from_file -- Convertit un pointeur ANSI FILE* en un flux
php_stream_fopen_tmpfile -- Ouvre un pointeur FILE* avec la fonction tmpfile() et la convertit en flux
php_stream_fopen_temporary_file -- Génère un fichier temporaire et ouvre un flux avec

Précédent | Sommaire | Suivant
php_stream_closedir | Niveau supérieur | php_stream_fopen_from_file


Streams Socket API Reference

Table des matières
php_stream_sock_open_from_socket -- Convertit un pointeur de socket en flux
php_stream_sock_open_host -- Ouvre une connexion avec un serveur, et retourne un flux
php_stream_sock_open_unix -- Ouvre une connexion avec une socket UNIX et la convertit en flux

Précédent | Sommaire | Suivant
php_stream_fopen_temporary_file | Niveau supérieur | php_stream_sock_open_from_socket


Streams Structures

Table des matières
struct php_stream_statbuf -- Conserve des information sur le fichier ou l'URL
struct php_stream_dirent -- Conserve des informations sur un fichier durant une analyse de dossier
struct php_stream_ops -- Conserve les fonctions membres d'une implémentation de flux
struct php_stream_wrapper -- Conserve les propriétés et pointeur d'un gestionnaire de flux
struct php_stream_wrapper_ops -- Conserve les fonctions d'un gestionnaire de flux
struct php_stream_filter -- Conserve les propriétés et le pointeur de filtre
struct php_stream_filter_ops -- Conserver les fonctions membres pour un filtre de flux

Précédent | Sommaire | Suivant
php_stream_sock_open_unix | Niveau supérieur | struct php_stream_statbuf


Constantes de flux

Table des matières
options d'ouverture de flux -- Affectent les fonctions de flux

Précédent | Sommaire | Suivant
struct php_stream_filter_ops | Niveau supérieur | options d'ouverture de flux


FAQ : Foire Aux Questions

Manuel PHP
Précédent Suivant

VIII. FAQ : Foire Aux Questions

Table des matières
44. General Information
45. Mailing lists
46. Obtenir PHP
47. Database issues
48. Installation
49. Build Problems
50. Utiliser PHP
51. PHP and HTML
52. PHP and COM
53. PHP and other languages
54. Migrer de PHP 2 à PHP 3
55. Migrer de PHP 3 à PHP 4
56. Questions diverses

Précédent | Sommaire | Suivant
options d'ouverture de flux |  | General Information


General Information

Manuel PHP
Précédent Suivant

Chapitre 44. General Information

This section holds the most general questions about PHP: what it is and what it does.

1. What is PHP?
2. What does PHP stand for?
3. What is the relation between the versions?
4. Can I run several versions of PHP at the same time?
5. What are the differences between PHP 3 and PHP 4?
6. I think I found a bug! Who should I tell?

1. What is PHP?

From the preface of the manual:

PHP is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly.

A nice introduction to PHP by Stig Sæther Bakken can be found here on the Zend website. Also, much of the PHP Conference Material is freely available.

2. What does PHP stand for?

PHP stands for PHP: Hypertext Preprocessor. This confuses many people because the first word of the acronym is the acronym. This type of acronym is called a recursive acronym. The curious can visit Free On-Line Dictionary of Computing for more information on recursive acronyms.

3. What is the relation between the versions?

PHP/FI 2.0 is an early and no longer supported version of PHP. PHP 3 is the successor to PHP/FI 2.0 and is a lot nicer. PHP 4 is the current generation of PHP, which uses the Zend engine under the hood. PHP 5 uses Zend engine 2 which, among other things, offers many additional OOP features. PHP 5 is experimental.

4. Can I run several versions of PHP at the same time?

Yes. See the INSTALL file that is included in the PHP 4 source distribution. Also, read the related appendix.

5. What are the differences between PHP 3 and PHP 4?

There are a couple of articles written on this by the authors of PHP 4. Here's a list of some of the more important new features:

  • Extended API module

  • Generalized build process under Unix

  • Generic web server interface that also supports multi-threaded web servers

  • Improved syntax highlighter

  • Native HTTP session support

  • Output buffering support

  • More powerful configuration system

  • Reference counting

Please see the What's new in PHP 4 overview for a detailed explanation of these features and more. If you're migrating from PHP 3 to PHP 4, also read the related appendix.

6. I think I found a bug! Who should I tell?

You should go to the PHP Bug Database and make sure the bug isn't a known bug. If you don't see it in the database, use the reporting form to report the bug. It is important to use the bug database instead of just sending an email to one of the mailing lists because the bug will have a tracking number assigned and it will then be possible for you to go back later and check on the status of the bug. The bug database can be found at http://bugs.php.net/.

Précédent | Sommaire | Suivant
FAQ : Foire Aux Questions | Niveau supérieur | Mailing lists


Mailing lists

Manuel PHP
Précédent Suivant

Chapitre 45. Mailing lists

This section holds questions about how to get in touch with the PHP community. The best way is the mailing lists.

1. Are there any PHP mailing lists?
2. Are there any other communities?
3. Help! I can't seem to subscribe/unsubscribe to/from one of the mailing lists!
4. Is there an archive of the mailing lists anywhere?
5. What can I ask the mailing list?
6. What information should I include when posting to the mailing list?

1. Are there any PHP mailing lists?

Of course! There are many mailing lists for several subjects. A whole list of mailing lists can be found on our Support page.

The most general mailing list is php-general. To subscribe, send mail to php-general-subscribe@lists.php.net. You don't need to include anything special in the subject or body of the message. To unsubscribe, send mail to php-general-unsubscribe@lists.php.net.

You can also subscribe and unsubscribe using the web interface on our Support page.

2. Are there any other communities?

There are countless of them around the world. We have links for example to some IRC servers and foreign language mailing lists on our Support page.

3. Help! I can't seem to subscribe/unsubscribe to/from one of the mailing lists!

If you have problems subscribing to or unsubscribing from the php-general mailing list, it may be because the mailing list software can't figure out the correct mailing address to use. If your email address was joeblow@example.com, you can send your subscription request to php-general-subscribe-joeblow=example.com@lists.php.net, or your unsubscription request to php-general-unsubscribe-joeblow=example.com@lists.php.net. Use similar addresses for the other mailing lists.

4. Is there an archive of the mailing lists anywhere?

Yes, you will find a list of archive sites on the Support page. The mailing list articles are also archived as news messages. You can access the news server at news://news.php.net/ with a news client. There is also an experimental web interface for the news server at http://news.php.net/

5. What can I ask the mailing list?

Since PHP is growing more and more popular by the day the traffic has increased on the php-general mailing list and as of now the list gets about 150 to 200 posts a day. Because of this it is in everyones interest that you use the list as a last resort when you have looked everywhere else.

Before you post to the list please have a look in this FAQ and the manual to see if you can find the help there. If there is nothing to be found there try out the mailing list archives (see above). If you're having problem with installing or configuring PHP please read through all included documentation and README's. If you still can't find any information that helps you out you're more than welcome to use the mailing list.

Before asking questions, you may want to read the paper on How To Ask Questions The Smart Way as this is a good idea for everyone.

6. What information should I include when posting to the mailing list?

Posts like "I can't get PHP up and running! Help me! What is wrong?" are of absolutely no use to anyone. If you're having problems getting PHP up and running you must include what operating system you are running on, what version of PHP you're trying to set up, how you got it (pre-compiled, CVS, RPMs and so on), what you have done so far, where you got stuck and the exact error message.

This goes for any other problem as well. You have to include information on what you have done, where you got stuck, what you're trying to do and, if applicable, exact error messages. If you're having problems with your source code you need to include the part of the code that isn't working. Do not include more code than necessary though! It makes the post hard to read and a lot of people might just skip it all together because of this. If you're unsure about how much information to include in the mail it's better that you include to much than to little.

Another important thing to remember is to summarize your problem on the subject line. A subject like "HELP MEEEE!!!" or "What is the problem here?" will be ignored by the majority of the readers.

And lastly, you're encouraged to read the paper on How To Ask Questions The Smart Way as this will be a great help for everyone, especially yourself.

Précédent | Sommaire | Suivant
General Information | Niveau supérieur | Obtenir PHP


Obtenir PHP

Manuel PHP
Précédent Suivant

Chapitre 46. Obtenir PHP

Cette section couvre les téléchargements de PHP et les problèmes liés aux systèmes d'exploitation.

1. Où puis-je obtenir PHP ?
2. Est-ce que les versions binaires pré-compilées sont disponibles ?
3. Où puis-je obtenir les librairies dont j'ai besoin pour compiler les extensions optionelles de PHP ?
4. Comment faire fonctionner ces librairies ?
5. J'ai la dernière version du code source de PHP, téléchargé à partir de CVS. De quoi ai-je besoin pour le compiler sur mon Windows ?
6. Où puis-je trouver le fichier Browser Capabilities ?

1. Où puis-je obtenir PHP ?

Vous pouvez télécharger PHP à partir d'un des memebres du résau de sites PHP. Vous pouvez les trouver sur http://www.php.net/. Vous pouvez aussi utiliser CVS pour obtenir la toute dernière version des sources. Pour plus d'informations, allez sur http://www.php.net/anoncvs.php.

2. Est-ce que les versions binaires pré-compilées sont disponibles ?

Nous ne les distribuons que pour le système Windows, car nous ne pouvous compiler PHP pour chaque plate-forme Linux/Unix avec toutes les combinaisons d'extensions. Notez aussi que plusieurs distributions Linux fournissent PHP d'office de nos jours. Les binaires Windows peuvent être téléchargés à partir de notre page de Téléchargements, pour les binaires Linux, visitez le site de votre distribution.

3. Où puis-je obtenir les librairies dont j'ai besoin pour compiler les extensions optionelles de PHP ?

Note : Celles marquées avec un * ne sont pas des librairies thread-safe, et ne doivent pas être utilisées avec PHP en module de serveur dans les serveurs web Windows multi-threadés (IIS, Netscape). Cela n'est pas applicable pour les environnements Unix, pour le moment.

  • LDAP (Unix).

  • LDAP* (Unix).

  • LDAP (Unix/Win) : Netscape Directory (LDAP) SDK 1.1.

  • free LDAP server.

  • Berkeley DB2 (Unix/Win) : http://www.sleepycat.com/.

  • SNMP* (Unix): .

  • GD* (Unix/Win).

  • mSQL* (Unix).

  • PostgreSQL (Unix).

  • IMAP* (Win/Unix).

  • Sybase-CT* (Linux, libc5) : Disponible localement.

  • FreeType (libttf):.

  • ZLib (Unix/Win32).

  • expat XML parser (Unix/Win32).

  • PDFLib.

  • mcrypt.

  • mhash.

  • t1lib.

  • dmalloc.

  • aspell.

  • readline.

4. Comment faire fonctionner ces librairies ?

Vous devrez suivre les instructions fournies avec les librairies. Quelques une d'entre-elles sont détectées automatiquement lorsque vous exécutez le script 'configure' de PHP (commela librairie GD), pour les autres, vous devrez les activer en utilisant l'option '--with-EXTENSION' de 'configure'. Exécutez 'configure --help' pour en avoir la liste complète.

5. J'ai la dernière version du code source de PHP, téléchargé à partir de CVS. De quoi ai-je besoin pour le compiler sur mon Windows ?

Premièrement, vous avez besoin de Microsoft Visual C++ v6 (la v5 peut fonctionner, mais nous le faisons avec v6), et vous avec besoin de quelques fichier de support. Voyez la section du manuel à propos parlant de compiler PHP à partir des sources sur Windows.

6. Où puis-je trouver le fichier Browser Capabilities ?

Vous pouvez trouver un fichier browscap.ini sur http://www.garykeith.com/browsers/downloads.asp.

Précédent | Sommaire | Suivant
Mailing lists | Niveau supérieur | Database issues


Database issues

Manuel PHP
Précédent Suivant

Chapitre 47. Database issues

This section holds common questions about relation between PHP and databases. Yes, PHP can access virtually any database available today.

1. I heard it's possible to access Microsoft SQL Server from PHP. How?
2. Can I access Microsoft Access databases?
3. I upgraded to PHP 4, and now mysql keeps telling me "Warning: MySQL: Unable to save result set in ...". What's up?
4. PHP 5 no longer bundles MySQL client libraries, what does this mean to me? Can I still use MySQL with PHP? I try to use MySQL and get "function undefined" errors, what gives?
5. After installing shared MySQL support, Apache dumps core as soon as libphp4.so is loaded. Can this be fixed?
6. Why do I get an error that looks something like this: "Warning: 0 is not a MySQL result index in <file> on line <x>" or "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>?

1. I heard it's possible to access Microsoft SQL Server from PHP. How?

On Windows machines, you can simply use the included ODBC support and the correct ODBC driver.

On Unix machines, you can use the Sybase-CT driver to access Microsoft SQL Servers because they are (at least mostly) protocol-compatible. Sybase has made a free version of the necessary libraries for Linux systems. For other Unix operating systems, you need to contact Sybase for the correct libraries. Also see the answer to the next question.

2. Can I access Microsoft Access databases?

Yes. You already have all the tools you need if you are running entirely under Windows 9x/Me, or NT/2000, where you can use ODBC and Microsoft's ODBC drivers for Microsoft Access databases.

If you are running PHP on a Unix box and want to talk to MS Access on a Windows box you will need Unix ODBC drivers. OpenLink Software has Unix-based ODBC drivers that can do this. There is a free pilot program where you can download an evaluation copy that doesn't expire and prices start at $675 for the commercial supported version.

Another alternative is to use an SQL server that has Windows ODBC drivers and use that to store the data, which you can then access from Microsoft Access (using ODBC) and PHP (using the built in drivers), or to use an intermediary file format that Access and PHP both understand, such as flat files or dBase databases. On this point Tim Hayes from OpenLink software writes:
Using another database as an intermediary is not a good idea, when you can
      use ODBC from PHP straight to your database - i.e. with OpenLink's drivers. If
      you do need to use an intermediary file format, OpenLink have now released
      Virtuoso (a virtual database engine) for NT, Linux and other Unix platforms.
      Please visit our website for a free download.

One option that has proved successful is to use MySQL and its MyODBC drivers on Windows and synchronizing the databases. Steve Lawrence writes:

  • Install MySQL on your platform according to instructions with MySQL. Latest available from www.mysql.com (get it from your mirror!). No special configuration required except when you set up a database, and configure the user account, you should put % in the host field, or the host name of the Windows computer you wish to access MySQL with. Make a note of your server name, username, and password.

  • Download the MyODBC for Windows driver from the MySQL site. Latest release is myodbc-2_50_19-win95.zip (NT available too, as well as source code). Install it on your Windows machine. You can test the operation with the utilities included with this program.

  • Create a user or system dsn in your ODBC administrator, located in the control panel. Make up a dsn name, enter your hostname, user name, password, port, etc for you MySQL database configured in step 1.

  • Install Access with a full install, this makes sure you get the proper add-ins.. at the least you will need ODBC support and the linked table manager.

  • Now the fun part! Create a new access database. In the table window right click and select Link Tables, or under the file menu option, select Get External Data and then Link Tables. When the file browser box comes up, select files of type: ODBC. Select System dsn and the name of your dsn created in step 3. Select the table to link, press OK, and presto! You can now open the table and add/delete/edit data on your MySQL server! You can also build queries, import/export tables to MySQL, build forms and reports, etc.

Tips and Tricks:

  • You can construct your tables in Access and export them to MySQL, then link them back in. That makes table creation quick.

  • When creating tables in Access, you must have a primary key defined in order to have write access to the table in access. Make sure you create a primary key in MySQL before linking in access

  • If you change a table in MySQL, you have to re-link it in Access. Go to tools>add-ins>linked table manager, cruise to your ODBC DSN, and select the table to re-link from there. you can also move your dsn source around there, just hit the always prompt for new location checkbox before pressing OK.

3. I upgraded to PHP 4, and now mysql keeps telling me "Warning: MySQL: Unable to save result set in ...". What's up?

Most likely what has happened is, PHP 4 was compiled with the '--with-mysql' option, without specifying the path to MySQL. This means PHP is using its built-in MySQL client library. If your system is running applications, such as PHP 3 as a concurrent Apache module, or auth-mysql, that use other versions of MySQL clients, then there is a conflict between the two differing versions of those clients.

Recompiling PHP 4, and adding the path to MySQL to the flag, '--with-mysql=/your/path/to/mysql' usually solves the problem.

4. PHP 5 no longer bundles MySQL client libraries, what does this mean to me? Can I still use MySQL with PHP? I try to use MySQL and get "function undefined" errors, what gives?

Yes. There will always be MySQL support in PHP of one kind or another. The only change in PHP 5 is that we are no longer bundling the client library itself. Some reasons in no particular order:

  • Most systems these days already have the client library installed.

  • Given the above, having multiple versions of the library can get messy. For example, if you link mod_auth_mysql against one version and PHP against another, and then enable both in Apache, you get a nice fat crash. Also, the bundled library didn't always play well with the installed server version. The most obvious symptom of this being disagreement over where to find the mysql.socket Unix domain socket file.

  • Maintenance was somewhat lax and it was falling further and further behind the released version.

  • Future versions of the library are under the GPL and thus we don't have an upgrade path since we cannot bundle a GPL'ed library in a BSD/Apache-style licensed project. A clean break in PHP 5 seemed like the best option.

This won't actually affect that many people. Unix users, at least the ones who know what they are doing, tend to always build PHP against their system's libmyqlclient library simply by doing --with-mysql=/usr when building PHP. Windows users may enable the extension php_mysql.dll inside php.ini. Also, copy libmySQL.dll into the appropriate %SYSTEMROOT% directory, just like you do with every other bundled DLL from the dll directory.

5. After installing shared MySQL support, Apache dumps core as soon as libphp4.so is loaded. Can this be fixed?

If your MySQL libs are linked against pthreads this will happen. Check using ldd. If they are, grab the MySQL tarball and compile from source, or recompile from the source rpm and remove the switch in the spec file that turns on the threaded client code. Either of these suggestions will fix this. Then recompile PHP with the new MySQL libs.

6. Why do I get an error that looks something like this: "Warning: 0 is not a MySQL result index in <file> on line <x>" or "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>?

You are trying to use a result identifier that is 0. The 0 indicates that your query failed for some reason. You need to check for errors after submitting a query and before you attempt to use the returned result identifier. The proper way to do this is with code similar to the following:
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}
or
$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: ".mysql_error());

Précédent | Sommaire | Suivant
Obtenir PHP | Niveau supérieur | Installation


Installation

Manuel PHP
Précédent Suivant

Chapitre 48. Installation

This section holds common questions about the way to install PHP. PHP is available for almost any OS (except maybe for MacOS before OSX), and almost any web server.

To install PHP, follow the instructions in the INSTALL file located in the distribution. Windows users should also read the install.txt file. There are also some helpful hints for Windows users here.

1. Unix/Windows: Where should my php.ini file be located?
2. Unix: I installed PHP, but every time I load a document, I get the message 'Document Contains No Data'! What's going on here?
3. Unix: I installed PHP using RPMS, but Apache isn't processing the PHP pages! What's going on here?
4. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the database support I need! What's going on here?
5. Unix: I patched Apache with the FrontPage extensions patch, and suddenly PHP stopped working. Is PHP incompatible with the Apache FrontPage extensions?
6. Unix/Windows: I have installed PHP, but when I try to access a PHP script file via my browser, I get a blank screen.
7. Unix/Windows: I have installed PHP, but when try to access a PHP script file via my browser, I get a server 500 error.
8. Some operating systems: I have installed PHP without errors, but when I try to start apache I get undefined symbol errors:
[mybox:user /src/php4] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress
9. Windows: I have installed PHP, but when I to access a PHP script file via my browser, I get the error:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:
10. Windows: I've followed all the instructions, but still can't get PHP and IIS to work together!
11. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get the following error: Security Alert! PHP CGI cannot be accessed directly..
12. How do I know if my php.ini is being found and read? It seems like it isn't as my changes aren't being implemented.

1. Unix/Windows: Where should my php.ini file be located?

By default on Unix it should be in /usr/local/lib which is <install-path>/lib. Most people will want to change this at compile-time with the --with-config-file-path flag. You would, for example, set it with something like:
--with-config-file-path=/etc
And then you would copy php.ini-dist from the distribution to /etc/php.ini and edit it to make any local changes you want.

--with-config-file-scan-dir=PATH

On Windows the default path for the php.ini file is the Windows directory. If you're using the Apache webserver, php.ini is first searched in the Apaches install directory, e.g. c:\program files\apache group\apache. This way you can have different php.ini files for different versions of Apache on the same machine.

See also the chapter about the configuration file.

2. Unix: I installed PHP, but every time I load a document, I get the message 'Document Contains No Data'! What's going on here?

This probably means that PHP is having some sort of problem and is core-dumping. Look in your server error log to see if this is the case, and then try to reproduce the problem with a small test case. If you know how to use 'gdb', it is very helpful when you can provide a backtrace with your bug report to help the developers pinpoint the problem. If you are using PHP as an Apache module try something like:

  • Stop your httpd processes

  • gdb httpd

  • Stop your httpd processes

  • > run -X -f /path/to/httpd.conf

  • Then fetch the URL causing the problem with your browser

  • > run -X -f /path/to/httpd.conf

  • If you are getting a core dump, gdb should inform you of this now

  • type: bt

  • You should include your backtrace in your bug report. This should be submitted to http://bugs.php.net/

If your script uses the regular expression functions (ereg() and friends), you should make sure that you compiled PHP and Apache with the same regular expression package. This should happen automatically with PHP and Apache 1.3.x

3. Unix: I installed PHP using RPMS, but Apache isn't processing the PHP pages! What's going on here?

Assuming you installed both Apache and PHP from RPM packages, you need to uncomment or add some or all of the following lines in your httpd.conf file:
# Extra Modules
AddModule mod_php.c
AddModule mod_php3.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php3_module        modules/libphp3.so     /* for PHP 3 */
LoadModule php4_module        modules/libphp4.so     /* for PHP 4 */
LoadModule perl_module        modules/libperl.so
And add:
AddType application/x-httpd-php3 .php3    /* for PHP 3 */
AddType application/x-httpd-php .php      /* for PHP 4 */
... to the global properties, or to the properties of the VirtualDomain you want to have PHP support added to.

4. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the database support I need! What's going on here?

Due to the way PHP 3 built, it is not easy to build a complete flexible PHP RPM. This issue is addressed in PHP 4. For PHP 3, we currently suggest you use the mechanism described in the INSTALL.REDHAT file in the PHP distribution. If you insist on using an RPM version of PHP 3, read on...

The RPM packagers are setting up the RPMS to install without database support to simplify installations and because RPMS use /usr/ instead of the standard /usr/local/ directory for files. You need to tell the RPM spec file which databases to support and the location of the top-level of your database server.

This example will explain the process of adding support for the popular MySQL database server, using the mod installation for Apache.

Of course all of this information can be adjusted for any database server that PHP supports. We will assume you installed MySQL and Apache completely with RPMS for this example as well.

  • First remove mod_php3 :
    rpm -e mod_php3

  • Then get the source rpm and INSTALL it, NOT --rebuild
    rpm -Uvh mod_php3-3.0.5-2.src.rpm

  • Then edit the /usr/src/redhat/SPECS/mod_php3.spec file

    In the %build section add the database support you want, and the path.

    For MySQL you would add
    --with-mysql=/usr \
    The %build section will look something like this:
    ./configure --prefix=/usr \
    --with-apxs=/usr/sbin/apxs \
    --with-config-file-path=/usr/lib \
    --enable-debug=no \
    --enable-safe-mode \
    --with-exec-dir=/usr/bin \
    --with-mysql=/usr \
    --with-system-regex

  • Once this modification is made then build the binary rpm as follows:
    rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

  • Then install the rpm
    rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

Make sure you restart Apache, and you now have PHP 3 with MySQL support using RPM's. Note that it is probably much easier to just build from the distribution tarball of PHP 3 and follow the instructions in INSTALL.REDHAT found in that distribution.

5. Unix: I patched Apache with the FrontPage extensions patch, and suddenly PHP stopped working. Is PHP incompatible with the Apache FrontPage extensions?

No, PHP works fine with the FrontPage extensions. The problem is that the FrontPage patch modifies several Apache structures, that PHP relies on. Recompiling PHP (using 'make clean ; make') after the FP patch is applied would solve the problem.

6. Unix/Windows: I have installed PHP, but when I try to access a PHP script file via my browser, I get a blank screen.

Do a 'view source' in the web browser and you will probably find that you can see the source code of your PHP script. This means that the web server did not send the script to PHP for interpretation. Something is wrong with the server configuration - double check the server configuration against the PHP installation instructions.

7. Unix/Windows: I have installed PHP, but when try to access a PHP script file via my browser, I get a server 500 error.

Something went wrong when the server tried to run PHP. To get to see a sensible error message, from the command line, change to the directory containing the PHP executable (php.exe on Windows) and run php -i. If PHP has any problems running, then a suitable error message will be displayed which will give you a clue as to what needs to be done next. If you get a screen full of HTML codes (the output of the phpinfo() function) then PHP is working, and your problem may be related to your server configuration which you should double check.

8. Some operating systems: I have installed PHP without errors, but when I try to start apache I get undefined symbol errors:
[mybox:user /src/php4] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress

This has actually nothing to do with PHP, but with the MySQL client libraries. Some need --with-zlib, others do not. This is also covered in the MySQL FAQ.

9. Windows: I have installed PHP, but when I to access a PHP script file via my browser, I get the error:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:

This error message means that PHP failed to output anything at all. To get to see a sensible error message, from the command line, change to the directory containing the PHP executable (php.exe on Windows) and run php -i. If PHP has any problems running, then a suitable error message will be displayed which will give you a clue as to what needs to be done next. If you get a screen full of HTML codes (the output of the phpinfo() function) then PHP is working.

Once PHP is working at the command line, try accessing the script via the browser again. If it still fails then it could be one of the following:

  • File permissions on your PHP script, php.exe, php4ts.dll, php.ini or any PHP extensions you are trying to load are such that the anonymous internet user ISUR_<machinename> cannot access them.

  • The script file does not exist (or possibly isn't where you think it is relative to your web root directory). Note that for IIS you can trap this error by ticking the 'check file exists' box when setting up the script mappings in the Internet Services Manager. If a script file does not exist then the server will return a 404 error instead. There is also the additional benefit that IIS will do any authentication required for you based on the NTLanMan permissions on your script file.

10. Windows: I've followed all the instructions, but still can't get PHP and IIS to work together!

Make sure any user who needs to run a PHP script has the rights to run php.exe! IIS uses an anonymous user which is added at the time IIS is installed. This user needs rights to php.exe. Also, any authenticated user will also need rights to execute php.exe. And for IIS4 you need to tell it that PHP is a script engine. Also, you will want to read this faq.

11. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get the following error: Security Alert! PHP CGI cannot be accessed directly..

You must set the cgi.force_redirect directive to 0. It defaults to 1 so be sure the directive isn't commented out (with a ;). Like all directives, this is set in php.ini

Because the default is 1, it's critical that you're 100% sure that the correct php.ini file is being read. Read this faq for details.

12. How do I know if my php.ini is being found and read? It seems like it isn't as my changes aren't being implemented.

To be sure your php.ini is being read by PHP, make a call to phpinfo() and near the top will be a listing called Configuration File (php.ini). This will tell you where PHP is looking for php.ini and whether or not it's being read. If just a directory PATH exists than it's not being read and you should put your php.ini in that directory. If php.ini is included within the PATH than it is being read.

If php.ini is being read and you're running PHP as a module, then be sure to restart your web server after making changes to php.ini

Précédent | Sommaire | Suivant
Database issues | Niveau supérieur | Build Problems


Build Problems

Manuel PHP
Précédent Suivant

Chapitre 49. Build Problems

This section gathers most common errors that occur at build time.

1. I got the latest version of PHP using the anonymous CVS service, but there's no configure script!
2. I'm having problems configuring PHP to work with Apache. It says it can't find httpd.h, but it's right where I said it is!
3. While configuring PHP (./configure), you come across an error similar to the following:
4. When I try to start Apache, I get the the following message:
5. When I run configure, it says that it can't find the include files or library for GD, gdbm, or some other package!
6. When it is compiling the file language-parser.tab.c, it gives me errors that say yytname undeclared.
7. When I run make, it seems to run fine but then fails when it tries to link the final application complaining that it can't find some files.
8. When linking PHP, it complains about a number of undefined references.
9. I can't figure out how to build PHP with Apache 1.3.
10. I have followed all the steps to install the Apache module version on Unix, and my PHP scripts show up in my browser or I am being asked to save the file.
11. It says to use: --activate-module=src/modules/php4/libphp4.a, but that file doesn't exist, so I changed it to --activate-module=src/modules/php4/libmodphp4.a and it doesn't work!? What's going on?
12. When I try to build Apache with PHP as a static module using --activate-module=src/modules/php4/libphp4.a it tells me that my compiler is not ANSI compliant.
13. When I try to build PHP using --with-apxs I get strange error messages.
14. During make, I get errors in microtime, and a lot of RUSAGE_ stuff.
15. When compiling PHP with MySQL, configure runs fine but during make I get an error similar to the following: ext/mysql/libmysql/my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/libmysql/my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp', what's wrong?
16. I want to upgrade my PHP. Where can I find the ./configure line that was used to build my current PHP installation?
17. When building PHP with the GD library it either gives strange compile errors or segfaults on execution.
18. When compiling PHP I seemingly get random errors, like it hangs. I'm using Solaris if that matters.

1. I got the latest version of PHP using the anonymous CVS service, but there's no configure script!

You have to have the GNU autoconf package installed so you can generate the configure script from configure.in. Just run ./buildconf in the top-level directory after getting the sources from the CVS server. (Also, unless you run configure with the --enable-maintainer-mode option, the configure script will not automatically get rebuilt when the configure.in file is updated, so you should make sure to do that manually when you notice configure.in has changed. One symptom of this is finding things like @VARIABLE@ in your Makefile after configure or config.status is run.)

2. I'm having problems configuring PHP to work with Apache. It says it can't find httpd.h, but it's right where I said it is!

You need to tell the configure/setup script the location of the top-level of your Apache source tree. This means that you want to specify --with-apache=/path/to/apache and not --with-apache=/path/to/apache/src.

3. While configuring PHP (./configure), you come across an error similar to the following:

checking lex output file root... ./configure: lex: command not found
       configure: error: cannot find output from lex; giving up

Be sure to read the installation instructions carefully and note that you need both flex and bison installed to compile PHP. Depending on your setup you will install bison and flex from either source or a package, such as a RPM.

4. When I try to start Apache, I get the the following message:

fatal: relocation error: file /path/to/libphp4.so:
       symbol ap_block_alarms: referenced symbol not found

This error usually comes up when one compiles the Apache core program as a DSO library for shared usage. Try to reconfigure apache, making sure to use at least the following flags:

--enable-shared=max --enable-rule=SHARED_CORE

For more information, read the top-level Apache INSTALL file or the Apache DSO manual page.

5. When I run configure, it says that it can't find the include files or library for GD, gdbm, or some other package!

You can make the configure script looks for header files and libraries in non-standard locations by specifying additional flags to pass to the C preprocessor and linker, such as:
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
If you're using a csh-variant for your login shell (why?), it would be:
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

6. When it is compiling the file language-parser.tab.c, it gives me errors that say yytname undeclared.

You need to update your version of Bison. You can find the latest version at http://www.gnu.org/software/bison/bison.html.

7. When I run make, it seems to run fine but then fails when it tries to link the final application complaining that it can't find some files.

Some old versions of make that don't correctly put the compiled versions of the files in the functions directory into that same directory. Try running cp *.o functions and then re-running make to see if that helps. If it does, you should really upgrade to a recent version of GNU make.

8. When linking PHP, it complains about a number of undefined references.

Take a look at the link line and make sure that all of the appropriate libraries are being included at the end. Common ones that you might have missed are '-ldl' and any libraries required for any database support you included.

If you're linking with Apache 1.2.x, did you remember to add the appropriate information to the EXTRA_LIBS line of the Configuration file and re-rerun Apache's Configure script? See the INSTALL file that comes with the distribution for more information.

Some people have also reported that they had to add '-ldl' immediately following libphp4.a when linking with Apache.

9. I can't figure out how to build PHP with Apache 1.3.

This is actually quite easy. Follow these steps carefully:

  • Grab the latest Apache 1.3 distribution from http://www.apache.org/dist/httpd/.

  • Ungzip and untar it somewhere, for example /usr/local/src/apache-1.3.

  • Compile PHP by first running ./configure --with-apache=/<path>/apache-1.3 (substitute <path> for the actual path to your apache-1.3 directory.

  • Type make followed by make install to build PHP and copy the necessary files to the Apache distribution tree.

  • Change directories into to your /<path>/apache-1.3/src directory and edit the Configuration file. Add to the file: AddModule modules/php4/libphp4.a.

  • Type: ./configure followed by make.

  • You should now have a PHP-enabled httpd binary!

Note: You can also use the new Apache ./configure script. See the instructions in the README.configure file which is part of your Apache distribution. Also have a look at the INSTALL file in the PHP distribution.

10. I have followed all the steps to install the Apache module version on Unix, and my PHP scripts show up in my browser or I am being asked to save the file.

This means that the PHP module is not getting invoked for some reason. Three things to check before asking for further help:

  • Make sure that the httpd binary you are running is the actual new httpd binary you just built. To do this, try running: /path/to/binary/httpd -l

    If you don't see mod_php4.c listed then you are not running the right binary. Find and install the correct binary.

  • Make sure you have added the correct Mime Type to one of your Apache .conf files. It should be: AddType application/x-httpd-php3 .php3 (for PHP 3)

    or AddType application/x-httpd-php .php (for PHP 4)

    Also make sure that this AddType line is not hidden away inside a <Virtualhost> or <Directory> block which would prevent it from applying to the location of your test script.

  • Finally, the default location of the Apache configuration files changed between Apache 1.2 and Apache 1.3. You should check to make sure that the configuration file you are adding the AddType line to is actually being read. You can put an obvious syntax error into your httpd.conf file or some other obvious change that will tell you if the file is being read correctly.

11. It says to use: --activate-module=src/modules/php4/libphp4.a, but that file doesn't exist, so I changed it to --activate-module=src/modules/php4/libmodphp4.a and it doesn't work!? What's going on?

Note that the libphp4.a file is not supposed to exist. The apache process will create it!

12. When I try to build Apache with PHP as a static module using --activate-module=src/modules/php4/libphp4.a it tells me that my compiler is not ANSI compliant.

This is a misleading error message from Apache that has been fixed in more recent versions.

13. When I try to build PHP using --with-apxs I get strange error messages.

There are three things to check here. First, for some reason when Apache builds the apxs Perl script, it sometimes ends up getting built without the proper compiler and flags variables. Find your apxs script (try the command which apxs), it's sometimes found in /usr/local/apache/bin/apxs or /usr/sbin/apxs. Open it and check for lines similar to these:
my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl
If this is what you see, you have found your problem. They may contain just spaces or other incorrect values, such as 'q()'. Change these lines to say:
my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl
The second possible problem should only be an issue on Red Hat 6.1 and 6.2. The apxs script Red Hat ships is broken. Look for this line:
my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install
If you see the above line, change it to this:
my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install
Last, if you reconfigure/reinstall Apache, add a make clean to the process after ./configure and before make.

14. During make, I get errors in microtime, and a lot of RUSAGE_ stuff.

During the make portion of installation, if you encounter problems that look similar to this:
microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1

Your system is broken. You need to fix your /usr/include files by installing a glibc-devel package that matches your glibc. This has absolutely nothing to do with PHP. To prove this to yourself, try this simple test:
$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
If that spews out errors, you know your include files are messed up.

15. When compiling PHP with MySQL, configure runs fine but during make I get an error similar to the following: ext/mysql/libmysql/my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/libmysql/my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp', what's wrong?

First, it's important to realize that this is a Warning and not a fatal error. Because this is often the last output seen during make, it may seem like a fatal error but it's not. Of course, if you set your compiler to die on Warnings, it will. Also keep in mind that MySQL support is enabled by default.

Note : As of PHP 4.3.2, you'll also see the following text after the build (make) completes:

Build complete.
        (It is safe to ignore warnings about tempnam and tmpnam).

16. I want to upgrade my PHP. Where can I find the ./configure line that was used to build my current PHP installation?

Either you look at config.nice file, in the source tree of your current PHP installation or, if this is not available, you simply run a
<?php phpinfo(); ?>
script. On top of the output the ./configure line, that was used to build this PHP installation is shown.

17. When building PHP with the GD library it either gives strange compile errors or segfaults on execution.

Make sure your GD library and PHP are linked against the same depending libraries (e.g. libpng).

18. When compiling PHP I seemingly get random errors, like it hangs. I'm using Solaris if that matters.

Using non-GNU utilities while compiling PHP may cause problems. Be sure to use GNU tools in order to be certain that compiling PHP will work. For example, on Solaris, using either the SunOS BSD-compatible or Solaris versions of sed will not work, but using the GNU or Sun POSIX (xpg4) versions of sed will work. Links: GNU sed, GNU flex, and GNU bison.

Précédent | Sommaire | Suivant
Installation | Niveau supérieur | Utiliser PHP


PHP and HTML

Manuel PHP
Précédent Suivant

Chapitre 51. PHP and HTML

PHP and HTML interact a lot: PHP can generate HTML, and HTML can pass information to PHP. Before reading these faqs, it's important you learn how to retrieve variables from outside of PHP. The manual page on this topic includes many examples as well. Pay close attention to what register_globals means to you too.

1. What encoding/decoding do I need when I pass a value through a form/URL?
2. I'm trying to use an <input type="image"> tag, but the $foo.x and $foo.y variables aren't available. $_GET['foo.x'] isn't existing either. Where are they?
3. How do I create arrays in a HTML <form>?
4. How do I get all the results from a select multiple HTML tag?
5. How can I pass a variable from Javascript to PHP?

1. What encoding/decoding do I need when I pass a value through a form/URL?

There are several stages for which encoding is important. Assuming that you have a string $data, which contains the string you want to pass on in a non-encoded way, these are the relevant stages:

  • HTML interpretation. In order to specify a random string, you must include it in double quotes, and htmlspecialchars() the whole value.

  • URL: A URL consists of several parts. If you want your data to be interpreted as one item, you must encode it with urlencode().

Exemple 51-1. A hidden HTML form element

<?php
    echo "<input type='hidden' value='" . htmlspecialchars($data) . "'>\n";
?>

Note : It is wrong to urlencode() $data, because it's the browsers responsibility to urlencode() the data. All popular browsers do that correctly. Note that this will happen regardless of the method (i.e., GET or POST). You'll only notice this in case of GET request though, because POST requests are usually hidden.

Exemple 51-2. Data to be edited by the user

<?php
    echo "<textarea name='mydata'>\n";
    echo htmlspecialchars($data)."\n";
    echo "</textarea>";
?>

Note : The data is shown in the browser as intended, because the browser will interpret the HTML escaped symbols.

Upon submitting, either via GET or POST, the data will be urlencoded by the browser for transferring, and directly urldecoded by PHP. So in the end, you don't need to do any urlencoding/urldecoding yourself, everything is handled automagically.

Exemple 51-3. In an URL

<?php
    echo "<a href='" . htmlspecialchars("/nextpage.php?stage=23&data=" .
        urlencode($data)) . "'>\n";
?>

Note : In fact you are faking a HTML GET request, therefore it's necessary to manually urlencode() the data.

Note : You need to htmlspecialchars() the whole URL, because the URL occurs as value of an HTML-attribute. In this case, the browser will first un-htmlspecialchars() the value, and then pass the URL on. PHP will understand the URL correctly, because you urlencoded() the data.

You'll notice that the & in the URL is replaced by &amp;. Although most browsers will recover if you forget this, this isn't always possible. So even if your URL is not dynamic, you need to htmlspecialchars() the URL.

2. I'm trying to use an <input type="image"> tag, but the $foo.x and $foo.y variables aren't available. $_GET['foo.x'] isn't existing either. Where are they?

When submitting a form, it is possible to use an image instead of the standard submit button with a tag like:
<input type="image" src="image.gif" name="foo">
When the user clicks somewhere on the image, the accompanying form will be transmitted to the server with two additional variables: foo.x and foo.y.

Because foo.x and foo.y would make invalid variable names in PHP, they are automagically converted to foo_x and foo_y. That is, the periods are replaced with underscores. So, you'd access these variables like any other described within the section on retrieving variables from outside of PHP. For example, $_GET['foo_x'].

3. How do I create arrays in a HTML <form>?

To get your <form> result sent as an array to your PHP script you name the <input>, <select> or <textarea> elements like this:
<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">
Notice the square brackets after the variable name, that's what makes it an array. You can group the elements into different arrays by assigning the same name to different elements:
<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyOtherArray[]">
<input name="MyOtherArray[]">
This produces two arrays, MyArray and MyOtherArray, that gets sent to the PHP script. It's also possible to assign specific keys to your arrays:
<input name="AnotherArray[]">
<input name="AnotherArray[]">
<input name="AnotherArray[email]">
<input name="AnotherArray[phone]">
The AnotherArray array will now contain the keys 0, 1, email and phone.

Note : Specifying an arrays key is optional in HTML. If you do not specify the keys, the array gets filled in the order the elements appear in the form. Our first example will contain keys 0, 1, 2 and 3.

See also Array Functions and Variables from outside PHP.

4. How do I get all the results from a select multiple HTML tag?

The select multiple tag in an HTML construct allows users to select multiple items from a list. These items are then passed to the action handler for the form. The problem is that they are all passed with the same widget name. I.e.
<select name="var" multiple="yes">
Each selected option will arrive at the action handler as:
var=option1
var=option2
var=option3
Each option will overwrite the contents of the previous $var variable. The solution is to use PHP's "array from form element" feature. The following should be used:
<select name="var[]" multiple="yes">
This tells PHP to treat $var as an array and each assignment of a value to var[] adds an item to the array. The first item becomes $var[0], the next $var[1], etc. The count() function can be used to determine how many options were selected, and the sort() function can be used to sort the option array if necessary.

Note that if you are using JavaScript the [] on the element name might cause you problems when you try to refer to the element by name. Use it's numerical form element ID instead, or enclose the variable name in single quotes and use that as the index to the elements array, for example:
variable = documents.forms[0].elements['var[]'];

5. How can I pass a variable from Javascript to PHP?

Since Javascript is (usually) a client-side technology, and PHP is (usually) a server-side technology, and since HTTP is a "stateless" protocol, the two languages cannot directly share variables.

It is, however, possible to pass variables between the two. One way of accomplishing this is to generate Javascript code with PHP, and have the browser refresh itself, passing specific variables back to the PHP script. The example below shows precisely how to do this -- it allows PHP code to capture screen height and width, something that is normally only possible on the client side.

<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
  // output the geometry variables
  echo "Screen width is: ". $_GET['width'] ."<br />\n";
  echo "Screen height is: ". $_GET['height'] ."<br />\n";
} else {
  // pass the geometry variables
  // (preserve the original query string
  //   -- post variables will need to handled differently)

  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
            . "&width=\" + screen.width + \"&height=\" + screen.height;\n";
  echo "</script>\n";
  exit();
}
?>

Précédent | Sommaire | Suivant
Utiliser PHP | Niveau supérieur | PHP and COM


PHP and COM

Manuel PHP
Précédent Suivant

Chapitre 52. PHP and COM

PHP can be used to access COM and DCOM objects on Win32 platforms.

1. I have built a DLL to calculate something. Is there any way to run this DLL under PHP ?
2. What does 'Unsupported variant type: xxxx (0xxxxx)' mean ?
3. Is it possible manipulate visual objects in PHP ?
4. Can I store a COM object in a session ?
5. How can I trap COM errors ?
6. Can I generate DLL files from PHP scripts like i can in Perl ?
7. What does 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' mean ?
8. How can I run COM object from remote server ?
9. I get 'DCOM is disabled in C:\path...\scriptname.php on line 6', what can I do ?
10. Is it possible to load/manipulate an ActiveX object in a page with PHP ?
11. Is it possible to get a running instance of a component ?
12. Is there a way to handle an event sent from COM object ?
13. I'm having problems when trying to invoke a method of a COM object which exposes more than one interface. What can I do ?
14. So PHP works with COM, how about COM+ ?
15. If PHP can manipulate COM objects, can we imagine to use MTS to manage components resources, in conjunction with PHP ?

1. I have built a DLL to calculate something. Is there any way to run this DLL under PHP ?

If this is a simple DLL there is no way yet to run it from PHP. If the DLL contains a COM server you may be able to access it if it implements the IDispatch interface.

2. What does 'Unsupported variant type: xxxx (0xxxxx)' mean ?

There are dozens of VARIANT types and combinations of them. Most of them are already supported but a few still have to be implemented. Arrays are not completely supported. Only single dimensional indexed only arrays can be passed between PHP and COM. If you find other types that aren't supported, please report them as a bug (if not already reported) and provide as much information as available.

3. Is it possible manipulate visual objects in PHP ?

Generally it is, but as PHP is mostly used as a web scripting language it runs in the web servers context, thus visual objects will never appear on the servers desktop. If you use PHP for application scripting e.g. in conjunction with PHP-GTK there is no limitation in accessing and manipulating visual objects through COM.

4. Can I store a COM object in a session ?

No, you can't. COM instances are treated as resources and therefore they are only available in a single script's context.

5. How can I trap COM errors ?

Currently it's not possible to trap COM errors beside the ways provided by PHP itself (@, track_errors, ..), but we are thinking of a way to implement this.

6. Can I generate DLL files from PHP scripts like i can in Perl ?

No, unfortunately there is no such tool available for PHP.

7. What does 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' mean ?

This error can have multiple reasons:

  • the CLSID is wrong

  • the requested DLL is missing

  • the requested component doesn't implement the IDispatch interface

8. How can I run COM object from remote server ?

Exactly like you run local objects. You only have to pass the IP of the remote machine as second parameter to the COM constructor.

Make sure that you have set com.allow_dcom=true in your php.ini.

9. I get 'DCOM is disabled in C:\path...\scriptname.php on line 6', what can I do ?

Edit your php.ini and set com.allow_dcom=true.

10. Is it possible to load/manipulate an ActiveX object in a page with PHP ?

This has nothing to do with PHP. ActiveX objects are loaded on client side if they are requested by the HTML document. There is no relation to the PHP script and therefore there is no direct server side interaction possible.

11. Is it possible to get a running instance of a component ?

This is possible with the help of monikers. If you want to get multiple references to the same word instance you can create that instance like shown:

$word = new COM("C:\docs\word.doc");

This will create a new instance if there is no running instance available or it will return a handle to the running instance, if available.

12. Is there a way to handle an event sent from COM object ?

Starting in PHP 4.3.0, you can define an event sink and bind it as shown in the example below. You can use com_print_typeinfo() to have PHP generate a skeleton for the event sink class.

Exemple 52-1. COM event sink example

<?php
class IEEventSinker {
  var $terminated = false;

  function ProgressChange($progress, $progressmax) {
    echo "Download progress: $progress / $progressmax\n";
  }

  function DocumentComplete(&$dom, $url) {
    echo "Document $url complete\n";
  }

  function OnQuit() {
    echo "Quit!\n";
    $this->terminated = true;
  }
}
$ie = new COM("InternetExplorer.Application");
$sink =& new IEEventSinker();
com_event_sink($ie, $sink, "DWebBrowserEvents2");
$ie->Visible = true;
$ie->Navigate("http://www.php.net");
while(!$sink->terminated) {
  com_message_pump(4000);
}
$ie = null;
?>

13. I'm having problems when trying to invoke a method of a COM object which exposes more than one interface. What can I do ?

The answer is as simple as unsatisfying. I don't know exactly but i think you can do nothing. If someone has specific information about this, please let me know :)

14. So PHP works with COM, how about COM+ ?

COM+ extends COM by a framework for managing components through MTS and MSMQ but there is nothing special that PHP has to support to use such components.

15. If PHP can manipulate COM objects, can we imagine to use MTS to manage components resources, in conjunction with PHP ?

PHP itself doesn't handle transactions yet. Thus if an error occurs no rollback is initiated. If you use components that support transactions you will have to implement the transaction management yourself.

Précédent | Sommaire | Suivant
PHP and HTML | Niveau supérieur | PHP and other languages


PHP and other languages

Manuel PHP
Précédent Suivant

Chapitre 53. PHP and other languages

PHP is the best language for web programing, but what about other languages?

1. PHP vs. ASP?
2. Is there an ASP to PHP converter?
3. PHP vs. Cold Fusion?
4. PHP vs. Perl?

1. PHP vs. ASP?

ASP is not really a language in itself, it's an acronym for Active Server Pages, the actual language used to program ASP with is Visual Basic Script or JScript. The biggest drawback of ASP is that it's a proprietary system that is natively used only on Microsoft Internet Information Server (IIS). This limits it's availability to Win32 based servers. There are a couple of projects in the works that allows ASP to run in other environments and webservers: InstantASP from Halcyon (commercial), Chili!Soft ASP from Chili!Soft (commercial). ASP is said to be a slower and more cumbersome language than PHP, less stable as well. Some of the pros of ASP is that since it primarily uses VBScript it's relatively easy to pick up the language if you're already know how to program in Visual Basic. ASP support is also enabled by default in the IIS server making it easy to get up and running. The components built in ASP are really limited, so if you need to use "advanced" features like interacting with FTP servers, you need to buy additional components.

2. Is there an ASP to PHP converter?

Yes, the server-side asp2php is the one most often referred to as well as this client-side option.

3. PHP vs. Cold Fusion?

PHP is commonly said to be faster and more efficient for complex programming tasks and trying out new ideas. PHP is generally referred to as more stable and less resource intensive as well. Cold Fusion has better error handling, database abstraction and date parsing although database abstraction is addressed in PHP 4. Another thing that is listed as one of Cold Fusion's strengths is its excellent search engine, but it has been mentioned that a search engine is not something that should be included in a web scripting language. PHP runs on almost every platform there is; Cold Fusion is only available on Win32, Solaris, Linux and HP/UX. Cold Fusion has a good IDE and is generally easier to get started with, whereas PHP initially requires more programming knowledge. Cold Fusion is designed with non-programmers in mind, while PHP is focused on programmers.

A great summary by Michael J Sheldon on this topic has been posted to the PHP mailing list. A copy can be found here.

4. PHP vs. Perl?

The biggest advantage of PHP over Perl is that PHP was designed for scripting for the web where Perl was designed to do a lot more and can because of this get very complicated. The flexibility / complexity of Perl makes it easier to write code that another author / coder has a hard time reading. PHP has a less confusing and stricter format without losing flexibility. PHP is easier to integrate into existing HTML than Perl. PHP has pretty much all the 'good' functionality of Perl: constructs, syntax and so on, without making it as complicated as Perl can be. Perl is a very tried and true language, it's been around since the late eighties, but PHP is maturing very quickly.

Précédent | Sommaire | Suivant
PHP and COM | Niveau supérieur | Migrer de PHP 2 à PHP 3


Questions diverses

Manuel PHP
Précédent Suivant

Chapitre 56. Questions diverses

Il y'a quelques questions inclassables. Vous les trouverez ici.

1. Comment puis-je manipuler le manuel compréssé en bzip2 sous Windows ?

1. Comment puis-je manipuler le manuel compréssé en bzip2 sous Windows ?

Si vous n'avez pas d'outil d'archivage prenant en charge les fichiers au format bz2, téléchargez l'outil en ligne de commande à partir de Redhat (merci de lire les informations plus bas).

Si vous préférez ne pas utiliser d'outil en ligne de commande, vous pouvez essayer des outils gratuits comme Stuffit Expander, UltimateZip, 7-Zip, ou Quick Zip. Si vous avez des outils comme WinRAR ou Power Archiver, vous pouvez facilement décompresser les fichiers bz2 avec. Si vous utilisez Windows Commander, un plugin bz2 est disponible gratuitement sur le site de Windows Commander.

L'outil en ligne commande bzip2 de Redhat :

Les utilisateurs du service pack 2 de Win2K doivent prendre la version 1.0.2, tous les autres utilisateurs de Windows doivent prendre la version 1.00. Après avoir téléchargé, renommez l'exécutable en bzip2.exe. Pour votre convenance, mettez-le dans un dossier dans votre path, c'est à dire C:\Windows où C représente votre disque où Windows est installé.

Note : Dans ce qui suit, lang signifie votre langage et x le format désiré, comme par exemple : pdf. Pour décompresser php_manual_lang.x.bz2 suivez les instructions suivantes :

  • ouvrez un invite de commande

  • déplacez vous dans le dossier où se trouvent les fichiers php_manual_lang.x.bz2

  • appelez bzip2 -d php_manual_lang.x.bz2, pour extraire php_manual_lang.x dans ce même dossier

Dans le cas où vous avez téléchargé le fichier php_manual_lang.tar.bz2 avec beaucoup de fichiers HTML à l'intérieur, la procédure est la même. La seule différence est que vous obtiendrez un fichier php_manual_lang.tar. Le format tar est connu pour être pris en compte par la plupart des archiveurs de Windows, comme WinZip.

Précédent | Sommaire | Suivant
Migrer de PHP 3 à PHP 4 | Niveau supérieur | Appendices


Appendices

Manuel PHP
Précédent Suivant

IX. Appendices

Table des matières
A. Histoire de PHP
B. Migration de PHP 3.0 à PHP 4.0
C. Migration de PHP/FI 2.0 à PHP 3.0
D. Débuggeur PHP
E. Développement PHP
F. Liste d'alias
G. Mots réservés en PHP
H. Types des ressources PHP
I. Liste des protocoles supportés
J. Liste des modes de transports de sockets disponibles
K. Comparaison de types en PHP
L. Liste des token de l'analyseur
M. A propos du manuel
N. Open Publication License
O. Index des fonctions
P. Eléments Absents

Précédent | Sommaire | Suivant
Questions diverses |  | Histoire de PHP


Migration de PHP 3.0 à PHP 4.0

Manuel PHP
Précédent Suivant

Annexe B. Migration de PHP 3.0 à PHP 4.0

Table des matières
Ce qui a changé en PHP 4.0
Utiliser PHP 3 et PHP 4 simultanément
Migration des fichiers de configuration
Comportement de l'analyseur
Rapport d'erreur
Initialiseur
empty("0")
Fonctions manquantes
Extensions PHP 3.0
Substitution de variables dans les chaînes
Cookies
Gestion des variables globales

Ce qui a changé en PHP 4.0

PHP 4.0 et le moteur Zend ont significativement amélioré les performances et les possibilités de PHP, tout en assurant une compatibilité ascendante maximale. Le maximum de codes existants sous PHP 3.0 fonctionneront sous PHP 4.0. La migration de votre code de PHP 3.0 vers PHP 4.0 sera beaucoup plus facile que celle de PHP/FI 2.0 vers 3.0. Un grand nombre de scripts seront prêts sans modifications, mais il est bon que vous connaissiez les quelques différences, et que vous testiez vos applications avant d'effecteur le changement de cadre de production. Les indications suivantes vous mettront sur la voie.

Précédent | Sommaire | Suivant
Publications sur PHP | Niveau supérieur | Utiliser PHP 3 et PHP 4 simultanément


Utiliser PHP 3 et PHP 4 simultanément

Les systèmes d'exploitation récents disposent de capacités de versioning et de scoping. Ces fonctionnalités rendent possible l'installation de PHP 3 et PHP 4 comme modules Apache, simultanément.

Ceci a été fait sur les plate-formes suivantes :

  • Linux avec les binutils récents (testé avec binutils 2.9.1.0.25)

  • Solaris 2.5 ou plus récent

  • FreeBSD (testé avec 3.2, 4.0)

Pour l'activer, configurez PHP 3 et PHP 4 pour qu'ils utilisent APXS (--with-apxs) et les extensions nécessaires (--enable-versioning). En dehors de cela, toutes les instructions d'installation habituelles s'appliquent. Par exemple :

Exemple B-1. Configuration pour utiliser simultanément PHP 3 et 4

$ ./configure \
  --with-apxs=/apache/bin/apxs \
  --enable-versioning \
  --with-mysql \
  --enable-track-vars

Précédent | Sommaire | Suivant
Migration de PHP 3.0 à PHP 4.0 | Niveau supérieur | Migration des fichiers de configuration


Migration des fichiers de configuration

Le fichier de configuration global, php3.ini, a été renommé en php.ini.

Pour les fichiers de configuration Apache, il y a eu des modifications plus importantes. Les types MIME reconnus par le module PHP ont été modifiés.

Exemple B-2. Activation des types Mimes PHP 3 et 4

application/x-httpd-php3        -->    application/x-httpd-php
application/x-httpd-php3-source -->    application/x-httpd-php-source

Vous pouvez faire fonctionner vos deux versions de PHP avec le même fichier de configuration Apache (suivant la version qui est déjà compilée sur le serveur), en utilisant la syntaxe suivante :

Exemple B-3. Utilisation du même fichier de configuration Apache pour PHP 3 et 4

AddType  application/x-httpd-php3        .php3
AddType  application/x-httpd-php3-source .php3s
AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

De plus, les directives de nom de PHP pour Apache ont aussi été modifiées.

Depuis PHP 4.0, il n'y a que 4 directives Apache qui se rapportent à PHP :

Exemple B-4. Directives Apache pour PHP 4

php_value [PHP directive name] [value]
php_flag [PHP directive name] [On|Off]
php_admin_value [PHP directive name] [value]
php_admin_flag [PHP directive name] [On|Off]

Il y a deux différences entre les options Admin et les autres valeurs :

  • Les options Admin ne peuvent être placées que des le fichier de configuration général (i.e., httpd.conf).

  • Les valeurs Standard ne peuvent pas contrôler certaines directives PHP. Par exemple, le safe mode (si vous pouviez modifier les configurations dans le fichier .htaccess, cela annulerait toute la sécurité du safe mode. A l'inverse, les valeurs Admin peuvent modifier n'importe quelle directive PHP.

Pour rendre le processus de transition plus agréable, PHP 4.0 est distribué avec des scripts qui convertissent automatiquement vos configuration Apache et vos fichiers .htaccess pour qu'ils puissent fonctionner aussi bien avec PHP 3 que PHP 4. Ces scripts ne convertissent PAS les lignes concernant les types MIME. Vous devez le faire vous-même.

Pour convertir votre fichier de configuration Apache, exécutez le script apconf-conv.sh (disponible dans le dossier scripts/apache/). Par exemple :

Exemple B-5. Conversion du fichier de configuration Apache pour PHP 4

~/php4/scripts/apache:#  ./apconf-conv.sh /usr/local/apache/conf/httpd.conf

Votre configuration originale sera sauvée dans le fichier httpd.conf.orig.

Pour convertir vos fichiers .htaccess, exécutez le script aphtaccess-conv.sh (disponible dans le dossier scripts/apache/). Par exemple :

Exemple B-6. Conversion des fichiers .htaccess pour PHP 4

~/php4/scripts/apache:#  find / -name .htaccess -exec ./aphtaccess-conv.sh {} \;

De la même façon, votre vieux fichier .htaccess sera sauvé sous le nom .htaccess.orig.

Les scripts de conversion requièrent l'installation préalable de awk.

Précédent | Sommaire | Suivant
Utiliser PHP 3 et PHP 4 simultanément | Niveau supérieur | Comportement de l'analyseur


Comportement de l'analyseur

L'analyse et l'exécution sont désormais deux étapes complètement dissociées, et l'exécution intervient lorsque le code, ainsi que tous ses inclusions et pré-requis, ont été complètement analysés et validés.

Une des nouvelles conditions introduites est que les fichiers inclus et requis (include() et require()) doivent être syntaxiquement complets. Vous ne pouvez plus répartir différents cas de votre code dans plusieurs fichiers. Vous ne pouvez plus commencer une boucle for ou while, une condition if ou un cas switch dans un fichier, et finir la boucle ou placer les cas else, endif, case ou break dans un autre fichier.

Il est toujours valable d'inclure du code supplémentaire depuis une boucle ou dans une condition, mais les accolades de bloc {...}, et les éléments de la boucle doivent être dans le même fichier ou chaîne évaluée avec eval().

Cela ne devrait pas perturber trop de monde, car étaler son code de cette façon est plutôt un style à éviter.

Une autre nouveauté est qu'il est plus possible de faire retourner une valeur avec un fichier requis (require()) (mais c'est plutôt rare en PHP 3.0). Retourner une valeur avec un fichier inclus (include()) est toujours possible.

Précédent | Sommaire | Suivant
Migration des fichiers de configuration | Niveau supérieur | Rapport d'erreur


Rapport d'erreur

Changement de configuration

Avec PHP 3.0, le niveau de rapport d'erreur était obtenu en ajoutant les constantes numériques de chaque niveau de rapport. Généralement, on utilisait 15 pour afficher toutes les erreurs, et 7 pour afficher toutes les erreurs hormis les alertes simples.

PHP 4.0 dispose d'un nombre significativement plus grand de niveaux de rapport d'erreur, et l'analyseur comprend désormais les constantes, lors des modifications.

Le niveau de rapport d'erreur doit désormais être explicitement configuré en supprimant les niveaux dont vous ne voulez pas du niveau maximal, grâce à la fonction de OU exclusif. Ça a l'air compliqué? Supposons que vous souhaitiez afficher toutes les erreurs, hormis les alertes de style, qui sont repérées par la constante : E_NOTICE. Il suffit d'ajouter la valeur suivante dans le fichier php.ini : error_reporting = E_ALL & ~ ( E_NOTICE ). Si vous voulez supprimer en plus les alertes, vous pouvez ajouter la constante appropriée, en la combinant avec l'opérateur OU logique '|': error_reporting= E_ALL & ~ ( E_NOTICE | E_WARNING ).

Avertissement

L'utilisation des vieilles valeurs de 7 et 15 est une très mauvaise idée, car elles ne prennent pas en compte les nouvelles classes d'erreurs, y compris certaines erreurs d'analyse. Cela peut conduire à de très étranges résultats, où le script n'affiche plus rien, malgré une erreur d'analyse.

Cela a conduit à un grand nombre de rapport d'erreur dans le passé, alors que les programmeurs n'étaient tout simplement pas capables de repérer l'accolade manquante, car l'analyseur avait la consigne de cacher ces erreurs.

Vérifier votre niveau d'erreur doit être le premier réflexe lorsque vos scripts meurent silencieusement. Le moteur Zend est considéré actuellement comme suffisamment mature pour ne plus causer ce genre de problème aujourd'hui.

Nouveaux messages d'erreurs

Un grand nombre de scripts PHP PHP 3.0 utilisent des structures qui doivent être considérées comme un très mauvais style, même s'il effectue bien la tâche qui lui est affectée, car ils ne sont pas robustes. PHP 4.0 affichera de nombreux messages d'erreurs dans des situations où PHP 3.0 restera coi. La solution de facilité consiste à supprimer les messages de niveau E_NOTICE, mais c'est une meilleure idée de corriger le code à la place.

Le cas le plus courant qui génèrera des messages d'alertes est l'utilisation de constantes sans guillemets comme index de tableaux. PHP 3.0, comme PHP 4.0, finiront par les interpréter littéralement comme des chaînes, si aucune constante n'est définie à la place. Mais si jamais une telle constante est définie dans une autre partie du code, cela risque de produire des résultats étonnants. Cela peut devenir un trou de sécurité si un pirate arrive à redéfinir les constantes de telle manière que le script lui donne accès à un niveau de droits supérieur. PHP 4.0 vous signalera tout oubli de guillemets comme par exemple dans : $_SERVER[REQUEST_METHOD]. Modifier ce code en $_SERVER['REQUEST_METHOD'] rendra l'analyseur heureux, et améliorera grandement votre style et la sécurité du code.

PHP 4.0 vous signalera les variables ou les éléments de tableaux non initialisés.

Précédent | Sommaire | Suivant
Comportement de l'analyseur | Niveau supérieur | Initialiseur


Initialiseur

Les variables statiques et les membres de classes n'acceptent plus que des initialiseurs scalaires, tandis que PHP 3.0 acceptait aussi les expressions. Cela est dû, encore une fois, à la séparation de l'analyse et de l'exécution : aucun code ne peut être exécuté tant que l'analyse n'est pas terminée.

Pour les classes, il vaut mieux initialiser les membres dans le constructeur. Pour les variables statiques, une valeur fixe et simple est la seule chose qui viennent à l'esprit.

Précédent | Sommaire | Suivant
Rapport d'erreur | Niveau supérieur | empty("0")


Fonctions manquantes

Bien que PHP 4.0 dispose de nombreuses nouvelles fonctionnalités fonctions et extensions, vous vous rencontrer des fonctions PHP 3.0 qui manquent. Un petit nombre de fonctions de base n'ont pu être portées en PHP 4.0, maintenant que l'analyse et l'exécution ont été séparées. D'autres fonctions, et mêmes des extensions entières sont maintenant obsolètes, remplacées par de nouvelles fonctions plus puissantes ou plus efficaces. Certaines fonctions n'ont tout simplement pas été portées pour le moment ou pour des raisons de licences.

Fonctions manquantes pour des raisons de structure

Comme PHP 4.0 sépare l'analyse et l'exécution, il n'est plus possible de modifier le comportement de l'analyseur (intégré dans le moteur Zend) durant l'exécution, puisque toute l'analyse a eu lieu, et est terminée. La fonction short_tags() a cessé d'exister. Vous pouvez toujours modifier le comportement de l'analyseur avec le fichier php.ini.

Une autre fonctionnalité qui ne fait pas partie de PHP est le débogeur. Des débogueurs réalisés par des tiers sont disponibles, mais ne sont pas distribués avec PHP D'autres extensions du Zend Engine sont aussi disponibles auprès de divers sites et groupes.

Fonctions et extensions obsolètes

Les extensions Adabas et Solid n'existent plus. Elles sont intégrées dans les fonctions ODBC Unifié.

Nouveau statut pour unset()

unset(), bient que toujours disponible, a été implémenté légèrement différemment en PHP 4.0, et elle n'est plus vraiment une 'fonction'.

Cela n'a pas de conséquence directe sur le comportement de unset(), mais utiliser cette fonction pour faire un test avec function_exists() retournera FALSEcomme il se doit avec les fonction bas niveau comme echo().

Une autre application pratique disparue est qu'il n'est plus possible d'appeler unset() indirectement, c'est-à-dire que $func="unset"; $func($somevar) ne fonctionne plus.

Précédent | Sommaire | Suivant
empty("0") | Niveau supérieur | Extensions PHP 3.0


Extensions PHP 3.0

Les extensions écrites pour PHP 3.0 ne fonctionnent plus avec PHP 4.0, ni les exécutables, ni les codes sources. Il n'est pas difficile de porter les extensions de PHP 3.0 à 4.0 si vous avez accès aux sources originales. Une description détaillée du processus de portage ne fait pas partie de cet appendice (pour le moment).

Précédent | Sommaire | Suivant
Fonctions manquantes | Niveau supérieur | Substitution de variables dans les chaînes


Substitution de variables dans les chaînes

PHP 4.0 dispose d'un nouveau mécanisme de substitution des variables dans les chaînes. Vous pouvez désormais accéder aux membres d'objets et aux tableaux multidimensionnels dans une chaîne.

Pour cela, il suffit de placer la variable entre accolades, le signe $ suivant immédiatement la première accolade : {$variable['a']}

Pour utiliser la valeur d'un membre d'objet dans une chaîne, il suffit d'écrire : "text {$obj->member} text"; alors qu'en PHP 3.0, il fallait faire comme ceci : "texte".$objet->membre." texte".

Cette technique rend le code beaucoup plus lisible, mais risque de poser des problèmes dans certains scripts PHP 3.0. Vous pouvez facilement traquer ce problème en recherche les séquences {$ dans votre code, et en les remplaçant par \{$ avec votre outil de remplacement habituel.

Précédent | Sommaire | Suivant
Extensions PHP 3.0 | Niveau supérieur | Cookies


Cookies

PHP 3.0 avait la mauvaise habitude d'envoyer les cookies dans l'ordre inverse de celui du code (l'ordre des appels à setcookie()). PHP 4.0 rétablit l'ordre naturel en les envoyant dans le même ordre que vous même.

Cela peut aussi prendre à contre-pied certains programmes, mais ce comportement était tellement étrange qu'il méritait un tel traitement un jour ou l'autre, pour éviter d'autres problèmes ultérieurs.

Précédent | Sommaire | Suivant
Substitution de variables dans les chaînes | Niveau supérieur | Gestion des variables globales


Gestion des variables globales

Alors que la gestion des variables globales a été surtout étudiée pour être simple en PHP 3 et aux premières versions de PHP 4, la sécurité est devenue la priorité avec les dernières versions. Alors qu'en PHP 3, le code suivant fonctionnait sans problème, en PHP 4, il faut utiliser unset($GLOBALS["id"]);. Ce n'est qu'un des problème lié à la gestion des variables. Il faut toujours utiliser la variable $GLOBALS avec les nouvelles versions de PHP. Apprenez-en plus sur ce sujet dans la section Références globales.

Exemple B-7. Migration des variables globales

<?php
  $id = 1;
  function test() {
    global $id;
    unset($id);
  }
  test();
  echo($id);
  // Ceci va afficher 1 en PHP 4
?>

Précédent | Sommaire | Suivant
Cookies | Niveau supérieur | Migration de PHP/FI 2.0 à PHP 3.0


Migration de PHP/FI 2.0 à PHP 3.0

Manuel PHP
Précédent Suivant

Annexe C. Migration de PHP/FI 2.0 à PHP 3.0

Table des matières
A propos des incompatibilités en 3.0
old_function
Balises PHP
Syntaxe if..endif
Syntaxe while
Types d'expression
Les messages d'erreur ont changé
Evaluation rapide des booléens
La valeur TRUE/FALSE comme retour de fonctions
Diverses incompatibilités

A propos des incompatibilités en 3.0

PHP 3.0 a été entièrement réécrit. Le nouvel analyseur syntaxique est beaucoup plus robuste et cohérent qu'en version 2.0. Il est aussi nettement plus rapide et utilise encore moins de mémoire. Cependant, ces améliorations n'ont pu être possibles qu'au prix de modifications parfois importantes, tant au niveau des syntaxes, qu'au niveau des fonctionnalités.

De plus, l'équipe de développement PHP a essayé de nettoyer la syntaxe et les sémantiques, ce qui a aussi causé quelques incompatibilités. A long terme, nous pensons que ces modifications seront pour le bien de tous.

Ce chapitre va tenter de vous montrer les incompatibilités que vous pourriez rencontrer lors de votre migration de PHP/FI 2.0 à PHP 3.0 et de vous aider à les résoudre. Les nouvelles fonctionnalités ne sont pas signalées, à moins que cela ne soit nécessaire.

Un programme de conversion automatique de vos vieux script PHP/FI 2.0 existe. Il est disponible dans le dossier de convertisseur de la distribution PHP 3.0. Ce programme ne fait que repérer les modifications de syntaxe et ne vous épargnera pas une relecture attentive du script.

Précédent | Sommaire | Suivant
Gestion des variables globales | Niveau supérieur | old_function


Balises PHP

La première chose que vous remarquerez probablement est que les balises de PHP start et end ont changé. L'ancienne forme <? > a été remplacée par trois nouvelles balises possibles :

Exemple C-1. Migration: Migration: balises start/end

<?
  echo "Ceci est du code PHP/FI 2.0.\n";
>
Comme en version 2.0, PHP/FI accepte aussi cette variante :

Exemple C-2. Migration: premières nouvelles balises PHP

<?
  echo "Ceci est du code PHP 3.0!\n";
?>
Notez bien que la balise de fin contient désormais un point d'interrogation et un signe supérieur ">". Cependant, si vous souhaitez utiliser XML sur votre serveur, vous aurez sûrement des problèmes avec cette variante, car PHP risque d'essayer d'exécuter des balises XML. A cause de ceci, la notation suivante a été ajoutée :

Exemple C-3. Migration: Nouvelles balises PHP

<?php
  echo "Ceci est du code PHP 3.0!\n";
?>
Certains d'entre vous rencontrent des problèmes avec les éditeurs qui ne comprennent pas ce type de balises d'instruction : Microsoft FrontPage est l'un de ces éditeurs, et, pour contourner le problème, la variation suivante a été introduite :

Exemple C-4. Nouvelles balises PHP

<script language="php">
  echo "Ceci est du code PHP 3.0!\n";
</script>

Précédent | Sommaire | Suivant
old_function | Niveau supérieur | Syntaxe if..endif


Syntaxe if..endif

La syntaxe alternative pour écrire des instructions if/elseif/else, avec if(); elseif(); else; endif; ne pouvait pas être conservée sans ajouter beaucoup de complexité à l'analyseur syntaxique. De ce fait, cette syntaxe à changée :

Exemple C-5. Migration: ancienne syntaxe if..endif

<?php
  if ($foo);
    echo "oui\n";
  elseif ($bar);
    echo "presque\n";
  else;
    echo "non\n";
  endif;
?>

Exemple C-6. Migration: nouvelle syntaxe if..endif

<?php
  if ($foo):
    echo "oui\n";
  elseif ($bar):
    echo "presque\n";
  else:
    echo "non\n";
  endif;
?>
Notez que les points virgules ont été remplacée par des points dans toutes les commandes, sauf pour la dernière expression (endif).

Précédent | Sommaire | Suivant
Balises PHP | Niveau supérieur | Syntaxe while


Syntaxe while

Tout comme pour if..endif, la syntaxe des boucles while..endwhile a changée :

Exemple C-7. Migration: ancienne syntaxe while..endwhile

<?php
  while ($more_to_come);
    ...
  endwhile;
?>

Exemple C-8. Migration: nouvelle syntaxe while..endwhile

<?php
  while ($more_to_come):
    ...
  endwhile;
?>

Avertissement

Attention : si vous utilisez la vieille syntaxe while..endwhile en PHP 3.0, vous obtiendrez une boucle sans fin !

Précédent | Sommaire | Suivant
Syntaxe if..endif | Niveau supérieur | Types d'expression


Types d'expression

PHP/FI 2.0 utilisait le membre à gauche dans les expressions, pour déterminer le type de résultat attendu. PHP 3.0 prend en compte les deux côtés de l'expression et cela peut produire des résultats inattendus avec les scripts 2.0.

Considérez les lignes suivantes:

<?php
  $a[0]=5;
  $a[1]=7;
  $key = key($a);
  while ("" != $key) {
    echo "$keyn";
    next($a);
  }
?>

En PHP/FI 2.0, cet exemple va afficher les indices des $a. En PHP 3.0, l'exemple ne va rien afficher du tout. La raison est qu'en PHP 2.0, puisque l'argument de gauche est de type chaîne, une comparaison de chaîne était effectuée et, effectivement, "" n'est pas "", ce qui conduit la boucle à continuer. En PHP 3, lorsqu'une chaîne est comparée avec un entier, la comparaison est de type chaîne (la chaîne est convertie en entier). Ce qui revient à faire la comparaison entre (atoi("")) qui vaut 0 et la variable qui vaut aussi 0 et comme 0==0, la boucle ne commence même pas.

La correction de ceci est simple : il suffit de remplacer les commandes while par:

<?php
  while ((string)$key != "") {
?>

Précédent | Sommaire | Suivant
Syntaxe while | Niveau supérieur | Les messages d'erreur ont changé


Les messages d'erreur ont changé

Les messages d'erreur en PHP 3.0 sont généralement plus précis que ceux de la version 2.0., mais vous ne verrez plus la portion de code qui a causé l'erreur. A la place, un numéro de ligne et un nom de fichier sera retourné.

Précédent | Sommaire | Suivant
Types d'expression | Niveau supérieur | Evaluation rapide des booléens


Evaluation rapide des booléens

En PHP 3., l'évaluation des est court-circuité. Cela signifie dans une expression telle que ((1 || test_me())), la fonction test_me() ne sera pas exécutée, car cela ne changera pas le résultat.

C'est une amélioration mineure, mais qui peut avoir des effets secondaires importants.

Précédent | Sommaire | Suivant
Les messages d'erreur ont changé | Niveau supérieur | La valeur TRUE/FALSE comme retour de fonctions


Diverses incompatibilités

  • Le module PHP 3.0 pour Apache n'accepte plus les versions d'Apache antérieure à la version 1.2. Apache 1.2 ou plus récent est nécessaire.

  • echo() n'utilise plus de chaîne de formatage. Il faut utiliser printf() à la place.

  • En PHP/FI 2.0, un effet secondaire de l'implémentation faisait que $foo[0] était la même chose que $foo. Ce n'est plus vrai en PHP 3.0.

  • Lire un tableau avec $array[] n'est plus valable.

    Ainsi, il n'est plus possible de passer en revue un tableau avec des boucles telles que $data = $array[]. Utilisez current() et next() à la place.

    Ainsi, $array1[] = $array2 n'ajoute pas les valeurs de $array2 à $array1, mais crée un nouvel élément dans $array1 et y affecte $array2 comme dernier élément. Voir aussi les tableaux multidimensionnels.

  • "+" n'est plus utilisable comme opérateur de concaténation de chaîne. A la place, il convertit les arguments en nombres et effectue une addition numérique. Utilisez "." à la place.

Exemple C-11. Migration depuis 2.0: concaténation de chaînes

<?php
  echo "1" + "1";
?>

En PHP 2.0 cela retournerait 11, en PHP 3.0 cela va retourner 2. A la place, faites :
<?php
  echo "1"."1";
?>
<?php
  $a = 1;
  $b = 1;
  echo $a + $b;
?>

Cela va afficher 2, tant en PHP 2.0 qu'en 3.0.
<?php
  $a = 1;
  $b = 1;
  echo $a.$b;
?>
Cela va afficher 11 en PHP 3.0.

Précédent | Sommaire | Suivant
La valeur TRUE/FALSE comme retour de fonctions | Niveau supérieur | Débuggeur PHP


Débuggeur PHP

Manuel PHP
Précédent Suivant

Annexe D. Débuggeur PHP

Table des matières
A propos du débuggeur
Utiliser le débuggeur PHP
Protocole du débuggeur

A propos du débuggeur

PHP 3 inclut le support d'un serveur de débuggage.

PHP 4 n'inclut aucun support de débuggage. Vous pouvez toutefois utiliser un des débogeur externe. Le Studio Zend inclut un débogeur et il y a aussi des débogeurs gratuits comme http://dd.cron.ru/dbg/, le Advanced PHP Debugger (APD) ou Xdebug

Précédent | Sommaire | Suivant
Diverses incompatibilités | Niveau supérieur | Utiliser le débuggeur PHP


Utiliser le débuggeur PHP

Le débuggeur PHP sert à repérer les bugs récalcitrants. Le débuggeur fonctionne en se connectant à un port TCP à chaque démarrage de PHP. Tous les messages d'erreur seront envoyés sur cette connexion. Cette page est faite pour un "serveur de débuggage", qui peut fonctionner avec un IDE ou un éditeur programmable (tel que Emacs).

Comment paramétrer le débuggeur :

  1. Réservez un port TCP pour le débuggeur dans le fichier de configuration (debugger.port) et activez-le (debugger.enabled).

  2. Configurer un client TCP sur ce port (par exemple socket -l -s 1400 sous UNIX).

  3. Dans votre code, placez la ligne "debugger_on(host)", où host est l'IP ou le nom de l'hôte qui supporte le client TCP.

Désormais, toutes les alertes, notes, ... seront envoyées sur la socket client, même si vous avez désactivé le rapport d'erreur avec error_reporting().

Précédent | Sommaire | Suivant
Débuggeur PHP | Niveau supérieur | Protocole du débuggeur


Protocole du débuggeur

Le protocole de débugage PHP 3 fonctionne ligne par ligne. Chaque ligne a un type type et plusieurs lignes composent un message Chaque message commence avec une ligne du type start et se termine avec une ligne de type end. PHP peut envoyer des lignes de plusieurs messages simultanément.

Voici un exemple de ligne à ce format :

date time
host(pid)
type:
message-data

date

Les dates sont au format ISO 8601 (yyyy-mm-dd)

time

Les heures, y compris les micro-secondes: hh:mm:uuuuuu

host

Le nom DNS ou adresse IP de l'hôte qui a généré l'erreur.

pid

PID (process id) sur l'hôte host, qui a généré l'erreur.

type

Type de la ligne. Indique au programme client comment traiter les données suivantes :

Tableau D-1. Types des lignes du Débuggeur

Nom | Signification
start | Indique au programme client que le message du débuggeur commence ici. Le contenu de data sera un type d'erreur, comme listé ci-dessous.
message | Le message d'erreur PHP 3.
location | Nom du fichier et numéro de ligne, où l'erreur est survenue. La première occurrence de location contiendra toujours la localisation générale. data contiendra : file:line. Il y a toujours une indication de location après un message et après chaque function.
frames | Nombre de frames dans le dump de la pile. S'il y a 4 frames, attendez vous à des informations sur 4 niveaux de fonctions. Si la ligne "frame" n'existe pas, la profondeur doit être 0 (une erreur est survenue au niveau général).
function | Nom de la fonction qui a généré l'erreur. Elle sera répétée à chaque niveau de la pile d'appel.
end | Indique au client que le message du débuggeur se termine ici.

data

Ligne de données.

Tableau D-2. Types d'erreur du débuggeur

Débuggeur | Interne PHP 3
alerte (warning) | E_WARNING
erreur | E_ERROR
analyse (parse) | E_PARSE
note (notice) | E_NOTICE
core-error | E_CORE_ERROR
core-warning | E_CORE_WARNING
inconnue | (toutes les autres)

Exemple D-1. Exemple de message du débuggeur

1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice
1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (NULL):7
1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1
1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.php3:10
1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice

Précédent | Sommaire | Suivant
Utiliser le débuggeur PHP | Niveau supérieur | Développement PHP


Développement PHP

Manuel PHP
Précédent Suivant

Annexe E. Développement PHP

Table des matières
Créer une fonction PHP 3
Appeler des fonctions utilisateurs
Rapport d'erreurs

Créer une fonction PHP 3

Prototypes de fonctions

Toutes les fonctions suivent le schéma suivant :
void php3_foo(INTERNAL_FUNCTION_PARAMETERS) {
}
Même si votre fonction ne prend aucun argument, c'est comme cela qu'elle doit être appelée.

Arguments de fonctions

Les arguments sont toujours de type val. Ce type contient un membre de type union, qui indique le type reél d'argument. De cette façon, si votre fonction prend deux arguments, elle ressemble à ceci :

Exemple E-1. Argument de fonction de lecture

pval *arg1, *arg2;
if (ARG_COUNT(ht) != 2 || getParameters(ht,2,&arg1,&arg2)==FAILURE) {
   WRONG_PARAM_COUNT;
}
NOTE: Les arguments peuvent être passé par valeur ou par référence. Dans les deux cas, vous devez passer &(pval *) à getParameters. Si vous voulez vérifier que le n-ième paramètre a été passé par référence ou par valeur, vous devez utiliser la fonction ParameterPassedByReference(ht,n). Elle retournera 1 ou 0.

Lorsque vous modifiez l'un des paramètres, qu'ils soient envoyés par référence ou par valeur, vous pouvez le passer à pval_destructor pour le réinitialiser, ou, s'il s'agit d'un tableau et que vous voulez ajouter des valeurs, vous pouvez utiliser des fonctions similaires à celles qui sont dans internal_functions.h, qui manipule return_value comme tableau.

Par ailleurs, si vous modifiez un paramètre en IS_STRING, assurez-vous que vous avez bien assigné un nouvelle chaîne avec estrdup() et une nouvelle longueur de chaîne. Seulement après, vous pouvez modifier le type en IS_STRING. Si vous modifiez une chaîne en IS_STRING ou IS_ARRAY vous devez d'abord appeler le destructeur pval_destructor.

Fonctions à nombre d'arguments variable

Une fonction peut prendre un nombre variable d'arguments. Si votre fonction peut prendre deux ou trois arguments, utiliser la syntaxe suivante :

Exemple E-2. Fonctions à nombre d'arguments variable

pval *arg1, *arg2, *arg3;
int arg_count = ARG_COUNT(ht);
if (arg_count < 2 || arg_count > 3 ||
    getParameters(ht,arg_count,&arg1,&arg2,&arg3)==FAILURE) {
    WRONG_PARAM_COUNT;
}

Utiliser les arguments d'une fonction

Le type de chaque argument est stocké dans le champ pval. Ce champ peut prendre les valeurs suivantes :

Tableau E-1. Types de données internes PHP

IS_STRING | Chaîne de caractères
IS_DOUBLE | Nombre à virgule flottante, en précision double
IS_LONG | Entier long
IS_ARRAY | Tableau
IS_EMPTY | Aucune
IS_USER_FUNCTION | ??
IS_INTERNAL_FUNCTION | ?? (Si ce type ne peut pas être passé à une fonction, effacez-le)
IS_CLASS | ??
IS_OBJECT | ??

Si vous recevez un argument d'un type, et que vous voulez l'utiliser avec un autre type, ou si vous voulez simplement forcer le type, vous pouvez utiliser l'une des fonctions de conversion suivantes :
convert_to_long(arg1);
convert_to_double(arg1);
convert_to_string(arg1);
convert_to_boolean_long(arg1);
/* Si la cha&icirc;ne est "" ou "0" elle devient 0, 1 sinon */
convert_string_to_number(arg1);
/* Convertit une cha&icirc;ne en LONG ou DOUBLE suivant la cha&icirc;ne */

Ces fonctions convertissent sur place : elles ne retournent aucune valeur.

La valeur de l'argument est enregistrée dans une union. Les membres sont :

  • IS_STRING: arg1->value.str.val

  • IS_LONG: arg1->value.lval

  • IS_DOUBLE: arg1->value.dval

Gestion de la mémoire dans une fonction

Toute la mémoire nécessaire à une fonction doit être allouée avec emalloc() ou estrdup(). Ces fonctions ont le goût et l'odeur des fonctions C classiques malloc() et strdup(). La mémoire doit être libérée avec efree().

Il y a deux types de mémoire dans ce programme : la mémoire qui est retournée à l'analyseur, et la mémoire qui nécessaire pour le stockage temporaire dans la fonction. Lorsque vous assignez une chaîne dans une variable qui est retournée à l'analyseur, assurez-vous de bien allouer la mémoire avec emalloc() ou estrdup(). Cette mémoire ne doit JAMAIS être libérée, sauf si vous réécrivez votre original plus loin, dans la même fonction (mais ce n'est pas de la programmation propre).

Pour tous vos besoins en mémoire temporaire/permanante dont vous avez besoin dans vos fonctions/librairies, vous devez utiliser les fonctions emalloc(), estrdup() et efree(). Elles se comportent EXACTEMENT comme leurs homologues. Tout ce qui est créé avec emalloc() ou estrdup() doit être libéré avec efree() à un moment ou un autre, à moins que ce ne soit utile ailleurs dans le programme; sinon, il va y avoir une fuite de mémoire. La signification de "Elles se comportent EXACTEMENT comme leurs homologues" est que si vous libérez une variable qui n'a pas été créée avec emalloc() ou estrdup(), vous courez droit à au crash ("segmentation fault"). Soyez alors extrêmement prudent, et libérez toute votre mémoire inutilisée.

Si vous compilez avec "-DDEBUG", PHP 3 affichera la liste de tous les appels à emalloc() et estrdup() mais jamais à efree() lorsque celui-ci intervient dans un script spécifié.

Affecter une variable dans la table des symboles

Un grand nombre de macros sont disponibles pour rendre plus facile l'insertion de variables dans la table des symboles :

  • SET_VAR_STRING(name,value)

  • SET_VAR_DOUBLE(name,value)

  • SET_VAR_LONG(name,value)

Soyez prudent avec la constante SET_VAR_STRING. La valeur doit être placée dans une portion de mémoire créée avec malloc(), sinon le gestionnaire de mémoire essayera de libérer le pointeur plus tard. Ne passez aucune mémoire allouée statiquement à SET_VAR_STRING.

Les tables des symboles de PHP est une table de hash. A n'importe quel moment, &symbol_table est un pointeur sur la table principale, et active_symbol_table pointe sur la table actuellement utilisée. (ces deux tables peuvent être identiques au démarrage, ou différent, suivant que vous êtes dans une fonction ou non).

Les exemples suivants utilisent 'active_symbol_table'. Vous devriez la remplacer par &symbol_table si vous voulez travailler sur la table principale. De plus, les mêmes fonctions peuvent être appliquées à des tableaux, comme expliqué ci-dessous.

Exemple E-3. Vérification de l'existence de $foo dans la table des symboles

if (hash_exists(active_symbol_table,"foo",sizeof("foo"))) {
 // existe...
} else {
 // n'existe pas
}

Exemple E-4. Rechercher la taille d'une variable dans la table des symboles

hash_find(active_symbol_table,"foo",sizeof("foo"),&pvalue);
check(pvalue.type);
En PHP 3.0, les tableaux sont implémentés en utilisant les mêmes tables de hash que les variables. Cela signifie que les deux fonctions ci-dessus peuvent être appelées pour vérifier la présence de variables dans un tableau.

Si vous voulez définir un nouveau tableau dans la table des symboles, utilisez le code suivant.

D'abord, vous devez vérifier qu'il n'existe pas, avec hash_exists() ou hash_find().

Puis, initialisez le tableau :

Exemple E-5. Initialisation d'un tableau

pval arr;
if (array_init(&arr) == FAILURE) { /*Initialiation &eacute;chou&eacute;e*/ };
hash_update(active_symbol_table,"foo",sizeof("foo"),&arr,sizeof(pval),NULL);
Ce code déclare un nouveau tableau, appelé $foo, dans la table de symbole. Ce tableau est vide.

Voici comment ajouter deux nouvelles entrées dans ce tableau :

Exemple E-6. Ajout d'entrées dans un tableau.

pval entry;
entry.type = IS_LONG;
entry.value.lval = 5;
/* d&eacute;finit $foo["bar"] = 5 */
hash_update(arr.value.ht,"bar",sizeof("bar"),&entry,sizeof(pval),NULL);
/* d&eacute;finit $foo[7] = 5 */
hash_index_update(arr.value.ht,7,&entry,sizeof(pval),NULL);
/* d&eacute;finit la prochaine place libre dans $foo[],
 * $foo[8], qui sera 5 (comme en php2)
 */
hash_next_index_insert(arr.value.ht,&entry,sizeof(pval),NULL);
Si vous voulez modifier une valeur que vous avez inséré dans une table de hash, vous devez d'abord la lire dans la table. Pour éviter cette recherche, vous pouvez fournir une pval ** à la fonction d'ajout dans la table de hash, et elle modifiera la valeur à l'adresse pval *, avec la valeur donnée. Si cette valeur est NULL, (comme dans tous les exemples ci dessus), ce paramètre sera ignoré.

hash_next_index_insert() utiliser plus ou moins la même logique que "$foo[] = bar;" in PHP 2.0.

Si vous construisez un tableau, pour le retourner, vous pouvez l'initialiser comme ceci :

if (array_init(return_value) == FAILURE) { &eacute;chec...; }

puis ajouter les valeurs grâces aux macros:

add_next_index_long(return_value,long_value);
add_next_index_double(return_value,double_value);
add_next_index_string(return_value,estrdup(string_value));

Bien sûr, si l'ajout n'est pas fait juste après l'initialisation, vous devrez d'abord rechercher le tableau :
pval *arr;
if (hash_find(active_symbol_table,"foo",sizeof("foo"),(void **)&arr)==FAILURE)
{ introuvable... }
else
{ utilisez arr->value.ht... }

Notez que hash_find reçoit un pointeur sur un pointeur sur pval, et pas un pointeur sur pval.

Toutes les fonctions d'accès aux hash retourne TRUE (SUCCES) ou FALSE (FAILURE), excepté hash_exists(), qui retourne un booléen.

Retourne une valeur simple

Un grand nombre de macros sont disponible pour simplifier le retour des valeurs.

La macro RETURN_* fixe la valeur de retour, et termine la fonction :

  • RETURN

  • RETURN_FALSE

  • RETURN_TRUE

  • RETURN_LONG(l)

  • RETURN_STRING(s,dup) Si dup est TRUE, duplique la chaîne.

  • RETURN_STRINGL(s,l,dup) retourne la chaîne (s) en spécifiant la longueur (l).

  • RETURN_DOUBLE(d)

La macro RETVAL_* macros fixe la valeur de retour, mais ne termine pas la fonction.

  • RETVAL_FALSE

  • RETVAL_TRUE

  • RETVAL_LONG(l)

  • RETVAL_STRING(s,dup) Si dup est TRUE, duplique la chaîne

  • RETVAL_STRINGL(s,l,dup) retourne la chaîne (s) en spécifiant la longueur (l).

  • RETVAL_DOUBLE(d)

Les macros ci-dessus vont utiliser estrdup() sur les arguments passés. Cela vous permet de libérer tranquillement les arguments après avoir appelé cette fonction, ou bien, utiliser de la mémoire allouée statiquement.

Si votre fonction retourne un booléen de succès/erreur, utilisez toujours RETURN_TRUE et RETURN_FALSE respectivement.

Retourner des valeurs complexes

Votre fonction peut aussi retourner des valeurs complexes, tels que des objets ou tableaux.

Retourner un objet:

  1. Appeler object_init(return_value).

  2. Remplissez les valeurs. Les fonctions utilisables sont listées ci dessous.

  3. Eventuellement, enregistrez les fonctions pour cet objet. Afin de lire des valeurs de cet objet, la fonction doit lire dans "this", dans la table de symbole active active_symbol_table. Son type doit être IS_OBJECT, et c'est une table de hash basique. (i.e., vous pouvez utiliser les fonctions habituelles de .value.ht). L'enregistrement reél peut être fait comme suit :
    add_method( return_value, function_name, function_ptr );

Les fonctions d'accès aux objets sont :

  • add_property_long( return_value, property_name, l ) - Ajoute un membre nommé 'property_name', de type long, égal à 'l'

  • add_property_double( return_value, property_name, d ) - Idem, ajoute un double

  • add_property_string( return_value, property_name, str ) - Idem, ajoute une chaîne

  • add_property_stringl( return_value, property_name, str, l ) - Idem, ajoute une chaîne de longueur 'l'.

Retournez un tableau :

  1. Appelez array_init(return_value).

  2. Remplissez les valeurs. Les fonctions disponibles sont listées ci-dessous.

Les fonctions utilisées pour accéder à un tableau sont :

  • add_assoc_long(return_value,key,l) - Ajoute une entrée associative avec la clé 'key' et la valeur 'l', de type long

  • add_assoc_double(return_value,key,d) - Ajoute une entrée associative avec la clé 'key' et la valeur 'l', de type double

  • add_assoc_string(return_value,key,str,duplicate)

  • add_assoc_stringl(return_value,key,str,length,duplicate) spécifie la taille d'une chaîne

  • add_index_long(return_value,index,l) - Ajoute une entrée d'index index' avec la valeur 'l', de type long

  • add_index_double(return_value,index,d)

  • add_index_string(return_value,index,str)

  • add_index_stringl(return_value,index,str,length) - spécifie la longueur de la chaîne.

  • add_next_index_long(return_value,l) - ajoute une entrée tableau, dans le prochain offset libre, de longueur 'l', de type long

  • add_next_index_double(return_value,d)

  • add_next_index_string(return_value,str)

  • add_next_index_stringl(return_value,str,length) - spécifie la taille d'une chaîne

Utiliser la liste des ressources

PHP 3.0 dispose de standards pour traiter un certains nombre de ressources. Ils remplacent tous les listes de PHP 2.0.

Fonctions accessibles :

  • php3_list_insert(ptr, type) - retourne l'identifiant 'id' de la nouvelle ressource insérée.

  • php3_list_delete(id) - efface la ressource d'identifiant id

  • php3_list_find(id,*type) - retourne le pointeur de la ressource d'identifiant id, et modifie le type 'type'

Typiquement, ces fonctions sont utilisées pour les pilotes SQL, mais elles peuvent servir n'importe quoi d'autre. Par exemple, conserver un pointeur de fichier.

La liste standard de code ressemble à ceci :

Exemple E-7. Ajouter une nouvelle ressource

RESOURCE *resource;
/* ...alloue de la m&eacute;moire pour la ressource, et l'acquiert ... */
/* Ajoute la nouvelle ressource dans la liste */
return_value->value.lval = php3_list_insert((void *) resource, LE_RESOURCE_TYPE);
return_value->type = IS_LONG;

Exemple E-8. Utiliser une ressource existante

pval *resource_id;
RESOURCE *resource;
int type;
convert_to_long(resource_id);
resource = php3_list_find(resource_id->value.lval, &type);
if (type != LE_RESOURCE_TYPE) {
    php3_error(E_WARNING,"resource index %d has the wrong type",resource_id->value.lval);
    RETURN_FALSE;
}
/* ...utiliser la ressource... */

Exemple E-9. Effacer une ressource existante

pval *resource_id;
RESOURCE *resource;
int type;
convert_to_long(resource_id);
php3_list_delete(resource_id->value.lval);
Les types de ressources doivent être enregistré dans le fichier php3_list.h, dans l'énumération list_entry_type. En plus, il faut penser à ajouter une fonction de terminaison, pour chaque type de ressource défini, dans le fichier list.c, pour la fonction list_entry_destructor() (même si vous n'avez rien de particulier à faire lors de la terminaison, vous devez au moins ajouter un cas vide.

Utiliser la table des ressources persistantes.

PHP 3.0 dispose d'une lieu de stockage des ressources persistantes (i.e., les ressources qui doivent être conservées d'un hit à l'autre). Le premier module a utiliser cette capacité a été MySQL, et mSQL suivi, ce qui fait que l'on peut se faire une impression du fonctionnement de cette fonction avec mysql.c. Les fonctions ressemblent à ceci :

php3_mysql_do_connect
php3_mysql_connect()
php3_mysql_pconnect()

L'idée conductrice de ces modules est la suivante :

  1. Programmez tout votre module pour qu'il travaille avec les ressources standard, comme mentionné dans la section (9).

  2. Ajoutez une autre fonction de connexion, qui vérifie d'abord que la ressource existe dans la liste des ressources persistantes. Si c'est le cas, enregistrez cette ressource comme pour les ressources standard (et grâce à la première étape, cela va fonctionner immédiatement). Si la ressource n'existe pas, créez la, ajoutez la à la liste de ressources persistantes, et ajoutez la à la liste de ressources, ce qui fait que le code va fonctionner, et que le prochain appel renverra une ressource existante. Vous devez enregistrer ces fonctions avec un type différent (LE_MYSQL_LINK pour les liens non persistants, et LE_MYSQL_PLINK pour les liens persistants).

Si vous jetez un oeil dans mysql.c, vous verrez que, hormis la fonction de connexion complexe, rien n'a du être changé dans le module.

La même interface existe pour la liste des ressources standard, et pour la liste des ressources persistantes, seule la 'list' est remplacée par 'plist':

  • php3_plist_insert(ptr, type) - retourne l'identifiant 'id' de la nouvelle ressource insérée.

  • php3_plist_delete(id) - efface la ressource d'identifiant id

  • php3_plist_find(id,*type) - retourne le pointeur de la ressource d'identifiant id, et modifie le type 'type'

Cependant, il est probable que ces fonctions seront inutiles pour vous, lorsque vous essayerez d'implémentez un module persistant. Typiquement, on utiliser le fait que la liste de ressources persistantes est une table de hash. Par exemple, dans les modules MySQL/mSQL, lors d'un appel à pconnect(), la fonction construit une chaîne avec l'hôte/utilisateur/mot_de_passe, et l'utilise pour enregistrer dans la table de hash. Au prochain appel, avec les mêmes hôte/utilisateur/mot_de_passe, la même clé sera générée, et la ressource associée sera retrouvée.

Jusqu'à ce que la documentation s'étoffe, jetez un oeil aux fichiers mysql.c ou msql.c pour voir comment implémentez vos accès aux ressources persistantes.

Une chose importante à noter : les ressources qui sont enregistrées dans la liste de ressource persistante ne DOIVENT PAS être allouée avec le gestionnaire de mémoire PHP, c'est-à-dire qu'elles ne doivent pas être créée avec emalloc(), estrdup(), etc. Au contraire, il faut utiliser les fonctions standard malloc(), strdup(), etc. La raison est for simple : à la fin de la requête, la mémoire sera supprimée par le gestionnaire. Etant donné que les liens persistants doivent être conservés, il ne faut pas utiliser le gestionnaire de mémoire.

Lorsque vous enregistrez une ressource qui sera placé dans la liste de ressources persistantes, il faut ajouter les destructeurs dans les deux listes de ressources, persistantes ou pas. Le destructeur de la liste de ressources non persistantes ne doit rien faire du tout, tandis que celui de la liste de ressources persistantes doit libérer proprement toutes les ressources acquises (mémoire, lien SQL...). Commep pour les ressources non persistantes vous DEVEZ ajouter un destructeur, même s'il ne fait rien. N'oubliez pas que emalloc() et compagnie ne doivent pas être utilisé en conjonction avec la liste de ressources persistantes, et donc, vous ne devez pas utiliser efree() non plus.

Ajouter des directives de configuration à l'exécution

De nombreuses caractéristiques de PHP 3 peuvent être configurée à l'exécution. Ces directives peuvent apparaître dans le fichier php3.ini, ou, dans le cas du module Apache, dans le fichier .conf. L'avantage de l'avoir dans le fichier .conf, est que ces caractéristiques peuvent être configurées dossier par dossier. Cela signifie qu'un dossier peut avoir un safe mode exec dir, tandis qu'un autre en aura un autre. Cette granularité de la configuration peut être extrêmement pratique lorsque le serveur supporte plusieurs serveurs virtuels.

Les étapes de configuration d'une nouvelle directive sont :

  1. Ajouter la directive à la structure php3_ini_structure dans le fichier mod_php3.h.

  2. Dans main.c, éditez la fonction php3_module_startup et ajoutez l'appel aproprié à cfg_get_string() ou cfg_get_long().

  3. Ajoutez la directive, ses restrictions et un commentaire dans la structure php3_commands du fichier mod_php3.c. Notez la partie restrictions RSRC_CONF sont des directives qui ne peuvent être disponibles que dans le fichier de configuration Apache. Toutes les directives OR_OPTIONS peuvent être placées n'importe où, y compris dans un fichier .htaccess.

  4. Soit dans php3take1handler(), soit dans php3flaghandler(), ajoutez l'entrée appropriée pour votre directive.

  5. Dans la section de configuration, de _php3_info(), dans le fichier functions/info.c, vous devez ajouter votre configuration.

  6. Finalement, vous devez utiliser votre configuration quelque part. Elle sera accessible par php3_ini.directive.

Précédent | Sommaire | Suivant
Protocole du débuggeur | Niveau supérieur | Appeler des fonctions utilisateurs


Appeler des fonctions utilisateurs

Pour appeler des fonctions utilisateurs depuis une fonction interne, vous devez utiliser la fonction call_user_function().

call_user_function() retourne SUCCESS en cas de succès, et FAILURE en cas d'échec, ou si la fonction n'a pas été trouvée. Vous devez vérifier cette valeur. Si la réponse est SUCCESS, vous êtes responsable de la destruction de retval (ou alors, retournez la comme valeur de réponse de votre fonction). Si la réponse est FAILURE, la valeur de retval est indéfinie, et vous ne devez pas y toucher.

Toutes les fonctions internes qui appellent une fonction utilisateur, DOIVENT être réentrante. En particulier, elles ne doivent pas utiliser de valeurs globales, ou de variables statiques.

call_user_function() prend 6 arguments :

HashTable *function_table

La table de hash dans laquelle le fonction doit être recherchée.

pval *object

Un pointeur sur un objet sur lequel la fonction est invoquée. Il devrait être à NULL, si on invoque une fonction globale. Si il n'est pas à NULL (ie, il pointe sur un objet), l'argument function_table est ignorée, et la liste des fonctions sera lue dans l'objet, plutôt que dans l'argument. L'objet PEUT être modifié par la fonction qui est appelée (la fonction y aura accès via $this). Si, vous quelque raison, vous ne le voulez pas, envoyez une copie de l'objet à la place.

pval *function_name

Le nom de la fonction à appeler. Elle doit être de type pval, IS_STRING, avec les valeurs de function_name.str.val et function_name.str.len correctes. function_name est modifié par call_user_function() - il est converti en minuscule. Si vous voulez préserver la casse, envoyez une copie du nom de la fonction.

pval *retval

Un pointeur sur une structure pval, dans laquelle la valeur de retour de la fonction sera placée. La structure doit avoir été allouée au préalable, - call_user_function() ne l'allouera pas.

int param_count

Le nombre de paramètre passé à la fonction.

pval *params[]

Un tableau de pointeur sur les valeurs qui vont être passées comme arguments à la fonction. Le premier argument est à l'offset 0, le second à l'offset 1,... Le tableau est un tableau de pointeurs sur pval; Les pointeurs sont envoyés tels quels à la fonction, ce qui signifie que si la fonction modifie les arguments, les valeurs originales seront modifiées. Si vous voulez l'éviter, passez une copie à la place.

Précédent | Sommaire | Suivant
Développement PHP | Niveau supérieur | Rapport d'erreurs


Rapport d'erreurs

Pour signaler les erreurs d'une fonction interne, vous devez appelez la fonction php3_error(). Cette fonction prend deux arguments au moins : le niveau de l'erreur, et le message d'erreur, sous forme de chaîne de caractères. Tous les arguments suivants sont des paramètres de formats de chaîne. Les niveaux d'erreurs sont :

E_NOTICE

Les notes ne sont pas affichées par défaut, et indique que le script a rencontré quelque chose qui peut être une erreur, mais peut aussi être un événement normal dans la vie du script. Par exemple, essayer d'accéder à une valeur qui n'a pas été déclarée, ou appeler stat() sur un fichier qui n'existe pas.

E_WARNING

Les alertes sont affichées par défaut, mais n'interrompent pas l'exécution du script. Elles indiquent un problème qui doit être intercepté par le script avant que l'appel. Par exemple, appeler ereg() avec une regex invalide.

E_ERROR

Les erreurs sont aussi affichées par défaut, et l'exécution du script est interrompue. Elles indiquent des erreurs qui ne peuvent pas être ignorées, comme des problèmes d'allocation de mémoire, par exemple.

E_PARSE

Les erreurs d'analyse de doivent être générées que par l'analyseur. Elles ne sont citées ici que dans le but d'être exhaustif.

E_CORE_ERROR

Elles sont similaires aux erreurs E_ERROR, mais elles sont générées par le code de PHP. Les fonctions ne doivent pas générer ce genre d'erreur.

E_CORE_WARNING

Elles sont similaires à E_WARNING, mais elles sont générées par le code de PHP. Les fonctions ne doivent pas générer ce genre d'erreur.

E_COMPILE_ERROR

Elles sont similaires à E_ERROR, mais elles sont générées par Zend Scripting Engine. Les fonctions ne doivent pas générer ce genre d'erreur.

E_COMPILE_WARNING

Elles sont similaires à E_WARNING, mais elles sont générées par Zend Scripting Engine. Les fonctions ne doivent pas générer ce genre d'erreur.

E_USER_ERROR

E_USER_ERROR est comparable à E_ERROR. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur.

E_USER_WARNING

E_USER_WARNING est comparable à E_WARNING. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur.

E_USER_NOTICE

E_USER_WARNING est comparable à E_NOTICE. Elle est générée en PHP par l'utilisation de la fonction trigger_error(). Les fonctions ne doivent pas générer ce genre d'erreur.

E_ALL

Toutes les erreurs ci-dessus. Utiliser ce niveau de rapport d'erreur provoque l'affichage de toutes les erreurs.

Précédent | Sommaire | Suivant
Appeler des fonctions utilisateurs | Niveau supérieur | Liste d'alias


Liste d'alias

Manuel PHP
Précédent Suivant

Annexe F. Liste d'alias

Voici la liste des aliases. Tous les alias sont listés ci-dessous. C'est une très mauvaise habitude d'utiliser ces alias, car ils risquent à tous moment de disparaître, rendus obsolète sans préavis, ou bien par un simple changement de nom, ce qui rend votre script inutilisable avec des versions plus récentes de PHP. Préférez toujours les versions officielles. En fait, cette liste est surtout destinées à ceux qui doivent mettre à jour leur scripts avec les syntaxes plus récentes.

Cette liste est en phase avec PHP 4.0.6. Pour une liste d'alias qui soit mise à jour quotidiennement, voyez le site de Zend.

Tableau F-1. Aliases

Alias | Fonction principale | Extension mère
_ | gettext() | Gettext
add | swfmovie_add() | Ming (flash)
add | swfsprite_add() | Ming (flash)
add_root | domxml_add_root() | DOM XML
addaction | swfbutton_addaction() | Ming (flash)
addcolor | swfdisplayitem_addcolor() | Ming (flash)
addentry | swfgradient_addentry() | Ming (flash)
addfill | swfshape_addfill() | Ming (flash)
addshape | swfbutton_addshape() | Ming (flash)
addstring | swftext_addstring() | Ming (flash)
addstring | swftextfield_addstring() | Ming (flash)
align | swftextfield_align() | Ming (flash)
attributes | domxml_attributes() | DOM XML
children | domxml_children() | DOM XML
chop | rtrim() | Base syntax
close | closedir() | Base syntax
com_get | com_propget() | COM
com_propset | com_propput() | COM
com_set | com_propput() | COM
cv_add | ccvs_add() | CCVS
cv_auth | ccvs_auth() | CCVS
cv_command | ccvs_command() | CCVS
cv_count | ccvs_count() | CCVS
cv_delete | ccvs_delete() | CCVS
cv_done | ccvs_done() | CCVS
cv_init | ccvs_init() | CCVS
cv_lookup | ccvs_lookup() | CCVS
cv_new | ccvs_new() | CCVS
cv_report | ccvs_report() | CCVS
cv_return | ccvs_return() | CCVS
cv_reverse | ccvs_reverse() | CCVS
cv_sale | ccvs_sale() | CCVS
cv_status | ccvs_status() | CCVS
cv_textvalue | ccvs_textvalue() | CCVS
cv_void | ccvs_void() | CCVS
die | exit() | Miscellaneous functions
dir | getdir() | Base syntax
diskfreespace | disk_free_space() | Filesystem
domxml_getattr | domxml_get_attribute() | DOM XML
domxml_setattr | domxml_set_attribute() | DOM XML
doubleval | floatval() | Base syntax
drawarc | swfshape_drawarc() | Ming (flash)
drawcircle | swfshape_drawcircle() | Ming (flash)
drawcubic | swfshape_drawcubic() | Ming (flash)
drawcubicto | swfshape_drawcubicto() | Ming (flash)
drawcurve | swfshape_drawcurve() | Ming (flash)
drawcurveto | swfshape_drawcurveto() | Ming (flash)
drawglyph | swfshape_drawglyph() | Ming (flash)
drawline | swfshape_drawline() | Ming (flash)
drawlineto | swfshape_drawlineto() | Ming (flash)
dtd | domxml_intdtd() | DOM XML
dumpmem | domxml_dumpmem() | DOM XML
fbsql | fbsql_db_query() | FrontBase
fputs | fwrite() | Base syntax
get_attribute | domxml_get_attribute() | DOM XML
getascent | swffont_getascent() | Ming (flash)
getascent | swftext_getascent() | Ming (flash)
getattr | domxml_get_attribute() | DOM XML
getdescent | swffont_getdescent() | Ming (flash)
getdescent | swftext_getdescent() | Ming (flash)
getheight | swfbitmap_getheight() | Ming (flash)
getleading | swffont_getleading() | Ming (flash)
getleading | swftext_getleading() | Ming (flash)
getshape1 | swfmorph_getshape1() | Ming (flash)
getshape2 | swfmorph_getshape2() | Ming (flash)
getwidth | swfbitmap_getwidth() | Ming (flash)
getwidth | swffont_getwidth() | Ming (flash)
getwidth | swftext_getwidth() | Ming (flash)
gzputs | gzwrite() | Zlib
i18n_convert | mb_convert_encoding() | Multi-bytes Strings
i18n_discover_encoding | mb_detect_encoding() | Multi-bytes Strings
i18n_http_input | mb_http_input() | Multi-bytes Strings
i18n_http_output | mb_http_output() | Multi-bytes Strings
i18n_internal_encoding | mb_internal_encoding() | Multi-bytes Strings
i18n_ja_jp_hantozen | mb_convert_kana() | Multi-bytes Strings
i18n_mime_header_decode | mb_decode_mimeheader() | Multi-bytes Strings
i18n_mime_header_encode | mb_encode_mimeheader() | Multi-bytes Strings
imap_create | imap_createmailbox() | IMAP
imap_fetchtext | imap_body() | IMAP
imap_getmailboxes | imap_list_full() | IMAP
imap_getsubscribed | imap_lsub_full() | IMAP
imap_header | imap_headerinfo() | IMAP
imap_listmailbox | imap_list() | IMAP
imap_listsubscribed | imap_lsub() | IMAP
imap_rename | imap_renamemailbox() | IMAP
imap_scan | imap_listscan() | IMAP
imap_scanmailbox | imap_listscan() | IMAP
ini_alter | ini_set() | Base syntax
is_double | is_float() | Base syntax
is_integer | is_int() | Base syntax
is_long | is_int() | Base syntax
is_real | is_float() | Base syntax
is_writeable | is_writable() | Base syntax
join | implode() | Base syntax
labelframe | swfmovie_labelframe() | Ming (flash)
labelframe | swfsprite_labelframe() | Ming (flash)
last_child | domxml_last_child() | DOM XML
lastchild | domxml_last_child() | DOM XML
ldap_close | ldap_unbind() | LDAP
magic_quotes_runtime | set_magic_quotes_runtime() | Base syntax
mbstrcut | mb_strcut() | Multi-bytes Strings
mbstrlen | mb_strlen() | Multi-bytes Strings
mbstrpos | mb_strpos() | Multi-bytes Strings
mbstrrpos | mb_strrpos() | Multi-bytes Strings
mbsubstr | mb_substr() | Multi-bytes Strings
ming_setcubicthreshold | ming_setcubicthreshold() | Ming (flash)
ming_setscale | ming_setscale() | Ming (flash)
move | swfdisplayitem_move() | Ming (flash)
movepen | swfshape_movepen() | Ming (flash)
movepento | swfshape_movepento() | Ming (flash)
moveto | swfdisplayitem_moveto() | Ming (flash)
moveto | swffill_moveto() | Ming (flash)
moveto | swftext_moveto() | Ming (flash)
msql | msql_db_query() | mSQL
msql_createdb | msql_create_db() | mSQL
msql_dbname | msql_result() | mSQL
msql_dropdb | msql_drop_db() | mSQL
msql_fieldflags | msql_field_flags() | mSQL
msql_fieldlen | msql_field_len() | mSQL
msql_fieldname | msql_field_name() | mSQL
msql_fieldtable | msql_field_table() | mSQL
msql_fieldtype | msql_field_type() | mSQL
msql_freeresult | msql_free_result() | mSQL
msql_listdbs | msql_list_dbs() | mSQL
msql_listfields | msql_list_fields() | mSQL
msql_listtables | msql_list_tables() | mSQL
msql_numfields | msql_num_fields() | mSQL
msql_numrows | msql_num_rows() | mSQL
msql_regcase | sql_regcase() | mSQL
msql_selectdb | msql_select_db() | mSQL
msql_tablename | msql_result() | mSQL
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_close | sybase_close() | Sybase
mssql_close | sybase_close() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_min_client_severity | sybase_min_client_severity() | Sybase
mssql_min_error_severity | sybase_min_error_severity() | Sybase
mssql_min_message_severity | sybase_min_message_severity() | Sybase
mssql_min_server_severity | sybase_min_server_severity() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_query | sybase_query() | Sybase
mssql_query | sybase_query() | Sybase
mssql_result | sybase_result() | Sybase
mssql_result | sybase_result() | Sybase
mssql_select_db | sybase_select_db() | Sybase
mssql_select_db | sybase_select_db() | Sybase
multcolor | swfdisplayitem_multcolor() | Ming (flash)
mysql | mysql_db_query() | MySQL
mysql_createdb | mysql_create_db() | MySQL
mysql_db_name | mysql_result() | MySQL
mysql_dbname | mysql_result() | MySQL
mysql_dropdb | mysql_drop_db() | MySQL
mysql_fieldflags | mysql_field_flags() | MySQL
mysql_fieldlen | mysql_field_len() | MySQL
mysql_fieldname | mysql_field_name() | MySQL
mysql_fieldtable | mysql_field_table() | MySQL
mysql_fieldtype | mysql_field_type() | MySQL
mysql_freeresult | mysql_free_result() | MySQL
mysql_listdbs | mysql_list_dbs() | MySQL
mysql_listfields | mysql_list_fields() | MySQL
mysql_listtables | mysql_list_tables() | MySQL
mysql_numfields | mysql_num_fields() | MySQL
mysql_numrows | mysql_num_rows() | MySQL
mysql_selectdb | mysql_select_db() | MySQL
mysql_tablename | mysql_result() | MySQL
name | domxml_attrname() | DOM XML
new_child | domxml_new_child() | DOM XML
new_xmldoc | domxml_new_xmldoc() | DOM XML
nextframe | swfmovie_nextframe() | Ming (flash)
nextframe | swfsprite_nextframe() | Ming (flash)
node | domxml_node() | DOM XML
oci8append | ocicollappend() | OCI8
oci8assign | ocicollassign() | OCI8
oci8assignelem | ocicollassignelem() | OCI8
oci8close | ocicloselob() | OCI8
oci8free | ocifreecoll() | OCI8
oci8free | ocifreedesc() | OCI8
oci8getelem | ocicollgetelem() | OCI8
oci8load | ociloadlob() | OCI8
oci8max | ocicollmax() | OCI8
oci8ocifreecursor | ocifreestatement() | OCI8
oci8save | ocisavelob() | OCI8
oci8savefile | ocisavelobfile() | OCI8
oci8size | ocicollsize() | OCI8
oci8trim | ocicolltrim() | OCI8
oci8writetemporary | ociwritetemporarylob() | OCI8
oci8writetofile | ociwritelobtofile() | OCI8
odbc_do | odbc_exec() | OCI8
odbc_field_precision | odbc_field_len() | OCI8
output | swfmovie_output() | Ming (flash)
parent | domxml_parent() | DOM XML
pdf_add_outline | pdf_add_bookmark() | PDF
pg_clientencoding | pg_client_encoding() | PostgreSQL
pg_setclientencoding | pg_set_client_encoding() | PostgreSQL
pos | current() | Base syntax
recode | recode_string() | Recode
remove | swfmovie_remove() | Ming (flash)
remove | swfsprite_remove() | Ming (flash)
rewind | rewinddir() | Base syntax
root | domxml_root() | DOM XML
rotate | swfdisplayitem_rotate() | Ming (flash)
rotateto | swfdisplayitem_rotateto() | Ming (flash)
rotateto | swffill_rotateto() | Ming (flash)
save | swfmovie_save() | Ming (flash)
savetofile | swfmovie_savetofile() | Ming (flash)
scale | swfdisplayitem_scale() | Ming (flash)
scaleto | swfdisplayitem_scaleto() | Ming (flash)
scaleto | swffill_scaleto() | Ming (flash)
set_attribute | domxml_set_attribute() | DOM XML
set_content | domxml_set_content() | DOM XML
setaction | swfbutton_setaction() | Ming (flash)
setattr | domxml_set_attribute() | DOM XML
setbackground | swfmovie_setbackground() | Ming (flash)
setbounds | swftextfield_setbounds() | Ming (flash)
setcolor | swftext_setcolor() | Ming (flash)
setcolor | swftextfield_setcolor() | Ming (flash)
setdepth | swfdisplayitem_setdepth() | Ming (flash)
setdimension | swfmovie_setdimension() | Ming (flash)
setdown | swfbutton_setdown() | Ming (flash)
setfont | swftext_setfont() | Ming (flash)
setfont | swftextfield_setfont() | Ming (flash)
setframes | swfmovie_setframes() | Ming (flash)
setframes | swfsprite_setframes() | Ming (flash)
setheight | swftext_setheight() | Ming (flash)
setheight | swftextfield_setheight() | Ming (flash)
sethit | swfbutton_sethit() | Ming (flash)
setindentation | swftextfield_setindentation() | Ming (flash)
setleftfill | swfshape_setleftfill() | Ming (flash)
setleftmargin | swftextfield_setleftmargin() | Ming (flash)
setline | swfshape_setline() | Ming (flash)
setlinespacing | swftextfield_setlinespacing() | Ming (flash)
setmargins | swftextfield_setmargins() | Ming (flash)
setmatrix | swfdisplayitem_setmatrix() | Ming (flash)
setname | swfdisplayitem_setname() | Ming (flash)
setname | swftextfield_setname() | Ming (flash)
setover | swfbutton_setover() | Ming (flash)
setrate | swfmovie_setrate() | Ming (flash)
setratio | swfdisplayitem_setratio() | Ming (flash)
setrightfill | swfshape_setrightfill() | Ming (flash)
setrightmargin | swftextfield_setrightmargin() | Ming (flash)
setspacing | swftext_setspacing() | Ming (flash)
setup | swfbutton_setup() | Ming (flash)
show_source | highlight_file() | Base syntax
sizeof | count() | Base syntax
skewx | swfdisplayitem_skewx() | Ming (flash)
skewxto | swfdisplayitem_skewxto() | Ming (flash)
skewxto | swffill_skewxto() | Ming (flash)
skewy | swfdisplayitem_skewy() | Ming (flash)
skewyto | swfdisplayitem_skewyto() | Ming (flash)
skewyto | swffill_skewyto() | Ming (flash)
snmpwalkoid | snmprealwalk() | SNMP
strchr | strstr() | Base syntax
streammp3 | swfmovie_streammp3() | Ming (flash)
swfaction | swfaction_init() | Ming (flash)
swfbitmap | swfbitmap_init() | Ming (flash)
swfbutton | swfbutton_init() | Ming (flash)
swffill | swffill_init() | Ming (flash)
swffont | swffont_init() | Ming (flash)
swfgradient | swfgradient_init() | Ming (flash)
swfmorph | swfmorph_init() | Ming (flash)
swfmovie | swfmovie_init() | Ming (flash)
swfshape | swfshape_init() | Ming (flash)
swfsprite | swfsprite_init() | Ming (flash)
swftext | swftext_init() | Ming (flash)
swftextfield | swftextfield_init() | Ming (flash)
unlink | domxml_unlink_node() | DOM XML
xptr_new_context | xpath_new_context() | DOM XML

Précédent | Sommaire | Suivant
Rapport d'erreurs | Niveau supérieur | Mots réservés en PHP


Mots réservés en PHP

Manuel PHP
Précédent Suivant

Annexe G. Mots réservés en PHP

Table des matières
Liste de mots-clé
Variables prédéfinies
Classes prédéfinies
Constantes prédéfinies

Cette annexes est une liste d'identifiant prédéfinis en PHP. Aucun des identifiants utilisés ici ne doit être repris comme nom de variable ou de fonction dans vos scripts. Ces identifiants incluent des mots clés, des constantes, des classes, et es variables prédéfinies. Ces listes ne sont pas complètes ou exhaustives.

Liste de mots-clé

Ces mots ont un sens spécial en PHP. Certains représentent des objets qui ressemblent à des fonctions, d'autres à des contantes, et ainsi de suite, mais ils n'en sont pas vraiment : ce sont des structures de langage. Vous ne pourrez pas les utiliser comme constantes, nom de classe ou fonctions. Vous pouvez les utiliser comme noms de variables, mais cela risque de vous mener des confusions.

Tableau G-1. PHP Keywords

and | or | xor | __FILE__ | exception | php_user_filter
__LINE__ | array() | as | break | case
cfunction | class | const | continue | declare
default | die() | do | echo() | else
elseif | empty() | enddeclare | endfor | endforeach
endif | endswitch | endwhile | eval | exit()
extends | for | foreach | function | global
if | include() | include_once() | isset() | list()
new | old_function | print() | require() | require_once()
return() | static | switch | unset() | use
var | while | __FUNCTION__ | __CLASS__ | __METHOD__

Précédent | Sommaire | Suivant
Liste d'alias | Niveau supérieur | Variables prédéfinies


Variables prédéfinies

Depuis PHP 4.1.0, la méthode recommandée pour accéder à des variables externes est d'utiliser les super-globales mentionnées ci-dessous. Avant cela, il fallait utiliser soit l'option de configuration register_globals, soit les tableaux prédéfinis $HTTP_*_VARS. Depuis PHP 5.0.0, les tableaux prédéfinis PHP peuvent être désactivés avec l'option de configuration register_long_arrays.

Variables de serveur : $_SERVER

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_SERVER_VARS.

$_SERVER est un tableau contenant des informations comme les entêtes, dossiers et chemins du script. Les entrées de ce tableau sont créées par le serveur web. Il n'y a aucune garantie que tous les serveurs les rempliront tous; certains en oublieront quelques unes et en rajouteront de nouvelles non mentionnées ici. Cependant, un grand nombre de ces variables fait partie des spécifications CGI 1.1, et vous pouvez donc vous attendre à les retrouver.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_SERVER; pour y accéder, comme vous le faisiez avec $HTTP_SERVER_VARS.

$HTTP_SERVER_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_SERVER et $HTTP_SERVER_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

You may or may not find any of the following elements in $_SERVER. Note that few, if any, of these will be available (or indeed have any meaning) if running PHP on the command line.

'PHP_SELF'

Le nom du fichier du script en cours d'exécution, par rapport au document root. Par exemple, $_SERVER['PHP_SELF'] dans le script situé à l'adresse http://www.monsite.com/test.php/foo.bar sera /test.php/foo.bar.

Si PHP fonctionne en ligne de commande, cette variable n'est pas disponible.

'argv'

Tableau des arguments passées au script. Lorsque le script est appelé en ligne de commande, cela donne accès aux arguments, comme en langage C. Lorsque le script est appelé avec la méthode GET, ce tableau contiendra la chaîne de requête.

'argc'

Contient le nombre de paramètres de la ligne de commande passés au script (si le script fonctionne en ligne de commande).

'GATEWAY_INTERFACE'

Numéro de révision de l'interface CGI du serveur : i.e. 'CGI/1.1'.

'SERVER_NAME'

Le nom du serveur hôte qui exécute le script suivant. Si le script est exécuté sur un hôte virtuel, ce sera la valeur définie pour cet hôte virtuel.

'SERVER_SOFTWARE'

Chaîne d'identification du serveur, qui est donnée dans les en-têtes lors de la réponse aux requêtes.

'SERVER_PROTOCOL'

Nom et révision du protocole de communication : i.e. 'HTTP/1.0';

'REQUEST_METHOD'

Méthode de requête utilisée pour accéder à la page; i.e. 'GET', 'HEAD', 'POST', 'PUT'.

'QUERY_STRING'

La chaîne de requête, si elle existe, qui est utilisée pour accéder à la page.

'DOCUMENT_ROOT'

La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur.

'HTTP_ACCEPT'

Contenu de l'en-tête Accept: de la requête courante, s'il y en a une.

'HTTP_ACCEPT_CHARSET'

Contenu de l'en-tête Accept-Charset: de la requête courante, s'elle existe. Par exemple : 'iso-8859-1,*,utf-8'.

'HTTP_ACCEPT_ENCODING'

Contenu de l'en-tête Accept-Encoding: de la requête courante, si elle existe. Par exemple : 'gzip'.

'HTTP_ACCEPT_LANGUAGE'

Contenu de l'en-tête Accept-Language: de la requête courante, si elle existe. Par exemple : 'fr'.

'HTTP_CONNECTION'

Contenu de l'en-tête Connection: de la requête courante, si elle existe. Par exemple : 'Keep-Alive'.

'HTTP_HOST'

Contenu de l'en-tête Host: de la requête courante, si elle existe.

'HTTP_REFERER'

L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateur permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.

'HTTP_USER_AGENT'

Contenu de l'en-tête User_Agent: de la requête courante, si elle existe. C'est une chaîne qui décrit le client HTML utilisé pour voir la page courante. Par exemple : Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre autres choses, vous pouvez utiliser cette valeur avec get_browser() pour optimiser votre page en fonction des capacités du client.

'REMOTE_ADDR'

L'adresse IP du client qui demande la page courante.

'REMOTE_HOST'

Le nom de l'hôte qui lit le script courant. La résolution DNS inverse est basée sur la valeur de REMOTE_ADDR.

Note : Votre serveur web doit être configuré pour créer cette variable. Par exemple, pour Apache, vous devez ajouter la directive HostnameLookups On dans le fichier httpd.conf, pour que cette variable existe. Voyez aussi gethostbyaddr().

'REMOTE_PORT'

Le port utilisé par la machine cliente pour communiquer avec le serveur web.

'SCRIPT_FILENAME'

Le chemin absolu jusqu'au script courant.

'SERVER_ADMIN'

La valeur donnée à la directive SERVER_ADMIN (pour Apache), dans le fichier de configuration. Si le script est exécuté par un hôte virtuel, ce sera la valeur définie par l'hôte virtuel.

'SERVER_PORT'

Le port de la machine serveur utilisé pour les communications. Par défaut, c'est '80'. En utilisant SSL, par exemple, il sera remplacé par le numéro de port HTTP sécurisé.

'SERVER_SIGNATURE'

Chaîne contenant le numéro de version du serveur et le nom d'hôte virtuel, qui sont ajoutés aux pages générées par le serveur, si cette option est activée.

'PATH_TRANSLATED'

Chemin dans le système de fichier (pas le document-root) jusqu'au script courant, une fois que le serveur a fait une traduction chemin virtuel -> réel.

'SCRIPT_NAME'

Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes.

'REQUEST_URI'

L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'.

Variables d'environnement : $_ENV

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_ENV_VARS.

Cette variable est importée dans l'espace de nom global de PHP, depuis l'environnement dans lequel l'exécutable PHP fonctionne. De nombreuses valeur sont fournies par le shell qui exécute PHP, et différents systèmes pouvant disposer de différents shell, même un début de liste serait ici impossible. Reportez vous à la documentation de votre shell pour connaître une liste de variables prédéfinies.

Les autres variables d'environnement incluent les variables CGI, placées ici, indépendemment du fait que PHP fonctionne en tant que CGI ou bien que module du serveur.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_ENV; pour y accéder, comme vous le faisiez avec $HTTP_ENV_VARS.

$HTTP_ENV_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_ENV et $HTTP_ENV_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

HTTP Cookies: $_COOKIE

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_COOKIE_VARS.

Un tableau associatif des valeurs passées au script courant via les cookies HTTP. Elle est automatiquement global dans tous les contextes d'exécution.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_COOKIE; pour y accéder, comme vous le faisiez avec $HTTP_COOKIE_VARS.

$HTTP_COOKIE_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_COOKIE et $HTTP_COOKIE_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

HTTP GET variables: $_GET

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_GET_VARS.

Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode GET. Elle est automatiquement globale dans tous les contextes d'exécution.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_GET; pour y accéder, comme vous le faisiez avec $HTTP_GET_VARS.

$HTTP_GET_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_GET et $HTTP_GET_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

HTTP POST variables: $_POST

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_POST_VARS.

Un tableau associatif des valeurs passées au script courant via le protocole HTTP et la méthode POST. Elle est automatiquement globale dans tous les contextes d'exécution.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_POST; pour y accéder, comme vous le faisiez avec $HTTP_POST_VARS.

$HTTP_POST_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_POST et $HTTP_POST_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

Variable de téléchargement de fichier via HTTP : $_FILES

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_POST_FILES.

Un tableau associatif des valeurs téléchargées au script courant via le protocole HTTP et la méthode POST. Elle est automatiquement globale dans tous les contextes d'exécution.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_FILES; pour y accéder, comme vous le faisiez avec $HTTP_POST_FILES.

$HTTP_POST_FILES contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_FILES et $HTTP_POST_FILES. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

Variables de requête : $_REQUEST

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle n'avait pas d'équivalent.

Un tableau associatif constitué du contenu des variables $_GET, $_POST, $_COOKIE, et $_FILES.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_REQUEST; pour y accéder.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_REQUEST. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

Session variables: $_SESSION

Note : Introduite en 4.1.0. Dans les versions plus anciennes, elle s'appelait $HTTP_SESSION_VARS.

Un tableau associatif des valeurs stockées dans les sessions, et accessible au script courant. Elle est automatiquement globale dans tous les contextes d'exécution. Voyez l'extension Sessions pour plus de détails sur comment est utilisée cette variable.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $_SESSION; pour y accéder, comme vous le faisiez avec $HTTP_SESSION_VARS.

$HTTP_SESSION_VARS contient les mêmes informations, mais n'est pas autoglobale.

Si la directive register_globals est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global. C'est à dire séparément des tableaux $_SESSION et $HTTP_SESSION_VARS. Pour plus d'informations sur la sécurité de cette configuration, voyez le chapitre Utiliser la directive Register Globals. Ces variables globales individuelles ne sont pas des globales.

Variables globales: $GLOBALS

Note : $GLOBALS est disponible depuis PHP 3.0.0.

Un tableau associatif contenant les références sur toutes les variables globales actuellement définies dans le contexte d'exécution global du script. Les noms des variables sont les index du tableau.

Cette variable est une 'superglobal', ou globale automatique. Cela signifie qu'elle est simplement disponible dans tous les contextes d'exécution (fonctions ou méthodes). Vous n'avez pas besoin de faire global $GLOBALS; pour y accéder.

Le dernier message d'erreur : $php_errormsg

$php_errormsg est une variable qui contient le texte de la dernière erreur générée par PHP. Cette variable sera uniquement accessible dans le même contexte d'exécution que celui de la ligne qui a généré l'erreur, et uniquement si la directive de configuration track_errors est activée (elle est désactivée par défaut).

Précédent | Sommaire | Suivant
Mots réservés en PHP | Niveau supérieur | Classes prédéfinies


Classes prédéfinies

Classes standards

Ces classes sont définies dans le jeu de classe standard de PHP, inclus dans toute version de PHP.

Directory

La classe qui permet d'instancier dir().

stdClass

__PHP_Incomplete_Class

Classes prédéfinies en PHP 5

Ces classe supplémentaires ont été ajoutées en PHP 5.0.0.

exception

php_user_filter

Classes définies par Ming

Ces classes sont définies dans l'extension Ming et ne seront pas disponibles si PHP a été compilé pour être exécuté dynamiquement, ou bien si elles n'ont pas été compilées dans PHP.

swfshape

swffill

swfgradient

swfbitmap

swftext

swftextfield

swffont

swfdisplayitem

swfmovie

swfbutton

swfaction

swfmorph

swfsprite

Classes définies par Oracle 8

Ces classes sont définies dans l'extension Oracle 8 et ne seront pas disponibles si PHP a été compilé pour être exécuté dynamiquement, ou bien si elles n'ont pas été compilées dans PHP.

OCI-Lob

OCI-Collection

Classes définies par qtdom

Ces classes sont définies dans l'extension qtdom et ne seront pas disponibles si PHP a été compilé pour être exécuté dynamiquement, ou bien si elles n'ont pas été compilées dans PHP.

QDomDocument

QDomNode

Précédent | Sommaire | Suivant
Variables prédéfinies | Niveau supérieur | Constantes prédéfinies


Constantes prédéfinies

Table des matières
constantes prédéfinies de zend -- Constants définies dans le coeur de PHP, Zend et les modules SAPI
constantes standards prédéfinies -- Constantes standards dans PHP

Précédent | Sommaire | Suivant
Classes prédéfinies | Niveau supérieur | constantes prédéfinies de zend


Types des ressources PHP

Manuel PHP
Précédent Suivant

Annexe H. Types des ressources PHP

Voici la liste des fonctions qui créent, utilisent ou détruisent les ressources PHP. Vous pouvez déterminer si une variable contient une ressource avec la fonction is_resource(), et le type d'une ressource que vous utilisez avec la fonction get_resource_type().

Tableau H-1. Types de ressource

Ressource | Construite par | Utilisé par | Détruite par | Définition
aspell | aspell_new() | aspell_check(), aspell_check_raw(), aspell_suggest() | None | Dictionnaire Aspell
bzip2 | bzopen() | bzerrno(), bzerror(), bzerrstr(), bzflush(), bzread(), bzwrite() | bzclose() | Fichier bzip2
COM | com_load() | com_invoke(), com_propget(), com_get(), com_propput(), com_set(), com_propput() | None | Référence sur un object COM
VARIANT
cpdf | cpdf_open() | cpdf_page_init(), cpdf_finalize_page(), cpdf_finalize(), cpdf_output_buffer(), cpdf_save_to_file(), cpdf_set_current_page(), cpdf_begin_text(), cpdf_end_text(), cpdf_show(), cpdf_show_xy(), cpdf_text(), cpdf_set_font(), cpdf_set_leading(), cpdf_set_text_rendering(), cpdf_set_horiz_scaling(), cpdf_set_text_rise(), cpdf_set_text_matrix(), cpdf_set_text_pos(), cpdf_set_text_pos(), cpdf_set_word_spacing(), cpdf_continue_text(), cpdf_stringwidth(), cpdf_save(), cpdf_translate(), cpdf_restore(), cpdf_scale(), cpdf_rotate(), cpdf_setflat(), cpdf_setlinejoin(), cpdf_setlinecap(), cpdf_setmiterlimit(), cpdf_setlinewidth(), cpdf_setdash(), cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto(), cpdf_lineto(), cpdf_rlineto(), cpdf_circle(), cpdf_arc(), cpdf_rect(), cpdf_closepath(), cpdf_stroke(), cpdf_closepath_fill_stroke(), cpdf_fill_stroke(), cpdf_clip(), cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray_stroke(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor(), cpdf_add_outline(), cpdf_set_page_animation(), cpdf_import_jpeg(), cpdf_place_inline_image(), cpdf_add_annotation() | cpdf_close() | Document PDF avec la librairie CPDF
cpdf outline
curl | curl_init() | curl_init(), curl_exec() | curl_close() | Session Curl
dbm | dbmopen() | dbmexists(), dbmfetch(), dbminsert(), dbmreplace(), dbmdelete(), dbmfirstkey(), dbmnextkey() | dbmclose() | Lien vers une base de données DBM
dba | dba_popen() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | dba_close() | Lien vers une base de données DBA
dba persistent | dba_open() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | None | Lien persistant vers une base de données DBA
dbase | dbase_open() | dbase_pack(), dbase_add_record(), dbase_replace_record(), dbase_delete_record(), dbase_get_record(), dbase_get_record_with_names(), dbase_numfields(), dbase_numrecords() | dbase_close() | Lien vers une base de données dbase
dbx_link_object | dbx_connect() | dbx_query() | dbx_close() | Connexion dbx
dbx_result_object dbx_query() () None Résultat dbx
domxml attribute
domxml document
domxml node
xpath context
xpath object
fbsql database fbsql_select_db() () None Base de données fbsql
fbsql link | fbsql_change_user(), fbsql_connect() | fbsql_autocommit(), fbsql_change_user(), fbsql_create_db(), fbsql_data_seek(), fbsql_db_query(), fbsql_drop_db(), (), fbsql_select_db(), fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() | fbsql_close() | Lien vers une base de données fbsql
fbsql plink | fbsql_change_user(), fbsql_pconnect() | fbsql_autocommit(), fbsql_change_user(), fbsql_create_db(), fbsql_data_seek(), fbsql_db_query(), fbsql_drop_db(), (), fbsql_select_db(), fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() | None | Lien persistant vers une base de données fbsql
fbsql result | fbsql_db_query(), fbsql_list_dbs(), fbsql_query(), fbsql_list_fields(), fbsql_list_tables(), fbsql_tablename() | fbsql_affected_rows(), fbsql_fetch_array(), fbsql_fetch_assoc(), fbsql_fetch_field(), fbsql_fetch_lengths(), fbsql_fetch_object(), fbsql_fetch_row(), fbsql_field_flags(), fbsql_field_name(), fbsql_field_len(), fbsql_field_seek(), fbsql_field_table(), fbsql_field_type(), fbsql_next_result(), fbsql_num_fields(), fbsql_num_rows(), fbsql_result(), fbsql_num_rows() | fbsql_free_result() | Résultat fbsql
fdf | fdf_open() | fdf_create(), fdf_save(), fdf_get_value(), fdf_set_value(), fdf_next_field_name(), fdf_set_ap(), fdf_set_status(), fdf_get_status(), fdf_set_file(), fdf_get_file(), fdf_set_flags(), fdf_set_opt(), fdf_set_submit_form_action(), fdf_set_javascript_action() | fdf_close() | Fichier FDF
ftp | ftp_connect() | ftp_login(), ftp_pwd(), ftp_cdup(), ftp_chdir(), ftp_mkdir(), ftp_rmdir(), ftp_nlist(), ftp_rawlist(), ftp_systype(), ftp_pasv(), ftp_get(), ftp_fget(), ftp_put(), ftp_fput(), ftp_size(), ftp_mdtm(), ftp_rename(), ftp_delete(), ftp_site() | ftp_quit() | Connexion FTP
gd | imagecreate(), imagecreatefromgif(), imagecreatefromjpeg(), imagecreatefrompng(), imagecreatefromwbmp(), imagecreatefromstring(), imagecreatetruecolor() | imagearc(), imagechar(), imagecharup(), imagecolorallocate(), imagecolorat(), imagecolorclosest(), imagecolorexact(), imagecolorresolve(), imagegammacorrect(), imagegammacorrect(), imagecolorset(), imagecolorsforindex(), imagecolorstotal(), imagecolortransparent(), imagecopy(), imagecopyresized(), imagedashedline(), imagefill(), imagefilledpolygon(), imagefilledrectangle(), imagefilltoborder(), imagegif(), imagepng(), imagejpeg(), imagewbmp(), imageinterlace(), imageline(), imagepolygon(), imagepstext(), imagerectangle(), imagesetpixel(), imagestring(), imagestringup(), imagesx(), imagesy(), imagettftext(), imagefilledarc(), imageellipse(), imagefilledellipse(), imagecolorclosestalpha(), imagecolorexactalpha(), imagecolorresolvealpha(), imagecopymerge(), imagecopymergegray(), imagecopyresampled(), imagetruecolortopalette(), imagesetbrush(), imagesettile(), imagesetthickness() | imagedestroy() | Image GD
gd font | imageloadfont() | imagechar(), imagecharup(), imagefontheight() | None | Police pour GD
gd PS encoding
gd PS font | imagepsloadfont() | imagepstext(), imagepsslantfont(), imagepsextendfont(), imagepsencodefont(), imagepsbbox() | imagepsfreefont() | Police PostScript pour GD
GMP integer | gmp_init() | gmp_intval(), gmp_strval(), gmp_add(), gmp_sub(), gmp_mul(), gmp_div_q(), gmp_div_r(), gmp_div_qr(), gmp_div(), gmp_mod(), gmp_divexact(), gmp_cmp(), gmp_neg(), gmp_abs(), gmp_sign(), gmp_fact(), gmp_sqrt(), gmp_sqrtrm(), gmp_perfect_square(), gmp_pow(), gmp_powm(), gmp_prob_prime(), gmp_gcd(), gmp_gcdext(), gmp_invert(), gmp_legendre(), gmp_jacobi(), gmp_random(), gmp_and(), gmp_or(), gmp_xor(), gmp_setbit(), gmp_clrbit(), gmp_scan0(), gmp_scan1(), gmp_popcount(), gmp_hamdist() | None | Nombre GMP
hyperwave document | hw_cp(), hw_docbyanchor(), hw_getremote(), hw_getremotechildren() | hw_children(), hw_childrenobj(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getsrcbydestobj(), hw_getandlock(), hw_gettext(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_inscoll(), hw_pipedocument(), hw_unlock() | hw_deleteobject() | Objet Hyperwave
hyperwave link | hw_connect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | hw_close(), hw_free_document() | Lien vers un serveur Hyperwave
hyperwave link persistent | hw_pconnect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | None | Lien persistant vers un serveur Hyperwave
icap | icap_open() | icap_fetch_event(), icap_list_events(), icap_store_event(), icap_snooze(), icap_list_alarms(), icap_delete_event() | icap_close() | Lien vers un serveur icap
imap | imap_open() | imap_append(), imap_body(), imap_check(), imap_createmailbox(), imap_delete(), imap_deletemailbox(), imap_expunge(), imap_fetchbody(), imap_fetchstructure(), imap_headerinfo(), imap_header(), imap_headers(), imap_listmailbox(), imap_getmailboxes(), imap_get_quota(), imap_status(), imap_listsubscribed(), imap_set_quota(), imap_set_quota(), imap_getsubscribed(), imap_mail_copy(), imap_mail_move(), imap_num_msg(), imap_num_recent(), imap_ping(), imap_renamemailbox(), imap_reopen(), imap_subscribe(), imap_undelete(), imap_unsubscribe(), imap_scanmailbox(), imap_mailboxmsginfo(), imap_fetchheader(), imap_uid(), imap_msgno(), imap_search(), imap_fetch_overview() | imap_close() | Lien vers un serveur mail (IMAP, POP3)
imap chain persistent
imap persistent
ingres | ingres_connect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | ingres_close() | Lien vers une base de données ingresII
ingres persistent | ingres_pconnect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | None | Lien persistant vers une base de données ingresII
interbase blob
interbase link | ibase_connect() | ibase_query(), ibase_prepare(), ibase_trans() | ibase_close() | Lien vers une base de données Interbase
interbase link persistent | ibase_pconnect() | ibase_query(), ibase_prepare(), ibase_trans() | None | Lien persistant vers une base de données Interbase
interbase query | ibase_prepare() | ibase_execute() | ibase_free_query() | Requête Interbase
interbase result | ibase_query() | ibase_fetch_row(), ibase_fetch_object(), ibase_field_info(), ibase_num_fields() | ibase_free_result() | Résultat Interbase
interbase transaction | ibase_trans() | ibase_commit() | ibase_rollback() | Transaction Interbase
java
ldap link | ldap_connect(), ldap_search() | ldap_count_entries(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_next_attribute(), ldap_next_entry() | ldap_close() | Lien vers un serveur LDAP
ldap result | ldap_read() | ldap_add(), ldap_compare(), ldap_bind(), ldap_count_entries(), ldap_delete(), ldap_errno(), ldap_error(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_get_option(), ldap_list(), ldap_modify(), ldap_mod_add(), ldap_mod_replace(), ldap_next_attribute(), ldap_next_entry(), ldap_mod_del(), ldap_set_option(), ldap_unbind() | ldap_free_result() | Résultat de recherche LDAP
ldap result entry
mcal | mcal_open(), mcal_popen() | mcal_create_calendar(), mcal_rename_calendar(), mcal_rename_calendar(), mcal_delete_calendar(), mcal_fetch_event(), mcal_list_events(), mcal_append_event(), mcal_store_event(), mcal_delete_event(), mcal_list_alarms(), mcal_event_init(), mcal_event_set_category(), mcal_event_set_title(), mcal_event_set_description(), mcal_event_set_start(), mcal_event_set_end(), mcal_event_set_alarm(), mcal_event_set_class(), mcal_next_recurrence(), mcal_event_set_recur_none(), mcal_event_set_recur_daily(), mcal_event_set_recur_weekly(), mcal_event_set_recur_monthly_mday(), mcal_event_set_recur_monthly_wday(), mcal_event_set_recur_yearly(), mcal_fetch_current_stream_event(), mcal_event_add_attribute(), mcal_expunge() | mcal_close() | Lien vers un serveur Mcal
SWFAction
SWFBitmap
SWFButton
SWFDisplayItem
SWFFill
SWFFont
SWFGradient
SWFMorph
SWFMovie
SWFShape
SWFSprite
SWFText
SWFTextField
mnogosearch agent
mnogosearch result
msql link | msql_connect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | msql_close() | Lien vers une base de données mSQL
msql link persistent | msql_pconnect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | None | Lien persistant vers une base de données mSQL
msql query | msql_query() | msql(), msql_affected_rows(), msql_data_seek(), msql_dbname(), msql_fetch_array(), msql_fetch_field(), msql_fetch_object(), msql_fetch_row(), msql_fieldname(), msql_field_seek(), msql_fieldtable(), msql_fieldtype(), msql_fieldflags(), msql_fieldlen(), msql_num_fields(), msql_num_rows(), msql_numfields(), msql_numrows(), msql_result() | msql_free_result(), msql_free_result() | Résultat mSQL
mssql link | mssql_connect() | mssql_query(), mssql_select_db() | mssql_close() | Lien vers une base de données Microsft SQL Server
mssql link persistent | mssql_pconnect() | mssql_query(), mssql_select_db() | None | Lien persistant vers une base de données Microsft SQL Server
mssql result | mssql_query() | mssql_data_seek(), mssql_fetch_array(), mssql_fetch_field(), mssql_fetch_object(), mssql_fetch_row(), mssql_field_length(), mssql_field_name(), mssql_field_seek(), mssql_field_type(), mssql_num_fields(), mssql_num_rows(), mssql_result() | mssql_free_result() | Résultat Microsft SQL Server
mysql link | mysql_connect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | mysql_close() | Lien vers une base de données MySQL
mysql link persistent | mysql_pconnect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | None | Lien persistant vers une base de données MySQL
mysql result | mysql_db_query(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query() | mysql_data_seek(), mysql_db_name(), mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_field(), mysql_fetch_lengths(), mysql_fetch_object(), mysql_fetch_row(), mysql_fetch_row(), mysql_field_flags(), mysql_field_name(), mysql_field_len(), mysql_field_seek(), mysql_field_table(), mysql_field_type(), mysql_num_fields(), mysql_num_rows(), mysql_result(), mysql_tablename() | mysql_free_result() | Résultat MySQL
oci8 collection
oci8 connection | ocilogon(), ociplogon(), ocinlogon() | ocicommit(), ociserverversion(), ocinewcursor(), ociparse(), ocierror() | ocilogoff() | Lien vers une base de données Oracle
oci8 descriptor
oci8 server
oci8 session
oci8 statement | ocinewdescriptor() | ocirollback(), ocinewdescriptor(), ocirowcount(), ocidefinebyname(), ocibindbyname(), ociexecute(), ocinumcols(), ociresult(), ocifetch(), ocifetchinto(), ocifetchstatement(), ocicolumnisnull(), ocicolumnname(), ocicolumnsize(), ocicolumntype(), ocistatementtype(), ocierror() | ocifreestatement() | Curseur Oracle
odbc link | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | odbc_close() | Lien vers une base de données ODBC
odbc link persistent | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | None | Lien persistant vers une base de données ODBC
odbc result | odbc_prepare() | odbc_binmode(), odbc_cursor(), odbc_execute(), odbc_fetch_into(), odbc_fetch_row(), odbc_field_name(), odbc_field_num(), odbc_field_type(), odbc_field_len(), odbc_field_precision(), odbc_field_scale(), odbc_longreadlen(), odbc_num_fields(), odbc_num_rows(), odbc_result(), odbc_result_all(), odbc_setoption() | odbc_free_result() | Résultat ODBC
velocis link
velocis result
OpenSSL key | openssl_get_privatekey(), openssl_get_publickey() | openssl_sign(), openssl_seal(), openssl_open(), openssl_verify() | openssl_free_key() | Clé de cryptage OpenSSL
OpenSSL X.509 | openssl_x509_read() | openssl_x509_parse(), openssl_x509_checkpurpose() | openssl_x509_free() | Clé publique
oracle cursor | ora_open() | ora_bind(), ora_columnname(), ora_columnsize(), ora_columntype(), ora_error(), ora_errorcode(), ora_exec(), ora_fetch(), ora_fetch_into(), ora_getcolumn(), ora_numcols(), ora_numrows(), ora_parse() | ora_close() | Curseur oracle
oracle link | ora_logon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | ora_logoff() | Lien vers une base de données oracle
oracle link persistent | ora_plogon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | None | Lien persistant vers une base de données oracle
pdf document | pdf_new() | pdf_add_bookmark(), pdf_add_launchlink(), pdf_add_locallink(), pdf_add_note(), pdf_add_pdflink(), pdf_add_weblink(), pdf_arc(), pdf_attach_file(), pdf_begin_page(), pdf_circle(), pdf_clip(), pdf_closepath(), pdf_closepath_fill_stroke(), pdf_closepath_stroke(), pdf_concat(), pdf_continue_text(), pdf_curveto(), pdf_end_page(), pdf_endpath(), pdf_fill(), pdf_fill_stroke(), pdf_findfont(), pdf_get_buffer(), pdf_get_image_height(), pdf_get_image_width(), pdf_get_parameter(), pdf_get_value(), pdf_lineto(), pdf_moveto(), pdf_open_ccitt(), pdf_open_file(), pdf_open_image_file(), pdf_place_image(), pdf_rect(), pdf_restore(), pdf_rotate(), pdf_save(), pdf_scale(), pdf_setdash(), pdf_setflat(), pdf_setfont(), pdf_setgray(), pdf_setgray_fill(), pdf_setgray_stroke(), pdf_setlinecap(), pdf_setlinejoin(), pdf_setlinewidth(), pdf_setmiterlimit(), pdf_setpolydash(), pdf_setrgbcolor(), pdf_setrgbcolor_fill(), pdf_setrgbcolor_stroke(), pdf_set_border_color(), pdf_set_border_dash(), pdf_set_border_style(), pdf_set_char_spacing(), pdf_set_duration(), pdf_set_font(), pdf_set_horiz_scaling(), pdf_set_parameter(), pdf_set_text_pos(), pdf_set_text_rendering(), pdf_set_value(), pdf_set_word_spacing(), pdf_show(), pdf_show_boxed(), pdf_show_xy(), pdf_skew(), pdf_stringwidth(), pdf_stroke(), pdf_translate(), pdf_open_memory_image() | pdf_close(), pdf_delete() | Document PDF
pdf image | pdf_open_image(), pdf_open_image_file(), pdf_open_memory_image() | pdf_get_image_height(), pdf_get_image_width(), pdf_open_ccitt(), pdf_place_image() | pdf_close_image() | Image dans un document PDF
pdf object
pdf outline
pgsql large object | pg_getlastoid(), pg_loimport(), pg_loimport() | pg_loopen(), pg_getlastoid(), pg_locreate(), pg_loexport(), pg_loread(), pg_loreadall(), pg_lounlink(), pg_lowrite() | pg_loclose() | Objet de grande taille PostGreSQL
pgsql link | pg_connect() | pg_cmdtuples(), pg_dbname(), pg_end_copy(), pg_errormessage(), pg_host(), pg_locreate(), pg_loexport(), pg_loimport(), pg_loopen(), pg_lounlink(), pg_options(), pg_port(), pg_put_line(), pg_set_client_encoding(), pg_client_encoding(), pg_trace(), pg_untrace(), pg_tty() | pg_close() | Lien vers une base de données PostGreSQL
pgsql link persistent | pg_pconnect() | pg_cmdtuples(), pg_dbname(), pg_end_copy(), pg_errormessage(), pg_host(), pg_locreate(), pg_loexport(), pg_loimport(), pg_loopen(), pg_lounlink(), pg_options(), pg_port(), pg_put_line(), pg_set_client_encoding(), pg_client_encoding(), pg_trace(), pg_untrace(), pg_tty() | None | Lien persistant vers une base de données PostGreSQL
pgsql result | pg_exec() | pg_fetch_array(), pg_fetch_object(), pg_fieldisnull(), pg_fetch_row(), pg_fieldname(), pg_fieldnum(), pg_fieldprtlen(), pg_fieldsize(), pg_fieldtype(), pg_getlastoid(), pg_numfields(), pg_result(), pg_numrows() | pg_freeresult() | Résultat PostGreSQL
pgsql string
printer
printer brush
printer font
printer pen
pspell | pspell_new(), pspell_new_config(), pspell_new_personal() | pspell_add_to_personal(), pspell_add_to_session(), pspell_check(), pspell_clear_session(), pspell_config_ignore(), pspell_config_mode(), pspell_config_personal(), pspell_config_repl(), pspell_config_runtogether(), pspell_config_save_repl(), pspell_save_wordlist(), pspell_store_replacement(), pspell_suggest() | None | Dictionnaire Pspell
pspell config | pspell_config_create() | pspell_new_config() | None | Configuration Pspell
Sablotron XSLT | xslt_create() | xslt_closelog(), xslt_openlog(), xslt_run(), xslt_set_sax_handler(), xslt_errno(), xslt_error(), xslt_fetch_result(), xslt_free() | xslt_free() | Analyseur XSLT
shmop | shmop_open() | shmop_read(), shmop_write(), shmop_size(), shmop_delete() | shmop_close()
sockets file descriptor set | socket() | accept_connect(), bind(), connect(), listen(), read(), write() | close() | Socket
sockets i/o vector
dir | dir() | readdir(), rewinddir() | closedir() | Dossier
file | fopen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), flock(), fpassthru(), fputs(), fwrite(), fread(), fseek(), ftell(), fstat(), ftruncate(), set_file_buffer(), rewind() | fclose() | Fichier
pipe | popen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | pclose() | Processus
socket | fsockopen() | fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | fclose() | Socket
stream
sybase-db link | sybase_connect() | sybase_query(), sybase_select_db() | sybase_close() | Lien vers une base de données Sybase avec la librairie db
sybase-db link persistent | sybase_pconnect() | sybase_query(), sybase_select_db() | None | Lien persistant vers une base de données Sybase avec la librairie db
sybase-db result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Résultat Sybase avec la librairie DB
sybase-ct link | sybase_connect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | sybase_close() | Lien vers une base de données Sybase avec la librairie CT
sybase-ct link persistent | sybase_pconnect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | None | Lien persistant vers une base de données Sybase avec la librairie CT
sybase-ct result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Résultat Sybase avec la librairie CT
sysvsem | sem_get() | sem_acquire() | sem_release() | Sémaphore Système V
sysvshm | shm_attach() | shm_remove(), shm_put_var(), shm_get_var(), shm_remove_var() | shm_detach() | Mémoire partagée Système V
wddx | wddx_packet_start() | wddx_add_vars() | wddx_packet_end() | Paquet wddx
xml | xml_parser_create() | xml_set_object(), xml_set_element_handler(), xml_set_character_data_handler(), xml_set_processing_instruction_handler(), xml_set_default_handler(), xml_set_unparsed_entity_decl_handler(), xml_set_notation_decl_handler(), xml_set_external_entity_ref_handler(), xml_parse(), xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number(), xml_get_current_byte_index(), xml_parse_into_struct(), xml_parser_set_option(), xml_parser_get_option() | xml_parser_free() | Analyseur syntaxique XML
zlib | gzopen() | gzeof(), gzgetc(), gzgets(), gzgetss(), gzpassthru(), gzputs(), gzread(), gzrewind(), gzseek(), gztell(), gzwrite() | gzclose() | Fichier compressé Gzip
ZZIP Directory
ZZIP Entry

Précédent | Sommaire | Suivant
constantes standards prédéfinies | Niveau supérieur | Liste des protocoles supportés


Liste des protocoles supportés

Manuel PHP
Précédent Suivant

Annexe I. Liste des protocoles supportés

Table des matières
HTTP et HTTPS
FTP and FTPS
Flôts d'entrée/sortie
Flôts compressés

Cette section recense une liste de protocole gérant des URL, qui sont intégrés dans les fonctions ayant accès aux fichiers, dans PHP. Par exemple, les fonctions fopen() et copy(). Ces fonctionnalités sont compilées comme des pilotes externes, et à partir de PHP 4.3.0, vous pouvez créer vos propres pilotes, avec la fonction stream_register_wrapper().

HTTP et HTTPS

PHP 3, PHP 4. https:// depuis PHP 4.3

  • http://exemple.com

  • http://utilisateur:motdepasse@exemple.com

  • https://exemple.com

  • https://utilisateur:motdepasse@exemple.com

Permet des accès en lecture uniquement, pour des fichiers accessibles sur le réseau avec la méthode GET de HTTP 1.0. Un en-tête Host: est envoyé avec la requête, pour gérer les hôtes virtuels, basés sur des noms. Si vous avez configuré une version de navigateur avec l'option user_agent dans votre fichier php.ini, ou via le contexte de flux, il sera aussi utilisé dans votre requête.

Les redirections sont supportées depuis PHP 4.0.5; si vous utilisez une version plus ancienne, vous devrez ajouter vous même les slash finaux dans vos URL.

Le flux donne l'accès au corps (body) de la ressource. Les en-têtes sont stockés dans la variable $http_response_header. Depuis PHP 4.3.0, les en-têtes sont aussi accessibles avec la fonction stream_get_meta_data().

Les connexions HTTP sont en lecture seule. Vous ne pouvez pas écrire dans des fichiers ouverts via le protocole HTTP.

Note : HTTPS est supporté depuis PHP 4.3, si vous avez compilé le support d'OpenSSL.

Précédent | Sommaire | Suivant
Types des ressources PHP | Niveau supérieur | FTP and FTPS


FTP and FTPS

PHP 3, PHP 4. ftps:// depuis PHP 4.3

  • ftp://example.com/pub/file.txt

  • ftp://user:password@example.com/pub/file.txt

  • ftps://example.com/pub/file.txt

  • ftps://user:password@example.com/pub/file.txt

Permet l'accès aux fichiers existants, et la création de fichiers via FTP. Si le serveur ne supporte pas les connexions en mode passif, la connexion échouera.

Vous pouvez ouvrir des fichiers en lecture et en écriture, mais pas les deux en même temps. Si le fichier distant existe déjà sur le serveur FTP, vous pourrez essayer de l'ouvrir en écriture, mais la connexion échouera. Si vous devez modifier un fichier qui existe déjà, utilisez ftp_connect().

ftps:// a été introduit en PHP 4.3. C'est le même que ftp://, mais il tente d'établir une connexion sécurisée avec le serveur FTP. Si le serveur ne le supporte pas, la connexion sera une connexion non sécurisée.

Note : FTPS est supporté depuis PHP 4.3.0, si vous avez compilé le support d'OpenSSL.

Précédent | Sommaire | Suivant
Liste des protocoles supportés | Niveau supérieur | Flôts d'entrée/sortie


Flôts d'entrée/sortie

PHP 3.0.13 et plus réscent, php://output et php://input depuis PHP 4.3

  • php://stdin

  • php://stdout

  • php://stderr

  • php://output

  • php://input

php://stdin, php://stdout et php://stderr donne accès au flux correspondant d'entrée ou de sortie du processus PHP.

php://output vous permet d'écrire dans le buffer de sortie, de la même manière que print() et echo().

php://input permet de lire des données POST bruts. C'est moins gourmand en mémoire que $HTTP_RAW_POST_DATA et il n'y a pas de directive spéciale dans php.ini.

php://stdin et php://input sont lecture seule, tandis que php://stdout, php://stderr et php://output sont en écriture seule.

php://filter est une sorte de méta-gestionnaire, prévu pour qui permet l'utilisation de filtre avec les données d'entrée au moment du démarrage du script. C'est pratique avec des fonctions compactes comme readfile(), file() et file_get_contents() où il n'y a pas d'opportunité d'appliquer un filtre aux données lues.

Le gestionaire de php://filter prend les paramètres suivants dans le chemin.

  • /resource=<flux à filtrer> (obligatoire) Ce paramètre doit être situé à la fin de votre chaîne php://filter et doit pointer sur le flux à filtrer.

    <?php
/* Ceci est l'&eacute;quivalent de :
   readfile("http://www.example.com");
   puisqu'aucun filtre n'est sp&eacute;cifi&eacute; */

readfile("php://filter/resource=http://www.exemple.com");
?>

  • /read=<liste de filtres de la chaîne de lecture> (optionnel) Ce paramètre prend un ou plusieurs noms de filtres, séparés par le caractère pipe |.

    <?php
/* Cette ligne va afficher le contenu de
   www.exemple.com tout en majuscule */
readfile("php://filter/read=string.toupper/resource=http://www.exemple.com");

/* Cela va faire la m&ecirc;me chose que ci-dessus, mais en plus,
   le r&eacute;sultat sera chiffr&eacute; en ROT13 */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.exemple.com");
?>

  • /write=<liste de filtres de la chaîne d'écriture> (optionnel) Ce paramètre prend un ou plusieurs noms de filtres, séparés par le caractère pipe |.

    <?php
/* Cette ligne va filtrer la cha&icirc;ne "Bonjour le monde"
   avec le filtre rot13, puis &eacute;crire le r&eacute;sultat dans
   le fichier exemple.txt du dossier courant */
file_set_contents("php://filter/write=string.rot13/resource=exemple.txt","Bonjour le monde");
?>

  • /<liste de filtres des deux chaînes> (optionnel) Tous les filtres qui ne sont pas préfixé avec read= ou write= seront appliqué aux deux chaînes de filtres, en lecture et en écriture.

Précédent | Sommaire | Suivant
FTP and FTPS | Niveau supérieur | Flôts compressés


Flôts compressés

zlib: PHP 4.0.4 - PHP 4.2.3 (systèmes avec fopencookie uniquement)

compress.zlib:// et compress.bzip2:// depuis PHP 4.3.0 et plus récent.

  • zlib:

  • compress.zlib://

  • compress.bzip2://

zlib: fonctionne comme gzopen(), hormis le fait que le flux peut être utilisé directement avec fread() et les autres fonctions de système de fichier. Cette notation est obsolète depuis PHP 4.3.0, étant données les ambiguités dues aux noms de fichiers contenant des deux points ':'. Utilisez plutôt compress.zlib://.

compress.zlib:// et compress.bzip2:// sont équivalents à gzopen() et bzopen() respectivement, et ils opèrent même sur les systèmes qui ne supportent pas fopencookie.

Précédent | Sommaire | Suivant
Flôts d'entrée/sortie | Niveau supérieur | Liste des modes de transports de sockets disponibles


Liste des modes de transports de sockets disponibles

Manuel PHP
Précédent Suivant

Annexe J. Liste des modes de transports de sockets disponibles

Table des matières
Domaien Internet : TCP, UDP, SSL et TLS
Domaine Unix : UNIX et UDG

Voici la liste des différents modes de transports, format URL, dont PHP dispose en interne pour les flux qui exploitent les sockets, tels que fsockopen() et stream_socket_client(). Ces modes de transports ne s'appliquent pas à l'extension sockets.

Pour connaître la liste des modes de transports installés sur votre version de PHP, utilisez stream_get_transports().

Domaien Internet : TCP, UDP, SSL et TLS

PHP 3, PHP 4. ssl:// & tls:// depuis PHP 4.3.

Note : Si aucun transport n'est spécifié, tcp:// est utilisé.

  • 127.0.0.1

  • fe80::1

  • www.exemple.com

  • tcp://127.0.0.1

  • tcp://fe80::1

  • tcp://www.exemple.com

  • udp://www.exemple.com

  • ssl://www.exemple.com

  • tls://www.exemple.com

Les sockets du domaine Internet utilisent un numéro de port en plus de l'adresse de l'hôte. Dans le cas de fsockopen(), il est spécifié en deuxième paramètre, et donc, n'a pas d'impact sur le format du mode de transport. Avec stream_socket_client() et les autres fonctions de la même famille, le numéro de port est spécifié comme un suffixe dans l'URL de transport, identifié par un signe deux-points.

  • tcp://127.0.0.1:80

  • tcp://[fe80::1]:80

  • tcp://www.exemple.com:80

Adresse IPv6 et numéro de port : Dans le second exemple ci-dessus, les exemples en IPv4 et les noms d'hôtes sont identiques, mais les IPv6 sont placées entre crochet, en plus d'avoir le deux-points et le numéro de port : [fe80::1]. Cela permet de distinguer les deux-points utilisés en IPv6 et le deux-points utilisé pour délimiter le numéro de port.

Les modes ssl:// et tls:// (disponibles uniquement lorsque le support OpenSSl est compilé avec PHP) sont des extensions de tcp:// qui incluent le chiffrement SSL. En PHP 4.3, OpenSll doit être compilé statiquement avec PHP. en PHP 5.0, il peut être compilé en module ou statiquement.

Tableau J-1. Les options de contexte de ssl:// et tls:// (depuis PHP 4.3.2)

Nom | Utilisation | Valeur par défaut
verify_peer | TRUE ou FALSE. Requiert la vérification du certificat SSL utilisé. | FALSE
allow_self_signed | TRUE ou FALSE. Permet les certificats auto-signés. | FALSE
cafile | Situation du fichier de l'autorité de certification sur le serveur local, qui doit être utilisé avec verify_peer comme option de contexte pour identifier un pair distant. |
capath | Si cafile n'est pas spécifié, ou si le certificat n'est pas trouvé, le dossier capath est scanné pour y trouver un certificat convenable. capath doit être un dossier de certificats corrects. |
local_cert | Chemin jusqu'au fichier de certificat local. Il doit être au format PEM, qui contient votre certificat, et la clé privée. Il peut éventuellement contenir la chaîne de certificat de l'émetteur. |
passphrase | Mot de passe avec lequel votre local_cert a été chiffré. |
CN_match | Le nom commun (Common Name) que nous attendons. PHP va effectuer une comparaison avec jokers limités. Si le nom commun ne correspond pas à celui attendu, la connexion va échouer. |

Note : Comme ssl:// est le mode de transport sous-jacent de https:// et ftps://, toutes les options de contexte qui s'applique à ssl://, s'appliquent aussi à https:// et ftps://.

Précédent | Sommaire | Suivant
Flôts compressés | Niveau supérieur | Domaine Unix : UNIX et UDG


Domaine Unix : UNIX et UDG

unix:// depuis PHP 3, udg:// depuis PHP 5

  • unix:///tmp/mysock

  • udg:///tmp/mysock

unix:// fournit l'accès à un flux de type socket, sur un domaine Unix. udg:// fournit un mode de transport alternatif, avec un protocole de datagrammes utilisateurs.

Les sockets du domaine Unix, contrairement à celle du domaine Internet, n'utilisent pas de numéro de port. Dans ce cas, le paramètre portno de fsockopen() doit valoir 0.

Précédent | Sommaire | Suivant
Liste des modes de transports de sockets disponibles | Niveau supérieur | Comparaison de types en PHP


Liste des token de l'analyseur

Manuel PHP
Précédent Suivant

Annexe L. Liste des token de l'analyseur

De nombreuses parties du langage PHP sont représentées en interne par des trucs (NDT : litéralement) comme T_SR. PHP affiche des identifiants comme celui-ci dans les erreurs d'analyse, comme par exemple : unexpected T_SR, expecting ',' or ';' in script.php on line 10..

Vous êtes suppposé savoir ce que T_SR signifie. Pour ceux qui ne le savent pas, voici une liste de ces identifiant, la syntaxe PHP attenante, et les références appropriées au manuel.

Tableau L-1. Tokens

Token | Syntaxe | Référence
T_AND_EQUAL | &= | opérateurs d'assignation
T_ARRAY | array() | array(), syntaxe de tableau
T_ARRAY_CAST | (array) | transtypage
T_AS | as | foreach
T_BAD_CHARACTER |  | Tous les caractères en dessous de ASCII 32 excepté \t (0x09), \n (0x0a) et \r (0x0d)
T_BOOLEAN_AND | && | opérateurs logiques
T_BOOLEAN_OR | || | opérateurs logiques
T_BOOL_CAST | (bool) or (boolean) | transtypage
T_BREAK | break; | break
T_CASE | case | switch
T_CHARACTER |  |
T_CLASS | class | classes et objets
T_CLOSE_TAG | ?> ou %> |
T_COMMENT | // ou # | commentaires
T_CONCAT_EQUAL | .= | opérateurs d'assignation
T_CONST | const |
T_CONSTANT_ENCAPSED_STRING | "foo" or 'bar' | syntaxe chaîne de caractères
T_CONTINUE | continue |
T_CURLY_OPEN |  |
T_DEC | -- | opérateurs d'incrémention/décrémention
T_DECLARE | declare | declare
T_DEFAULT | default | switch
T_DIV_EQUAL | /= | opérateurs d'assignation
T_DNUMBER | 0.12, etc | nombres à virgule flottante
T_DO | do | do..while
T_DOLLAR_OPEN_CURLY_BRACES | ${ | syntaxe de variable complexe analysée
T_DOUBLE_ARROW | => | syntaxe de tableau
T_DOUBLE_CAST | (real), (double) or (float) | transtypage
T_ECHO | echo | echo()
T_ELSE | else | else
T_ELSEIF | elseif | elseif
T_EMPTY | empty | empty()
T_ENCAPSED_AND_WHITESPACE |  |
T_ENDDECLARE | enddeclare | declare, syntaxe alternative
T_ENDFOR | endfor | for, syntaxe alternative
T_ENDFOREACH | endforeach | foreach, syntaxe alternative
T_ENDIF | endif | if, syntaxe alternative
T_ENDSWITCH | endswitch | switch, syntaxe alternative
T_ENDWHILE | endwhile | while, syntaxe alternative
T_END_HEREDOC |  | syntaxe heredoc
T_EVAL | eval() | eval()
T_EXIT | exit or die | exit(), die()
T_EXTENDS | extends | extends, classes et objets
T_FILE | __FILE__ | constantes
T_FOR | for | for
T_FOREACH | foreach | foreach
T_FUNCTION | function or cfunction | fonctions
T_GLOBAL | global | scope de variable
T_IF | if | if
T_INC | ++ | opérateurs d'incrémention/décrémention
T_INCLUDE | include() | include()
T_INCLUDE_ONCE | include_once() | include_once()
T_INLINE_HTML |  |
T_INT_CAST | (int) or (integer) | transtypage
T_ISSET | isset() | isset()
T_IS_EQUAL | == | opérateurs de comparaison
T_IS_GREATER_OR_EQUAL | >= | opérateurs de comparaison
T_IS_IDENTICAL | === | opérateurs de comparaison
T_IS_NOT_EQUAL | != or <> | opérateurs de comparaison
T_IS_NOT_IDENTICAL | !== | opérateurs de comparaison
T_SMALLER_OR_EQUAL | <= | opérateurs de comparaison
T_LINE | __LINE__ | constants
T_LIST | list() | list()
T_LNUMBER | 123, 012, 0x1ac, etc | entiers
T_LOGICAL_AND | and | opérateurs logiques
T_LOGICAL_OR | or | opérateurs logiques
T_LOGICAL_XOR | xor | opérateurs logiques
T_MINUS_EQUAL | -= | opérateurs d'assignation
T_ML_COMMENT | /* and */ | commentaires
T_MOD_EQUAL | %= | opérateurs d'assignation
T_MUL_EQUAL | *= | opérateurs d'assignation
T_NEW | new | classes et objets
T_NUM_STRING |  |
T_OBJECT_CAST | (object) | transtypage
T_OBJECT_OPERATOR | -> | classes et objets
T_OLD_FUNCTION | old_function | old_function
T_OPEN_TAG | <?php, <? or <% | sortie du mode HTML
T_OPEN_TAG_WITH_ECHO | <?= or <%= | sortie du mode HTML
T_OR_EQUAL | |= | opérateurs d'assignation
T_PAAMAYIM_NEKUDOTAYIM | :: | ::
T_PLUS_EQUAL | += | opérateurs d'assignation
T_PRINT | print() | print()
T_REQUIRE | require() | require()
T_REQUIRE_ONCE | require_once() | require_once()
T_RETURN | return | valeurs retournées
T_SL | << | opérateurs sur les bits
T_SL_EQUAL | <<= | opérateurs d'assignation
T_SR | >> | opérateurs sur les bits
T_SR_EQUAL | >>= | opérateurs d'assignation
T_START_HEREDOC | <<< | syntaxe heredoc
T_STATIC | static | scope de variable
T_STRING |  |
T_STRING_CAST | (string) | transtypage
T_STRING_VARNAME |  |
T_SWITCH | switch | switch
T_UNSET | unset() | unset()
T_UNSET_CAST | (unset) | (non documenté; forcé à NULL)
T_USE | use | (pas implémenté)
T_VAR | var | classes et objets
T_VARIABLE | $foo | variables
T_WHILE | while | while, do..while
T_WHITESPACE |  |
T_XOR_EQUAL | ^= | opérateurs d'assignation
T_FUNC_C | __FUNCTION__ | constantes, depuis PHP 4.3.0
T_CLASS_C | __CLASS__ | constantes, depuis PHP 4.3.0

Précédent | Sommaire | Suivant
Comparaison de types en PHP | Niveau supérieur | A propos du manuel


A propos du manuel

Manuel PHP
Précédent Suivant

Annexe M. A propos du manuel

Table des matières
Formats
A propos des notes utilisateurs
Comment lire la définition d'une fonction (prototype)
Versions de PHP documentées dans ce manuel
Où trouver plus d'informations sur PHP?
Comment aider à l'amélioration de la documentation
Comment sont générées les documentations
Traductions
Traduction française

Formats

Le manuel PHP est fourni en différents formats. Ces formats sont divisés en deux groupes : ceux qui sont disponibles en ligne, et les téléchargeables.

Note : Certains éditeurs ont fournis des versions imprimées de ces manuels. Nous n'en recommandons aucune, car elles sont rapidement obsolètes.

Vous pouvez lire le manuel en ligne sur le site http://www.php.net/ et sur les nombreux miroirs. Pour un confort d'utilisation accru, il est recommandé d'utiliser un miroir proche de chez vous. Vous pouvez le voir en version HTML simple (et facilement imprimable), ou bien aux couleurs de PHP.net.

Un des points forts du manuel en ligne sur la plupart des formats téléchargeable, est l'intégration des notes des utilisateurs. Un inconvénient évident est que vous devez être en ligne pour profiter de ces formats.

Il y a de nombreux formats de manuel pour la consultation hors ligne, et le format le plus approprié dépend de votre OS et de vos goûts personnels. Pour savoir comment le manuel est généré, lisez la section 'Comment le manuel est généré'.

Le format le plus portable est le manuel au format HTML. Le manuel est fourni dans un format en une seule page HTML, ou comme un ensemble de fichier de taille réduite (mais un bon millier de fichiers tout de même). Les formats HTML et texte simple sont disponibles sous forme de fichiers d'archives compressées avec bzip2.

Un autre format populaire et portable est le format PDF, le plus pratique pour les impressions. Mais avant de lancer une telle impression, pensez bien que le manuel au complet faire plus de 2000 pages, et qu'il est constamment révisé.

Note : Si vous n'avez pas de programme capable de lire les fichiers PDF, téléchargez le Adobe Acrobat Reader.

Pour les propriétaires de PDA Palm, deux formats Palm document et iSilo sont optimisés pour cette plate-forme. Vous pouvez emporter votre PDA avec vous dans vos déplacements quotidiens, et utiliser les programmes DOC et iSilo pour améliorer vos connaissances de PHP, ou bien profiter de ses références rapides.

Pour les plates-formes Windows, le format Windows HTML Help fournit une version HTML du manuel, avec l'application Windows HTML Help : il intègre un moteur de recherche complet, un index et des signets. De nombreux IDE sous Windows fournissent des liens avec ce format pour une meilleure intégration.

Précédent | Sommaire | Suivant
Liste des token de l'analyseur | Niveau supérieur | A propos des notes utilisateurs


A propos des notes utilisateurs

Les notes des utilisateurs jouent un rôle très important dans le développement de ce manuel. En permettant aux lecteurs de contribuer par des exemples, des remarques et critiques, ou encore des clarifications, nous intégrons des aspects très importants du langage dans le manuel. Jusqu'à ce que les notes les plus importantes soient intégrées dans la documentation, elles sont disponibles sur le site lui même, et dans certains formats hors ligne.

Note : Les notes des utilisateurs ne sont pas modérées avant d'apparaître sur le site, et même si elles sont modérées, leur véracité ne peut être garantie, pas plus qu'il n'existe de garantie quand à l'exactitude du manuel lui-même.

Précédent | Sommaire | Suivant
A propos du manuel | Niveau supérieur | Comment lire la définition d'une fonction (prototype)


Comment lire la définition d'une fonction (prototype)

Chaque fonction est documentée pour permettre un accès rapide, et savoir décoder le manuel rendra votre lecture plus facile. Plutôt que de dépendre d'exemples prêts en copier/coller, il est mieux de savoir lire la définition d'une fonction. Voici comment :

Pré-requis : Connaissances de bases des types. : Bien que PHP soit un langage sans typage fort, une connaissance de base des types est essentielle, car ils ont quand même des sens importants.

Les définitions de fonctions vous indiquent quel type de données est retourné. Examinons la fonction strlen() comme exemple :

strlen

PHP 3, PHP 4

int strlen ( string  str )

strlen retourne la taille de la chaîne str .

Tableau M-1. Explications de la définition de la fonction

Partie | Description
strlen | Le nom de la fonction.
(PHP 3, PHP 4) | strlen() est présente dans toutes les versions de PHP 3 et PHP 4.
int | Type de valeur retourné par cette fonction, qui est en l'occurrence un entier (i.e. la taille d'une chaîne est mesurée par un nombre).
( string str ) | Le premier (et ici le seul) paramètre à fournir à strlen est le paramètre str, qui doit être du type chaîne de caractères.

Nous pourrions réécrire ce prototype avec une version plus générique :

type_retourné   nom_de_la fonction    ( type_du_paramètre nom_du_paramètre )

Plusieurs fonctions ont besoin de plusieurs paramètres, comme par exemple in_array(). Son prototype est le suivant :

bool in_array ( mixed needle, array haystack [, bool strict])

Qu'est ce que cela signifie? in_array() retourne un booléen TRUE en cas de réussite ( le paramètre needle a été trouvé dans le tableau haystack) ou FALSE en cas d'échec ( le paramètre needle n'a pas été trouvé dans le tableau haystack). Le premier paramètre s'appelle needle et il peut être de différents types : il porte donc la mention mixed. Le paramètre needle (ce que nous recherchons) peut être une valeur scalaire ( chaîne de caractères, entier, ou nombre à virgule flottante), ou encore un tableau. haystack (le tableau dans lequel nous recherchons) est le second paramètre. Le troisième paramètre, strict, est optionnel. Tous les paramètres optionnels sont placés entre crochets. La manuel indique que le paramètre strict vaut par défaut FALSE. Reportez-vous au manuel de chaque fonction pour savoir comment elle fonctionne.

Précédent | Sommaire | Suivant
A propos des notes utilisateurs | Niveau supérieur | Versions de PHP documentées dans ce manuel


Comment aider à l'amélioration de la documentation

Il y a trois façon de participer à l'amélioration de la documentation.

Si vous trouvez des erreurs, dans n'importe quelle traduction de la documentation utiliser le système de rapport de bugs : http://bugs.php.net/. Classez le rapport sous la catégorie "Documentation Problem". Vous pouvez aussi poster vos problèmes ici même.

Note : N'abusez pas du système de bugs pour envoyer des demandes d'aide. Utilisez les listes de diffusion ou les sites de communauté, tels que mentionnés ci-dessus.

En contribuant aux notes, vous pouvez fournir de nouveaux exemples, mettre en lumière des effets de bords ou apporter des clarifications pour les autres lecteurs. Mais ne prenez pas le système d'annotation pour un système de soumission de bugs. Vous pouvez en savoir plus sur les annotations dans la section 'A propos des notes d'utilisateurs'

Si vous connaissez l'anglais et une autre langue, vous pouvez aussi contribuer en participant à la traduction. Si vous voulez démarrer une nouvelle traduction, ou participer au projet, alors commencez par lire http://cvs.php.net/co.php/phpdoc/howto/howto.html.tar.gz.

Précédent | Sommaire | Suivant
Où trouver plus d'informations sur PHP? | Niveau supérieur | Comment sont générées les documentations


Comment sont générées les documentations

Ce manuel est écrit en XML, en utilisant la DTD de DocBook XML, et DSSSL (Document Style and Semantics Specification Language) pour le format, et aussi, expérimentalement, XSLT (eXtensible Stylesheet Language Transformations) pour les maintenances et les formats.

Grâce au format XML comme source, nous avons la possibilité de générer de nombreux formats tout en ayant une seule source pour tous les formats. Les outils utilisés pour formater les versions HTML et TeX sont Jade, écrit par James Clark et The Modular DocBook Stylesheets écrit par Norman Walsh. Nous utilisons Microsoft HTML Help Workshop pour générer le format Windows HTML Help format du manuel, et bien sur, PHP lui-même pour réaliser certaines conversions et formats.

Vous pouvez télécharger le manuel dans différentes langues, y compris un format en texte plein, HTML, PDF, PalmPilot DOC, PalmPilot iSilo et Windows HTML Help, à l'URL http://www.php.net/docs.php. Les manuels sont mis à jours automatiquement, avec la mise à jour des sources.

Vous pouvez trouver plus d'informations sur le téléchargement des sources XML de cette documentation à http://cvs.php.net/. La documentation est stockée dans le module phpdoc.

Précédent | Sommaire | Suivant
Comment aider à l'amélioration de la documentation | Niveau supérieur | Traductions


Traductions

La manuel PHP est disponible non seulement en anglais, mais aussi dans différentes langues. Le texte du manuel est écrit d'abord en anglais, puis des équipes à travers le monde, assure la traduction du manuel dans leur langue natale. Si la traduction d'une section n'est pas encore disponible, le système de création de la documentation présentera alors la version anglaise.

Les contributeurs aux documentations partent des codes sources XML disponibles sur le CVS http://cvs.php.net/ puis traduisent dans leur langue. Ils n'utilisent pas le format HTML, le texte plein, ou encore le format PDF. C'est le système d'édition qui se charge de faire les conversions du format XML vers un format lisible.

Note : Si vous voulez démarrer une nouvelle e traduction dans votre langue, entrez en contact avec l'équipe de documentation en vous inscrivant à la liste de diffusion : phpdoc-subscribe@lists.php.net. L'adresse de la liste de diffusion est phpdoc@lists.php.net. Indiquez dans le message que vous êtes intéressé pour traduire la documentation dans une nouvelle langue, et quelqu'un viendra vous aider à démarrer un nouveau site de traduction, ou rejoindre l'équipe qui a pris en charge cette traduction.

Actuellement, le manuel est disponible, partiellement ou en totalité, dans les langues suivantes : Allemand, Chinois (simplifié), Chinois (traditionnel), Coréen, Espagnol, Finnois, Français, Hébreu, Hongrois, Italien, Japonais, Néerlandais, Polonais, Portugais brésilien, Roumain, Russe, Slovaque, Slovène, Suédois, Tchèque et Turc.

Ils peuvent tous être téléchargés ici : http://www.php.net/docs.php.

Précédent | Sommaire | Suivant
Comment sont générées les documentations | Niveau supérieur | Traduction française


Traduction française

La version française est traduite quotidiennement et disponible chez Nexen (nexen.net/). Ce manuel a été généré à partir de la documentation originale en anglais du PHP Documentation Group, au format XML. Elle est 100% compatible avec le système de génération du groupe PHP. Elle est traité avec un système développé par Nexen pour produire divers autres formats.

Pour les problèmes liés à la traduction, vous pouvez contacter directement les éditeurs de ce manuel damien.seguy@nexen.net et didou@keliglia.com.

Précédent | Sommaire | Suivant
Traductions | Niveau supérieur | Open Publication License


Open Publication License

Manuel PHP
Précédent Suivant

Annexe N. Open Publication License

Table des matières
I. REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS
II. COPYRIGHT
III. SCOPE OF LICENSE
IV. REQUIREMENTS ON MODIFIED WORKS
V. GOOD-PRACTICE RECOMMENDATIONS
VI. LICENSE OPTIONS

v1.0, 8 June 1999

I. REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS

The Open Publication works may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that the terms of this license are adhered to, and that this license or an incorporation of it by reference (with any options elected by the author(s) and/or publisher) is displayed in the reproduction.

Proper form for an incorporation by reference is as follows:

Copyright (c) <year> by <author's name or designee>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, vX.Y or later (the latest version is presently available at http://www.opencontent.org/openpub/

The reference must be immediately followed with any options elected by the author(s) and/or publisher of the document (see section VI). Commercial redistribution of Open Publication-licensed material is permitted. Any publication in standard (paper) book form shall require the citation of the original publisher and author. The publisher and author's names shall appear on all outer surfaces of the book. On all outer surfaces of the book the original publisher's name shall be as large as the title of the work and cited as possessive with respect to the title.

Précédent | Sommaire | Suivant
Traduction française | Niveau supérieur | II. COPYRIGHT


II. COPYRIGHT

The copyright to each Open Publication is owned by its author(s) or designee.

Précédent | Sommaire | Suivant
Open Publication License | Niveau supérieur | III. SCOPE OF LICENSE


III. SCOPE OF LICENSE

The following license terms apply to all Open Publication works, unless otherwise explicitly stated in the document.

Mere aggregation of Open Publication works or a portion of an Open Publication work with other works or programs on the same media shall not cause this license to apply to those other works. The aggregate work shall contain a notice specifying the inclusion of the Open Publication material and appropriate copyright notice.

SEVERABILITY. If any part of this license is found to be unenforceable in any jurisdiction, the remaining portions of the license remain in force.

NO WARRANTY. Open Publication works are licensed and provided "as is" without warranty of any kind, express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose or a warranty of non-infringement.

Précédent | Sommaire | Suivant
II. COPYRIGHT | Niveau supérieur | IV. REQUIREMENTS ON MODIFIED WORKS


IV. REQUIREMENTS ON MODIFIED WORKS

All modified versions of documents covered by this license, including translations, anthologies, compilations and partial documents, must meet the following requirements:

  1. The modified version must be labeled as such.

  2. The person making the modifications must be identified and the modifications dated.

  3. Acknowledgement of the original author and publisher if applicable must be retained according to normal academic citation practices.

  4. The location of the original unmodified document must be identified.

  5. The original author's (or authors') name(s) may not be used to assert or imply endorsement of the resulting document without the original author's (or authors') permission.

Précédent | Sommaire | Suivant
III. SCOPE OF LICENSE | Niveau supérieur | V. GOOD-PRACTICE RECOMMENDATIONS


V. GOOD-PRACTICE RECOMMENDATIONS

In addition to the requirements of this license, it is requested from and strongly recommended of redistributors that:

  1. If you are distributing Open Publication works on hardcopy or CD-ROM, you provide email notification to the authors of your intent to redistribute at least thirty days before your manuscript or media freeze, to give the authors time to provide updated documents. This notification should describe modifications, if any, made to the document.

  2. All substantive modifications (including deletions) be either clearly marked up in the document or else described in an attachment to the document.

  3. Finally, while it is not mandatory under this license, it is considered good form to offer a free copy of any hardcopy and CD-ROM expression of an Open Publication-licensed work to its author(s).

Précédent | Sommaire | Suivant
IV. REQUIREMENTS ON MODIFIED WORKS | Niveau supérieur | VI. LICENSE OPTIONS


VI. LICENSE OPTIONS

The author(s) and/or publisher of an Open Publication-licensed document may elect certain options by appending language to the reference to or copy of the license. These options are considered part of the license instance and must be included with the license (or its incorporation by reference) in derived works.

A. To prohibit distribution of substantively modified versions without the explicit permission of the author(s). "Substantive modification" is defined as a change to the semantic content of the document, and excludes mere changes in format or typographical corrections.

To accomplish this, add the phrase `Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.' to the license reference or copy.

B. To prohibit any publication of this work or derivative works in whole or in part in standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.

To accomplish this, add the phrase 'Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.' to the license reference or copy.

Précédent | Sommaire | Suivant
V. GOOD-PRACTICE RECOMMENDATIONS | Niveau supérieur | Index des fonctions


Index des fonctions

Manuel PHP
Précédent Suivant

Annexe O. Index des fonctions

Table des matières
Index des fonctions

Précédent | Sommaire | Suivant
VI. LICENSE OPTIONS | Niveau supérieur | Index des fonctions


Index des fonctions

A

abs()
acos()
acosh()
addcslashes()
addslashes()
aggregate()
aggregate_info()
aggregate_methods()
aggregate_methods_by_list()
aggregate_methods_by_regexp()
aggregate_properties()
aggregate_properties_by_list()
aggregate_properties_by_regexp()
aggregation_info()
apache_child_terminate()
apache_lookup_uri()
apache_note()
apache_request_headers()
apache_response_headers()
apache_setenv()
array()
array_change_key_case()
array_chunk()
array_combine()
array_count_values()
array_diff()
array_diff_assoc()
array_fill()
array_filter()
array_flip()
array_intersect()
array_intersect_assoc()
array_key_exists()
array_keys()
array_map()
array_merge()
array_merge_recursive()
array_multisort()
array_pad()
array_pop()
array_push()
array_rand()
array_reduce()
array_reverse()
array_search()
array_shift()
array_slice()
array_splice()
array_sum()
array_unique()
array_unshift()
array_values()
array_walk()
arsort()
ascii2ebcdic()
asin()
asinh()
asort()
aspell_check()
aspell_check_raw()
aspell_new()
aspell_suggest()
assert()
assert_options()
atan()
atan2()
atanh()

B

base64_decode()
base64_encode()
base_convert()
basename()
bcadd()
bccomp()
bcdiv()
bcmod()
bcmul()
bcpow()
bcpowmod()
bcscale()
bcsqrt()
bcsub()
bin2hex()
bind_textdomain_codeset()
bindec()
bindtextdomain()
bzclose()
bzcompress()
bzdecompress()
bzerrno()
bzerror()
bzerrstr()
bzflush()
bzopen()
bzread()
bzwrite()

C

cal_days_in_month()
cal_from_jd()
cal_info()
cal_to_jd()
call_user_func()
call_user_func_array()
call_user_method()
call_user_method_array()
ccvs_add()
ccvs_auth()
ccvs_command()
ccvs_count()
ccvs_delete()
ccvs_done()
ccvs_init()
ccvs_lookup()
ccvs_new()
ccvs_report()
ccvs_return()
ccvs_reverse()
ccvs_sale()
ccvs_status()
ccvs_textvalue()
ccvs_void()
ceil()
chdir()
checkdate()
checkdnsrr()
chgrp()
chmod()
chop()
chown()
chr()
chroot()
chunk_split()
class_exists()
clearstatcache()
closedir()
closelog()
com()
com_addref()
com_get()
com_invoke()
com_isenum()
com_load()
com_load_typelib()
com_propget()
com_propput()
com_propset()
com_release()
com_set()
compact()
connection_aborted()
connection_status()
connection_timeout()
constant()
convert_cyr_string()
copy()
cos()
cosh()
count()
count_chars()
cpdf_add_annotation()
cpdf_add_outline()
cpdf_arc()
cpdf_begin_text()
cpdf_circle()
cpdf_clip()
cpdf_close()
cpdf_closepath()
cpdf_closepath_fill_stroke()
cpdf_closepath_stroke()
cpdf_continue_text()
cpdf_curveto()
cpdf_end_text()
cpdf_fill()
cpdf_fill_stroke()
cpdf_finalize()
cpdf_finalize_page()
cpdf_global_set_document_limits()
cpdf_import_jpeg()
cpdf_lineto()
cpdf_moveto()
cpdf_newpath()
cpdf_open()
cpdf_output_buffer()
cpdf_page_init()
cpdf_place_inline_image()
cpdf_rect()
cpdf_restore()
cpdf_rlineto()
cpdf_rmoveto()
cpdf_rotate()
cpdf_rotate_text()
cpdf_save()
cpdf_save_to_file()
cpdf_scale()
cpdf_set_action_url()
cpdf_set_char_spacing()
cpdf_set_creator()
cpdf_set_current_page()
cpdf_set_font()
cpdf_set_font_directories()
cpdf_set_font_map_file()
cpdf_set_horiz_scaling()
cpdf_set_keywords()
cpdf_set_leading()
cpdf_set_page_animation()
cpdf_set_subject()
cpdf_set_text_matrix()
cpdf_set_text_pos()
cpdf_set_text_rendering()
cpdf_set_text_rise()
cpdf_set_title()
cpdf_set_viewer_preferences()
cpdf_set_word_spacing()
cpdf_setdash()
cpdf_setflat()
cpdf_setgray()
cpdf_setgray_fill()
cpdf_setgray_stroke()
cpdf_setlinecap()
cpdf_setlinejoin()
cpdf_setlinewidth()
cpdf_setmiterlimit()
cpdf_setrgbcolor()
cpdf_setrgbcolor_fill()
cpdf_setrgbcolor_stroke()
cpdf_show()
cpdf_show_xy()
cpdf_stringwidth()
cpdf_stroke()
cpdf_text()
cpdf_translate()
crack_check()
crack_closedict()
crack_getlastmessage()
crack_opendict()
crc32()
create_function()
crypt()
ctype_alnum()
ctype_alpha()
ctype_cntrl()
ctype_digit()
ctype_graph()
ctype_lower()
ctype_print()
ctype_punct()
ctype_space()
ctype_upper()
ctype_xdigit()
curl_close()
curl_errno()
curl_error()
curl_exec()
curl_getinfo()
curl_init()
curl_multi_add_handle()
curl_multi_close()
curl_multi_exec()
curl_multi_getcontent()
curl_multi_info_read()
curl_multi_init()
curl_multi_remove_handle()
curl_multi_select()
curl_setopt()
curl_version()
current()
cybercash_base64_decode()
cybercash_base64_encode()
cybercash_decr()
cybercash_encr()
cyrus_authenticate()
cyrus_bind()
cyrus_close()
cyrus_connect()
cyrus_query()
cyrus_unbind()

D

date()
dba_close()
dba_delete()
dba_exists()
dba_fetch()
dba_firstkey()
dba_handlers()
dba_insert()
dba_list()
dba_nextkey()
dba_open()
dba_optimize()
dba_popen()
dba_replace()
dba_sync()
dbase_add_record()
dbase_close()
dbase_create()
dbase_delete_record()
dbase_get_record()
dbase_get_record_with_names()
dbase_numfields()
dbase_numrecords()
dbase_open()
dbase_pack()
dbase_replace_record()
dblist()
dbmclose()
dbmdelete()
dbmexists()
dbmfetch()
dbmfirstkey()
dbminsert()
dbmnextkey()
dbmopen()
dbmreplace()
dbplus_add()
dbplus_aql()
dbplus_chdir()
dbplus_close()
dbplus_curr()
dbplus_errcode()
dbplus_errno()
dbplus_find()
dbplus_first()
dbplus_flush()
dbplus_freealllocks()
dbplus_freelock()
dbplus_freerlocks()
dbplus_getlock()
dbplus_getunique()
dbplus_info()
dbplus_last()
dbplus_lockrel()
dbplus_next()
dbplus_open()
dbplus_prev()
dbplus_rchperm()
dbplus_rcreate()
dbplus_rcrtexact()
dbplus_rcrtlike()
dbplus_resolve()
dbplus_restorepos()
dbplus_rkeys()
dbplus_ropen()
dbplus_rquery()
dbplus_rrename()
dbplus_rsecindex()
dbplus_runlink()
dbplus_rzap()
dbplus_savepos()
dbplus_setindex()
dbplus_setindexbynumber()
dbplus_sql()
dbplus_tcl()
dbplus_tremove()
dbplus_undo()
dbplus_undoprepare()
dbplus_unlockrel()
dbplus_unselect()
dbplus_update()
dbplus_xlockrel()
dbplus_xunlockrel()
dbx_close()
dbx_compare()
dbx_connect()
dbx_error()
dbx_escape_string()
dbx_query()
dbx_sort()
dcgettext()
dcngettext()
deaggregate()
debug_backtrace()
debug_print_backtrace()
debugger_off()
debugger_on()
decbin()
dechex()
decoct()
define()
define_syslog_variables()
defined()
deg2rad()
delete()
dgettext()
die()
dio_close()
dio_fcntl()
dio_open()
dio_read()
dio_seek()
dio_stat()
dio_tcsetattr()
dio_truncate()
dio_write()
dir()
dirname()
disk_free_space()
disk_total_space()
diskfreespace()
dl()
dngettext()
dns_check_record()
dns_get_mx()
dns_get_record()
domattribute->name()
domattribute->specified()
domattribute->value()
domdocument->add_root [deprecated]()
domdocument->create_attribute()
domdocument->create_cdata_section()
domdocument->create_comment()
domdocument->create_element()
domdocument->create_element_ns()
domdocument->create_entity_reference()
domdocument->create_processing_instruction()
domdocument->create_text_node()
domdocument->doctype()
domdocument->document_element()
domdocument->dump_file()
domdocument->dump_mem()
domdocument->get_element_by_id()
domdocument->get_elements_by_tagname()
domdocument->html_dump_mem()
domdocument->xinclude()
domdocumenttype->entities()
domdocumenttype->internal_subset()
domdocumenttype->name()
domdocumenttype->notations()
domdocumenttype->public_id()
domdocumenttype->system_id()
domelement->get_attribute()
domelement->get_attribute_node()
domelement->get_elements_by_tagname()
domelement->has_attribute()
domelement->remove_attribute()
domelement->set_attribute()
domelement->tagname()
domnode->add_namespace()
domnode->append_child()
domnode->append_sibling()
domnode->attributes()
domnode->child_nodes()
domnode->clone_node()
domnode->dump_node()
domnode->first_child()
domnode->get_content()
domnode->has_attributes()
domnode->has_child_nodes()
domnode->insert_before()
domnode->is_blank_node()
domnode->last_child()
domnode->next_sibling()
domnode->node_name()
domnode->node_type()
domnode->node_value()
domnode->owner_document()
domnode->parent_node()
domnode->prefix()
domnode->previous_sibling()
domnode->remove_child()
domnode->replace_child()
domnode->replace_node()
domnode->set_content()
domnode->set_name()
domnode->set_namespace()
domnode->unlink_node()
domprocessinginstruction->data()
domprocessinginstruction->target()
domxml_new_doc()
domxml_open_file()
domxml_open_mem()
domxml_version()
domxml_xmltree()
domxml_xslt_stylesheet()
domxml_xslt_stylesheet_doc()
domxml_xslt_stylesheet_file()
domxsltstylesheet->process()
domxsltstylesheet->result_dump_file()
domxsltstylesheet->result_dump_mem()
dotnet_load()
doubleval()

E

each()
easter_date()
easter_days()
ebcdic2ascii()
echo()
empty()
end()
ereg()
ereg_replace()
eregi()
eregi_replace()
error_log()
error_reporting()
escapeshellarg()
escapeshellcmd()
eval()
exec()
exif_imagetype()
exif_read_data()
exif_thumbnail()
exit()
exp()
explode()
expm1()
extension_loaded()
extract()
ezmlm_hash()

F

fbsql_affected_rows()
fbsql_autocommit()
fbsql_change_user()
fbsql_close()
fbsql_commit()
fbsql_connect()
fbsql_create_blob()
fbsql_create_clob()
fbsql_create_db()
fbsql_data_seek()
fbsql_database()
fbsql_database_password()
fbsql_db_query()
fbsql_db_status()
fbsql_drop_db()
fbsql_errno()
fbsql_error()
fbsql_fetch_array()
fbsql_fetch_assoc()
fbsql_fetch_field()
fbsql_fetch_lengths()
fbsql_fetch_object()
fbsql_fetch_row()
fbsql_field_flags()
fbsql_field_len()
fbsql_field_name()
fbsql_field_seek()
fbsql_field_table()
fbsql_field_type()
fbsql_free_result()
fbsql_get_autostart_info()
fbsql_hostname()
fbsql_insert_id()
fbsql_list_dbs()
fbsql_list_fields()
fbsql_list_tables()
fbsql_next_result()
fbsql_num_fields()
fbsql_num_rows()
fbsql_password()
fbsql_pconnect()
fbsql_query()
fbsql_read_blob()
fbsql_read_clob()
fbsql_result()
fbsql_rollback()
fbsql_select_db()
fbsql_set_lob_mode()
fbsql_set_transaction()
fbsql_start_db()
fbsql_stop_db()
fbsql_tablename()
fbsql_username()
fbsql_warnings()
fclose()
fdf_add_doc_javascript()
fdf_add_template()
fdf_close()
fdf_create()
fdf_enum_values()
fdf_errno()
fdf_error()
fdf_get_ap()
fdf_get_attachment()
fdf_get_encoding()
fdf_get_file()
fdf_get_flags()
fdf_get_opt()
fdf_get_status()
fdf_get_value()
fdf_get_version()
fdf_header()
fdf_next_field_name()
fdf_open()
fdf_open_string()
fdf_remove_item()
fdf_save()
fdf_save_string()
fdf_set_ap()
fdf_set_encoding()
fdf_set_file()
fdf_set_flags()
fdf_set_javascript_action()
fdf_set_opt()
fdf_set_status()
fdf_set_submit_form_action()
fdf_set_target_frame()
fdf_set_value()
fdf_set_version()
feof()
fflush()
fgetc()
fgetcsv()
fgets()
fgetss()
file()
file_exists()
file_get_contents()
file_put_contents()
fileatime()
filectime()
filegroup()
fileinode()
filemtime()
fileowner()
fileperms()
filepro()
filepro_fieldcount()
filepro_fieldname()
filepro_fieldtype()
filepro_fieldwidth()
filepro_retrieve()
filepro_rowcount()
filesize()
filetype()
floatval()
flock()
floor()
flush()
fmod()
fnmatch()
fopen()
fpassthru()
fprintf()
fputs()
fread()
frenchtojd()
fribidi_log2vis()
fscanf()
fseek()
fsockopen()
fstat()
ftell()
ftok()
ftp_cdup()
ftp_chdir()
ftp_chmod()
ftp_close()
ftp_connect()
ftp_delete()
ftp_exec()
ftp_fget()
ftp_fput()
ftp_get()
ftp_get_option()
ftp_login()
ftp_mdtm()
ftp_mkdir()
ftp_nb_continue()
ftp_nb_fget()
ftp_nb_fput()
ftp_nb_get()
ftp_nb_put()
ftp_nlist()
ftp_pasv()
ftp_put()
ftp_pwd()
ftp_quit()
ftp_raw()
ftp_rawlist()
ftp_rename()
ftp_rmdir()
ftp_set_option()
ftp_site()
ftp_size()
ftp_ssl_connect()
ftp_systype()
ftruncate()
func_get_arg()
func_get_args()
func_num_args()
function_exists()
fwrite()

G

gd_info()
get_browser()
get_cfg_var()
get_class()
get_class_methods()
get_class_vars()
get_current_user()
get_declared_classes()
get_defined_constants()
get_defined_functions()
get_defined_vars()
get_extension_funcs()
get_html_translation_table()
get_include_path()
get_included_files()
get_loaded_extensions()
get_magic_quotes_gpc()
get_magic_quotes_runtime()
get_meta_tags()
get_object_vars()
get_parent_class()
get_required_files()
get_resource_type()
getallheaders()
getcwd()
getdate()
getenv()
gethostbyaddr()
gethostbyname()
gethostbynamel()
getimagesize()
getlastmod()
getmxrr()
getmygid()
getmyinode()
getmypid()
getmyuid()
getopt()
getprotobyname()
getprotobynumber()
getrandmax()
getrusage()
getservbyname()
getservbyport()
gettext()
gettimeofday()
gettype()
glob()
gmdate()
gmmktime()
gmp_abs()
gmp_add()
gmp_and()
gmp_clrbit()
gmp_cmp()
gmp_com()
gmp_div()
gmp_div_q()
gmp_div_qr()
gmp_div_r()
gmp_divexact()
gmp_fact()
gmp_gcd()
gmp_gcdext()
gmp_hamdist()
gmp_init()
gmp_intval()
gmp_invert()
gmp_jacobi()
gmp_legendre()
gmp_mod()
gmp_mul()
gmp_neg()
gmp_or()
gmp_perfect_square()
gmp_popcount()
gmp_pow()
gmp_powm()
gmp_prob_prime()
gmp_random()
gmp_scan0()
gmp_scan1()
gmp_setbit()
gmp_sign()
gmp_sqrt()
gmp_sqrtrm()
gmp_strval()
gmp_sub()
gmp_xor()
gmstrftime()
gregoriantojd()
gzclose()
gzcompress()
gzdeflate()
gzencode()
gzeof()
gzfile()
gzgetc()
gzgets()
gzgetss()
gzinflate()
gzopen()
gzpassthru()
gzputs()
gzread()
gzrewind()
gzseek()
gztell()
gzuncompress()
gzwrite()

H

header()
headers_sent()
hebrev()
hebrevc()
hexdec()
highlight_file()
highlight_string()
html_entity_decode()
htmlentities()
htmlspecialchars()
hw_api->checkin()
hw_api->checkout()
hw_api->children()
hw_api->content()
hw_api->copy()
hw_api->dbstat()
hw_api->dcstat()
hw_api->dstanchors()
hw_api->dstofsrcanchors()
hw_api->find()
hw_api->ftstat()
hw_api->hwstat()
hw_api->identify()
hw_api->info()
hw_api->insert()
hw_api->insertanchor()
hw_api->insertcollection()
hw_api->insertdocument()
hw_api->link()
hw_api->lock()
hw_api->move()
hw_api->object()
hw_api->objectbyanchor()
hw_api->parents()
hw_api->remove()
hw_api->replace()
hw_api->setcommitedversion()
hw_api->srcanchors()
hw_api->srcsofdst()
hw_api->unlock()
hw_api->user()
hw_api->userlist()
hw_api_attribute()
hw_api_attribute->key()
hw_api_attribute->langdepvalue()
hw_api_attribute->value()
hw_api_attribute->values()
hw_api_content()
hw_api_content->mimetype()
hw_api_content->read()
hw_api_error->count()
hw_api_error->reason()
hw_api_object()
hw_api_object->assign()
hw_api_object->attreditable()
hw_api_object->count()
hw_api_object->insert()
hw_api_object->remove()
hw_api_object->title()
hw_api_object->value()
hw_api_reason->description()
hw_api_reason->type()
hw_array2objrec()
hw_changeobject()
hw_children()
hw_childrenobj()
hw_close()
hw_connect()
hw_connection_info()
hw_cp()
hw_deleteobject()
hw_docbyanchor()
hw_docbyanchorobj()
hw_document_attributes()
hw_document_bodytag()
hw_document_content()
hw_document_setcontent()
hw_document_size()
hw_dummy()
hw_edittext()
hw_error()
hw_errormsg()
hw_free_document()
hw_getanchors()
hw_getanchorsobj()
hw_getandlock()
hw_getchildcoll()
hw_getchildcollobj()
hw_getchilddoccoll()
hw_getchilddoccollobj()
hw_getobject()
hw_getobjectbyquery()
hw_getobjectbyquerycoll()
hw_getobjectbyquerycollobj()
hw_getobjectbyqueryobj()
hw_getparents()
hw_getparentsobj()
hw_getrellink()
hw_getremote()
hw_getremotechildren()
hw_getsrcbydestobj()
hw_gettext()
hw_getusername()
hw_identify()
hw_incollections()
hw_info()
hw_inscoll()
hw_insdoc()
hw_insertanchors()
hw_insertdocument()
hw_insertobject()
hw_mapid()
hw_modifyobject()
hw_mv()
hw_new_document()
hw_objrec2array()
hw_output_document()
hw_pconnect()
hw_pipedocument()
hw_root()
hw_setlinkroot()
hw_stat()
hw_unlock()
hw_who()
hwapi_hgcsp()
hypot()

I

ibase_add_user()
ibase_blob_add()
ibase_blob_cancel()
ibase_blob_close()
ibase_blob_create()
ibase_blob_echo()
ibase_blob_get()
ibase_blob_import()
ibase_blob_info()
ibase_blob_open()
ibase_close()
ibase_commit()
ibase_connect()
ibase_delete_user()
ibase_errmsg()
ibase_execute()
ibase_fetch_assoc()
ibase_fetch_object()
ibase_fetch_row()
ibase_field_info()
ibase_free_query()
ibase_free_result()
ibase_modify_user()
ibase_num_fields()
ibase_pconnect()
ibase_prepare()
ibase_query()
ibase_rollback()
ibase_timefmt()
ibase_trans()
iconv()
iconv_get_encoding()
iconv_set_encoding()
ifx_affected_rows()
ifx_blobinfile_mode()
ifx_byteasvarchar()
ifx_close()
ifx_connect()
ifx_copy_blob()
ifx_create_blob()
ifx_create_char()
ifx_do()
ifx_error()
ifx_errormsg()
ifx_fetch_row()
ifx_fieldproperties()
ifx_fieldtypes()
ifx_free_blob()
ifx_free_char()
ifx_free_result()
ifx_get_blob()
ifx_get_char()
ifx_getsqlca()
ifx_htmltbl_result()
ifx_nullformat()
ifx_num_fields()
ifx_num_rows()
ifx_pconnect()
ifx_prepare()
ifx_query()
ifx_textasvarchar()
ifx_update_blob()
ifx_update_char()
ifxus_close_slob()
ifxus_create_slob()
ifxus_free_slob()
ifxus_open_slob()
ifxus_read_slob()
ifxus_seek_slob()
ifxus_tell_slob()
ifxus_write_slob()
ignore_user_abort()
image2wbmp()
image_type_to_mime_type()
imagealphablending()
imageantialias()
imagearc()
imagechar()
imagecharup()
imagecolorallocate()
imagecolorallocatealpha()
imagecolorat()
imagecolorclosest()
imagecolorclosestalpha()
imagecolorclosesthwb()
imagecolordeallocate()
imagecolorexact()
imagecolorexactalpha()
imagecolormatch()
imagecolorresolve()
imagecolorresolvealpha()
imagecolorset()
imagecolorsforindex()
imagecolorstotal()
imagecolortransparent()
imagecopy()
imagecopymerge()
imagecopymergegray()
imagecopyresampled()
imagecopyresized()
imagecreate()
imagecreatefromgd()
imagecreatefromgd2()
imagecreatefromgd2part()
imagecreatefromgif()
imagecreatefromjpeg()
imagecreatefrompng()
imagecreatefromstring()
imagecreatefromwbmp()
imagecreatefromxbm()
imagecreatefromxpm()
imagecreatetruecolor()
imagedashedline()
imagedestroy()
imageellipse()
imagefill()
imagefilledarc()
imagefilledellipse()
imagefilledpolygon()
imagefilledrectangle()
imagefilltoborder()
imagefontheight()
imagefontwidth()
imageftbbox()
imagefttext()
imagegammacorrect()
imagegd()
imagegd2()
imagegif()
imageinterlace()
imageistruecolor()
imagejpeg()
imageline()
imageloadfont()
imagepalettecopy()
imagepng()
imagepolygon()
imagepsbbox()
imagepscopyfont()
imagepsencodefont()
imagepsextendfont()
imagepsfreefont()
imagepsloadfont()
imagepsslantfont()
imagepstext()
imagerectangle()
imagerotate()
imagesavealpha()
imagesetbrush()
imagesetpixel()
imagesetstyle()
imagesetthickness()
imagesettile()
imagestring()
imagestringup()
imagesx()
imagesy()
imagetruecolortopalette()
imagettfbbox()
imagettftext()
imagetypes()
imagewbmp()
imap_8bit()
imap_alerts()
imap_append()
imap_base64()
imap_binary()
imap_body()
imap_bodystruct()
imap_check()
imap_clearflag_full()
imap_close()
imap_createmailbox()
imap_delete()
imap_deletemailbox()
imap_errors()
imap_expunge()
imap_fetch_overview()
imap_fetchbody()
imap_fetchheader()
imap_fetchstructure()
imap_get_quota()
imap_get_quotaroot()
imap_getmailboxes()
imap_getsubscribed()
imap_header()
imap_headerinfo()
imap_headers()
imap_last_error()
imap_list()
imap_listmailbox()
imap_listscan()
imap_listsubscribed()
imap_lsub()
imap_mail()
imap_mail_compose()
imap_mail_copy()
imap_mail_move()
imap_mailboxmsginfo()
imap_mime_header_decode()
imap_msgno()
imap_num_msg()
imap_num_recent()
imap_open()
imap_ping()
imap_qprint()
imap_renamemailbox()
imap_reopen()
imap_rfc822_parse_adrlist()
imap_rfc822_parse_headers()
imap_rfc822_write_address()
imap_scanmailbox()
imap_search()
imap_set_quota()
imap_setacl()
imap_setflag_full()
imap_sort()
imap_status()
imap_subscribe()
imap_thread()
imap_uid()
imap_undelete()
imap_unsubscribe()
imap_utf7_decode()
imap_utf7_encode()
imap_utf8()
implode()
import_request_variables()
in_array()
ingres_autocommit()
ingres_close()
ingres_commit()
ingres_connect()
ingres_fetch_array()
ingres_fetch_object()
ingres_fetch_row()
ingres_field_length()
ingres_field_name()
ingres_field_nullable()
ingres_field_precision()
ingres_field_scale()
ingres_field_type()
ingres_num_fields()
ingres_num_rows()
ingres_pconnect()
ingres_query()
ingres_rollback()
ini_alter()
ini_get()
ini_get_all()
ini_restore()
ini_set()
intval()
ip2long()
iptcembed()
iptcparse()
ircg_channel_mode()
ircg_disconnect()
ircg_fetch_error_msg()
ircg_get_username()
ircg_html_encode()
ircg_ignore_add()
ircg_ignore_del()
ircg_is_conn_alive()
ircg_join()
ircg_kick()
ircg_lookup_format_messages()
ircg_msg()
ircg_nick()
ircg_nickname_escape()
ircg_nickname_unescape()
ircg_notice()
ircg_part()
ircg_pconnect()
ircg_register_format_messages()
ircg_set_current()
ircg_set_file()
ircg_set_on_die()
ircg_topic()
ircg_whois()
is_a()
is_array()
is_bool()
is_callable()
is_dir()
is_double()
is_executable()
is_file()
is_finite()
is_float()
is_infinite()
is_int()
is_integer()
is_link()
is_long()
is_nan()
is_null()
is_numeric()
is_object()
is_readable()
is_real()
is_resource()
is_scalar()
is_string()
is_subclass_of()
is_uploaded_file()
is_writable()
is_writeable()
isset()

J

java_last_exception_clear()
java_last_exception_get()
jddayofweek()
jdmonthname()
jdtofrench()
jdtogregorian()
jdtojewish()
jdtojulian()
jdtounix()
jewishtojd()
join()
jpeg2wbmp()
juliantojd()

K

key()
krsort()
ksort()

L

lcg_value()
ldap_8859_to_t61()
ldap_add()
ldap_bind()
ldap_close()
ldap_compare()
ldap_connect()
ldap_count_entries()
ldap_delete()
ldap_dn2ufn()
ldap_err2str()
ldap_errno()
ldap_error()
ldap_explode_dn()
ldap_first_attribute()
ldap_first_entry()
ldap_first_reference()
ldap_free_result()
ldap_get_attributes()
ldap_get_dn()
ldap_get_entries()
ldap_get_option()
ldap_get_values()
ldap_get_values_len()
ldap_list()
ldap_mod_add()
ldap_mod_del()
ldap_mod_replace()
ldap_modify()
ldap_next_attribute()
ldap_next_entry()
ldap_next_reference()
ldap_parse_reference()
ldap_parse_result()
ldap_read()
ldap_rename()
ldap_search()
ldap_set_option()
ldap_set_rebind_proc()
ldap_sort()
ldap_start_tls()
ldap_t61_to_8859()
ldap_unbind()
levenshtein()
link()
linkinfo()
list()
localeconv()
localtime()
log()
log10()
log1p()
long2ip()
lstat()
ltrim()

M

mail()
mailparse_determine_best_xfer_encoding()
mailparse_msg_create()
mailparse_msg_extract_part()
mailparse_msg_extract_part_file()
mailparse_msg_free()
mailparse_msg_get_part()
mailparse_msg_get_part_data()
mailparse_msg_get_structure()
mailparse_msg_parse()
mailparse_msg_parse_file()
mailparse_rfc822_parse_addresses()
mailparse_stream_encode()
mailparse_uudecode_all()
main()
max()
mb_convert_case()
mb_convert_encoding()
mb_convert_kana()
mb_convert_variables()
mb_decode_mimeheader()
mb_decode_numericentity()
mb_detect_encoding()
mb_detect_order()
mb_encode_mimeheader()
mb_encode_numericentity()
mb_ereg()
mb_ereg_match()
mb_ereg_replace()
mb_ereg_search()
mb_ereg_search_getpos()
mb_ereg_search_getregs()
mb_ereg_search_init()
mb_ereg_search_pos()
mb_ereg_search_regs()
mb_ereg_search_setpos()
mb_eregi()
mb_eregi_replace()
mb_get_info()
mb_http_input()
mb_http_output()
mb_internal_encoding()
mb_language()
mb_output_handler()
mb_parse_str()
mb_preferred_mime_name()
mb_regex_encoding()
mb_regex_set_options()
mb_send_mail()
mb_split()
mb_strcut()
mb_strimwidth()
mb_strlen()
mb_strpos()
mb_strrpos()
mb_strtolower()
mb_strtoupper()
mb_strwidth()
mb_substitute_character()
mb_substr()
mb_substr_count()
mcal_append_event()
mcal_close()
mcal_create_calendar()
mcal_date_compare()
mcal_date_valid()
mcal_day_of_week()
mcal_day_of_year()
mcal_days_in_month()
mcal_delete_calendar()
mcal_delete_event()
mcal_event_add_attribute()
mcal_event_init()
mcal_event_set_alarm()
mcal_event_set_category()
mcal_event_set_class()
mcal_event_set_description()
mcal_event_set_end()
mcal_event_set_recur_daily()
mcal_event_set_recur_monthly_mday()
mcal_event_set_recur_monthly_wday()
mcal_event_set_recur_none()
mcal_event_set_recur_weekly()
mcal_event_set_recur_yearly()
mcal_event_set_start()
mcal_event_set_title()
mcal_expunge()
mcal_fetch_current_stream_event()
mcal_fetch_event()
mcal_is_leap_year()
mcal_list_alarms()
mcal_list_events()
mcal_next_recurrence()
mcal_open()
mcal_popen()
mcal_rename_calendar()
mcal_reopen()
mcal_snooze()
mcal_store_event()
mcal_time_valid()
mcal_week_of_year()
mcrypt_cbc()
mcrypt_cfb()
mcrypt_create_iv()
mcrypt_decrypt()
mcrypt_ecb()
mcrypt_enc_get_algorithms_name()
mcrypt_enc_get_block_size()
mcrypt_enc_get_iv_size()
mcrypt_enc_get_key_size()
mcrypt_enc_get_modes_name()
mcrypt_enc_get_supported_key_sizes()
mcrypt_enc_is_block_algorithm()
mcrypt_enc_is_block_algorithm_mode()
mcrypt_enc_is_block_mode()
mcrypt_enc_self_test()
mcrypt_encrypt()
mcrypt_generic()
mcrypt_generic_deinit()
mcrypt_generic_end()
mcrypt_generic_init()
mcrypt_get_block_size()
mcrypt_get_cipher_name()
mcrypt_get_iv_size()
mcrypt_get_key_size()
mcrypt_list_algorithms()
mcrypt_list_modes()
mcrypt_module_close()
mcrypt_module_get_algo_block_size()
mcrypt_module_get_algo_key_size()
mcrypt_module_get_supported_key_sizes()
mcrypt_module_is_block_algorithm()
mcrypt_module_is_block_algorithm_mode()
mcrypt_module_is_block_mode()
mcrypt_module_open()
mcrypt_module_self_test()
mcrypt_ofb()
mcve_adduser()
mcve_adduserarg()
mcve_bt()
mcve_checkstatus()
mcve_chkpwd()
mcve_chngpwd()
mcve_completeauthorizations()
mcve_connect()
mcve_connectionerror()
mcve_deleteresponse()
mcve_deletetrans()
mcve_deleteusersetup()
mcve_deluser()
mcve_destroyconn()
mcve_destroyengine()
mcve_disableuser()
mcve_edituser()
mcve_enableuser()
mcve_force()
mcve_getcell()
mcve_getcellbynum()
mcve_getcommadelimited()
mcve_getheader()
mcve_getuserarg()
mcve_getuserparam()
mcve_gft()
mcve_gl()
mcve_gut()
mcve_initconn()
mcve_initengine()
mcve_initusersetup()
mcve_iscommadelimited()
mcve_liststats()
mcve_listusers()
mcve_maxconntimeout()
mcve_monitor()
mcve_numcolumns()
mcve_numrows()
mcve_override()
mcve_parsecommadelimited()
mcve_ping()
mcve_preauth()
mcve_preauthcompletion()
mcve_qc()
mcve_responseparam()
mcve_return()
mcve_returncode()
mcve_returnstatus()
mcve_sale()
mcve_setblocking()
mcve_setdropfile()
mcve_setip()
mcve_setssl()
mcve_setssl_files()
mcve_settimeout()
mcve_settle()
mcve_text_avs()
mcve_text_code()
mcve_text_cv()
mcve_transactionauth()
mcve_transactionavs()
mcve_transactionbatch()
mcve_transactioncv()
mcve_transactionid()
mcve_transactionitem()
mcve_transactionssent()
mcve_transactiontext()
mcve_transinqueue()
mcve_transnew()
mcve_transparam()
mcve_transsend()
mcve_ub()
mcve_uwait()
mcve_verifyconnection()
mcve_verifysslcert()
mcve_void()
md5()
md5_file()
mdecrypt_generic()
memory_get_usage()
metaphone()
method_exists()
mhash()
mhash_count()
mhash_get_block_size()
mhash_get_hash_name()
mhash_keygen_s2k()
microtime()
mime_content_type()
min()
ming_setcubicthreshold()
ming_setscale()
ming_useswfversion()
mkdir()
mktime()
money_format()
move_uploaded_file()
msession_connect()
msession_count()
msession_create()
msession_destroy()
msession_disconnect()
msession_find()
msession_get()
msession_get_array()
msession_getdata()
msession_inc()
msession_list()
msession_listvar()
msession_lock()
msession_plugin()
msession_randstr()
msession_set()
msession_set_array()
msession_setdata()
msession_timeout()
msession_uniq()
msession_unlock()
msg_get_queue()
msg_receive()
msg_remove_queue()
msg_send()
msg_set_queue()
msg_stat_queue()
msql()
msql_affected_rows()
msql_close()
msql_connect()
msql_create_db()
msql_createdb()
msql_data_seek()
msql_dbname()
msql_drop_db()
msql_dropdb()
msql_error()
msql_fetch_array()
msql_fetch_field()
msql_fetch_object()
msql_fetch_row()
msql_field_seek()
msql_fieldflags()
msql_fieldlen()
msql_fieldname()
msql_fieldtable()
msql_fieldtype()
msql_free_result()
msql_freeresult()
msql_list_dbs()
msql_list_fields()
msql_list_tables()
msql_listdbs()
msql_listfields()
msql_listtables()
msql_num_fields()
msql_num_rows()
msql_numfields()
msql_numrows()
msql_pconnect()
msql_query()
msql_regcase()
msql_result()
msql_select_db()
msql_selectdb()
msql_tablename()
mssql_bind()
mssql_close()
mssql_connect()
mssql_data_seek()
mssql_execute()
mssql_fetch_array()
mssql_fetch_assoc()
mssql_fetch_batch()
mssql_fetch_field()
mssql_fetch_object()
mssql_fetch_row()
mssql_field_length()
mssql_field_name()
mssql_field_seek()
mssql_field_type()
mssql_free_result()
mssql_free_statement()
mssql_get_last_message()
mssql_guid_string()
mssql_init()
mssql_min_error_severity()
mssql_min_message_severity()
mssql_next_result()
mssql_num_fields()
mssql_num_rows()
mssql_pconnect()
mssql_query()
mssql_result()
mssql_rows_affected()
mssql_select_db()
mt_getrandmax()
mt_rand()
mt_srand()
muscat_close()
muscat_get()
muscat_give()
muscat_setup()
muscat_setup_net()
mysql_affected_rows()
mysql_change_user()
mysql_client_encoding()
mysql_close()
mysql_connect()
mysql_create_db()
mysql_data_seek()
mysql_db_name()
mysql_db_query()
mysql_drop_db()
mysql_errno()
mysql_error()
mysql_escape_string()
mysql_fetch_array()
mysql_fetch_assoc()
mysql_fetch_field()
mysql_fetch_lengths()
mysql_fetch_object()
mysql_fetch_row()
mysql_field_flags()
mysql_field_len()
mysql_field_name()
mysql_field_seek()
mysql_field_table()
mysql_field_type()
mysql_free_result()
mysql_get_client_info()
mysql_get_host_info()
mysql_get_proto_info()
mysql_get_server_info()
mysql_info()
mysql_insert_id()
mysql_list_dbs()
mysql_list_fields()
mysql_list_processes()
mysql_list_tables()
mysql_num_fields()
mysql_num_rows()
mysql_pconnect()
mysql_ping()
mysql_query()
mysql_real_escape_string()
mysql_result()
mysql_select_db()
mysql_stat()
mysql_tablename()
mysql_thread_id()
mysql_unbuffered_query()
mysqli_affected_rows()
mysqli_autocommit()
mysqli_bind_param()
mysqli_bind_result()
mysqli_change_user()
mysqli_character_set_name()
mysqli_close()
mysqli_commit()
mysqli_connect()
mysqli_data_seek()
mysqli_debug()
mysqli_disable_reads_from_master()
mysqli_disable_rpl_parse()
mysqli_dump_debug_info()
mysqli_enable_reads_from_master()
mysqli_enable_rpl_parse()
mysqli_errno()
mysqli_error()
mysqli_execute()
mysqli_fetch()
mysqli_fetch_array()
mysqli_fetch_assoc()
mysqli_fetch_field()
mysqli_fetch_field_direct()
mysqli_fetch_fields()
mysqli_fetch_lengths()
mysqli_fetch_object()
mysqli_fetch_row()
mysqli_field_count()
mysqli_field_seek()
mysqli_field_tell()
mysqli_free_result()
mysqli_get_client_info()
mysqli_get_host_info()
mysqli_get_proto_info()
mysqli_get_server_info()
mysqli_get_server_version()
mysqli_info()
mysqli_init()
mysqli_insert_id()
mysqli_kill()
mysqli_master_query()
mysqli_num_fields()
mysqli_num_rows()
mysqli_options()
mysqli_param_count()
mysqli_ping()
mysqli_prepare()
mysqli_prepare_result()
mysqli_profiler()
mysqli_query()
mysqli_read_query_result()
mysqli_real_connect()
mysqli_real_escape_string()
mysqli_real_query()
mysqli_reload()
mysqli_rollback()
mysqli_rpl_parse_enabled()
mysqli_rpl_probe()
mysqli_rpl_query_type()
mysqli_select_db()
mysqli_send_long_data()
mysqli_send_query()
mysqli_slave_query()
mysqli_ssl_set()
mysqli_stat()
mysqli_stmt_affected_rows()
mysqli_stmt_close()
mysqli_stmt_errno()
mysqli_stmt_error()
mysqli_stmt_store_result()
mysqli_store_result()
mysqli_thread_id()
mysqli_thread_safe()
mysqli_use_result()
mysqli_warning_count()

N

natcasesort()
natsort()
ncurses_addch()
ncurses_addchnstr()
ncurses_addchstr()
ncurses_addnstr()
ncurses_addstr()
ncurses_assume_default_colors()
ncurses_attroff()
ncurses_attron()
ncurses_attrset()
ncurses_baudrate()
ncurses_beep()
ncurses_bkgd()
ncurses_bkgdset()
ncurses_border()
ncurses_bottom_panel()
ncurses_can_change_color()
ncurses_cbreak()
ncurses_clear()
ncurses_clrtobot()
ncurses_clrtoeol()
ncurses_color_content()
ncurses_color_set()
ncurses_curs_set()
ncurses_def_prog_mode()
ncurses_def_shell_mode()
ncurses_define_key()
ncurses_del_panel()
ncurses_delay_output()
ncurses_delch()
ncurses_deleteln()
ncurses_delwin()
ncurses_doupdate()
ncurses_echo()
ncurses_echochar()
ncurses_end()
ncurses_erase()
ncurses_erasechar()
ncurses_filter()
ncurses_flash()
ncurses_flushinp()
ncurses_getch()
ncurses_getmaxyx()
ncurses_getmouse()
ncurses_getyx()
ncurses_halfdelay()
ncurses_has_colors()
ncurses_has_ic()
ncurses_has_il()
ncurses_has_key()
ncurses_hide_panel()
ncurses_hline()
ncurses_inch()
ncurses_init()
ncurses_init_color()
ncurses_init_pair()
ncurses_insch()
ncurses_insdelln()
ncurses_insertln()
ncurses_insstr()
ncurses_instr()
ncurses_isendwin()
ncurses_keyok()
ncurses_keypad()
ncurses_killchar()
ncurses_longname()
ncurses_meta()
ncurses_mouse_trafo()
ncurses_mouseinterval()
ncurses_mousemask()
ncurses_move()
ncurses_move_panel()
ncurses_mvaddch()
ncurses_mvaddchnstr()
ncurses_mvaddchstr()
ncurses_mvaddnstr()
ncurses_mvaddstr()
ncurses_mvcur()
ncurses_mvdelch()
ncurses_mvgetch()
ncurses_mvhline()
ncurses_mvinch()
ncurses_mvvline()
ncurses_mvwaddstr()
ncurses_napms()
ncurses_new_panel()
ncurses_newpad()
ncurses_newwin()
ncurses_nl()
ncurses_nocbreak()
ncurses_noecho()
ncurses_nonl()
ncurses_noqiflush()
ncurses_noraw()
ncurses_pair_content()
ncurses_panel_above()
ncurses_panel_below()
ncurses_panel_window()
ncurses_pnoutrefresh()
ncurses_prefresh()
ncurses_putp()
ncurses_qiflush()
ncurses_raw()
ncurses_refresh()
ncurses_replace_panel()
ncurses_reset_prog_mode()
ncurses_reset_shell_mode()
ncurses_resetty()
ncurses_savetty()
ncurses_scr_dump()
ncurses_scr_init()
ncurses_scr_restore()
ncurses_scr_set()
ncurses_scrl()
ncurses_show_panel()
ncurses_slk_attr()
ncurses_slk_attroff()
ncurses_slk_attron()
ncurses_slk_attrset()
ncurses_slk_clear()
ncurses_slk_color()
ncurses_slk_init()
ncurses_slk_noutrefresh()
ncurses_slk_refresh()
ncurses_slk_restore()
ncurses_slk_set()
ncurses_slk_touch()
ncurses_standend()
ncurses_standout()
ncurses_start_color()
ncurses_termattrs()
ncurses_termname()
ncurses_timeout()
ncurses_top_panel()
ncurses_typeahead()
ncurses_ungetch()
ncurses_ungetmouse()
ncurses_update_panels()
ncurses_use_default_colors()
ncurses_use_env()
ncurses_use_extended_names()
ncurses_vidattr()
ncurses_vline()
ncurses_waddch()
ncurses_waddstr()
ncurses_wattroff()
ncurses_wattron()
ncurses_wattrset()
ncurses_wborder()
ncurses_wclear()
ncurses_wcolor_set()
ncurses_werase()
ncurses_wgetch()
ncurses_whline()
ncurses_wmouse_trafo()
ncurses_wmove()
ncurses_wnoutrefresh()
ncurses_wrefresh()
ncurses_wstandend()
ncurses_wstandout()
ncurses_wvline()
next()
ngettext()
nl2br()
nl_langinfo()
notes_body()
notes_copy_db()
notes_create_db()
notes_create_note()
notes_drop_db()
notes_find_note()
notes_header_info()
notes_list_msgs()
notes_mark_read()
notes_mark_unread()
notes_nav_create()
notes_search()
notes_unread()
notes_version()
nsapi_request_headers()
nsapi_response_headers()
nsapi_virtual()
number_format()

O

ob_clean()
ob_end_clean()
ob_end_flush()
ob_flush()
ob_get_clean()
ob_get_contents()
ob_get_length()
ob_get_level()
ob_get_status()
ob_gzhandler()
ob_iconv_handler()
ob_implicit_flush()
ob_start()
ocibindbyname()
ocicancel()
ocicollappend()
ocicollassign()
ocicollassignelem()
ocicollgetelem()
ocicollmax()
ocicollsize()
ocicolltrim()
ocicolumnisnull()
ocicolumnname()
ocicolumnprecision()
ocicolumnscale()
ocicolumnsize()
ocicolumntype()
ocicolumntyperaw()
ocicommit()
ocidefinebyname()
ocierror()
ociexecute()
ocifetch()
ocifetchinto()
ocifetchstatement()
ocifreecollection()
ocifreecursor()
ocifreedesc()
ocifreestatement()
ociinternaldebug()
ociloadlob()
ocilogoff()
ocilogon()
ocinewcollection()
ocinewcursor()
ocinewdescriptor()
ocinlogon()
ocinumcols()
ociparse()
ociplogon()
ociresult()
ocirollback()
ocirowcount()
ocisavelob()
ocisavelobfile()
ociserverversion()
ocisetprefetch()
ocistatementtype()
ociwritelobtofile()
octdec()
odbc_autocommit()
odbc_binmode()
odbc_close()
odbc_close_all()
odbc_columnprivileges()
odbc_columns()
odbc_commit()
odbc_connect()
odbc_cursor()
odbc_data_source()
odbc_do()
odbc_error()
odbc_errormsg()
odbc_exec()
odbc_execute()
odbc_fetch_array()
odbc_fetch_into()
odbc_fetch_object()
odbc_fetch_row()
odbc_field_len()
odbc_field_name()
odbc_field_num()
odbc_field_precision()
odbc_field_scale()
odbc_field_type()
odbc_foreignkeys()
odbc_free_result()
odbc_gettypeinfo()
odbc_longreadlen()
odbc_next_result()
odbc_num_fields()
odbc_num_rows()
odbc_pconnect()
odbc_prepare()
odbc_primarykeys()
odbc_procedurecolumns()
odbc_procedures()
odbc_result()
odbc_result_all()
odbc_rollback()
odbc_setoption()
odbc_specialcolumns()
odbc_statistics()
odbc_tableprivileges()
odbc_tables()
opendir()
openlog()
openssl_csr_export()
openssl_csr_export_to_file()
openssl_csr_new()
openssl_csr_sign()
openssl_error_string()
openssl_free_key()
openssl_get_privatekey()
openssl_get_publickey()
openssl_open()
openssl_pkcs7_decrypt()
openssl_pkcs7_encrypt()
openssl_pkcs7_sign()
openssl_pkcs7_verify()
openssl_pkey_export()
openssl_pkey_export_to_file()
openssl_pkey_get_private()
openssl_pkey_get_public()
openssl_pkey_new()
openssl_private_decrypt()
openssl_private_encrypt()
openssl_public_decrypt()
openssl_public_encrypt()
openssl_seal()
openssl_sign()
openssl_verify()
openssl_x509_check_private_key()
openssl_x509_checkpurpose()
openssl_x509_export()
openssl_x509_export_to_file()
openssl_x509_free()
openssl_x509_parse()
openssl_x509_read()
ora_bind()
ora_close()
ora_columnname()
ora_columnsize()
ora_columntype()
ora_commit()
ora_commitoff()
ora_commiton()
ora_do()
ora_error()
ora_errorcode()
ora_exec()
ora_fetch()
ora_fetch_into()
ora_getcolumn()
ora_logoff()
ora_logon()
ora_numcols()
ora_numrows()
ora_open()
ora_parse()
ora_plogon()
ora_rollback()
ord()
overload()
ovrimos_close()
ovrimos_commit()
ovrimos_connect()
ovrimos_cursor()
ovrimos_exec()
ovrimos_execute()
ovrimos_fetch_into()
ovrimos_fetch_row()
ovrimos_field_len()
ovrimos_field_name()
ovrimos_field_num()
ovrimos_field_type()
ovrimos_free_result()
ovrimos_longreadlen()
ovrimos_num_fields()
ovrimos_num_rows()
ovrimos_prepare()
ovrimos_result()
ovrimos_result_all()
ovrimos_rollback()

P

pack()
parse_ini_file()
parse_str()
parse_url()
passthru()
pathinfo()
pattern modifiers()
pattern syntax()
pclose()
pcntl_exec()
pcntl_fork()
pcntl_signal()
pcntl_waitpid()
pcntl_wexitstatus()
pcntl_wifexited()
pcntl_wifsignaled()
pcntl_wifstopped()
pcntl_wstopsig()
pcntl_wtermsig()
pdf_add_annotation()
pdf_add_bookmark()
pdf_add_launchlink()
pdf_add_locallink()
pdf_add_note()
pdf_add_outline()
pdf_add_pdflink()
pdf_add_thumbnail()
pdf_add_weblink()
pdf_arc()
pdf_arcn()
pdf_attach_file()
pdf_begin_page()
pdf_begin_pattern()
pdf_begin_template()
pdf_circle()
pdf_clip()
pdf_close()
pdf_close_image()
pdf_close_pdi()
pdf_close_pdi_page()
pdf_closepath()
pdf_closepath_fill_stroke()
pdf_closepath_stroke()
pdf_concat()
pdf_continue_text()
pdf_curveto()
pdf_delete()
pdf_end_page()
pdf_end_pattern()
pdf_end_template()
pdf_endpath()
pdf_fill()
pdf_fill_stroke()
pdf_findfont()
pdf_get_buffer()
pdf_get_font()
pdf_get_fontname()
pdf_get_fontsize()
pdf_get_image_height()
pdf_get_image_width()
pdf_get_majorversion()
pdf_get_minorversion()
pdf_get_parameter()
pdf_get_pdi_parameter()
pdf_get_pdi_value()
pdf_get_value()
pdf_initgraphics()
pdf_lineto()
pdf_makespotcolor()
pdf_moveto()
pdf_new()
pdf_open()
pdf_open_ccitt()
pdf_open_file()
pdf_open_gif()
pdf_open_image()
pdf_open_image_file()
pdf_open_jpeg()
pdf_open_memory_image()
pdf_open_pdi()
pdf_open_pdi_page()
pdf_open_png()
pdf_open_tiff()
pdf_place_image()
pdf_place_pdi_page()
pdf_rect()
pdf_restore()
pdf_rotate()
pdf_save()
pdf_scale()
pdf_set_border_color()
pdf_set_border_dash()
pdf_set_border_style()
pdf_set_char_spacing()
pdf_set_duration()
pdf_set_font()
pdf_set_horiz_scaling()
pdf_set_info()
pdf_set_info_author()
pdf_set_info_creator()
pdf_set_info_keywords()
pdf_set_info_subject()
pdf_set_info_title()
pdf_set_leading()
pdf_set_parameter()
pdf_set_text_matrix()
pdf_set_text_pos()
pdf_set_text_rendering()
pdf_set_text_rise()
pdf_set_value()
pdf_set_word_spacing()
pdf_setcolor()
pdf_setdash()
pdf_setflat()
pdf_setfont()
pdf_setgray()
pdf_setgray_fill()
pdf_setgray_stroke()
pdf_setlinecap()
pdf_setlinejoin()
pdf_setlinewidth()
pdf_setmatrix()
pdf_setmiterlimit()
pdf_setpolydash()
pdf_setrgbcolor()
pdf_setrgbcolor_fill()
pdf_setrgbcolor_stroke()
pdf_show()
pdf_show_boxed()
pdf_show_xy()
pdf_skew()
pdf_stringwidth()
pdf_stroke()
pdf_translate()
pfpro_cleanup()
pfpro_init()
pfpro_process()
pfpro_process_raw()
pfpro_version()
pfsockopen()
pg_affected_rows()
pg_cancel_query()
pg_client_encoding()
pg_close()
pg_connect()
pg_connection_busy()
pg_connection_reset()
pg_connection_status()
pg_convert()
pg_copy_from()
pg_copy_to()
pg_dbname()
pg_delete()
pg_end_copy()
pg_escape_bytea()
pg_escape_string()
pg_fetch_all()
pg_fetch_array()
pg_fetch_assoc()
pg_fetch_object()
pg_fetch_result()
pg_fetch_row()
pg_field_is_null()
pg_field_name()
pg_field_num()
pg_field_prtlen()
pg_field_size()
pg_field_type()
pg_free_result()
pg_get_notify()
pg_get_pid()
pg_get_result()
pg_host()
pg_insert()
pg_last_error()
pg_last_notice()
pg_last_oid()
pg_lo_close()
pg_lo_create()
pg_lo_export()
pg_lo_import()
pg_lo_open()
pg_lo_read()
pg_lo_read_all()
pg_lo_seek()
pg_lo_tell()
pg_lo_unlink()
pg_lo_write()
pg_meta_data()
pg_num_fields()
pg_num_rows()
pg_options()
pg_pconnect()
pg_ping()
pg_port()
pg_put_line()
pg_query()
pg_result_error()
pg_result_seek()
pg_result_status()
pg_select()
pg_send_query()
pg_set_client_encoding()
pg_trace()
pg_tty()
pg_unescape_bytea()
pg_untrace()
pg_update()
php_ini_scanned_files()
php_logo_guid()
php_sapi_name()
php_uname()
phpcredits()
phpinfo()
phpversion()
pi()
png2wbmp()
popen()
pos()
posix_ctermid()
posix_get_last_error()
posix_getcwd()
posix_getegid()
posix_geteuid()
posix_getgid()
posix_getgrgid()
posix_getgrnam()
posix_getgroups()
posix_getlogin()
posix_getpgid()
posix_getpgrp()
posix_getpid()
posix_getppid()
posix_getpwnam()
posix_getpwuid()
posix_getrlimit()
posix_getsid()
posix_getuid()
posix_isatty()
posix_kill()
posix_mkfifo()
posix_setegid()
posix_seteuid()
posix_setgid()
posix_setpgid()
posix_setsid()
posix_setuid()
posix_strerror()
posix_times()
posix_ttyname()
posix_uname()
pow()
preg_grep()
preg_match()
preg_match_all()
preg_quote()
preg_replace()
preg_replace_callback()
preg_split()
prev()
print()
print_r()
printer_abort()
printer_close()
printer_create_brush()
printer_create_dc()
printer_create_font()
printer_create_pen()
printer_delete_brush()
printer_delete_dc()
printer_delete_font()
printer_delete_pen()
printer_draw_bmp()
printer_draw_chord()
printer_draw_elipse()
printer_draw_line()
printer_draw_pie()
printer_draw_rectangle()
printer_draw_roundrect()
printer_draw_text()
printer_end_doc()
printer_end_page()
printer_get_option()
printer_list()
printer_logical_fontheight()
printer_open()
printer_select_brush()
printer_select_font()
printer_select_pen()
printer_set_option()
printer_start_doc()
printer_start_page()
printer_write()
printf()
proc_close()
proc_get_status()
proc_nice()
proc_open()
proc_terminate()
pspell_add_to_personal()
pspell_add_to_session()
pspell_check()
pspell_clear_session()
pspell_config_create()
pspell_config_ignore()
pspell_config_mode()
pspell_config_personal()
pspell_config_repl()
pspell_config_runtogether()
pspell_config_save_repl()
pspell_new()
pspell_new_config()
pspell_new_personal()
pspell_save_wordlist()
pspell_store_replacement()
pspell_suggest()
putenv()

Q

qdom_error()
qdom_tree()
quoted_printable_decode()
quotemeta()

R

rad2deg()
rand()
range()
rawurldecode()
rawurlencode()
read_exif_data()
readdir()
readfile()
readgzfile()
readline()
readline_add_history()
readline_clear_history()
readline_completion_function()
readline_info()
readline_list_history()
readline_read_history()
readline_write_history()
readlink()
realpath()
recode()
recode_file()
recode_string()
register_shutdown_function()
register_tick_function()
rename()
reset()
restore_error_handler()
restore_include_path()
rewind()
rewinddir()
rmdir()
round()
rsort()
rtrim()

S

scandir()
sem_acquire()
sem_get()
sem_release()
sem_remove()
serialize()
sesam_affected_rows()
sesam_commit()
sesam_connect()
sesam_diagnostic()
sesam_disconnect()
sesam_errormsg()
sesam_execimm()
sesam_fetch_array()
sesam_fetch_result()
sesam_fetch_row()
sesam_field_array()
sesam_field_name()
sesam_free_result()
sesam_num_fields()
sesam_query()
sesam_rollback()
sesam_seek_row()
sesam_settransaction()
session_cache_expire()
session_cache_limiter()
session_decode()
session_destroy()
session_encode()
session_get_cookie_params()
session_id()
session_is_registered()
session_module_name()
session_name()
session_regenerate_id()
session_register()
session_save_path()
session_set_cookie_params()
session_set_save_handler()
session_start()
session_unregister()
session_unset()
session_write_close()
set_error_handler()
set_file_buffer()
set_include_path()
set_magic_quotes_runtime()
set_time_limit()
setcookie()
setlocale()
settype()
sha1()
sha1_file()
shell_exec()
shm_attach()
shm_detach()
shm_get_var()
shm_put_var()
shm_remove()
shm_remove_var()
shmop_close()
shmop_delete()
shmop_open()
shmop_read()
shmop_size()
shmop_write()
show_source()
shuffle()
similar_text()
sin()
sinh()
sizeof()
sleep()
snmp_get_quick_print()
snmp_set_quick_print()
snmpget()
snmprealwalk()
snmpset()
snmpwalk()
snmpwalkoid()
socket_accept()
socket_bind()
socket_clear_error()
socket_close()
socket_connect()
socket_create()
socket_create_listen()
socket_create_pair()
socket_get_option()
socket_get_status()
socket_getpeername()
socket_getsockname()
socket_iovec_add()
socket_iovec_alloc()
socket_iovec_delete()
socket_iovec_fetch()
socket_iovec_free()
socket_iovec_set()
socket_last_error()
socket_listen()
socket_read()
socket_readv()
socket_recv()
socket_recvfrom()
socket_recvmsg()
socket_select()
socket_send()
socket_sendmsg()
socket_sendto()
socket_set_block()
socket_set_blocking()
socket_set_nonblock()
socket_set_option()
socket_set_timeout()
socket_shutdown()
socket_strerror()
socket_write()
socket_writev()
sort()
soundex()
split()
spliti()
sprintf()
sql_regcase()
sqlite_array_query()
sqlite_busy_timeout()
sqlite_changes()
sqlite_close()
sqlite_column()
sqlite_create_aggregate()
sqlite_create_function()
sqlite_current()
sqlite_error_string()
sqlite_escape_string()
sqlite_fetch_array()
sqlite_fetch_single()
sqlite_fetch_string()
sqlite_field_name()
sqlite_has_more()
sqlite_last_error()
sqlite_last_insert_rowid()
sqlite_libencoding()
sqlite_libversion()
sqlite_next()
sqlite_num_fields()
sqlite_num_rows()
sqlite_open()
sqlite_popen()
sqlite_query()
sqlite_rewind()
sqlite_seek()
sqlite_udf_decode_binary()
sqlite_udf_encode_binary()
sqlite_unbuffered_query()
sqrt()
srand()
sscanf()
stat()
str_ireplace()
str_pad()
str_repeat()
str_replace()
str_rot13()
str_shuffle()
str_split()
str_word_count()
strcasecmp()
strchr()
strcmp()
strcoll()
strcspn()
stream_context_create()
stream_context_get_options()
stream_context_set_option()
stream_context_set_params()
stream_copy_to_stream()
stream_filter_append()
stream_filter_prepend()
stream_filter_register()
stream_get_filters()
stream_get_line()
stream_get_meta_data()
stream_get_transports()
stream_get_wrappers()
stream_register_wrapper()
stream_select()
stream_set_blocking()
stream_set_timeout()
stream_set_write_buffer()
stream_socket_accept()
stream_socket_client()
stream_socket_get_name()
stream_socket_server()
stream_wrapper_register()
strftime()
strip_tags()
stripcslashes()
stripos()
stripslashes()
stristr()
strlen()
strnatcasecmp()
strnatcmp()
strncasecmp()
strncmp()
strpos()
strrchr()
strrev()
strripos()
strrpos()
strspn()
strstr()
strtok()
strtolower()
strtotime()
strtoupper()
strtr()
strval()
substr()
substr_count()
substr_replace()
swf_actiongeturl()
swf_actiongotoframe()
swf_actiongotolabel()
swf_actionnextframe()
swf_actionplay()
swf_actionprevframe()
swf_actionsettarget()
swf_actionstop()
swf_actiontogglequality()
swf_actionwaitforframe()
swf_addbuttonrecord()
swf_addcolor()
swf_closefile()
swf_definebitmap()
swf_definefont()
swf_defineline()
swf_definepoly()
swf_definerect()
swf_definetext()
swf_endbutton()
swf_enddoaction()
swf_endshape()
swf_endsymbol()
swf_fontsize()
swf_fontslant()
swf_fonttracking()
swf_getbitmapinfo()
swf_getfontinfo()
swf_getframe()
swf_labelframe()
swf_lookat()
swf_modifyobject()
swf_mulcolor()
swf_nextid()
swf_oncondition()
swf_openfile()
swf_ortho()
swf_ortho2()
swf_perspective()
swf_placeobject()
swf_polarview()
swf_popmatrix()
swf_posround()
swf_pushmatrix()
swf_removeobject()
swf_rotate()
swf_scale()
swf_setfont()
swf_setframe()
swf_shapearc()
swf_shapecurveto()
swf_shapecurveto3()
swf_shapefillbitmapclip()
swf_shapefillbitmaptile()
swf_shapefilloff()
swf_shapefillsolid()
swf_shapelinesolid()
swf_shapelineto()
swf_shapemoveto()
swf_showframe()
swf_startbutton()
swf_startdoaction()
swf_startshape()
swf_startsymbol()
swf_textwidth()
swf_translate()
swf_viewport()
swfaction()
swfbitmap()
swfbitmap->getheight()
swfbitmap->getwidth()
swfbutton()
swfbutton->addaction()
swfbutton->addshape()
swfbutton->setaction()
swfbutton->setdown()
swfbutton->sethit()
swfbutton->setover()
swfbutton->setup()
swfbutton_keypress()
swfdisplayitem()
swfdisplayitem->addcolor()
swfdisplayitem->move()
swfdisplayitem->moveto()
swfdisplayitem->multcolor()
swfdisplayitem->remove()
swfdisplayitem->rotate()
swfdisplayitem->rotateto()
swfdisplayitem->scale()
swfdisplayitem->scaleto()
swfdisplayitem->setdepth()
swfdisplayitem->setname()
swfdisplayitem->setratio()
swfdisplayitem->skewx()
swfdisplayitem->skewxto()
swfdisplayitem->skewy()
swfdisplayitem->skewyto()
swffill()
swffill->moveto()
swffill->rotateto()
swffill->scaleto()
swffill->skewxto()
swffill->skewyto()
swffont()
swffont->getwidth()
swfgradient()
swfgradient->addentry()
swfmorph()
swfmorph->getshape1()
swfmorph->getshape2()
swfmovie()
swfmovie->add()
swfmovie->nextframe()
swfmovie->output()
swfmovie->remove()
swfmovie->save()
swfmovie->setbackground()
swfmovie->setdimension()
swfmovie->setframes()
swfmovie->setrate()
swfmovie->streammp3()
swfshape()
swfshape->addfill()
swfshape->drawcurve()
swfshape->drawcurveto()
swfshape->drawline()
swfshape->drawlineto()
swfshape->movepen()
swfshape->movepento()
swfshape->setleftfill()
swfshape->setline()
swfshape->setrightfill()
swfsprite()
swfsprite->add()
swfsprite->nextframe()
swfsprite->remove()
swfsprite->setframes()
swftext()
swftext->addstring()
swftext->getwidth()
swftext->moveto()
swftext->setcolor()
swftext->setfont()
swftext->setheight()
swftext->setspacing()
swftextfield()
swftextfield->addstring()
swftextfield->align()
swftextfield->setbounds()
swftextfield->setcolor()
swftextfield->setfont()
swftextfield->setheight()
swftextfield->setindentation()
swftextfield->setleftmargin()
swftextfield->setlinespacing()
swftextfield->setmargins()
swftextfield->setname()
swftextfield->setrightmargin()
sybase_affected_rows()
sybase_close()
sybase_connect()
sybase_data_seek()
sybase_deadlock_retry_count()
sybase_fetch_array()
sybase_fetch_assoc()
sybase_fetch_field()
sybase_fetch_object()
sybase_fetch_row()
sybase_field_seek()
sybase_free_result()
sybase_get_last_message()
sybase_min_client_severity()
sybase_min_error_severity()
sybase_min_message_severity()
sybase_min_server_severity()
sybase_num_fields()
sybase_num_rows()
sybase_pconnect()
sybase_query()
sybase_result()
sybase_select_db()
sybase_set_message_handler()
sybase_unbuffered_query()
symlink()
syslog()
system()

T

tan()
tanh()
tempnam()
textdomain()
time()
tmpfile()
token_get_all()
token_name()
touch()
trigger_error()
trim()

U

uasort()
ucfirst()
ucwords()
udm_add_search_limit()
udm_alloc_agent()
udm_api_version()
udm_cat_list()
udm_cat_path()
udm_check_charset()
udm_check_stored()
udm_clear_search_limits()
udm_close_stored()
udm_crc32()
udm_errno()
udm_error()
udm_find()
udm_free_agent()
udm_free_ispell_data()
udm_free_res()
udm_get_doc_count()
udm_get_res_field()
udm_get_res_param()
udm_load_ispell_data()
udm_open_stored()
udm_set_agent_param()
uksort()
umask()
uniqid()
unixtojd()
unlink()
unpack()
unregister_tick_function()
unserialize()
unset()
urldecode()
urlencode()
user_error()
usleep()
usort()
utf8_decode()
utf8_encode()

V

var_dump()
var_export()
variant()
version_compare()
virtual()
vpopmail_add_alias_domain()
vpopmail_add_alias_domain_ex()
vpopmail_add_domain()
vpopmail_add_domain_ex()
vpopmail_add_user()
vpopmail_alias_add()
vpopmail_alias_del()
vpopmail_alias_del_domain()
vpopmail_alias_get()
vpopmail_alias_get_all()
vpopmail_auth_user()
vpopmail_del_domain()
vpopmail_del_domain_ex()
vpopmail_del_user()
vpopmail_error()
vpopmail_passwd()
vpopmail_set_user_quota()
vprintf()
vsprintf()

W

w32api_deftype()
w32api_init_dtype()
w32api_invoke_function()
w32api_register_function()
w32api_set_call_method()
wddx_add_vars()
wddx_deserialize()
wddx_packet_end()
wddx_packet_start()
wddx_serialize_value()
wddx_serialize_vars()
wordwrap()

X

xml_error_string()
xml_get_current_byte_index()
xml_get_current_column_number()
xml_get_current_line_number()
xml_get_error_code()
xml_parse()
xml_parse_into_struct()
xml_parser_create()
xml_parser_create_ns()
xml_parser_free()
xml_parser_get_option()
xml_parser_set_option()
xml_set_character_data_handler()
xml_set_default_handler()
xml_set_element_handler()
xml_set_end_namespace_decl_handler()
xml_set_external_entity_ref_handler()
xml_set_notation_decl_handler()
xml_set_object()
xml_set_processing_instruction_handler()
xml_set_start_namespace_decl_handler()
xml_set_unparsed_entity_decl_handler()
xmlrpc_decode()
xmlrpc_decode_request()
xmlrpc_encode()
xmlrpc_encode_request()
xmlrpc_get_type()
xmlrpc_parse_method_descriptions()
xmlrpc_server_add_introspection_data()
xmlrpc_server_call_method()
xmlrpc_server_create()
xmlrpc_server_destroy()
xmlrpc_server_register_introspection_callback()
xmlrpc_server_register_method()
xmlrpc_set_type()
xpath_eval()
xpath_eval_expression()
xpath_new_context()
xptr_eval()
xptr_new_context()
xslt_create()
xslt_errno()
xslt_error()
xslt_free()
xslt_process()
xslt_set_base()
xslt_set_encoding()
xslt_set_error_handler()
xslt_set_log()
xslt_set_sax_handler()
xslt_set_sax_handlers()
xslt_set_scheme_handler()
xslt_set_scheme_handlers()

Y

yaz_addinfo()
yaz_ccl_conf()
yaz_ccl_parse()
yaz_close()
yaz_connect()
yaz_database()
yaz_element()
yaz_errno()
yaz_error()
yaz_get_option()
yaz_hits()
yaz_itemorder()
yaz_present()
yaz_range()
yaz_record()
yaz_scan()
yaz_scan_result()
yaz_schema()
yaz_search()
yaz_set_option()
yaz_sort()
yaz_syntax()
yaz_wait()
yp_all()
yp_cat()
yp_err_string()
yp_errno()
yp_first()
yp_get_default_domain()
yp_master()
yp_match()
yp_next()
yp_order()

Z

zend_logo_guid()
zend_version()
zip_close()
zip_entry_close()
zip_entry_compressedsize()
zip_entry_compressionmethod()
zip_entry_filesize()
zip_entry_name()
zip_entry_open()
zip_entry_read()
zip_open()
zip_read()
zlib_get_coding_type()

Précédent | Sommaire | Suivant
Index des fonctions | Niveau supérieur | Eléments Absents


Eléments Absents

Manuel PHP
Précédent Suivant

Annexe P. Eléments Absents

Précédent | Sommaire | Suivant
Index des fonctions | Niveau supérieur | Version HTML Help


Manuel PHP

Copyright

Ce manuel est © Copyright 1997 - 2003 par PHP Documentation Group. Les membres de ce groupe sont listés sur la première page de ce manuel.

Ce manuel peut être redistribué sous licence GNU General Public License, comme stipulé par la Free Software Foundation; soit la version 2 de la Licence, soit (à votre choix), une version ultérieure.

Les membres du groupe de documentation sont listés au début de ce manuel. Si vous souhaitez des contacts avec les membres du groupe, écrivez à phpdoc@lists.php.net.

Les membres de la traduction française sont listés au début de ce manuel. Si vous souhaitez des contacts avec les membres du groupe, écrivez à doc-fr@lists.php.net.

La section 'Développer PHP 4.0' de ce manuel est copyrighté © 2000 par Zend Technologies, Ltd. Ce document ne peut pas être redistribué sans satisfaire les termes et conditions de la license Open Publication License, v1.0 ou plus récente (la dernière version est actuellement disponible à http://www.opencontent.org/openpub/).

Sommaire


Où trouver plus d'informations sur PHP?

Ce manuel n'a pas pour objectif de fournir des présentations sur les pratiques de programmation. Si vous être un néophyte total, ou même un programmeur débutant, vous pouvez trouver difficile d'apprendre la programmation PHP avec uniquement ce manuel : il serait mieux de trouver des ressources plus orientée vers l'apprentissage. Vous pouvez aussi trouver une liste des livres traitant de PHP sur http://www.php.net/books.php.

Il y a un bon nombre de listes de diffusion actives, traitant de tous les aspects du langage et de la programmation pHP. Si vous êtes bloqué par un problème, vous pourrez surement trouver de l'aide auprès de ces listes. Il existe un recensement des listes de diffusion à l'URL http://www.php.net/support.php, ainsi qu'une liste d'archives, et de ressources de support en ligne. De plus, à http://www.php.net/links.php, il y a une liste de sites web dédiés à PHP, avec des articles, des forum, des bibliothèques de code.

Précédent | Sommaire | Suivant
Versions de PHP documentées dans ce manuel | Niveau supérieur | Comment aider à l'amélioration de la documentation


Versions de PHP documentées dans ce manuel

Cette documentation contient des informations sur PHP 4, avec des notes compatibilités et de migration depuis PHP 3. Le comportement, les paramètres, les valeurs retournées, etc... qui ont changé entre deux versions du manuel PHP sont documentées dans les notes utilisateurs, et dans le manuel lui même.

Vous pouvez trouvez des portions de documentation destinées aux versions CVS de PHP, ce qui signifie que les toutes dernières versions de développement de PHP proposent ces fonctionnalités. Si vous n'êtes pas un développeur PHP, et que vous n'avez pas la possibilité d'utiliser la dernière version de PHP, les fonctionnalités indiquées comme "disponibles uniquement en CVS" ne vous seront pas accessibles. Toutefois, ces fonctionnalités seront surement disponible dans la prochaine version stable de PHP. Si vous voulez obtenir une version des derniers sources de PHP, passez par le serveur CVS anonyme.

Vous pouvez aussi rencontrer de la documentation qui est disponible pour une version de PHP qui n'est pas encore publiée (par exemple, des fonctions destinées à la version PHP 4.3.0, alors que la version publique actuelle est PHP 4.2.3). La plupart du temps, ce n'est pas une erreur de documentation, mais une indication sur les fonctionnalités qui seront disponible avec la prochaine publication de PHP.

Précédent | Sommaire | Suivant
Comment lire la définition d'une fonction (prototype) | Niveau supérieur | Où trouver plus d'informations sur PHP?


About This Edition

Manuel PHP
Précédent Suivant

Chapitre 57. About This Edition

The Windows HTML Help Edition of the PHP Manual is aimed at developers, who want the manual at hand every time, and would like to read manual pages and user notes without waiting for a remote webpage to download. This edition gives you the full content of the manual plus the user notes, with some great features provided by the viewer application by the scripts we use to generate this format and by other contributors in the form of skins.

This distribution of the PHP Manual contains many files, including the main manual file php_manual_en.chm. You can view the manual by double clicking on this file (as you already guessed). The user notes are in php_manual_notes.chm. You only need to have one copy of this file on your computer, regardless of how many languages you use to read the PHP Manual. The only requirement is that you need to have all php_manual_LANG.chm files in one directory with php_manual_notes.chm. You may also see a php_manual_en.chw file in the directory, it's generated the first time you use the index tab, and it contains an index with the manual's pages.

For those interested in technical details about Microsoft HTML Help, http://www.helpware.net/ is a great resource. For more information and positioning of Windows HTML Help in the Microsoft help formats and services history, see this WinWriters article.

Précédent | Sommaire | Suivant
Version HTML Help | Niveau supérieur | Using PHP Manual CHM Edition


CHM Edition Credits

Manuel PHP
Précédent

Chapitre 63. CHM Edition Credits

This enhanced version of the PHP Manual would never come to existence, if the following people would not help with their contribution to the project (in no particular order):

  • Holger Eggert, who created the two default designs, and provided many useability tips

  • Gonzalo De la Pena Andreu, who added many comments on how it would be ideal to provide the skinnable interface

  • Olexandr Vynnychenko added countless comments and testing all the time

  • Brendan Ferguson, who provided many optimizations, improvements to the HTML and JS codes behind the manual pages

  • Sandor Hojtsy, who coded the manual preferences desktop application

  • And at last but not least, everybody, who provided feedback through our mailing list, and in the user survey

Précédent | Sommaire
CSS classes | Niveau supérieur


Integrating the PHP Manual

Manuel PHP
Précédent Suivant

Chapitre 61. Integrating the PHP Manual

Note : The information provided here is mainly aimed at IDE authors, or advanced users who would like to integrate this CHM file to their favorite IDEs or other production environment components.

There are several editors out there with support for CHM integration, but you may need to know a few things about what the CHM contains to successfully integrate the manual into your environment.

The CHM is built using XSL style sheets from XML sources. This is unique currently in the PHP Manual family, as all other versions are generated using DSSSL style sheets. This also means, that non-intentional rendering differences may come up. A special conversion script is run on the XSLT output, adding several cute features, and packing up the manual with the preferences files and skin examples.

If you never worked with CHMs, you can think of them as compressed files with OS supported access for files inside and some added search and index support. However CHMs can only be viewed using the HTML Help Viewer, you can directly access files inside them using a special URL prefix, the CHM file name and the file you request from inside. As all the help content is stored in HTML files, you can show pages of the CHM in Internet Explorer.

Assume that you placed your php_manual_en.chm to c:\phpmanual the index file in the manual (which you see the first time) can be accessed with the following URL: mk:@MSITStore:C:\phpmanual\php_manual_en.chm::/_index.html. Here mk:@MSITStore: is the special "protocol", C:\phpmanual\php_manual_en.chm is the CHM with it's full path. The /_index.html part is the path to the index file inside the CHM and :: is just what you need to put between the CHM path and this file path.

Note : All files are in the root directory of the CHM, unlike the previous CHM versions which included a language directory. Images, style sheets and other supplemental files have names starting with an underscore (like the main index shown above), to avoid name collisions.

The names of generated files follow the same rules as the online manual, except that the extension is .html and not .php. The most important is that function documentation files are named function.FUNCNAME.html where FUNCNAME is the function name, with all underscores converted to hyphens. Some examples are function.echo.html, function.mysql-close.html, function.imagecopy.html.

Using all this information, you can show a manual page for a function requested by a user. A simple example is included in the distribution, named php_quickref.hta. This is a HTML Application to demonstrate the simple process of showing a manual page for a function. The quickRef() function defined therein does the job.

If you would like to integrate the manual into an IDE without direct support for the PHP manual (actually the underscore to hyphen conversion), you can use the included _function.html file to access a function page. This file is simply a redirector, and can be parameterized via the URL, as _function.html#mysql_close. This page will redirect you to the mysql_close function page (function.mysql-close.html) automatically. You can provide the full path of this file if your IDE supports context sensitive help, and provide the IDE specified string as the parameter. An example for this is the UltraEdit 9 intergation (see the edition's website).

The index of the manual (accessible via the index tab on the navigation pane) can also be used for integrational purposes. All the HTML pages are included in the index with their titles as index terms (including function description pages).

If you are a desktop application developer and would like to tightly integrate the CHM into your program (such as displaying the TOC tree in your IDE's help box), you can find more information at http://www.helpware.net/, as well as links to other useful resources. The official site for HTML Help is at http://msdn.microsoft.com/library/en-us/htmlhelp/html/vsconhh1start.asp.

Précédent | Sommaire | Suivant
Presentational Specialities | Niveau supérieur | Skin development


The Full Text Search

Manuel PHP
Précédent Suivant

Chapitre 59. The Full Text Search

Table des matières
General searching rules
Searching for words or phrases
Defining search terms
Using nested expressions when searching
Manual Content and User Note Separation

This edition of the PHP Manual includes an advanced full text search possibility provided by the viewer application. This enables users to to search through every word in the help file to find a match. For example, if a user does a full-text search on the word "Apache", every topic that contains the word "Apache" will be listed. Advanced full-text search allows a user to search using boolean, wildcard, and nested expressions. A user can also limit the search to previous results, match similar words, or search topic titles only.

The usage of the search feature is fairly straightforward. Click on the search tab, type in the desired words and press ENTER (or click on "List Topics"). Then you'll receive a list of matches from the PHP Manual (and the notes). You can use the button with a right arrow on it to add boolean operators to your search (or you can type them in). As you see the results, you can use the column headings (Title, Location and Rank) to sort the topic list. The default order is by Rank. You can also adjust some parameters at the bottom of this tab.

The words found are highlighted on the current page in the Topic pane by default. You can turn off this feature by choosing the "Search Highlight Off" menu item in the Options menu. To can get this feature back similarly. If you are viewing a long topic, only the first 500 instances of a search word or phrase will be highlighted, due to a limitation of the viewer.

General searching rules

A basic search consists of the word or phrase you want to find. You can use wildcard expressions, nested expressions, boolean operators, similar word matches, a previous results list, or topic titles to further define your search.

The basic rules for formulating queries are as follows:

  • Searches are not case-sensitive, so you can type your search in uppercase or lowercase characters.

  • You may search for any combination of letters (a-z) and numbers (0-9). You cannot search for single letters (a, b, c, etc.) and common words, like: an, and, as, at, be, but, by, do, for, from, have, he, in, it, not, of, on, or, she, that, the, there, they, this, to, we, which, with, you.

  • Punctuation marks such as the period (.), colon (:), semicolon (;), comma (,), and hyphen (-) are ignored during a search.

  • Group the elements of your search using double quotes or parentheses to set apart each element. You cannot search for quotation marks.

Note : If you are searching for a file name with an extension, you should group the entire string in double quotes, ("filename.ext"). Otherwise, the period will break the file name into two separate terms. The default operation between terms is AND, so you will create the logical equivalent to "filename AND ext."

Précédent | Sommaire | Suivant
Keyboard Shortcuts | Niveau supérieur | Searching for words or phrases


Using nested expressions when searching

Nested expressions allow you to create complex searches for information. For example, "html AND ((smtp OR pop3) NEAR mail)" finds topics containing the word "html" along with the words "smtp" and "mail" close together, or containing "html" along with the words "pop3" and "mail" close together.

The basic rules for searching help topics using nested expressions are as follows:

  • You can use parentheses to nest expressions within a query. The expressions in parentheses are evaluated before the rest of the query.

  • If a query does not contain a nested expression, it is evaluated from left to right. For example: "mail NOT pop3 OR smtp" finds topics containing the word "mail" without the word "pop3" or topics containing the word "smtp". On the other hand, "mail NOT (pop3 OR smtp)" finds topics containing the word "mail" without either of the words "pop3" or "smtp".

  • You cannot nest expressions more than five levels deep.

Précédent | Sommaire | Suivant
Defining search terms | Niveau supérieur | Manual Content and User Note Separation


Manual Content and User Note Separation

The manual content and the user notes are separated to php_manual_LANG.chm and php_manual_notes.chm. There were several resons to do this, including:

  • This way you can update the user notes and the manual independently as you need.

  • You can have more than one language of the manual, while only need to have one notes file. All the CHM files need to be in the same directory, and all translations need to share the same preferences if you would not like to have more then one notes file.

  • You can bookmark manual pages with notes, or just a notes part of a page separately.

  • You can "turn off" user note display and user note search results by simply deleting php_manual_notes.chm, moving it out of the directory or renaming it.

All these benefits lead us to provide the manual the way you can see it right now. This distribution had the effect on the full text search that you get search results from the manual content and from the user notes as separate ones. The "Location" column shows the source of the result, also enabling you to "add precedence" to manual content results with ordering the results by "Location". User note page titles are also prefixed with "N:" to make them easily distinguishable in the favorites list (there's no location info in the favorites list).

Précédent | Sommaire | Suivant
Using nested expressions when searching | Niveau supérieur | Specialities of this Edition


Defining search terms

The AND, OR, NOT, and NEAR operators enable you to precisely define your search by creating a relationship between search terms. The following table shows how you can use each of these operators. If no operator is specified, AND is used. For example, the query "server cgi security" is equivalent to "server AND cgi AND security".

Tableau 59-2. Search operators

Search for | Example | Results
Both terms in the same topic | http AND apache | Topics containing both the words "http" and "apache".
Either term in a topic | ming OR swflib | Topics containing either the word "ming" or the word "swflib" or both.
The first term without the second term | xml NOT expat | Topics containing the word "xml" but not the word "expat".
Both terms in the same topic, close together | database NEAR security | Topics containing the word "database" within eight words of the word "security".

Note : The |, &, and ! characters can also be used in place of OR AND and NOT respectively. This may not work if you use a very old version of the viewer.

Précédent | Sommaire | Suivant
Searching for words or phrases | Niveau supérieur | Using nested expressions when searching


Searching for words or phrases

You can search for words or phrases and use wildcard expressions. Wildcard expressions allow you to search for one or more characters using a question mark or asterisk. The table below describes the results of these different kinds of searches.

Tableau 59-1. Word and phrase searches

Search for | Example | Results
A single word | select | Topics that contain the word "select". (You will also find its grammatical variations, such as "selector" and "selection".)
A phrase "new operator" or new operator

Topics that contain the literal phrase "new operator" and all its grammatical variations.

Without the quotation marks, the query is equivalent to specifying "new AND operator," which will find topics containing both of the individual words, instead of the phrase.

Wildcard expressions esc* or HT??

Results for the first example include topics that contain the terms "ESC", "escape", "escalation", and so on. The asterisk cannot be the only character in the term.

Results for the second example include topics that contain the terms "HTTP", "HTML" and so on. The question mark cannot be the only character in the term.

Note : Select the Match similar words check box to include minor grammatical variations for the phrase you search. This feature only locates variations of the word with common suffixes. For example, a search on the word "add" will find "added," but it will not find "additive". This option is independent of other options or syntax. If you do a titles-only search, variations in titles will be matched. If you use quotes (or any other query operator) any variation of the word can appear; for example, "stemmed search" will also match "stemming search".

Précédent | Sommaire | Suivant
The Full Text Search | Niveau supérieur | Defining search terms


Skin development

Manuel PHP
Précédent Suivant

Chapitre 62. Skin development

Table des matières
Page Display Process
Page Elements
CSS classes

This edition of the PHP Manual allows users to choose from skins to display the contents, as well as develop custom skins to meet some special needs. We decided to support skins because we realized that one skin cannot satisfy everybodies needs in a such heavily used edition.

We included two skins by default inside the CHM. These cannot be modified or removed, so if you have the CHM, you have these two skins inside. The Low skin is optimized for small window display, the High skin is a variation of the Low one with some graphics added to spice it up.

A skin must have at least two files, a skin loader JavaScript file and a CSS file. The two inline skins have these files inside the CHM. The skin loader JS should at least load in the CSS file and display the page contents to the viewer. Theoretically there are two kinds of skins: CSS skins and Full skins. CSS skins only modify the CSS and does not amend the page layout. Full skins also modify the page layout. We have included sample skins for both the CSS skin type and the Full skin type ("greenlinks" and "headernostalgia" respectively).

Avertissement

Note that though the current skin development methods are quite final, there may be heavy changes in used CSS classes or page elements while we refine the skin development ideas. As this edition is currently in development stage, the information described herein is not to be considered completely stable.

Page Display Process

If you are going to develop your own skin, you should know how one page is loaded and displayed to the user, and how a skin fits in this process. For these paragraphs, we assume that you have put your CHM into c:\phpmanual, so it's accessible as c:\phpmanual\php_manual_LANG.chm (where LANG is the language code), and you would like to see the function page of "echo", which is function.echo.html inside the CHM. See the sections about integration for more information on CHM contents.

  • First of all the HTML content is loaded in from function.echo.html from inside the CHM.

  • At the top of this file, there is a HTML <script> tag, which loads in the _script.js file from the CHM. This file contains all the JS code needed to move on with the process. Most importantly this JS defines many variables (like where the CHM is, or what is the actual page viewed) and many functions to print out the context menu or handle online functions.

  • At last _script.js loads in the preferences file from outside the CHM (c:\phpmanual\php_manual_prefs.js in our example). This JS file defines the preference variables, and calls back prefHandler() which is also defined in _script.js.

  • That function loads in the skin JS file as the preferences dictate. The skin JS file should load in the needed CSS file, and define a displayPage() function, which displays the page if called.

  • The HTML file (function.echo.html in this example) also contains a function call to load in the user notes, which simply puts the notes into this HTML file using DHTML to be displayed as if they were here before...

  • The HTML file also contains a body onload attribute which calls the skin-defined displayPage() function to show the page to the user. This is the last function called, it should present the page in it's complete form to the user.

Every action is synchronized with calling back a function in the previously loaded file when the JS is in memory. The notes loading and skin JS loading is only synchronized with the page's onload event (which as the Microsoft documentation says only fires if the page is completely loaded).

This load and callback chain may seem to be too complicated, but so far this seemed to be the best way to do as many things as possible parallel, while also synchronize some calls.

As you can see your skin JavaScript file is loaded in by _script.js and it's displayPage() function is called by the body onload event.

Précédent | Sommaire | Suivant
Integrating the PHP Manual | Niveau supérieur | Page Elements


CSS classes

We cannot provide accurate documentation currently on useable CSS classes, as some of the DocBook XSL sheets classes are not used and some classes are added. Please see the sample CSS files included for first time reference.

Précédent | Sommaire | Suivant
Page Elements | Niveau supérieur | CHM Edition Credits


Page Elements

The PHP Manual pages are all HTML files with several HTML tags in them for both presentational and divisional purposes. The HTML pages contain divisions to be used for skinning purposes and misc divisions added by the DocBook XSL sheets.

A HTML page can be either a function reference page or another kind of page (like a feature description). Skins should get ready to skin these two kinds of pages separately most of the time (depending on the actual design).

The pages are structured using <div> tags with appropriate IDs to ease the skin writers work. A page consists of these parts:

  • <div id="pageContent"></div> contains all the page contents. This begins right after <body> and ends just before </body>. This division is hidden by default, you need to show it after you are ready with the page rewriting process.

  • <div id="pageHeaders"></div> contains the page header parts. This includes the text only main title (in a <span id="pageTitle"></span>) and function properties, in case this is a function page (contained in <span id="funcPurpose"></span>, <span id="funcAvail"></span> and <span id="funcUsage"></span>). In case one of these three is not available, the current page is not a function page.

  • <div id="pageText"></div> contains the majority of the page contents, including examples, manual notes, warnings, etc. This also includes see also parts for now, as we still cannot differentiate between see also and normal text parts (may be a thing to change in the future).

  • <div id="pageNotes"></div> contains the user notes (itself loaded in from another HTML file by JS). It contains a heading, and then a <div> without ID for every user note and spans in that divs for every element of a user note (with "email", "date" and "text" IDs respectively).

  • <div id="pageNav"></div> contains the
navigation table, which is further divided into spans (<span
id="navPrev"></span>, <span
id="navPath"></span>, <span
id="navNext"></span>, <span
id="navOnline"></span>, <span
id="navThisOnline"></span> and <span
id="navReportBug"></span>), where navThisOnline
and navReportBug is inside navOnline.

If you would like to rewrite the page, you should first read in the parts you need from the page to JS variables, then clear the contents of pageContent (or just the part you would like to rewrite), write in the new content and show the pageContent div for the user. If you would not like to make any structural changes, you can simply display the pageContent div and only specify a special style sheet in your skin JS file (see the "greenlinks" skin for an example).

You can find a "Full skin" developed to show you how to make skins built on top of this structure. The skin name is "headernostalgia". It rewrites the header part and removes the footer navigational table.

Précédent | Sommaire | Suivant
Skin development | Niveau supérieur | CSS classes


Specialities of this Edition

Manuel PHP
Précédent Suivant

Chapitre 60. Specialities of this Edition

Table des matières
User Preferences
Presentational Specialities

The Windows HTML Help Edition of the PHP Manual overperforms the presentational and interactive capabilities offered by other editions (including the online manual). This was possible because currently CHMs can only be viewed on Windows using Internet explorer, so we can develop for one browser family and one operating system. Viewers for other OSes may be developed in the future by third parties.

User Preferences

Most of the interactive features of this manual are provided by the viewer application (including full text search, index, favorites list), but we extended this list with PHP Manual specific tools. All these can be adjusted to your needs using a simple desktop application named php_manual_prefs.exe. If you run this program you can see three groups of settings: Online Functions, Context Menu, and Skin. All your settings are stored in php_manual_prefs.js.

Online functions enable you to have elements connected to websites. The two ones you can see on all manual pages are "This page online" and "Report a bug". As you can figure out the first one shows you the same page in the online manual, the second one opens a page from http://bugs.php.net/ and prefills some bug data for you. You need to select a mirror site to use for "php.net sensitive" online functions. We recommend choosing a close mirror site to get the best speed. Other components that may be limited by this online functions setting include context menu items opening new websites ("Google search selection" for example). Custom designs may also include elements restricted by this setting.

The context menu settings enables you to choose which context menu you prefer. This application provides you with an option to define your own context menu adding elements to it from a predefined set. You can have this custom context menu for the right click of your mouse, and have the original menu for CTRL+right click, or the opposite way. Three special types of custom context menu items exist:

Tableau 60-1. Context menu items

Type | Examples | Comments
Page Jump | Function Reference, Function Index | These items jump to a specific page in the CHM. Page Jump options are not restricted to point inside the CHM though. They can point to websites or other resources. Page jump options with a protocol part in the URL open in new window.
Function Call | Print page, Select all, Copy selection to clipboard, Google Search Selection | These are "function calls" for internally defined context menu functions. The last two examples have the speciality that they only show up in the menu if you rightclicked on a selection. Currently there is no way to extend the context menu with skin defined functions.
Special display | Google SearchBox, AlltheWeb SearchBox | These are displayed as HTML forms, where you can enter search keywords, press ENTER, and receive a new window with the search issued in the appropriate search engine. Currently there is no way to extend the set of specially displayed context menu items.
Possible context menu elements and their "abstract implementations" are stored in context.ini. You have the ability to add possible page jump options there, but there is no way currently to extend the context menu system with user (skin) defined functions. The possible mirror sites are listed in mirrors.ini. Feel free to suggest more bundled context menu items to us at php-doc-chm@lists.php.net.

The skins setting enables you to choose from the two bundled default skins, or from any user defined skins. The Low skin is optimized to display correctly at any small size, the High skin is optimized for your viewing pleasure. Other skins may be developed according to our skins development guide. The recommended place for skins on the file system is the skins/SKINNAME subfolder of the PHP Manual directory. Though this is not required, some skins may define other rules (not recommended). We included sample skins for you to see examples of how to develop skins for the PHP Manual.

You have three buttons to choose from at the bottom. The Apply button applies your changes without exiting, the OK button applies and closes the application, the Cancel button does not modify your settings and closes the program.

Précédent | Sommaire | Suivant
Manual Content and User Note Separation | Niveau supérieur | Presentational Specialities


Presentational Specialities

This edition of the PHP Manual is highly optimized for screen presentation. Skins may be developed to better support printing, as this was not the goal of the included skins. This approach allowed us to make many modifications to the presentation of different parts of the manual.

The first thing you'll notice is that all examples are color coded, using the PHP function show_source(). The actual colors used are defined by CSS classes. Examples also have links to PHP functions used in them to provide quick access to reference material. All code examples have a "copy to clipboard" link by the side of them with which you can copy the text contents of the example to the clipboard.

External links are marked with a special » sign, and open in a new browser window. We also included the "path to this page" information on all pages for you to easily identify where you are and navigate as needed.

Other parts of the manual are quite similar to the online ones by default, though custom skins can modify many elements on the pages.

Précédent | Sommaire | Suivant
Specialities of this Edition | Niveau supérieur | Integrating the PHP Manual


Using PHP Manual CHM Edition

Manuel PHP
Précédent Suivant

Chapitre 58. Using PHP Manual CHM Edition

Table des matières
The HTML Help Toolbar
The Navigation Pane
Keyboard Shortcuts

When you double click on a CHM, a HTML Help Viewer window opens with three panes. On the left side of the window is the Navigation pane. It contains four navigational tabs: the Contents, Index, Search and Favorites tabs. On the right side of the window is the Topic pane. It displays the selected help topic, or the default help topic on startup. The help pages are all separate HTML files, your Internet Explorer displays the pages in the Topic pane. The third pane is the toolbar, which is located below the help window title bar. You can adjust the horizontal layout with dragging the vertical border between the Navigation pane and the Topic pane.

Note, that when you open the CHM the first time, it may appear in a strange position and size. From then, Windows remembers the window position, size and the last opened tab. All these including your favorites are stored in a file named hh.dat. If you move your file to another directory, all these remembered settings will be lost (including your favorites listing!). If you replace your CHM file with a new one, with the same name, this is not a problem though. The file names and path values are stored in hh.dat.

The HTML Help Toolbar

The HTML Help Toolbar contains the following icons, when you view the PHP Manual:

  • Hide/Show - Hides/shows the navigation pane.

  • Locate - Locates a topic in the contents tab (in case you reached a topic with search, index or favorites, and would like to see where it is in the table of contents tree view).

  • Back - Goes back in the history.

  • Forward - Goes forward in the history.

  • Refresh - Reloads the current page.

  • Home - Opens the startup page of the CHM.

  • Print - Opens the print dialog box.

  • Options - Provides a dropdown with more options.

Using this toolbar is really easy, many of the toolbar icons are strongly related to their Internet Explorer equivalents.

Précédent | Sommaire | Suivant
About This Edition | Niveau supérieur | The Navigation Pane


Keyboard Shortcuts

There are many keyboard shortcuts you can use to increase your productivity. Many users find it more appropriate to use these keyboard shortcuts to access topics, instead of clicking.

Tableau 58-1. General Help Viewer Shortcuts

To | Press
Close the Help Viewer | ALT+F4
Display the Options menu | ALT+O
Hide or show the Navigation pane | ALT+O, and then T
Print a topic | ALT+O, and then P
Move back to the previous topic | ALT+LEFT ARROW
Move forward to the next topic (provided you have viewed it just previously) | ALT+RIGHT ARROW
Turn on or off search highlighting. | ALT+O, and then O
Return to the help file home page | ALT+O, and then H
Switch between the Navigation pane and the Topic pane | F6
Scroll through all the links in a topic or through all the options on a Navigation pane tab | TAB
Display context (right click) menu [see the User Preferences section] | SHIFT+F10

Tableau 58-2. Contents Tab Shortcuts

To | Press
Display the Contents tab | ALT+C
Open and close a book or folder | PLUS SIGN and MINUS SIGN, or LEFT ARROW and RIGHT ARROW
Select a topic | DOWN ARROW and UP ARROW
Display the selected topic | ENTER

Tableau 58-3. Index Tab Shortcuts

To | Press
Display the Index tab | ALT+N
Type a keyword to search for | ALT+W, and then type the word
Select a keyword in the list | UP ARROW and DOWN ARROW
Display the associated topic | ENTER or ALT+D

Tableau 58-4. Search Tab shortcuts

To | Press
Display the Search tab | ALT+S
Type a keyword to search for | ALT+W, and then type the word
Start a search | ALT+L
Select a topic in the results list | ALT+T, and then UP ARROW and DOWN ARROW
Display the selected topic | ENTER or ALT+D
Search for a keyword in the result list of a prior search | ALT+U
Search for words similar to the keyword. For example, to find words like "running" and "runs" for the keyword "run" | ALT+M
Only search through topic titles | ALT+R

Tableau 58-5. Favorites Tab Shortcuts

To | Press
Display the Favorites tab | ALT+I
Add the currently displayed topic to the Favorites list | ALT+A
Select a topic in the Favorites list | ALT+P, and then UP ARROW and DOWN ARROW
Display the selected topic | ENTER or ALT+D
Remove the selected topic from the list | ALT+R

Tableau 58-6. Topic Pane Shortcuts

To | Press
Index Lookup | Select the words you would like to look up and press F1
Find on page | CTRL+F, and then adjust options
Refresh page | F5

Précédent | Sommaire | Suivant
The Navigation Pane | Niveau supérieur | The Full Text Search


The Navigation Pane

The Navigation Pane contains four navigational tabs: the Contents, Index, Search and Favorites tabs. These all provide different methods to access a topic in the help file.

  • The contents tab reveals a tree like table of contents, where you can navigate to the desired topic by opening and closing parts of the tree. You can even access the deepest sections using this TOC. If you right click on an item here and choose "Print...", you'll have the option to print the selected topic or the selected topic and all subtopics. However printing is not the initial goal of this representation of the manual (the PDF version is suitable for printing).

  • The index tab lists a huge number of "keywords" (actually manual page titles). You can pick one, or start to type a keyword, see the list adjusting to your input, and then click on a topic, or press enter if the selected topic is the one you would like to see.

  • The search tab shows one of the most powerful features of the HTML Help Viewer, the full text search (also known as FTS). Here you can type in your search expression, optionally connecting words with AND/OR/NEAR/NOT. Before you click 'List topics', you can also set some options at the bottom. After the search results are displayed, you'll realize that manual text and user note results are separated. To sort out the two types, click on the 'Location' column header. Now from the search results list, you can pick a topic, and see it's page. The keywords you searched for are highlighted on the page.

  • The favorites tab enables you to store your most used topics in a list, easily accessible. Here you can see the list, add the current topic to it, remove one, or display a selected item. You can also specify your own title for the favorite, by typing it into the 'Current topic:' box. The user note page titles are prepended with a 'N:' string so you can distinguish them from normal manual pages in the favorites listing.

Précédent | Sommaire | Suivant
Using PHP Manual CHM Edition | Niveau supérieur | Keyboard Shortcuts


Version HTML Help

Manuel PHP
Précédent Suivant

X. Version HTML Help

Table des matières
57. About This Edition
58. Using PHP Manual CHM Edition
59. The Full Text Search
60. Specialities of this Edition
61. Integrating the PHP Manual
62. Skin development
63. CHM Edition Credits

Précédent | Sommaire | Suivant
Eléments Absents |  | About This Edition


break

L'instruction break permet de sortir d'une structure for, while, foreach ou switch.

break accepte un argument numérique optionnel qui vous indiquera combien de structures emboîtées ont été interrompues.

Exemple 11-20. Instruction break

<?php
$arr = array ('un', 'deux', 'trois', 'quatre', 'stop', 'cinq');
while (list (, $val) = each ($arr)) {
    if ($val == 'stop') {
        break;    /* Vous pourriez aussi utiliser 'break 1;' ici. */
    }
    echo "$val<br>\n";
}

/* Utilisation de l'argument optionnel. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "A 5<br>\n";
        break 1;  /* Termine uniquement le switch. */
    case 10:
        echo "At 10; quitting<br>\n";
        break 2;  /* Termine le switch et la boucle while. */
    default:
        break;
    }
}

?>

Précédent | Sommaire | Suivant
foreach | Niveau supérieur | continue


continue

L'instruction continue est utilisée dans une boucle afin d'éluder les instructions de l'itération courante afin de passer directement à l'itération suivante.

Note : Notez qu'en PHP, la structure switch est considérée comme une boucle par continue.

continue accepte un argument numérique optionnel qui vous indiquera combien de structures emboitées ont été ignorées.

Exemple 11-21. Instruction continue

<?php
while (list ($cle, $valeur) = each ($arr)) {
   if (!($cle % 2)) { // &eacute;vite les membres impairs
       continue;
   }
   fonction_quelconque($valeur);
}
$i = 0;
while ($i++ < 5) {
    echo "Dehors<br>\n";
    while (1) {
        echo "&nbsp;&nbsp;Milieu<br>\n";
        while (1) {
             echo "&nbsp;&nbsp;Int&eacute;rieur<br>\n";
             continue 3;
        }
        echo "Ceci n'est jamais atteint.<br>\n";
    }
    echo "Ceci non plus.<br>\n";
}
?>

Oublier le point virgule après continue peut porter à confusion. Voici un exemple de ce que vous ne devez pas faire :

<?php
  for ($i = 0; $i < 5; ++$i) {
      if ($i == 2)
          continue
      print "$i\n";
  }
?>

On peut s'attendre à ce que le résultat soit :

0
1
3
4

mais ce script affichera :

2

car la valeur de retour de l'appel à print() est int(1), et cela se comportera alors comme si on avait fournit l'argument optionnel mentionné plus haut.

Précédent | Sommaire | Suivant
break | Niveau supérieur | switch


declare

L'élément de langage declare sert à ajouter des directives d'exécutions dans un bloc de code. La syntaxe de declare est similaire à la syntaxe des autres fonctions de contrôle :

Exemple 11-27. Instruction declare

<?php
  declare (directive) statement
?>

L'expression directive permet de contrôler l'intervention du bloc declare. Actuellement, une seule directive est reconnue : la directive ticks (Voir plus bas pour plus de détails) sur les ticks).

L'expression statement du bloc de declare sera exécutée. Comment elle sera exécutée, et quels effets cela aura dépend de la directive utilisée dans le bloc directive.

Ticks

Un tick est un événement qui intervient toutes les N commandes bas niveau, exécutées par l'analyseur dans le bloc de declare. La valeur de N est spécifiée avec la syntaxe ticks=N dans le bloc de directive declare.

Un événement qui intervient à chaque tick est spécifié avec la fonction register_tick_function(). Reportez vous à l'exemple ci-dessous pour plus de détails. Notez que plus d'un événement peut intervenir par tick.

Exemple 11-28. Profiler une section de code PHP

<?php
// Un fonction qui enregistre l'heure &agrave; laquelle elle est appel&eacute;e
  function profile($dump = FALSE){
    static $profile;
    // Retourne les horaires stock&eacute;s dans le profile, et l'efface
    if ($dump) {
        $temp = $profile;
        unset ($profile);
        return ($temp);
    }
    $profile[] = microtime ();
  }

// Enregistre un gestionnaire de tick
  register_tick_function("profile");

// Initialise la fonction avant le bloc de d&eacute;claration
  profile();

// Ex&eacute;cute un bloc de code, et appele un tick toutes les deux secondes
  declare (ticks=2) {
    for ($x = 1; $x < 50; ++$x) {
        echo similar_text(md5($x), md5($x*$x)), "<br>";
    }
  }

// Affiche les donn&eacute;es de la variable $profile
  print_r(profile(TRUE));
?>
Cet exemple profile le code PHP dans le bloc de déclaration, et enregistre l'heure de chaque commande bas niveau. Cette information peut être réutilisée pour débusquer les segments de code lents. Vous pouvez implémenter d'autres méthodes, mais les ticks sont plus rapides et plus efficaces.

Les ticks sont bien pratiques pour débugger, implémenter un multi-tâches simple, des entrées sorties en tâche de fond, ou bien d'autres choses, avec PHP.

Voir aussi register_tick_function() et unregister_tick_function().

Précédent | Sommaire | Suivant
switch | Niveau supérieur | return


do..while

Les boucles do..while ressemblent beaucoup aux boucles while, mais l'expression est testée à la fin de chaque itération plutôt qu'au début. La principale différence par rapport à la boucle while est que la première itération de la boucle do..while est toujours exécutée (l'expression n'est testée qu'à la fin de l'itération), ce qui n'est pas le cas lorsque vous utilisez une boucle while (l'expression est vérifiée au début de chaque itération).

Il n'y a qu'une syntaxe possible pour les boucles do..while:

Exemple 11-11. Instruction do ... while ()

<?php
$i = 0;
do {
   print $i;
} while ($i>0);
?>

La boucle ci-dessus ne va être exécutée qu'une seule fois, car lorsque l'expression est évaluée, elle vaut FALSE (car la variable $i n'est pas plus grande que 0) et l'exécution de la boucle s'arrête.

Les utilisateurs familiers du C sont habitués à une utilisation différente des boucles do..while , qui permet de stopper l'exécution de la boucle au milieu des instructions, en l'encapsulant dans un do..while(0) la fonction break. Le code suivant montre une utilisation possible :

Exemple 11-12. Instruction while () et break

<?php
do {
    if ($i < 5) {
        print "i n'est pas suffisamment grand";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    print "i est bon";
     ...process i...
} while(0);
?>

Ne vous inquiétez pas si vous ne comprenez pas tout correctement. Vous pouvez écrire des scripts très très puissants sans utiliser cette fonctionnalité.

Précédent | Sommaire | Suivant
while | Niveau supérieur | for


else

Souvent, vous voulez exécuter une instruction si une condition est remplie, et une autre instruction si cette condition n'est pas remplie. C'est à cela que sert else. else fonctionne après un if et exécute les instructions correspondantes au cas oú l'expression du if est FALSE. Dans l'exemple suivant, ce bout de code affiche a est plus grand que b si la variable $a est plus grande que la variable $a, et a est plus petit que b sinon:

Exemple 11-4. Instruction if () else

<?php
if ($a > $b) {
    print "a est plus grand que b";
} else {
    print "a est plus petit que b";
}
?>
Les instructions après le else ne sont exécutées que si l'expression du if est FALSE, et si elle n'est pas suivi par l'expression elseif.

Précédent | Sommaire | Suivant
Les structures de contrôle | Niveau supérieur | elseif


elseif

elseif, comme son nom l'indique, est une combinaison de if et de else. Comme l'expression else, il permet d'exécuter une instruction après un if dans le cas oú le "premier" if est évalué comme FALSE. Mais, à la différence de l'expression else, il n'exécutera l'instruction que si l'expression conditionnelle elseif est évaluée comme TRUE. L'exemple suivant affichera a est plus grand que b, a est égal à b ou a est plus petit que b:

Exemple 11-5. Instruction elseif ()

<?php
if ($a > $b) {
    print "a est plus grand que b";
} elseif ($a == $b) {
    print "a est &eacute;gal &agrave; b";
} else {
    print "a est plus petit que b";
}
?>

Vous pouvez avoir plusieurs elseif qui se suivent les uns après les autres, après un if initial. Le premier elseif qui sera évalué à TRUE sera exécuté. En PHP, vous pouvez aussi écrire "else if" en deux mots et son comportement sera identique à la version en un seul mot. La sémantique des deux expressions est légèrement différente, mais au bout du compte, le résultat sera exactement le même.

L'expression elseif est exécutée seulement si le if précédent et tout autre elseif précédent sont évalués comme FALSE, et que votre elseif est évalué à TRUE.

Précédent | Sommaire | Suivant
else | Niveau supérieur | Syntaxe alternative


for

Les boucles for sont les boucles les plus complexes en PHP. Elles fonctionnent comme les boucles for du langage C. La syntaxe des boucles for est la suivante :

Exemple 11-13. Instruction for()

<?php
  for (expr1; expr2; expr3) statement
?>

La première expression (expr1) est évaluée (exécutée), quoi qu'il arrive au début de la boucle.

Au début de chaque itération, l'expression expr2 est évaluée. Si l'évaluation vaut TRUE, la boucle continue et l'instruction est exécutée. Si l'évaluation vaut FALSE, l'exécution de la boucle s'arrête.

A la fin de chaque itération, l'expression expr3 est évaluée (exécutée).

Les expressions peuvent éventuellement être laissées vides. Si l'expression expr2 est laissée vide, cela signifie que c'est une boucle infinie (PHP considère implicitement qu'elle vaut TRUE, comme en C). Cela n'est pas vraiment très utile, à moins que vous souhaitiez terminer votre boucle par l'instruction conditionnelle break.

Considérons les exemples suivants. Tous affichent les chiffres de 1 à 10:

Exemple 11-14. Exemple de boucles

<?php
/* exemple 1 */
for ($i = 1; $i <= 10; $i++) {
    print $i;
}
/* exemple 2 */
for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}
/* exemple 3 */
$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}
/* exemple 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
?>

Bien évidemment, le premier exemple est le plus simple de tous (ou peut être le quatrième), mais vous pouvez aussi pensez qu'utiliser une expression vide dans une boucle for peut être utile parfois.

PHP supporte aussi la syntaxe alternative suivante pour les boucles for :

Exemple 11-15. Instruction for() alternative

<?php
  for (expr1; expr2; expr3): statement; ...; endfor;
?>

Les autres langages ont l'instruction foreach pour accéder aux éléments d'un tableau. PHP 3 ne dispose pas d'une telle fonction; PHP 4 en dispose (voir foreach). En PHP 3, vous pouvez combiner while avec list() et each() pour obtenir le même résultat. Reportez-vous aux exemples de la documentation.

Précédent | Sommaire | Suivant
do..while | Niveau supérieur | foreach


foreach

PHP 4 (mais pas PHP 3) inclut une commande foreach, comme en Perl ou d'autres langages. C'est un moyen simple de passer en revue un tableau. Il y a deux syntaxes possibles : la seconde est une extension mineure mais pratique de la première:

Exemple 11-16. Instruction foreach()

<?php
  foreach(array_expression as $value) commandes
  foreach(array_expression as $key => $value) commandes
?>

La première forme passe en revue le tableau array_expression. A chaque itération, la valeur de l'élément courant est assignée à $value et le pointeur interne de tableau est avancé d'un élément (ce qui fait qu'à la prochaine itération, on accédera à l'élément suivant).

La deuxième forme fait exactement la même chose, mais c'est la clé de l'élément courant qui est assigné à la variable $key.

Lorsque foreach démarre, le pointeur interne de fichier est automatiquement ramené au premier élément du tableau. Cela signifie que vous n'aurez pas à faire appel à reset() avant foreach.

Note : De plus, notez que foreach travaille sur une copie du tableau spécifié, et pas sur le tableau lui-même. Par conséquent, le pointeur de tableau n'est pas modifié, comme il le serait avec le fonction each(), et les modifications faites dans le tableau ne seront pas prises en compte dans le tableau original.

Note : foreach n'accepte pas l'opérateur de suppression des erreurs @.

Vous pouvez remarquer que les exemples suivants fonctionnent de manière identique :

Exemple 11-17. Instruction foreach() et while()

<?php
  reset($arr);
  while (list(, $value) = each ($arr)) {
    echo "Valeur: $value<br>\n";
  }
  foreach ($arr as $value) {
    echo "Valeur: $value<br>\n";
  }
?>
Les exemples suivants sont aussi fonctionnellement identiques :

Exemple 11-18. Instruction foreach() et while() (2)

<?php
  reset($arr);
  while (list($key, $value) = each ($arr)) {
    echo "Cl&eacute;: $key; Valeur: $value<br>\n";
  }
  foreach ($arr as $key => $value) {
    echo "Cl&eacute;: $key; Valeur: $value<br>\n";
  }
?>

Voici quelques exemples de plus :

Exemple 11-19. Instruction foreach() et while() (3)

<?php
/* exemple foreach 1 : la valeur seulement */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
   print "Current value of \$a: $v.\n";
}

/* exemple foreach 2 : la valeur et sa cl&eacute; d'index */

$a = array (1, 2, 3, 17);

$i = 0; /* uniquement pour l'illustration */

foreach($a as $v) {
    print "\$a[$i] => $v.\n";
    $i++;
}

/* exemple foreach 3 : la cl&eacute; et la valeur */

$a = array (
    "un" => 1,
    "deux" => 2,
    "trois" => 3,
    "dix-sept" => 17
);

foreach($a as $k => $v) {
    print "\$a[$k] => $v.\n";
}

/* exemple foreach 4 : tableaux multi-dimensionnels */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1) {
    foreach ($v1 as $v2) {
        print "$v2\n";
    }
}

/* exemple foreach 5 : tableaux dynamiques */

foreach(array(1, 2, 3, 4, 5) as $v) {
    print "$v\n";
}

?>

Précédent | Sommaire | Suivant
for | Niveau supérieur | break


switch

L'instruction switch équivaut à une série d'instructions if. En de nombreuses occasions, vous aurez besoin de comparer la même variable (ou expression) avec un grand nombre de valeurs différentes, et d'exécuter différentes parties de code suivant la valeur à laquelle elle est égale. C'est exactement à cela que sert l'instruction switch.

Note : Notez que contrairement à d'autres langages, la structure continue s'applique aux structures switch et de comporte différemment de break. Si vous avez un switch dans une boucle, et que vous souhaitez continuer jusqu'à la prochaine itération de la boucle extérieure, vous vous devez utiliser continue 2.

Les deux exemples suivants sont deux manières différentes d'écrire la même chose, l'une en utilisant une séries de if, et l'autre en utilisant l'instruction switch:

Exemple 11-22. Instruction switch()

<?php
if ($i == 0) {
    print "i &eacute;gale 0";
}
if ($i == 1) {
    print "i &eacute;gale 1";
}
if ($i == 2) {
    print "i &eacute;gale 2";
}
switch ($i) {
    case 0:
        print "i &eacute;gale 0";
        break;
    case 1:
        print "i &eacute;gale 1";
        break;
    case 2:
        print "i &eacute;gale 2";
        break;
}
?>

Il est important de comprendre que l'instruction switch exécute chacune des clauses dans l'ordre. L'instruction switch est exécutée ligne par ligne. Au début, aucun code n'est exécuté. Seulement lorsqu'un case est vérifié, PHP exécute alors les instructions correspondantes. PHP continue d'exécuter les instructions jusqu'à la fin du bloc d'instructions du switch, ou bien dès qu'il trouve l'instruction break. Si vous ne pouvez pas utiliser l'instruction break à la fin de l'instruction case, PHP continuera à exécuter toutes les instructions qui suivent. Par exemple :

Exemple 11-23. Instruction switch et fall through

<?php
switch ($i) {
    case 0:
        print "i &eacute;gale 0";
    case 1:
        print "i &eacute;gale 1";
    case 2:
        print "i &eacute;gale 2";
}
?>

Dans cet exemple, si $i est égal à 0, PHP va exécuter quand même toutes les instructions qui suivent. Si $i est égal à 1, PHP exécutera les deux dernières instructions. Et seulement si $i est égal à 2, vous obtiendrez le résultat escompté, c'est-à-dire, l'affiche de "i égal 2". Donc, l'important est de ne pas oublier l'instruction break (même s'il est possible que vous l'omettiez dans certaines circonstances).

Dans une commande switch, une condition n'est évaluée qu'une fois, et le résultat est comparé à chaque case. Dans une structure elseif, les conditions sont évaluées à chaque comparaison. Si votre condition est plus compliquée qu'une simple comparaison, ou bien fait partie d'une boucle, switch sera plus rapide.

La liste de commandes d'un case peut être vide, auquel cas PHP utilisera la liste de commandes du cas suivant.

Exemple 11-24. Instruction switch() et case vide

<?php
switch ($i) {
    case 0:
    case 1:
    case 2:
        print "i est plus petit que 3 mais n'est pas n&eacute;gatif";
        break;
    case 3:
        print "i &eacute;gale 3";
}
?>

Un case spécial est default. Ce cas est utilisé lorsque tous les case ont échoués. Il doit être le dernier cas listé. Par exemple :

Exemple 11-25. Instruction switch() et default

<?php
switch ($i) {
    case 0:
        print "i &eacute;gale 0";
        break;
    case 1:
        print "i &eacute;gale 1";
        break;
    case 2:
        print "i &eacute;gale  2";
        break;
    default:
        print "i n'est ni &eacute;gal &agrave; 2, ni &agrave; 1, ni &agrave; 0.";
}
?>

Une autre chose à mentionner est que l'instruction case peut être une expression à de type scalaire, c'est-à-dire nombre entier, nombre à virgule flottante et chaîne de caractères. Les tableaux sont sans intérêt dans ce contexte-là.

La syntaxe alternative pour cette structure de contrôle est la suivante : pour plus d'informations, voir syntaxes alternatives).

Exemple 11-26. Instruction switch() alternative

<?php
  switch ($i):
    case 0:
        print "i &eacute;gale 0";
        break;
    case 1:
        print "i &eacute;gale 1";
        break;
    case 2:
        print "i &eacute;gale 2";
        break;
    default:
        print "i n'est ni &eacute;gal &agrave; 2, ni &agrave; 1, ni &agrave; 0";
  endswitch;
?>

Précédent | Sommaire | Suivant
continue | Niveau supérieur | declare


while

La boucle while est le moyen le plus simple d'implémenter une boucle en PHP. Cette boucle se comporte de la même manière qu'en C. L'exemple le plus simple d'une boucle while est le suivant :

Exemple 11-8. Instruction while ()

<?php
  while (expression) commandes
?>

La signification d'une boucle while est très simple. PHP exécute l'instruction tant que l'expression de la boucle while est évaluée comme TRUE. La valeur de l'expression est vérifiée à chaque début de boucle, et, si la valeur change durant l'exécution de l'instruction, l'exécution ne s'arrêtera qu'à la fin de l'itération (chaque fois que PHP exécute l'instruction, on appelle cela une itération). De temps en temps, si l'expression du while est FALSE avant la première itération, l'instruction ne sera jamais exécutée.

Comme avec le if, vous pouvez regrouper plusieurs instructions dans la même boucle while en les regroupant à l'intérieur de parenthèses ou en utilisant la syntaxe suivante:

Exemple 11-9. Instruction while () avec bloc

<?php
while (expression): commandes ... endwhile;
?>

Les exemples suivants sont identiques, et affichent tous les nombres de 1 à 10:

Exemple 11-10. Exemple avec while ()

<?php
/* exemple 1 */
$i = 1;
while ($i <= 10) {
    print $i++;  /* La valeur affiche est $i avant l'incr&eacute;mentation
                     (post-incr&eacute;mentation)  */
}
/* exemple 2 */
$i = 1;
while ($i <= 10):
    print $i;
    $i++;
endwhile;
?>

Précédent | Sommaire | Suivant
Syntaxe alternative | Niveau supérieur | do..while


Migrer de PHP 2 à PHP 3

Manuel PHP
Précédent Suivant

Chapitre 54. Migrer de PHP 2 à PHP 3

PHP a déja une longue histoire derrière lui : Le légendaire PHP 1.0, PHP/FI, PHP 3.0 et PHP 4.0.

1. Migrer de PHP 2 à PHP 3 ?

1. Migrer de PHP 2 à PHP 3 ?

PHP/FI 2.0 n'est plus supporté. Reportez-vous à la section appropriée du manuel pour des informations à propos de la migration à partir de PHP/FI 2.0.

Si vous travaillez encore avec PHP 2, nous vous recommandons vivement de mettre à jour en PHP 4.

Précédent | Sommaire | Suivant
PHP and other languages | Niveau supérieur | Migrer de PHP 3 à PHP 4


Migrer de PHP 3 à PHP 4

Manuel PHP
Précédent Suivant

Chapitre 55. Migrer de PHP 3 à PHP 4

PHP a déja une longue histoire derrière lui : Le légendaire PHP 1.0, PHP/FI, PHP 3.0 et PHP 4.0.

1. Migrer de PHP 3 à PHP 4
2. Les sessions fonctionnent-elles avec PHP 3 ?
3. Fonctions incompatibles ?

1. Migrer de PHP 3 à PHP 4

PHP 4 a été conçu pour être aussi compatible avec les anciennes versions de PHP que possible et très peu de fonctionnalité ont changé dans le processus. Si vous n'êtes pas sûrs de la compatibilité, vous devez installer PHP 4 dans un environnement de tests et y tester vos scripts.

Lisez aussi l'appendice de la migration approprié de ce manuel.

2. Les sessions fonctionnent-elles avec PHP 3 ?

Même si le support natif des sessions n'existait pas en PHP 3, il y'a des applications troisième-partie qui ont (et encore aujourd'hui) offert les fonctionnalités des sessions. La méthode la plus commune est d'utiliser PHPLIB.

3. Fonctions incompatibles ?

Puisque ??? est basiquement une réécriture entière du moteur PHP il y'a peu de fonctions qui ont été altérées et celles qui l'ont été faisaient partie des fonctions les plus exotiques.

Précédent | Sommaire | Suivant
Migrer de PHP 2 à PHP 3 | Niveau supérieur | Questions diverses


Utiliser PHP

Manuel PHP
Précédent Suivant

Chapitre 50. Utiliser PHP

Cette section regroupe plusieurs erreurs que vous pouvez rencontrer lors de l'écriture de vos scripts PHP.

1. J'aimerais écrire un script PHP générique qui pourrait traiter les données provenant de tout formulaire. Comment savoir quelles variables de la méthode POST sont disponibles ?
2. Il faut que je convertisse tous les guillemets simples (') en un anti-slash suivi d'un guillemet simple (\'). Comment le faire avec une expression regulière ? J'aimerais aussi convertir " en \" et \ en \\.
3. Tous mes " se transforment en \" et mes ' en \', comment me débarrasser de tous ces anti-slashs ? Comment et pourquoi sont-ils apparus ?
4. Quand je fais ce qui suit, l'affichage se fait dans le mauvais ordre :
<?php
function mafonction($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "mafonction($variable) = " . mafonction($variable);
?>
que se passe-t-il ?
5. Hey, où sont mes nouvelles lignes ?
<pre>
<?php echo "Ceci est ma premi&egrave;re ligne."; ?>
<?php echo "Celle-ci devrait s'afficher en dessous de la premi&egrave;re."; ?>
</pre>
6. J'obtiens le message 'Warning: Cannot send session cookie - headers already sent...' ou 'Cannot add header information - headers already sent...'.
7. J'ai besoin d'accèder à des informations dans l'en-tête de requête directement. Comment puis-je le faire ?
8. Quand j'essaye d'utiliser l'authentification avec IIS j'obtiens 'No Input file specified'.
9. Mon script PHP fonctionne avec IE et Lynx, mais avec Netscape une portion de ce qui devrait s'afficher manque. Quand j'affiche la source HTML de la page, je vois le contenu avec IE mais pas avec Netscape.
10. Comment mélanger XML et PHP ? PHP se plaint de mes balises <?xml !
11. Comment utiliser PHP avec FrontPage ou d'autres éditeurs HTML qui insistent pour mettre mon code ailleurs ?
12. Où puis-je trouver une liste complète des variables prédéfinies que je peux utiliser dans mes scripts PHP ?
13. Comment puis-je générer des fichiers PDF sans utiliser les librairies payantes ClibPDF et PDFLib ? J'aimerais une fa???on gratuite et qui ne requière pas de librairies PDF externes.
14. J'essaye d'accéder à une des variables standard CGI (comme $DOCUMENT_ROOT ou $HTTP_REFERER) dans une fonction écrite par moi-même, et il semblerait qu'elle ne soit pas définie. Que se passe-t-il ?

1. J'aimerais écrire un script PHP générique qui pourrait traiter les données provenant de tout formulaire. Comment savoir quelles variables de la méthode POST sont disponibles ?

PHP fournit plusieurs variables prédéfinies, comme la super globale $_POST. Vous puvez boucler sur $_POST puisque c'est un tableau associatif de toutes les valeurs POSTées. Par exemple, bouclons dessus simplement avec foreach, vérifions les valeurs vides et affichons les.
<?php
$empty = $post = array();
foreach ($_POST as $nomvar => $valeurvar) {
    if (empty($varvalue)) {
        $empty[$nomvar] = $valeurvar;
    } else {
        $post[$nomvar] = $valeurvar;
    }
}

print "<pre>";
if (empty($empty)) {
    print "Aucune valeur POST&eacute;e n'est vide, post&eacute;es :\n";
    var_dump($post);
} else {
    print "Nous avons " . count($empty) . " valeurs vides\n";
    print "Post&eacute;es :\n"; var_dump($post);
    print "Vides :\n";  var_dump($empty);
    exit;
}
?>

Superglobales : disponiblité : Depuis PHP 4.1.0, les tableaux superglobaux tels que $_GET, $_POST et $_SERVER, etc... sont disponibles. Pour plus d'informations, lisez la section superglobals

2. Il faut que je convertisse tous les guillemets simples (') en un anti-slash suivi d'un guillemet simple (\'). Comment le faire avec une expression regulière ? J'aimerais aussi convertir " en \" et \ en \\.

La fonction addslashes() le fera. Voir aussi mysql_escape_string(). Vous pouvez aussi supprimer les anti-slashs avec stripslashes().

Note concernant la directive : magic_quotes_gpc : La directive PHP magic_quotes_gpc est par défaut à on. En bref, elle applique la fonction addslashes() sur toutes vos données issues de GET, POST et COOKIE. Vous pouvez utiliser la fonction stripslashes() pour supprimer cet effet.

3. Tous mes " se transforment en \" et mes ' en \', comment me débarrasser de tous ces anti-slashs ? Comment et pourquoi sont-ils apparus ?

La fonction PHP stripslashes() supprimera ces anti-slashs de votre chaîne de caractères. La plupart du temps, ils appraissent car la directive PHP magic_quotes_gpc est activée.

Note concernant la directive : magic_quotes_gpc : La directive PHP magic_quotes_gpc est par défaut à on. En bref, elle applique la fonction addslashes() sur toutes vos données issues de GET, POST et COOKIE. Vous pouvez utiliser la fonction stripslashes() pour supprimer cet effet.

4. Quand je fais ce qui suit, l'affichage se fait dans le mauvais ordre :
<?php
function mafonction($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "mafonction($variable) = " . mafonction($variable);
?>
que se passe-t-il ?

Pour pouvoir utiliser le résultat de votre fonction dans une expression (comme le concaténer avec une chaîne comme dans cet exemple), vous devez retourner la valeur avec return(), et non pas l'afficher avec echo().

5. Hey, où sont mes nouvelles lignes ?
<pre>
<?php echo "Ceci est ma premi&egrave;re ligne."; ?>
<?php echo "Celle-ci devrait s'afficher en dessous de la premi&egrave;re."; ?>
</pre>

En PHP, la fin d'un bloc de code est soit "?>" ou "?>\n" (où \n signifie une nouvelle ligne). Donc dans l'exemple plus haut, les phrases affichées le seront sur une seule ligne, car PHP oublie les nouvelles lignes après la fin du bloc. Cela signifie que vous devez insérer une nouvelle ligne de plus après chaque bloc de code PHP pour la lui faire afficher.

Pourquoi PHP fait-il cela ? Car lors du formatage du HTML, cela vous simplifie la vie car vous ne voulez pas de cette nouvelle ligne, mais vous devez créer de très longues lignes ou rendre la source brute de la page illisible pour arriver à cet effet.

6. J'obtiens le message 'Warning: Cannot send session cookie - headers already sent...' ou 'Cannot add header information - headers already sent...'.

Les fonctions header(), setcookie (), et les fonctions de session doivent ajouter des entêtes au flux de sortie, mais ceux-ci ne peuvent être envoyés qu'avant le reste du contenu. Il ne doit y avoir aucun affichage avant d'utiliser ces fonctions, comme le HTML par example. La fonction headers_sent() vérifiera si votre script a déjà envoyé des entêtes. Voyez aussi les fonctions de bufferisation de sortie .

7. J'ai besoin d'accèder à des informations dans l'en-tête de requête directement. Comment puis-je le faire ?

La fonction getallheaders() le fera si vous exécutez PHP en tant que module Apache. Le code suivant vous montrera tous les en-têtes de requête :
<?php
$headers = getallheaders();
foreach ($headers as $nom => $contenu) {
    echo "headers[$nom] = $contenu<br>\n";
}
?>

Voir aussi
apache_lookup_uri(),
apache_response_headers() et
fsockopen()

8. Quand j'essaye d'utiliser l'authentification avec IIS j'obtiens 'No Input file specified'.

Le modèle sécuritaire de IIS est en faute. C'est un problème commun à tous les programmes CGI fonctionnant avec IIS. Une alternative est de créer un fichier HTML (non exécuté par PHP) comme page d'entrée dans le dossier où il faut s'authentifier. Utilisez alors une balise META pour rediriger vers la page PHP, ou encore proposez un lien vers celle-ci. PHP reconnaîtra alors l'authentification correctement. Avec le module ISAPI, cela n'est pas un problème. Cela ne devrait pas non plus affecter d'autres serveurs NT. Pour plus d'informations, voyez : http://support.microsoft.com/support/kb/articles/q160/4/22.asp et la section du manuel concernant l'authentification HTTP.

9. Mon script PHP fonctionne avec IE et Lynx, mais avec Netscape une portion de ce qui devrait s'afficher manque. Quand j'affiche la source HTML de la page, je vois le contenu avec IE mais pas avec Netscape.

Netscape est plus stricte concernant les balises HTML (comme les tables) que IE. Faire valider votre HTML généré par un validateur HTML, comme validator.w3.org, peut se révéler utile. Par exemple, une </table> maquante peut provoquer ce problème.

De plus, IE et Lynx ignorent les NULs (\0) dans le flux HTML, Netscape non. La meilleure façon de le vérifier est de compiler la version en ligne de commande de PHP (aussi connue sous le nom de version CGI) et d'exécuter vos scrpts à partir de la console. Sous *nix, redirigez la sortie sûr od -c et cherchez les caractères \0. Si vous êtes sous Windows, vous devez trouver un éditeur ou un autre programme qui vous permettra de visualiser les fichiers binaires. Lorsque Netscape rencontre un NUL dans un fichier, il n'affichera la plupart du temps rien dans cette ligne, alors que IE et Lynx le feront.

10. Comment mélanger XML et PHP ? PHP se plaint de mes balises <?xml !

Pour inclure <?xml dans votre code PHP, vous devrez désactiver les short tags en configurant la directive PHP short_open_tags à 0. Vous ne pouvez pas modifier cette directive avec ini_set(). Que short_open_tags soit à on ou off, vous pouvez toujours faire ceci : <?php echo '<?xml'; ?>. La valeur par défaut pour cette directive est on.

11. Comment utiliser PHP avec FrontPage ou d'autres éditeurs HTML qui insistent pour mettre mon code ailleurs ?

La façon la plus simple est d'activer l'utilisation des balises ASP dans votre code PHP. Cela vous permettra d'utiliser des délimiteurs de code à la manière de ASP : <% et %>. Quelques éditeurs HTML populaires gèrent cela plus habilement. Pour activer les balises ASP, vous devez configurer la variable asp_tags de php.ini, ou utiliser la directive Apache appropriée.

12. Où puis-je trouver une liste complète des variables prédéfinies que je peux utiliser dans mes scripts PHP ?

Lisez la page du manuel qui concerne les variables prédéfinies vu qu'elle présente une liste partielle des variables prédéfinies disponibles dans votre script. Une liste complète des variables disponibles (et beaucoup d'informations) peut être vue en appelant la fonction phpinfo(). Lisez la section du manuel traitant des variables non-issues de PHP, elle décrit des scénarios communs pour les variables externes, comme celles issues d'un formulaire HTML, d'un Cookie, et de l'URL.

register_globals : note importante : Depuis PHP 4.2.0, la valeur par défaut de la directive de configuration PHP register_globals vaut off. La communauté PHP vous recommande de ne pas dépendre de cette directive, mais de trouver d'autres moyens pour accéder aux données, tels que les superglobals.

13. Comment puis-je générer des fichiers PDF sans utiliser les librairies payantes ClibPDF et PDFLib ? J'aimerais une fa???on gratuite et qui ne requière pas de librairies PDF externes.

Il y'a quelques alternatives écrites en PHP tel que http://www.ros.co.nz/pdf/, http://www.fpdf.org/, http://www.gnuvox.com/pdf4php/, et http://www.potentialtech.com/ppl.php. Il existe aussi le module Panda.

14. J'essaye d'accéder à une des variables standard CGI (comme $DOCUMENT_ROOT ou $HTTP_REFERER) dans une fonction écrite par moi-même, et il semblerait qu'elle ne soit pas définie. Que se passe-t-il ?

Il est important de réaliser que la directive PHP register_globals affecte aussi les variables d'environnement et de serveur. Lorsque register_globals = off (valeur par défaut depuis PHP 4.2.0), $DOCUMENT_ROOT n'existera pas. A la place, utilisez $_SERVER['DOCUMENT_ROOT'] . Si register_globals = on alors les variables $DOCUMENT_ROOT et $GLOBALS['DOCUMENT_ROOT'] existeront aussi.

Si vous êtes sûrs que register_globals = on et que vous vous demandez pourquoi $DOCUMENT_ROOT n'est pas disponible à l'intérieur de votre fonction, c'est parceque elle est comme toute autre variable et requière donc global $DOCUMENT_ROOT dans le corps de la fonction. Voyez aussi la page du manuel à propos de la portée des variables. Il est recommandé de coder avec register_globals = off.

Superglobales : disponiblité : Depuis PHP 4.1.0, les tableaux superglobaux tels que $_GET, $_POST et $_SERVER, etc... sont disponibles. Pour plus d'informations, lisez la section superglobals

Précédent | Sommaire | Suivant
Build Problems | Niveau supérieur | PHP and HTML


include

Manuel PHP
Précédent Chapitre 11. Les structures de contrôle Suivant

include()

La fonction include() inclut et exécute le fichier spécifié en argument.

Cette documentation s'applique aussi à la fonction require(). Les deux structures de langage sont identiques, hormis dans leur gestion des erreurs. include() produit une Alerte (warning) tandis que require() génère une erreur fatale. En d'autres termes, n'hésitez pas à utiliser require() si vous voulez qu'un fichier d'inclusion manquant interrompe votre script. include() ne se comporte pas de cette façon, et le script continuera son exécution. Assurez-vous d'avoir bien configuré le include_path aussi.

Lorsqu'un fichier est inclus, le code qu'il contient hérite des variables qui existent dans ce contexte. Toute variable accessible à la ligne qui réalise l'exécution est aussi accessible dans le fichier inclus.

Exemple 11-30. Exemple avec include()

vars.php
<?php

$couleur = 'verte';
$fruit = 'pomme';

?>

test.php
<?php

echo "Une $couleur $fruit"; // Une

include 'vars.php';

echo "Une $coleur $fruit"; // Une verte pomme

?>

Si l'inclusion intervient à l'intérieure d'une fonction, le code inclus sera alors considéré comme faisant partie de la fonction. Cela modifie donc le contexte de variables accessibles.

Exemple 11-31. Inclusion de fichiers dans une fonction

<?php

function foo() {
    global $couleur;

    include 'vars.php';

    echo "Une $couleur $fruit";
}

/* vars.php est dans le contexte de foo()    *
 * donc $fruit n'est pas dispnibles hors de  *
 * cette fonction. $couleur l'est, car c'est *
 * une variable globale                      */

foo();                      // Une verte pomme
echo "Une $couleur $fruit"; // Une verte

?>

Il est important de noter que lorsqu'un fichier est include() ou require(), les erreurs d'analyse apparaîtront en HTML tout au début du fichier, et l'analyse du fichier parent ne sera pas interrompue. Pour cette raison, le code qui est dans le fichier doit être placé entre les balises habituelles de PHP.

Si les Gestionnaires d'URL sont activés dans PHP (ce qui est le cas par défaut), vous pouvez localiser le fichier avec une URL (via HTTP ou bien avec un gestionnaire adapté : voir Annexe I pour une liste des protocoles), au lieu d'un simple chemin local. Si le serveur distant interprête le fichier comme du code PHP, des variables peuvent être transmises au serveur distant via l'URL et la méthode GET. Ce n'est pas, à strictement parler, la même chose que d'hériter du contexte de variable. Le fichier inclus est en fait un script exécuté à distance, et son résultat est inclus dans le code courant.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Exemple 11-32. Utiliser include() via HTTP

<?php

/* Cet exemple suppose que www.exemple.com est configur pour traiter
 * les fichiers .php et non pas les fichiers .txt. De plus,
 * 'Work' signifie ici que les variables
 * $foo et $bar sont disponibles dans le fichier inclus
 */

// Ne fonctionne pas : file.txt n'a pas &eacute;t&eacute; trait&eacute; par www.exemple.com comme du PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Ne fonctionne pas : le script cherche un fichier nomm&eacute;
// 'file.php?foo=1&bar=2' sur le syst&egrave;me local
include 'file.php?foo=1&bar=2';

// R&eacute;ussi
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt';  // OK.
include 'file.php';  // OK.

?>
Voir aussi travailler avec les fichiers distants, fopen() et file() pour des informations reliées.

Comme include() et require() sont des structures du langage particulières, vous devez les placer dans un bloc s'ils sont placés dans un bloc conditionnel.

Exemple 11-33. include() et les conditions

<?php

// Ceci est FAUX et &eacute;chouera
if ($condition)
    include $file;
else
    include $other;

// Ceci est CORRECT.
if ($condition) {
    include $file;
} else {
    include $other;
}

?>

Gestion du retour : il est possible d'exécuter une commande return() dans un fichier inclus pour en terminer le traitement et retourner au fichier appelant. De plus, il est possible de retourner des valeurs des fichiers inclus. vous pouvez prendre et traiter la valeur retournée par la fonction, comme toute autre fonction.

Note : En PHP 3, le return n'est pas utilisable à moins que ce ne soit dans un bloc de fonction, auquel cas le return() s'applique à une fonction et non pas au fichier.

Exemple 11-34. include() et return()

return.php
<?php

$var = 'PHP';

return $var;

?>

noreturn.php
<?php

$var = 'PHP';

?>

testreturns.php
<?php

$foo = include 'return.php';

echo $foo; // prints 'PHP'

$bar = include 'noreturn.php';

echo $bar; // prints 1

?>

$bar a la valeur de 1 car l'inclusion était réussie. Notez la différence entre les deux exemples ci-dessus. Le premier utilise la commande return() dans le fichier inclus, alors que le second ne le fait pas. Un autre moyen d'inclure des fichiers dans des variables est d'utiliser la fonction fopen() ou file() ou d'utiliser include() avec les fonctions de contrôle de sortie.

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Voir aussi
require(),
require_once(),
include_once(),
readfile(),
virtual() et
include_path.


include_once

Manuel PHP
Précédent Chapitre 11. Les structures de contrôle Suivant

include_once()

La commande include_once() inclut et évalue le fichier spécifié durant l'exécution du script. Le comportement est similaire à include(), mais la différence est que si le code a déjà été inclus, il ne le sera pas une seconde fois.

La fonction include_once() est utilisée de préférence lorsque le fichier doit être inclus ou évalué plusieurs fois dans un script, ou bien lorsque vous voulez être sûr qu'il ne sera inclus qu'une seule fois, pour éviter des redéfinitions de fonction.

Pour plus d'exemples avec require_once() et include_once(), jetez un oeil dans le code de PEAR inclus dans la dernière distribution de PHP.

Note : include_once() a été ajouté en PHP 4.0.1pl2

Note : Attention, require_once() et include_once() sont insensibles à la casse sous Windows.

Exemple 11-36. include_once() est insensible à la casse sous Windows

include_once("a.php"); // ceci inclut le fichier a.php
include_once("A.php"); // ceci inclut encore le fichier a.php sous Windows!

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Voir aussi
require(),
include(),
require_once(),
get_required_files(),
get_included_files(),
readfile() et
virtual().

Précédent | Sommaire | Suivant
require_once() | Niveau supérieur | Les fonctions


require

Manuel PHP
Précédent Chapitre 11. Les structures de contrôle Suivant

require()

require() inclut et exécute un fichier PHP.

La commande require() se remplace elle-même par le contenu du fichier spécifié, tel que décrit dans la documentation de la fonction include().

require() et include() sont identiques, sauf dans leur façon de gérer les erreurs. include() produite une Alerte (warning) tandis que require() génère une erreur fatale. En d'autres termes, n'hésitez pas à utiliser require() si vous voulez qu'un fichier d'inclusion manquant interrompe votre script. include() ne se comporte pas de cette façon, et le script continuera son exécution. Assurez vous d'avoir bien configuré le include_path aussi.

Exemple 11-29. Exemples avec require()

<?php
  require 'prepend.php';

  require $somefile;

  require ('unfichier.txt');
?>

Voyez la documentation de la fonction include() pour plus d'exemples.

Note : Avant PHP 4.0.2, ceci s'appliquait : require() tentait de lire le fichier cible, même si les lignes n'étaient pas utilisées. Une condition if n'avait aucun effet sur require(). Cependant, si la ligne du require() n'est jamais utilisée, le code inclus ne le sera pas non plus. De même, les boucles n'ont pas d'effet sur le comportement de require(). Bien que le code contenu dans le fichier subit la boucle, la fonction elle même require() n'est appelée qu'une fois.

Note : Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les variables fonctions.

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

Voir aussi
include(),
require_once(),
include_once(),
eval(),
file(),
readfile(),
virtual() et
include_path.

Précédent | Sommaire | Suivant
return | Niveau supérieur | include()


require_once

Manuel PHP
Précédent Chapitre 11. Les structures de contrôle Suivant

require_once()

La commande require_once() se remplace elle-même par le fichier spécifié, un peu comme les commandes de préprocesseur C #include, et ressemble sur ce point à require(). La principale différence est qu'avec require_once(), vous êtes assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d'alertes.

require_once() doit être utilisée dans les cas où le même fichier risque d'être inclus et évalué plusieurs fois durant l'exécution d'un script. Vous serez alors sûrs qu'il ne sera inclut qu'une fois et vous éviterez les problèmes de re-déclarations de fonctions ou autres.

Pour des exemples avec require_once() et include_once(), reportez-vous au code PEAR inclus dans les dernières distributions PHP.

Note : require_once() a été ajouté en PHP 4.0.1pl2

Note : Attention, require_once() et include_once() sont insensibles à la casse sous Windows.

Exemple 11-35. require_once() est insensible à la casse sur Windows

require_once("a.php"); // ceci inclut le fichier a.php
require_once("A.php"); // ceci inclut encore le fichier a.php sous Windows!

Avertissement

La version Windows de PHP ne supporte pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.

   Voir aussi
   require(),
   include(),
   include_once(),
   get_required_files(),
   get_included_files(),
   readfile() et
virtual().


Manuel PHP
Précédent Suivant

Annexe A. Histoire de PHP

Table des matières
Histoire de PHP
Quelques projets liés à PHP
Livres traitant de PHP
Publications sur PHP

L'évolution de PHP s'est faite en quelques années. Devenir un des langages les plus importants du web ne fut pas une évolution simple. Pour ceux que ça intéresse, voici comment PHP a évolué jusqu'à aujourd'hui. Les vieilles versions de PHP sont disponibles dans le musée PHP.

Histoire de PHP

PHP/FI

PHP a pris la suite d'un langage plus ancien, appelé PHP/FI. PHP/FI a été créé par Rasmus Lerdorf, en 1995. C'était initialement une librairie de scripts Perl, dont il se servait pour noter les accès à CV en ligne. Il donna le nom de 'Personnal Home Page Tools' à cette librairie. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la librairie en une implémentation en C, capable de communiquer avec les bases de données, et de créer des applications dynamiques et simples pour le web. Rasmus décida alors de publier son code, pour que tout le monde puisse l'utiliser et en profiter. Cela appela aussi aux contributions et aux améliorations du code.

PHP/FI, qui signifie Personal Home Page / Forms Interpreter, (Home Page personnelle, Interpreteur de Formulaire), incluait plusieurs fonctionnalités de base que nous connaissons encore aujourd'hui. Il avait ces variables qui ressemblent au Perl, un système d'interprétation automatique des variables de formulaires, et une syntaxe qui s'intègre facilement dans HTML.La syntaxe elle-même était similaire à celle du Perl mais beaucoup plus limitée. Elle était simple et un peu incohérente.

En 1997, PHP/FI 2.0,la seconde version en langage C, avait déjà une audience estimée de plusieurs milliers d'utilisateurs dans le monde, et environs 50,000 noms de domaine indiquaient qu'ils avaient installé PHP. Cela représentait environs 1% des noms de domaines sur l'Internet. Même si le nombre de contributeur était plutôt élevé, PHP était toujours le projet d'un seul homme.

PHP/FI 2.0 fut publié officiellement en novembre 1997, après avoir passé l'essentiel de sa vie en version beta. Peu de temps après, une version alpha de PHP 3.0 était publié.

PHP 3

PHP 3.0 fut la première version du langage tel que nous le connaissons actuellement. Il fut créé par Andi Gutmans et Zeev Suraski en 1997, sous forme de réécriture complète de PHP/FI, lorsqu'ils s'aperçurent que PHP/FI était sous performant pour leur application de commerce électronique. Dans un effort de coopération, et de compatibilité avec les anciennes versions de PHP/FI, Andi, Rasmus et Zeev décidèrent de coopérer et d'annoncer PHP 3.0 comme le successeur officiel de PHP/FI. Le développement de PHP/FI 2.0 fut complètement arrêté.

Une des améliorations notables de PHP 3.0 fut ses capacités d'extensions. En plus de fournir une solide infrastructure aux utilisateurs finaux, des accès à de nombreuses bases de données et protocoles, PHP 3.0 proposait une API modulaire, qui attira des douzaines de développeurs. Ceux-ci réalisèrent et partagèrent de nouvelles extensions. Sans doute, ce fut la clé du succès retentissant de PHP 3.0. Les autres améliorations de PHP 3.0 furent le support de la syntaxe objet, et une syntaxe de langage plus robuste et cohérente.

Le nouveau langage fut publié sous un nouveau nom, qui indiquait clairement que le projet n'était plus un projet personnel, comme l'était PHP/FI 2.0. Il fut nommé 'PHP' avec une nouvelle signification : 'PHP: Hypertext Preprocessor'. C'est un acronyme récursif, c'est à dire qu'il se définit lui-même. En français, cela donne : 'Le préprocesseur Hypertexte, c'est PHP'.

A la fin de 1998, PHP avait conquis une base de plusieurs dizaines de milliers d'utilisateurs, et des centaines de milliers de sites indiquaient qu'ils l'utilisaient. Au plus fort de son utilisation, PHP 3.0 était installé sur 10% du parc mondial de serveurs web mondial.

PHP 3.0 fut officiellement publié en Juin 1998, après 9 mois de tests.

PHP 4

Durant l'hiver 1998, juste après la publication de PHP 3.0, Andi Gutmans et Zeev Suraski commencèrent la réécriture du moteur interne de PHP à la base. L'objectif était d'améliorer les performances de PHP avec les applications complexes, et améliorer la modularité du code. Ces applications étaient rendues possibles par la syntaxe de PHP 3.0, mais le logiciel n'était pas conçu pour supporter efficacement ces applications.

Le nouveau moteur, appelé 'Zend Engine' (combinaison des noms de Zeev et Andi), atteint ces objectifs avec succès, et la première version fut publiée vers la mi-1999. PHP 4.0, s'appuyant sur ce moteur et amélioré par un grand nombre de nouvelles fonctionnalités fut publié officiellement en mai 2000, presque 2 ans après son prédécesseur. En plus de performances nettement plus élevées, PHP 4.0 apportait le support de nombreux serveurs web, les sessions HTTP, la bufferisation de sortie, une sécurité accrue des informations visiteurs et plusieurs nouvelles structures de langage.

PHP 4 est actuellement la dernière version de PHP. Le projet de PHP 5.0 a déjà débuté, afin d'améliorer le moteur Zend, et y intégrer des capacités objets améliorées.

Actuellement, PHP est utilisé par des centaines de milliers de développeurs, et plusieurs millions de sites web indiquent qu'ils sont configurés avec PHP, ce qui représente environs 20% des noms de domaines sur Internet.

L'équipe de développement de PHP inclue des douzaines de développeurs, et d'autres équipes travaillent à des projets liés tels que PEAR ou la documentation.

PHP 5

Le futur de PHP est essentiellement constitué par son coeur, le Zend Engine. PHP 5 incluera la nouvelle version du Zend Engine 2.0. Pour plus d'informations sur ce moteur, voyez sa page web.

Précédent | Sommaire | Suivant
Appendices | Niveau supérieur | Quelques projets liés à PHP


Livres traitant de PHP

Comme PHP a évolué, il a été reconnu comme une plate forme de développement populaire. Un des signes qui ne trompe pas est le nombre de livres dédié à PHP a évolué paralellement.

Autant que nous le sachions, le premier livre dédié à PHP a été 'php- dynamische webauftritte professionell realisieren' - un livre en allemand, écrit par Egon Schmid, Christian Cartus et Richard Blume. Le premier livre en anglais sur PHP fut publié juste après : 'Core PHP Programming' par Leon Atkinson. Ces deux livres couvraient PHP 3.0.

Même si ces deux livres restent uniques dans leur genre, ils furent rapidement suivis par un grand nombre d'autres livres, de différents éditeurs. Il y a plus de 40 livres en anglais, 50 en allemand et plus de 20 en français. De plus, on peut maintenant trouver des livres sur PHP en espagnol, coréen, japonais et hébreux.

Clairement, ce nombre grandissant de livres, écrit par différents auteurs, publiés par différents éditeurs et leur disponibilité en différentes langues est un témoingnage du succès planétaire de PHP.

Précédent | Sommaire | Suivant
Quelques projets liés à PHP | Niveau supérieur | Publications sur PHP


Publications sur PHP

Autant que nous le sachions, le premier article consacré à PHP dans un magasine papier fut publié dans un magazine Francais, vers la fin 1998 et couvrait PHP 3.0. Comme tous les livres, ce fut le premier d'une longue série d'articles publiés dans différents magazines.

Des articles sur PHP ont été publiés dans Dr. Dobbs, Linux Enterprise, Linux Magazine et bien d'autres. Des articles sur la migration d'applications PHP vers un environnement Windows existe dans la librarie MSDN de Microsoft.

Précédent | Sommaire | Suivant
Livres traitant de PHP | Niveau supérieur | Migration de PHP 3.0 à PHP 4.0


Quelques projets liés à PHP

PEAR

PEAR, signifie 'PHP Extension and Application Repository' (initialement, PHP Extension and Add-on Repository) est la première version de classe de base en PHP, et deviendra à terme le moyen privilégié de distribuer PHP et les modules C.

PEAR a été conçu durant les débats tenus lors des PHP Developers' Meeting (PDM) (Rencontres de développeurs PHP), qui ont eu lieu en Janvier 2000 à Tel Aviv. Il a été crée à l'initiative de Stig S. Bakken, et dédié à sa première fille, Malin Bakken.

Depuis l'an 2000, PEAR a grossi jusqu'à devenir un projet significatif avec un groupe de développeur compétents, qui travaillent à mettre en place une librairie complète, réutilisable et commune à la communauté PHP entière. PEAR inclus une vaste sélection de classes de bases pour réaliser une couche d'abstraction de bases de données, du cache, des calculs mathématiques et des transactions de commerce électronique.

Equipe d'assurance Qualité

L'équipe d'assurance Qualité de PHP a été mise en place durant l'été 2000, en réponse aux critiques reçues par PHP 3.0, qui n'était pas suffisamment testé sur des environnements de productions. L'équipe est constitué de d'un groupe de développeurs de haut niveau, qui ont une bonne connaissance des sources PHP. Ces développeurs passent le plus clair de leur temps à localiser et supprimer les bugs trouvés dans PHP. De plus, il y a bien d'autres membres du groupe PHP qui testent et fournissent un compte rendu fidèle de l'utilisation de PHP sur différentes plate formes.

PHP-GTK

PHP-GTK est la solution PHP pour écrire des applications avec interface, coté client. Andrei Zmievski se rappelle de la création de PHP-GTK:

La programmation d'interface GUI a toujours été une passion pour moi, et je pensais que Gtk+ était une excellente librairie, hormis le fait qu'elle était écrite en C, ce qui était plutôt laborieux. Après avoir assisté aux implémentations de PyGtk et GTK-Perl, j'ai décidé de voir si PHP pouvait disposer de sa propre interface avec Gtk+, même minimale. J'ai commencé au mois d'août 2000, lorsque j'avais un peu plus de temps libre, et j'ai réalisé les premières expérimentations. Mon guide principal fut l'implémentation de PyGtk, qui était plutôt complète et avait une interface orientée objet. James Henstridge, l'auteur de PyGtk, fut d'une aide précieuse au démarrage du projet.

Réécrire toutes les interfaces de Gtk+ à la main était hors de question et j'ai pensé à réaliser un générateur de code, exactement comme PyGtk l'avait fait. Le générateur de code était un programme PHP qui lisait un ensemble de fichiers .defs, contenant les classes, constantes et méthodes Gtk+, puis générait le code d'interface de PHP. Ce qui ne pouvait pas être généré automatiquement était traités à la main, dans le fichier .overrides.

Travailler sur le générateur de code et sur l'infrastructure pris un peu de temps, car je n'avais pas beaucoup de temps à consacrer à PHP-GTK durant l'automne 2000. Après avoir montré PHP-GTK à Frank Kromann, il s'y intéressa, et commença à m'aider sur le générateur et l'implémentation Win32. Lorsque nous écrivîmes le premier programme 'Hello World', ce fut extrêmement excitant. Cela a pris encore quelques mois pour avoir une version initiale. Elle fut publiée en mars 2001. Cela a encore pris quelques mois pour que le projet soit dans une forme présentable. Ce projet fut rapidement présenté sur SlashDot.

Anticipant que PHP serait un projet à part entière, j'ai installé des listes de diffusion et un serveur CVS indépendants, de même que le site gtk.php.net, avec l'aide de Colin Viebrock. La documentation demandait aussi de l'aide, et James Moore vient me porter une aide précieuse.

Depuis sa publication PHP-GTK a gagné en popularité. Nous avons notre propre équipe de documentation, et le manuel s'améliore de plus en plus. Des extensions ont été écrites pour PHP-GTK et des applications de plus en plus importantes sont concues.

Précédent | Sommaire | Suivant
Histoire de PHP | Niveau supérieur | Livres traitant de PHP


extends : héritage

Souvent, vous aurez besoin d'une classe avec des méthodes et fonctions similaires à une autre classe. En fait, il est bon de définir des classes génériques, qui pourront être réutilisées et adaptées à tous vos projets. Pour faciliter cela, une classe peut être une extension d'une autre classe. La classe dérivée hérite alors de toutes les méthodes et variables de la classe de base (cet héritage a de bien que personne ne meurt pour en profiter), mais peut définir ses propres fonctions et variables, qui s'ajouteront. Une classe ne peut hériter que d'une seule autre classe, et l'héritage multiple n'est pas supporté. Les héritages se font avec le mot clé 'extends'.

Exemple 13-5. Héritage de classes

<?php
class Caddie_nomme extends Caddie {
    var $owner;
    function set_owner ($name) {
        $this->owner = $name;
    }
}
?>

L'exemple ci-dessus définit la classe Caddie_nomme qui possède les mêmes variables que la classe Caddie et la variable $owner en plus, ainsi que la fonction set_owner(). Vous créez un panier nominatif de la même manière que précédemment, et vous pouvez alors affecter un nom au panier ou en connaître le nom. Vous pouvez de toutes les façons utiliser les mêmes fonctions que sur un panier classique.

Exemple 13-6. Héritage de classes (2)

<?php
$ncart = new Caddie_nomme;    // Cr&eacute;ation d'un panier nominatif
$ncart->set_owner ("kris"); // Affectation du nom du panier
print $ncart->owner;        // Affichage du nom du panier
$ncart->add_item ("10", 1); // (h&eacute;ritage des fonctions de la classe p&egrave;re)
?>

Précédent | Sommaire | Suivant
Les classes et les objets | Niveau supérieur | Constructor : constructeur


Opérateur ::

Attention

La documentation suivante n'est valable que pour PHP 4 et plus récent.

Parfois, il est pratique de faire référence aux fonctions est variables d'une classe de base, ou bien d'utiliser des méthodes de classes qui n'ont pas encore d'objets créés. L'opérateur :: est là pour ces situations.

Exemple 13-11. Exemples avec l'opérateur ::

<?php
class A {
  function example() {
    echo "Je suis la fonction originale A::example().<br>\n";
  }
}
class B extends A {
  function example() {
    echo "Je suis la fonction red&eacute;finie B::example().<br>\n";
    A::example();
  }
}
// Il n'y a pas d'objets de classe A.
// L'affichage est :
//   Je suis la fonction originale A::example().<br>
A::example();
// Cr&eacute;ation d'un objet de la classe B.
$b = new B;
// L'affichage est :
//   Je suis la fonction red&eacute;finie B::example().<br>
//   Je suis la fonction originale A::example().<br>
$b->example();
?>

Les exemples ci-dessus appellent la fonction example() dans la classe A, mais il n'y a pas encore d'objet de classe A, alors il n'est pas possible d'écrire $a->example(). A la place, on appelle la fonction example() comme une fonction de classe, c'est-à-dire avec le nom de la classe elle-même, et sans objet.

Il y a des fonctions de classe, mais pas de variables de classe. En fait, il n'y a aucun objet au moment de l'appel de la fonction. Donc, une fonction de classe ne peut accéder à aucune variable (mais elle peut accéder aux variables locales et globales). Il faut proscrire l'utilisation de $this.

Dans l'exemple ci-dessus, la classe B redéfinit la fonction example(). La définition originale dans la classe A est remplacée par celle de B, et n'est plus accessible depuis B, à moins que vous n'appeliez spécifiquement la fonction example() de la classe A avec l'opérateur ::. Ecrivez A::example() pour cela (en fait, il faudrait écrire parent::example(), comme expliqué dans la section suivante).

Dans ce contexte, il y a un objet courant, qui peut avoir d'autres variables objets. De ce fait, lorsqu'il est utilisé depuis une méthode d'un objet, vous pouvez utiliser $this.

Précédent | Sommaire | Suivant
Constructor : constructeur | Niveau supérieur | parent


parent

Il arrive que vous ayez à écrire du code qui faire référence aux variables et fonctions des classes de base. C'est particulièrement vrai si votre classe dérivée est une spécialisation de votre classe de base.

Au lieu d'utiliser le nom littéral de votre classe de base dans votre code, vous pouvez utiliser le mot réservé parent, qui représente votre classe de base (celle indiqué par extends, dans la déclaration de votre classe). En faisant cela, vous éviter d'appeler le nom de votre classe de base directement dans votre code. Si votre héritage change, vous n'aurez plus qu'à modifier le nom de la classe dans la déclaration extends de votre classe.

Exemple 13-12. Exemples avec l'opérateur parent

<?php
class A {
  function example() {
    echo "Je suis A::example() et je fournis une fonctionnalit&eacute; de base.<br>\n";
  }
}
class B extends A {
  function example() {
    echo "Je suis B::example() et je fournis une fonctionnalit&eacute; suppl&eacute;mentaire.<br>\n";
    parent::example();
  }
}
$b = new B;
// Cette syntaxe va appeler B::example(), qui, &agrave; sont tour, va appeler A::example().
$b->example();
?>

Précédent | Sommaire | Suivant
Opérateur :: | Niveau supérieur | Sauvegarde d'objets - cas des sessions


Constructor : constructeur

Attention

En PHP 3 et PHP 4, les constructeurs se comportent différemment. La sémantique de PHP 4 est fortement recommandée.

Le constructeur est la fonction qui est appelée automatiquement par la classe lorsque vous créez une nouvelle instance d'une classe a l'aide de l'opérateur new. La fonction constructeur a le même nom que la classe. En PHP 3, une fonction devient le constructeur si elle porte le même nom que la classe. En PHP 4, une fonction devient un constructeur si elle porte le même nom que la classe dans laquelle elle est définie. La différence est subtile, mais cruciale.

Exemple 13-7. Constructeur de classe

<?php
class Auto_Caddie extends Caddie {
    function Auto_Caddie () {
        $this->add_item ("10", 1);
    }
}
// Cette syntaxe est valable en PHP 3 et 4
?>

L'exemple ci-dessus définit la classe Auto_Caddie qui hérite de la classe Caddie et définit le constructeur de la classe. Ce dernier initialise le panier avec 1 article de type numéro 10 dès que l'instruction "new" est appelée. La fonction constructeur peut prendre ou non des paramètres optionnels, ce qui la rend beaucoup plus pratique. Pour pouvoir utiliser cette classe sans paramètre, tous les paramètres du constructeurs devraient être optionnels, en fournissant une valeur par défaut, comme ci-dessous.

Exemple 13-8. Constructeur de classe à argument optionnel

<?php
// Cette syntaxe est valable en PHP 3 et 4
class Constructor_Cart extends Cart {
    function Constructor_Cart ($item = "10", $num = 1) {
        $this->add_item ($item, $num);
    }
}
// Cr&eacute;ation du caddie
$default_cart   = new Constructor_Cart;
// Cr&eacute;ation d'un vrai caddie
$different_cart = new Constructor_Cart ("20", 17);
?>

Attention

En PHP 3, les classes dérivées et les constructeurs ont un certains nombre de limitations. Les exemples suivants doivent être lus avec beaucoup d'attention pour comprendre ces limitations.

Exemple 13-9. Constructeur de classe en PHP 4

<?php
class A {
  function A() {
    echo "Je suis le constructeur de A.<br>\n";
  }
}
class B extends A {
  function C() {
    "Je suis une fonction standard.<br>\n";
  }
}
// Aucun constructeur n'est appel&eacute; en PHP 3!!
$b = new B;
?>

En PHP 3, aucun constructeur ne sera appelé dans l'exemple ci-dessus. La règle en PHP 3 est : 'Un constructeur est une méthode qui a le même nom que la classe'. Le nom de la classe est B, et il n'y a pas de fonction qui s'appelle B() dans la classe B. Rien ne se passe.

Ceci est corrigé en PHP 4, avec l'introduction d'une nouvelle règle : Si une classe n'a pas de constructeur, le constructeur de la classe de basse est appelé, s'il existe. L'exemple ci-dessus affichera 'Je suis le constructeur de A.<br>' en PHP 4.

Exemple 13-10. Constructeur de classe en PHP 4

<?php
class A {
  function A() {
    echo "Je suis le constructeur de A.<br>\n";
  }
  function B() {
    echo "Je suis une fonction standard appel&eacute;e B dans la classe A.<br>\n";
    echo "Je ne suis pas le constructeur de A.<br>\n";
  }
}

class B extends A {
  function C() {
    echo "Je suis une fonction standard.<br>\n";
  }
}
// Cette syntaxe va appeler B() comme constructeur.
$b = new B;
?>

En PHP 3, la fonction B() de la classe A va soudainement devenir le constructeur de la classe B, bien qu'il n'ai pas été prévu pour. La règle de PHP 3 est 'Un constructeur est une méthode qui a le même nom que la classe'. PHP 3 ne se soucie guère si la fonction est définie dans la classe B ou si elle a été héritée.

Ceci est corrigé en PHP 4, avec l'introduction d'une nouvelle règle : 'Un constructeur est une méthode de même nom que la classe, définie dans la classe elle-même'. Donc, en PHP 4, la classe B n'a pas de constructeur par elle-même, et le constructeur de la classe A aura été appelé, affichant : 'Je suis le constructeur de A.<br>'.

Attention

Ni PHP 3 ni PHP 4 n'appelle automatiquement le constructeur de la classe supérieure depuis le constructeur de la classe dérivée. Il est de votre responsabilité de propager l'appel des constructeurs.

Note : Il n'y a pas de destructeurs en PHP 3 et PHP 4. Vous pouvez utiliser la fonction register_shutdown_function() à la place, pour simuler un destructeur.

Les destructeurs sont des fonctions qui sont appelées lorsqu'un objet est détruit, soit avec la fonction unset() soit par simple sortie d'une fonction (cas des variables locales). Il n'y a pas de destructeurs en PHP.

Précédent | Sommaire | Suivant
extends : héritage | Niveau supérieur | Opérateur ::


Les fonctions magiques __sleep et __wakeup

serialize() s'assure que votre classe a une méthode avec le nom magique __sleep. Si c'est le cas, cette fonction est appelée avant toute linéarisation. Elle peut alors nettoyer l'objet et on s'attend à ce qu'elle retourne un tableau avec la liste des noms de variables qui doivent être sauvées.

Le but de cette fonction __sleep est de fermer proprement toute connexion à une base de données, de valider les requêtes, de finaliser toutes les actions commencées. Cette fonction est aussi pratique si vous ave de très grands objets qui n'ont pas besoin d'être sauvé entièrement.

A l'inverse, unserialize() s'assure de la présence de la fonction magique __wakeup. Si elle existe, cette fonction reconstruit toutes les ressources d'un objet.

Le but de cette fonction __wakeup est de rétablit toutes les connexions aux bases de données, et de recréer les variables qui n'ont pas été sauvées.

Précédent | Sommaire | Suivant
Sauvegarde d'objets - cas des sessions | Niveau supérieur | Références dans un constructeur


Comparer des objets en PHP 4

En PHP 4, les objets sont comparés de manière très simple, à savoir : deux instances sont égales si elles ont les mêmes attributs et valeurs, et qu'elles sont de la même classe. Des règles similaires s'appliquent lors de la comparaison avec l'opérateur ===.

Si vous exécutons le code suivant :

Exemple 13-14. Exemple de comparaison d'objets en PHP 4

function bool2str($bool) {
    if ($bool === false) {
            return 'FALSE';
    } else {
            return 'TRUE';
    }
}

function compareObjects(&$o1, &$o2) {
    echo 'o1 == o2 : '.bool2str($o1 == $o2)."\n";
    echo 'o1 != o2 : '.bool2str($o1 != $o2)."\n";
    echo 'o1 === o2 : '.bool2str($o1 === $o2)."\n";
    echo 'o1 !== o2 : '.bool2str($o1 !== $o2)."\n";
}

class Flag {
    var $flag;

    function Flag($flag=true) {
            $this->flag = $flag;
    }
}

class SwitchableFlag extends Flag {

    function turnOn() {
        $this->flag = true;
    }

    function turnOff() {
        $this->flag = false;
    }
}

$o = new Flag();
$p = new Flag(false);
$q = new Flag();

$r = new SwitchableFlag();

echo "Compare des instances cr&eacute;&eacute;es avec les m&ecirc;mes param&egrave;tres\n";
compareObjects($o, $q);

echo "\nCompare des instances cr&eacute;&eacute;es avec diff&eacute;rents param&egrave;tres\n";
compareObjects($o, $p);

echo "\nCompare une instance d'un parent avec celle d'une sous-classe\n";
compareObjects($o, $r);
Cet exemple va afficher :
Compare des instances créées avec les mêmes paramètres
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Compare des instances créées avec différents paramètres
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Compare une instance d'un parent avec celle d'une sous-classe
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
Ce qui est le résultat que nous attendions, au vue des règles édictées. Seules deux instances avec les mêmes valeurs d'attributs, et issues de la même classe sont considérées comme égales.

Même lorsque nous avons une composition d'objet, la même règle de comparaison s'applique. Dans l'exemple ci-dessous, nous allons créer une classer conteneur, qui stocke un tableau associatif Flag.

Exemple 13-15. Comparaison d'objets composés en PHP 4

class FlagSet {
    var $set;

    function FlagSet($flagArr = array()) {
        $this->set = $flagArr;
    }

    function addFlag($name, $flag) {
        $this->set[$name] = $flag;
    }

    function removeFlag($name) {
        if (array_key_exists($name, $this->set)) {
            unset($this->set[$name]);
        }
    }
}

$u = new FlagSet();
$u->addFlag('flag1', $o);
$u->addFlag('flag2', $p);
$v = new FlagSet(array('flag1'=>$q, 'flag2'=>$p));
$w = new FlagSet(array('flag1'=>$q));

echo "\nObjects compos&eacute;s u(o,p) et v(q,p)\n";
compareObjects($u, $v);

echo "\nu(o,p) et w(q)\n";
compareObjects($u, $w);
Qui va donner l'affichage suivant :
Objects composés u(o,p) et v(q,p)
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

u(o,p) et w(q)
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Précédent | Sommaire | Suivant
Références dans un constructeur | Niveau supérieur | Comparer des objets en PHP 5


Comparer des objets en PHP 5

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

En PHP 5, la comparaison d'objets et plus compliquée qu'en PHP 4, afin d'être plus proche du comportement des langages orienté objet (bien que PHP n'en soit pas un).

Lors de l'utilisation de l'opérateur de comparaison ==, les objets sont comparées de manière simple, à savoir : deux objets sont égaux si ils ont les mêmes attributs et valeurs, et qu'ils sont des instances de la même classe.

D'un autre coté, lors de l'utilisation de l'opérateur d'identité (===), les objets sont identiques uniquement si ils font référence au même objet de la même classe.

Un exemple va illustrer ces règles.

Exemple 13-16. Exemple de comparaison d'objets en PHP 5

function bool2str($bool) {
    if ($bool === false) {
            return 'FALSE';
    } else {
            return 'TRUE';
    }
}

function compareObjects(&$o1, &$o2) {
    echo 'o1 == o2 : '.bool2str($o1 == $o2)."\n";
    echo 'o1 != o2 : '.bool2str($o1 != $o2)."\n";
    echo 'o1 === o2 : '.bool2str($o1 === $o2)."\n";
    echo 'o1 !== o2 : '.bool2str($o1 !== $o2)."\n";
}

class Flag {
    var $flag;

    function Flag($flag=true) {
            $this->flag = $flag;
    }
}

class OtherFlag {
    var $flag;

    function OtherFlag($flag=true) {
            $this->flag = $flag;
    }
}

$o = new Flag();
$p = new Flag();
$q = $o;
$r = new OtherFlag();

echo "Deux instances de la m&ecirc;me classe\n";
compareObjects($o, $p);

echo "\nDeux r&eacute;f&eacute;rences sur le m&ecirc;me objet\n";
compareObjects($o, $q);

echo "\nInstances de classes diff&eacute;rentes\n";
compareObjects($o, $r);
Cet exemple va afficher :
Deux instances de la même classe
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Deux références sur le même objet
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Instances de classes différentes
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Précédent | Sommaire | Suivant
Comparer des objets en PHP 4 | Niveau supérieur | Les références


La valeur NULL

La valeur spéciale NULL représente l'absence de valeur. Une variable avec la valeur NULL n'a pas de valeur.

Syntaxe

Il y a seulement une valeur de type NULL, et c'est la constante NULL, insensible à la casse.

Exemple 6-39. La valeur NULL

<?php
  $var = Null;
?>

Note : La valeur NULL a été introduite en PHP 4.

Précédent | Sommaire | Suivant
Ressources | Niveau supérieur | Pseudo-types utilisés dans cette documentation


Variables externes à PHP

Formulaires HTML (GET et POST)

Lorsqu'un formulaire est envoyé à un script PHP, toutes les variables du formulaire seront automatiquement disponibles dans le script. Par exemple, considérons le formulaire suivant:

Exemple 7-19. Exemple avec un formulaire simple

<form action="foo.php" method="post">
    Name:  <input type="text" name="username"><br>
    Email: <input type="text" name="email"><br>
    <input type="submit" name="submit" value="Submit me!">
</form>

Suivant votre configuration particulière et vos préférences, vous avez plusieurs méthodes pour accéder aux variables du formulaires. Voici quelques exemples :

Exemple 7-20. Accéder simplement à des variables de formulaires POST

<?php
// Disponibles depuis &php; 4.1.0

   print $_POST['username'];
   print $_REQUEST['username'];

   import_request_variables('p', 'p_');
   print $p_username;

// Disponibles depuis &php; 3.

   print $HTTP_POST_VARS['username'];

// Disponibles si la directive register_globals = on.  Depuis
// &php; 4.2.0 la valeur par d&eacute;faut de cette directive est register_globals = off.
// Utiliser ou pr&eacute;sumer cette m&eacute;thode est d&eacute;courag&eacute;.

   print $username;
?>

Utiliser un formulaire de type GET est similaire, hormis le fait que vous deviez utiliser les variables prédéfinies du GET à la place. GET s'applique aussi à la QUERY_STRING (les informations disponibles après le '?' dans une URL). De ce fait, par exemple, http://www.exemple.com/test.php?id=3 contient les données de GET, qui sont accessibles via $_GET['id']. Voyez aussi $_REQUEST et import_request_variables().

Note : Les tableaux superglobaux, comme $_POST et $_GET, sont disponibles depuis PHP 4.1.0

Comme nous l'avons déjà dis, avant PHP 4.2.0 la valeur par défaut de register_globals était on. Dans PHP 3 elle était toujours à on. La communauté PHP n'encourage personne à utiliser cette directive et privilégie la valeur off et un code accordé.

Note : La directive de configuration magic_quotes_gpc affecte les valeurs de GET, POST et cookies. Si elle est activée, une valeur comme celle de (C'est "PHP!") sera magiquement transformée en (C\'est \"PHP!\"). La protection des caractères est nécessaire pour l'insertion dans les bases de données. Voyez aussi les fonctions addslashes(), stripslashes() et magic_quotes_sybase.

PHP comprend aussi les tableaux dans le contexte des formulaires. (voir aussi la FAQ). Vous pouvez, par exemple, grouper des variables ensembles, ou bien utiliser cette fonctionnalité pour lire des valeurs multiples d'un menu déroulant. Par exemple, voici un formulaire qui se poste lui même des données, et les affiche :

Exemple 7-21. Variables de formulaires complexes

<?php
if ($_POST['action'] == 'submitted') {
    print '<pre>';

    print_r($_POST);
    print '<a href="'. $_SERVER['PHP_SELF'] .'">Essayez &agrave; nouveau</a>';

    print '</pre>';
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Name:  <input type="text" name="personal[name]"><br>
    Email: <input type="text" name="personal[email]"><br>
    Beer: <br>
    <select multiple name="vin[]">
        <option value="bordeaux">bordeaux</option>
        <option value="beaujolais">beaujolais</option>
        <option value="loire">loire</option>
    </select><br>
    <input type="hidden" name="action" value="submitted">
    <input type="submit" name="submit" value="submit me!">
</form>
<?php
}
?>

En PHP 3, la syntaxe des tableaux HTML est limitée aux tableaux uni-dimensionnels. En PHP 4, ces limitations ont été levées.

Nom de variables IMAGE de type SUBMIT

Lors de la soumission d'un formulaire, il est possible d'utiliser une image au lieu d'un bouton standard, comme ceci :

Exemple 7-22. Utilisation d'une image pour soumettre un formulaire

<input type="image" src="image.gif" name="sub">

Lorsque l'utilisateur clique sur cette image, le formulaire associé est envoyé au serveur, avec deux données supplémentaires, sub_x et sub_y. Elles contiennent les coordonnées du clic de l'utilisateur dans l'image. Vous noterez que ces variables sont envoyées par le navigateur avec un point dans leur nom, mais PHP convertit ces points en soulignés.

Cookies HTTP

PHP supporte les cookies HTTP de manière totalement transparente, comme défini dans les spécifications de Netscape. Les cookies sont un mécanisme permettant de stocker des données sur la machine cliente à des fins d'authentification de l'utilisateur. Vous pouvez établir un cookie grâce à la fonction setcookie(). Les cookies font partie intégrante des entêtes HTTP, et donc la fonction setcookie() doit être appelée avant que le moindre affichage ne soit envoyé au navigateur. C'est la même restriction que pour la fonction header(). Tout cookie envoyé depuis le client sur le serveur sera automatiquement stocké sous forme de variable, comme pour la méthode POST ou GET.

Si vous souhaitez assigner plusieurs valeurs à un seul cookie, il vous faut ajouter les caractères [] au nom de votre cookie. Par exemple :

Exemple 7-23. Utilisation de tableaux avec les cookies

<?php
setcookie ("MonCookie[]", "test", time()+3600);
?>

Il est à noter qu'un cookie remplace le cookie précédent par un cookie de même nom tant que le "path" ou le domaine sont identiques. Donc, pour une application de caddie, vous devez implémenter un compteur et l'incrémenter au fur et à mesure. C'est-à-dire:

Exemple 7-24. Exemple avec setcookie()

<?php
$compte++;
SetCookie ("Compte", $compte, time()+3600);
SetCookie ("Caddie[$compte]", $item, time()+3600);
?>

Cas des points dans les noms de variables

Typiquement, PHP ne modifie pas les noms des variables lorsqu'elles sont passées à un script. Cependant, il faut noter que les points (.) ne sont pas autorisés dans les noms de variables PHP. Pour cette raison, jetez un oeil sur :
<?php
  $varname.ext;  /* nom de variable invalide */
?>
Dans ce cas, l'analyseur croit voir la variable nommée $varname, suivie par l'opérateur de concaténation, et suivi encore par la chaîne sans guillemets (une chaîne sans guillemets, et qui n'a pas de signification particulière). Visiblement, ce n'est pas ce qu'on attendait...

Pour cette raison, il est important de noter que PHP remplacera automatiquement les points des noms de variables entrantes par des soulignés (underscore).

Détermination du type des variables

Parceque PHP détermine le type des variables et les convertit (généralement) comme il faut, ce n'est pas toujours le type de variable que vous souhaitez. PHP inclut des fonctions permettant de déterminer le type d'une variable : gettype(), is_long(), is_double(), is_string(), is_array() et is_object().

Précédent | Sommaire | Suivant
Les variables dynamiques | Niveau supérieur | Les constantes


empty("0")

L'évolution la plus polémique est celle de empty(). Une chaîne contenant seulement le caractère '0' (zéro) est maintenant considérée comme vide, alors qu'elle ne l'était pas en PHP 3.0.

Ce nouveau comportement prend tout son sens dans les applications web, puisque tous les résultats de champs de type input sont de type chaîne de caractères, même si un nombre est demandé, et ce, grâce aux capacités de conversion automatique de PHP. D'un autre côté, cela peut casser votre code d'une manière très subtile, menant droit au comportement erratique, difficilement repérable si vous ne savez pas ce qui vous attend.

Précédent | Sommaire | Suivant
Initialiseur | Niveau supérieur | Fonctions manquantes


old_function

L'instruction old_function vous permet de déclarer une fonction en utilisant une syntaxe identique à celle de PHP/FI2 (hormis le fait que vous devez remplacer 'function' par 'old_function').

C'est une fonctionnalité obsolète, qui ne doit être utilisée que par les convertisseurs PHP/FI2->PHP 3.

Avertissement

Les fonctions déclarées comme old_function ne peuvent pas être appelées depuis le code interne PHP. Entre autres choses, cela signifique que vous ne pouvez pas les utiliser avec des fonctions comme usort(), array_walk() et register_shutdown_function(). Vous pouvez contourner cette limitation en écrivant une fonction moderne, qui appelle cette vieille syntaxe old_function.

Précédent | Sommaire | Suivant
Migration de PHP/FI 2.0 à PHP 3.0 | Niveau supérieur | Balises PHP


La valeur TRUE/FALSE comme retour de fonctions

La plupart des fonctions internes de PHP ont été réécrite pour qu'elle retourne TRUE en cas de succès, et FALSE en cas d'erreur, au contraire des fonctions qui retournaient 0 et -1 en PHP/FI 2.0. Le nouveau comportement est beaucoup plus logique, comme par exemple $fp = fopen("/your/file") or fail("fichier non trouvé!");. Etant donné que PHP/FI 2.0 n'a pas de règle claire à propos de ce que les fonctions doivent retourner en cas d'échec, la plupart des scripts devront probablement être vérifié manuellement, après avoir utilisé le convertisseur 2.0 à 3.0.

Exemple C-9. Migration depuis 2.0: valeur retournées, ancienne façon

<?php
  $fp = fopen($file, "r");
  if ($fp == -1);
    echo("Impossible d'ouvrir le fichier $file en lecture <br>\n");
  endif;
?>

Exemple C-10. Migration depuis 2.0: valeur retournées, nouvelle façon

<?php
  $fp = @fopen($file, "r") or
     print("Impossible d'ouvrir le fichier $file en lecture<br>\n");
?>

Précédent | Sommaire | Suivant
Evaluation rapide des booléens | Niveau supérieur | Diverses incompatibilités


constantes prédéfinies de zend

constantes prédéfinies de zend -- Constants définies dans le coeur de PHP, Zend et les modules SAPI

Description

Ces constantes sont définies par le coeur de PHP. Cela inclut notamment PHP, le moteur Zend et les modules SAPI.

PHP_VERSION (chaîne de caractères)

PHP_OS (chaîne de caractères)

DEFAULT_INCLUDE_PATH (chaîne de caractères)

PEAR_INSTALL_DIR (chaîne de caractères)

PEAR_EXTENSION_DIR (chaîne de caractères)

PHP_EXTENSION_DIR (chaîne de caractères)

PHP_BINDIR (chaîne de caractères)

PHP_LIBDIR (chaîne de caractères)

PHP_DATADIR (chaîne de caractères)

PHP_SYSCONFDIR (chaîne de caractères)

PHP_LOCALSTATEDIR (chaîne de caractères)

PHP_CONFIG_FILE_PATH (chaîne de caractères)

PHP_OUTPUT_HANDLER_START (entier)

PHP_OUTPUT_HANDLER_CONT (entier)

PHP_OUTPUT_HANDLER_END (entier)

E_ERROR (entier)

E_WARNING (entier)

E_PARSE (entier)

E_NOTICE (entier)

E_CORE_ERROR (entier)

E_CORE_WARNING (entier)

E_COMPILE_ERROR (entier)

E_COMPILE_WARNING (entier)

E_USER_ERROR (entier)

E_USER_WARNING (entier)

E_USER_NOTICE (entier)

E_ALL (entier)

Précédent | Sommaire | Suivant
Constantes prédéfinies | Niveau supérieur | constantes standards prédéfinies


constantes standards prédéfinies

constantes standards prédéfinies -- Constantes standards dans PHP

Description

Ces constantes sont définies par défaut dans PHP.

EXTR_OVERWRITE (entier)

EXTR_SKIP (entier)

EXTR_PREFIX_SAME (entier)

EXTR_PREFIX_ALL (entier)

EXTR_PREFIX_INVALID (entier)

EXTR_PREFIX_IF_EXISTS (entier)

EXTR_IF_EXISTS (entier)

SORT_ASC (entier)

SORT_DESC (entier)

SORT_REGULAR (entier)

SORT_NUMERIC (entier)

SORT_STRING (entier)

CASE_LOWER (entier)

CASE_UPPER (entier)

COUNT_NORMAL (entier)

COUNT_RECURSIVE (entier)

ASSERT_ACTIVE (entier)

ASSERT_CALLBACK (entier)

ASSERT_BAIL (entier)

ASSERT_WARNING (entier)

ASSERT_QUIET_EVAL (entier)

CONNECTION_ABORTED (entier)

CONNECTION_NORMAL (entier)

CONNECTION_TIMEOUT (entier)

INI_USER (entier)

INI_PERDIR (entier)

INI_SYSTEM (entier)

INI_ALL (entier)

M_E (nombre à virgule flottante)

M_LOG2E (nombre à virgule flottante)

M_LOG10E (nombre à virgule flottante)

M_LN2 (nombre à virgule flottante)

M_LN10 (nombre à virgule flottante)

M_PI (nombre à virgule flottante)

M_PI_2 (nombre à virgule flottante)

M_PI_4 (nombre à virgule flottante)

M_1_PI (nombre à virgule flottante)

M_2_PI (nombre à virgule flottante)

M_2_SQRTPI (nombre à virgule flottante)

M_SQRT2 (nombre à virgule flottante)

M_SQRT1_2 (nombre à virgule flottante)

CRYPT_SALT_LENGTH (entier)

CRYPT_STD_DES (entier)

CRYPT_EXT_DES (entier)

CRYPT_MD5 (entier)

CRYPT_BLOWFISH (entier)

DIRECTORY_SEPARATOR (entier)

SEEK_SET (entier)

SEEK_CUR (entier)

SEEK_END (entier)

LOCK_SH (entier)

LOCK_EX (entier)

LOCK_UN (entier)

LOCK_NB (entier)

HTML_SPECIALCHARS (entier)

HTML_ENTITIES (entier)

ENT_COMPAT (entier)

ENT_QUOTES (entier)

ENT_NOQUOTES (entier)

INFO_GENERAL (entier)

INFO_CREDITS (entier)

INFO_CONFIGURATION (entier)

INFO_MODULES (entier)

INFO_ENVIRONMENT (entier)

INFO_VARIABLES (entier)

INFO_LICENSE (entier)

INFO_ALL (entier)

CREDITS_GROUP (entier)

CREDITS_GENERAL (entier)

CREDITS_SAPI (entier)

CREDITS_MODULES (entier)

CREDITS_DOCS (entier)

CREDITS_FULLPAGE (entier)

CREDITS_QA (entier)

CREDITS_ALL (entier)

STR_PAD_LEFT (entier)

STR_PAD_RIGHT (entier)

STR_PAD_BOTH (entier)

PATHINFO_DIRNAME (entier)

PATHINFO_BASENAME (entier)

PATHINFO_EXTENSION (entier)

CHAR_MAX (entier)

LC_CTYPE (entier)

LC_NUMERIC (entier)

LC_TIME (entier)

LC_COLLATE (entier)

LC_MONETARY (entier)

LC_ALL (entier)

LC_MESSAGES (entier)

ABDAY_1 (entier)

ABDAY_2 (entier)

ABDAY_3 (entier)

ABDAY_4 (entier)

ABDAY_5 (entier)

ABDAY_6 (entier)

ABDAY_7 (entier)

DAY_1 (entier)

DAY_2 (entier)

DAY_3 (entier)

DAY_4 (entier)

DAY_5 (entier)

DAY_6 (entier)

DAY_7 (entier)

ABMON_1 (entier)

ABMON_2 (entier)

ABMON_3 (entier)

ABMON_4 (entier)

ABMON_5 (entier)

ABMON_6 (entier)

ABMON_7 (entier)

ABMON_8 (entier)

ABMON_9 (entier)

ABMON_10 (entier)

ABMON_11 (entier)

ABMON_12 (entier)

MON_1 (entier)

MON_2 (entier)

MON_3 (entier)

MON_4 (entier)

MON_5 (entier)

MON_6 (entier)

MON_7 (entier)

MON_8 (entier)

MON_9 (entier)

MON_10 (entier)

MON_11 (entier)

MON_12 (entier)

AM_STR (entier)

PM_STR (entier)

D_T_FMT (entier)

D_FMT (entier)

T_FMT (entier)

T_FMT_AMPM (entier)

ERA (entier)

ERA_YEAR (entier)

ERA_D_T_FMT (entier)

ERA_D_FMT (entier)

ERA_T_FMT (entier)

ALT_DIGITS (entier)

INT_CURR_SYMBOL (entier)

CURRENCY_SYMBOL (entier)

CRNCYSTR (entier)

MON_DECIMAL_POINT (entier)

MON_THOUSANDS_SEP (entier)

MON_GROUPING (entier)

POSITIVE_SIGN (entier)

NEGATIVE_SIGN (entier)

INT_FRAC_DIGITS (entier)

FRAC_DIGITS (entier)

P_CS_PRECEDES (entier)

P_SEP_BY_SPACE (entier)

N_CS_PRECEDES (entier)

N_SEP_BY_SPACE (entier)

P_SIGN_POSN (entier)

N_SIGN_POSN (entier)

DECIMAL_POINT (entier)

RADIXCHAR (entier)

THOUSANDS_SEP (entier)

THOUSEP (entier)

GROUPING (entier)

YESEXPR (entier)

NOEXPR (entier)

YESSTR (entier)

NOSTR (entier)

CODESET (entier)

LOG_EMERG (entier)

LOG_ALERT (entier)

LOG_CRIT (entier)

LOG_ERR (entier)

LOG_WARNING (entier)

LOG_NOTICE (entier)

LOG_INFO (entier)

LOG_DEBUG (entier)

LOG_KERN (entier)

LOG_USER (entier)

LOG_MAIL (entier)

LOG_DAEMON (entier)

LOG_AUTH (entier)

LOG_SYSLOG (entier)

LOG_LPR (entier)

LOG_NEWS (entier)

LOG_UUCP (entier)

LOG_CRON (entier)

LOG_AUTHPRIV (entier)

LOG_LOCAL0 (entier)

LOG_LOCAL1 (entier)

LOG_LOCAL2 (entier)

LOG_LOCAL3 (entier)

LOG_LOCAL4 (entier)

LOG_LOCAL5 (entier)

LOG_LOCAL6 (entier)

LOG_LOCAL7 (entier)

LOG_PID (entier)

LOG_CONS (entier)

LOG_ODELAY (entier)

LOG_NDELAY (entier)

LOG_NOWAIT (entier)

LOG_PERROR (entier)

Précédent | Sommaire | Suivant
constantes prédéfinies de zend | Niveau supérieur | Types des ressources PHP


options d'ouverture de flux

options d'ouverture de flux -- Affectent les fonctions de flux

Description

Plusieurs valeurs peuvent êter combinées avec l'opérateur OR.

IGNORE_PATH

C'est l'option par défaut pour les flux. Elle indique que l'include_path ne sera pas fouillé pour trouver le fichier demandé.

USE_PATH

Requiert que l'include_path soit fouillé à la recherche du fichier demandé.

IGNORE_URL

Requiert que les gestionnaires d'URL soient ignorés pour traiter ce flux. Les gestionnaires qui ne traitent pas d'URL seront utilisé lors du décodate du chemin. Il n'y a pas de contraire à cette option : l'API des flux utilisera tous les gestionnaires par défaut.

IGNORE_URL_WIN

Sous Windows, c'est l'équivalent de IGNORE_URL. Sur tous les autres systèmes, cette option n'a aucun effet.

ENFORCE_SAFE_MODE

Requiert que le gestionnaire de flux effectue les vérifications liées au safe_mode sur le fichier à ouvrir avant e le faire. En omettant cette option, le safe_mode sera ignoré et n'importe quel fichier sera ouvert par PHP, du mometn qu'il a les droits pour le faire.

REPORT_ERRORS

Si cette option est utilisée, et qu'il y a une erreur durant l'ouverture du fichier ou de l'URL, l'API va appeler automatiquement la fonction php_error pour vous. C'est pratique car le chemin peut contenir des informations le login et mot de passe, que vous souhaitez ou pas afficher (les afficher serait un trou de sécurité). Lorsque les API des flux génèrent une erreur, elles commencent par supprimer les informations de login et mot de passe, afin que l'affichage des données soit sans souci.

STREAM_MUST_SEEK

Cette option est pratique lorsque votre extension doit réellement être capable déplacer le pointeur de fichier dans le flux. Certains flots ne disposent pas d'un tel pointeur. Cette option s'assure que le flux va supporter ce opinteur. Si il ne le fait pas, le flux sera copié dans un fichier temporaire (qui peut être un fichier ou un bloc de mémoire), qui supportera le pointeur. Notez bien que cette option est inutile lorsque vous voulez déplacer le pointeur de fichier et y écrire, car le flux que vous allez utiliser n'est peut être pas votre ressource initiale, mais un fichier en cache.

Note : Si la ressource demandée est sur le réseau, cette option va bloquer la fonction d'ouverture jusqu'à ce que le contenu complet du fichier soit téléchargé.

STREAM_WILL_CAST

Si votre extension utilise une librairie tierce qui s'attend à recevoir un pointeur FILE* ou un pointeur de fichier, vous pouvez utiliser cette option pour demander à l'API d'ouvrir la ressource, mas d'éviter d'utiliser les buffers. Vous pouvez alors utiliser php_stream_cast() pour obtenir un FILE* ou un pointeur de fichier, que vous transmettrez à la librairie.

Ceci est particulièrement pratique lorsque vous accédez à des URL via HTTP, qui vont diffuser des données, mais dont le corps ne sera accessible qu'après une quantité indéterminée d'en-têtes.

Comme cette option désactive les buffers, vous pouvez rencontrer des performances moins bonnes qu'avec les API habituelles. C'est parfaitement compréhensible, car vous avec indiqué aux flux que vous alliez utiliser les fonctions de bases de l'implémentation. Utilisez donc cette option uniquement si vous en avez besoin.

Précédent | Sommaire | Suivant
Constantes de flux | Niveau supérieur | FAQ : Foire Aux Questions


php_register_url_stream_wrapper

(no version information, might be only in CVS)

php_register_url_stream_wrapper -- Enregistre un gestionnaire pour l'API de flux

Description

int php_register_url_stream_wrapper ( char * protocol, php_stream_wrapper * wrapper, TSRMLS_DC )

php_register_url_stream_wrapper() enregistre le gestionnaire wrapper pour le protocole protocol.

Note : Si vous appelez cette fonction dans un module dynamiquement chargé, vous DEVEZ appeler la fonction php_unregister_url_stream_wrapper() dans la fonction de terminaison de votre module, sinon PHP va crasher.

Précédent | Sommaire | Suivant
php_stream_passthru | Niveau supérieur | php_unregister_url_stream_wrapper


php_stream_can_cast

(no version information, might be only in CVS)

php_stream_can_cast -- Détermine si un flux peut être converti en une autre forme, comme FILE* ou socket

Description

int php_stream_can_cast ( php_stream * stream, int castas)

php_stream_can_cast() est l'équivalent de la fonction php_stream_cast() avec le paramètre ret mis à NULL, et le paramètre flags mis à 0. Elle retourne SUCCESS si le flux peut être converti dans la forme demandée, ou bien FAILURE si la conversion ne peut se faire.

Note : Bien que cette fonction n'effectue aucune conversion, il est possible que certains état interne du flux soient modifiés.

Note : Vous devez explicitement comparer la valeur de retour avec une des constantes, comme décrit dans php_stream_cast().

Voir aussi php_stream_cast() et php_stream_is().

Précédent | Sommaire | Suivant
php_stream_cast | Niveau supérieur | php_stream_is_persistent


php_stream_cast

(no version information, might be only in CVS)

php_stream_cast -- Convertit un flux en une autre forme, comme un FILE* ou une socket

Description

int php_stream_cast ( php_stream * stream, int castas, void ** ret, int flags)

php_stream_cast() tente de convertir le flux stream en un autre ressource indiqué par castas. Si ret est NULL, le flux est interrogé pour savoir une telle conversoin est posible, sans effectuer réellemnt la conversion (mais certains état interne pourrait être changés dans ce cas). Si flags vaut REPORT_ERRORS, un message d'erreur apparaîtra si une erreur survient durant la conversion.

Note : Cette fonction retourne SUCCESS en cas de réussite et FAILURE en cas d'échec. Soyez prévenu que vous devez faire une comparaison explicite avec SUCCESS ou FAILURE à cause des valeurs sous jacentes de ces constantes. Une simple comparaison d'expression booléenne ne sera pas interprétée comme vous le souhaitez.

Tableau 43-1. Types de ressources de castas

Valeur | Signification
PHP_STREAM_AS_STDIO | Un pointeur ANSI FILE* qui représente le flux
PHP_STREAM_AS_FD | Un pointeur de fichier de type POSIX qui représente le flux
PHP_STREAM_AS_SOCKETD | Un pointeur de socket réseau qui représente le flux

En plus des types de ressources basiques ci-dessus, le processus de conversion peut être modifié en utilisant les paramètres ci-dessous, ou bien en utilisant l'opérateur OR pour combiner le type de ressource avec une ou plusieurs des valeurs suivantes :

Tableau 43-2. Types de ressources pour castas

Valeur | Signification
PHP_STREAM_CAST_TRY_HARD | Essaie aussi fort que possible, même si c'est au prix de quelques ressources supplémentaires, que la conversion réussisse
PHP_STREAM_CAST_RELEASE | Informque l'API de flux que d'autre code (possible une librairie tierce partie) sera responsable de la gestion des ressources de bas niveau. Cela fait que le flux stream sera fermé de telle façon à ce que le gestionnaire soit préservé et retourné dans le paramètre ret. Si la fonction réussit, le paramètre stream doit être considéré comme fermé, et inutilisable en l'état.

Note : Si votre système supporte la fonction fopencookie() (les systèmes utilisant la librairie glibc 2 ou plus récent), l'API de flux sera toujours capable de créer des pointeurs de fichiers de type ANSI FILE* pour tous les flux. Même si c'est extrêmement utile pour passer des flux PHP à des librairie tierce partie, un tel système n'est pas portable. Il est demandé que vous considériez la portabilité e vos fonctions avant de diffuser votre extension. Si l'utilisation de fopencookie() n'est pas désirable, il est recommandé d'interroger le flux pour voir si il supporte naturellement la conversion en FILE* en utilisant la fonction php_stream_is()

Note : Si vous demandez une socket réseau à la place d'un FILE*, l'API de flux va utiliser la fonction fdopen() pour la créer pour vous. Soyez prévenu que faire cela risque de perdre les données qui ont été mises en buffer dans le flux, si vous mélanger des appels de l'API de flux et les appels standards ANSI.

Voir aussi php_stream_is() et php_stream_can_cast().

Précédent | Sommaire | Suivant
php_stream_make_seekable | Niveau supérieur | php_stream_can_cast


php_stream_close

(no version information, might be only in CVS)

php_stream_close -- Ferme un flux

Description

int php_stream_close ( php_stream * stream)

php_stream_close() ferme correctement le flux stream et libère les ressources qui lui sont associées. Apràs la fermeture de stream, il prend une valeur indéfinie, et ne devrait plus être utilisé.

php_stream_close() retourne 0 si le flux a été fermé, ou bien EOF pour indiquer une erreur. Indépendamment du succès de l'opération, stream prend une valeur indéfinie, et ne devrait plus être utilisé.

Précédent | Sommaire | Suivant
php_stream_gets | Niveau supérieur | php_stream_flush


php_stream_closedir

(no version information, might be only in CVS)

php_stream_closedir -- Ferme un flux de dossier, et libère les ressources

Description

int php_stream_closedir ( php_stream * dirstream)

php_stream_closedir() ferme un flux le dossier dirstream, et libère les ressources. Retourne 0 en cas de succes, et -1 en cas d'échec.

Précédent | Sommaire | Suivant
php_stream_rewinddir | Niveau supérieur | API des flux pour les fichiers


php_stream_copy_to_mem

(no version information, might be only in CVS)

php_stream_copy_to_mem -- Copie des données depuis un flux dans un buffer

Description

size_t php_stream_copy_to_mem ( php_stream * src, char ** buf, size_t maxlen, int persistent)

php_stream_copy_to_mem() alloue un buffer de taille maxlen+1 en utilisant la fonction pemalloc() (en passant persistent). Puis, elle lit maxlen octets depuis le flux from src and stores them in the allocated buffer.

The allocated buffer is returned in buf, and the number of bytes successfully read. You, the caller, are responsible for freeing the buffer by passing it and persistent to pefree().

If you want to copy all remaining data from the src stream, pass the constant PHP_STREAM_COPY_ALL as the value of maxlen.

Note : Cette fonction va essayer d'effectuer la copie de la manière la plus efficace, en utilise dans buffer mémoire lorsque c'est possible.

Précédent | Sommaire | Suivant
php_stream_copy_to_stream | Niveau supérieur | php_stream_make_seekable


php_stream_copy_to_stream

(no version information, might be only in CVS)

php_stream_copy_to_stream -- Copie des données d'un flux à l'autre

Description

size_t php_stream_copy_to_stream ( php_stream * src, php_stream * dest, size_t maxlen)

php_stream_copy_to_stream() essaie de lire un maximum de maxlen octets dans le flux src puis de les écrire dans le flux dest. La fonction retourne le nombre d'octets copiés.

Si vous souhaitez copier tous les octets restants dans le flux src, passez la constante PHP_STREAM_COPY_ALL comme valeur de maxlen.

Note : Cette fonction va essayer d'effectuer la copie de la manière la plus efficace, en utilise dans buffer mémoire lorsque c'est possible.

Précédent | Sommaire | Suivant
php_stream_tell | Niveau supérieur | php_stream_copy_to_mem


php_stream_eof

(no version information, might be only in CVS)

php_stream_eof -- Vérifie que le pointeur n'est pas au bout du flux

Description

int php_stream_eof ( php_stream * stream)

php_stream_eof() vérifie que le pointeur n'est pas au bout du flux stream.

php_stream_read() retourne 1 pour indiquer la fin du flux (EOF), 0 si il n'y a pas de fin de flux, et -1 pour indiquer une erreur.

Précédent | Sommaire | Suivant
php_stream_write | Niveau supérieur | php_stream_getc


php_stream_filter_register_factory

(no version information, might be only in CVS)

php_stream_filter_register_factory -- Enregistre une usine à filtres avec l'API des flux

Description

int php_stream_filter_register_factory ( const char * filterpattern, php_stream_filter_factory * factory)

Utilisez cette fonction pour enregistrer une usine à filtres, dont le nom est donné par filterpattern. filterpattern peut être un nom classique, sous forme de chaîne, (i.e. myfilter) ou un modèle général (i.e. myfilterclass.*) pour permettre à un filtre d'effectuer différentes opérations en fonction du nom du filtre invoqué (i.e. myfilterclass.foo, myfilterclass.bar, etc...)

Note : Les filtres enregistrés par une extension dynamiquement chargée doivent s'assurer d'appeler php_stream_filter_unregister_factory() durant MSHUTDOWN.

Précédent | Sommaire | Suivant
php_stream_open_wrapper_as_file | Niveau supérieur | php_stream_filter_unregister_factory


php_stream_filter_unregister_factory

(no version information, might be only in CVS)

php_stream_filter_unregister_factory -- Supprime une usine à filtres des API de flux

Description

int php_stream_filter_unregister_factory ( const char * filterpattern)

Supprime l'usine à filtres filterfactory spécifié par le paramètre filterpattern, la rendant inutilisable.

Note : Les filtres enregistrés par une extension dynamiquement chargée doivent s'assurer d'appeler php_stream_filter_unregister_factory() durant MSHUTDOWN.

Précédent | Sommaire | Suivant
php_stream_filter_register_factory | Niveau supérieur | Streams Dir API Reference


php_stream_flush

(no version information, might be only in CVS)

php_stream_flush -- Vide les buffers dans le flux

Description

int php_stream_flush ( php_stream * stream)

php_stream_flush() vide toutes les données contenues dans les buffers d'écriture du flux stream et force leur stockage.

php_stream_flush() retourne 0 si les buffers ont été vidés, ou si les buffers n'ont pas besoin d'être vidé, mais retourne EOF pour indiquer une erreur.

Précédent | Sommaire | Suivant
php_stream_close | Niveau supérieur | php_stream_seek


php_stream_fopen_from_file

(no version information, might be only in CVS)

php_stream_fopen_from_file -- Convertit un pointeur ANSI FILE* en un flux

Description

php_stream * php_stream_fopen_from_file ( FILE * file, char * mode)

php_stream_fopen_from_file() retourne un flux basé sur le fichier file. mode doit être le même mode que celui utilisé pour ouvrir file, sinon d'étranges erreurs surviendront lors de l'écriture lorsque le mode du flux sera différent de celui du fichier.

Précédent | Sommaire | Suivant
API des flux pour les fichiers | Niveau supérieur | php_stream_fopen_tmpfile


php_stream_fopen_temporary_file

(no version information, might be only in CVS)

php_stream_fopen_temporary_file -- Génère un fichier temporaire et ouvre un flux avec

Description

php_stream * php_stream_fopen_temporary_file ( const char * dir, const char * pfx, char ** opened)

php_stream_fopen_temporary_file() génère un fichier temporaire dans le dossier dir avec le préfixe pfx. Le nom du fichier ainsi généré est retourné dans la variable opened, dont vous êtes responsable de l'effacemetn avec efree(). Un flux est ouvert sur ce fichier généré, en mode "w+b". Le fichier N'EST PAS automatiquement effacé. Vous êtes responsables de son effacement lorsque vous aurez fini avec.

Précédent | Sommaire | Suivant
php_stream_fopen_tmpfile | Niveau supérieur | Streams Socket API Reference


php_stream_fopen_tmpfile

(no version information, might be only in CVS)

php_stream_fopen_tmpfile -- Ouvre un pointeur FILE* avec la fonction tmpfile() et la convertit en flux

Description

php_stream * php_stream_fopen_tmpfile ( void )

php_stream_fopen_from_file() retourne un flux basé sur un fichier temporaire, ouvert en mode "w+b". Le fichier temporaire sera supprimé automatiquement lorsque le flux sera fermé ou que le procesus sera terminé.

Précédent | Sommaire | Suivant
php_stream_fopen_from_file | Niveau supérieur | php_stream_fopen_temporary_file


php_stream_getc

(no version information, might be only in CVS)

php_stream_getc -- Lit un octet dans un flux

Description

int php_stream_getc ( php_stream * stream)

php_stream_getc() lit un octet dans le flux stream puis le retourne de type unsigned char transtypé en int, ou EOF si la fin du flux est atteinte, ou bien si une erreur est survenue.

php_stream_getc() peut bloquer l'application de la même façon que php_stream_read() bloque.

Le pointeur de position est avancé d'une position si la lecture réussit.

Précédent | Sommaire | Suivant
php_stream_eof | Niveau supérieur | php_stream_gets


php_stream_gets

(no version information, might be only in CVS)

php_stream_gets -- Lit une ligne de données d'un flux dans un buffer

Description

char * php_stream_gets ( php_stream * stream, char * buf, size_t maxlen)

php_stream_gets() lit jusqu'à count-1 octets de données dans le flux stream puis les copies dans le buffer buf. La lecture s'arrête après la rencontre de la fin du fichier (EOF) ou une nouvelle ligne. Si la nouvelle ligne est lue, elle est stockée dans buf dans les données retournées. Un caractère NUL de fin de chaîne est stocké comme dernier caractère dans le buffer.

php_stream_read() retourne buf lorsque cela fonctionne, et NULL sinon.

Le pointeur de position est avancé d'une position si la lecture réussit.

php_stream_gets() peut bloquer l'application de la même façon que php_stream_read() bloque.

Précédent | Sommaire | Suivant
php_stream_getc | Niveau supérieur | php_stream_close


php_stream_is

(no version information, might be only in CVS)

php_stream_is -- Détermine si un flux est d'un type particulier

Description

int php_stream_is ( php_stream * stream, int istype)

php_stream_is() retourne 1 si stream est du type spécifié par istype, et 0 sinon.

Tableau 43-1. Valeurs possibles pour istype

Valeur | Signification
PHP_STREAM_IS_STDIO | Le flux est implémenté en utilisant l'implémentation standard
PHP_STREAM_IS_SOCKET | Le flux est implémenté en utilisant l'implémentation des sockets réseau
PHP_STREAM_IS_USERSPACE | Le flux est implémenté en utilisant l'implémentation de l'objet utilisateur
PHP_STREAM_IS_MEMORY | Le flux est implémenté en utilisant l'implémentation mémoire à taille automatique

Note : Les constantes PHP_STREAM_IS_XXX sont en fait définies comme des pointeurs sur la structure des opérations de base. Si vous extension (ou une autre extension définit des flux additionnels), il faut qu'elle déclare aussi les constantes PHP_STREAM_IS_XXX dans ses en-têtes, pour que vous puissiez les utiliser comme base de comparaison.

Note : Cette fonction est implémentée comme une comparaison de pointeurs simple (et rapide), et ne modifie pas l'état du flux.

Voir aussi php_stream_cast() et php_stream_can_cast().

Précédent | Sommaire | Suivant
php_stream_is_persistent | Niveau supérieur | php_stream_passthru


php_stream_is_persistent

(no version information, might be only in CVS)

php_stream_is_persistent -- Détermine si un flux est un flux persistant

Description

int php_stream_is_persistent ( php_stream * stream)

php_stream_is_persistent() retourne 1 si le flux stream est un flux persistant, et 0 sinon.

Précédent | Sommaire | Suivant
php_stream_can_cast | Niveau supérieur | php_stream_is


php_stream_make_seekable

(no version information, might be only in CVS)

php_stream_make_seekable -- Convertit un flux en flux avec un pointeur de position

Description

int php_stream_make_seekable ( php_stream * origstream, php_stream ** newstream, int flags)

php_stream_make_seekable() vérifie si origstream dispose d'un pointeur de potision. Si ce n'est pas le cas, il va copier les données du flux dans un autre flux temporaire, et disposant d'un pointeur de position. Si cela fonctionne, newstream sera un flux valide même si le flux original avait déjà un pointeur de position.

flags vous permet de spécifier votre préférence pour le flux retourné : utilisez la constante PHP_STREAM_NO_PREFERENCE pour utiliser le flux à pointeur de position par défaut (qui utilise la mémoire, mais passe automatiquement sur un fichier si le fichier devient trop grand), ou bien utilisez PHP_STREAM_PREFER_STDIO pour utiliser un fichier temporaire classique.

Tableau 43-1. Valeurs retournées par php_stream_make_seekable()

Valeur | Signification
PHP_STREAM_UNCHANGED | Le flux original avait déjà son pointeur de position. newstream vaut origstream.
PHP_STREAM_RELEASED | Le flux originl n'avait pas pointeur de position, et il a été détruit. Vous n'avez plus accès à origstream.
PHP_STREAM_FAILED | Une erreur est survenue lors de la conversion. newstream vaut NULL; origstream est toujours valide.
PHP_STREAM_CRITICAL | Une erreur est survenue lors de la conversion de origstream, qui est maintenant dans un état indéterminé. newstream vaut NULL et il est très recommandé que vous vous fermiez origstream.

Note : Si vous devez déplacer le pointeur et écrire dans le flux, n'utilisez pas cette fonction, car le flux retourné est un flux mis en cache. Il n'est pas garantit qu'il soit lié à la ressource originale.

Note : Si vous avez uniquement de déplacer le pointeur de position vers l'avant, il n'y a pas besoin d'appeler cette fonction, car l'API va automatiquement émuler ce fonctionnement avec le paramètre whence à la valeur SEEK_CUR.

Note : Si origstream repose sur le réseau, cette fonction va se bloquer jusqu'à ce que tout le contenu soit téléchargé.

Note : Ne JAMAIS appeler cette fonction avec un flux origstream qui est une référence à un pointeur de fichier dans un script PHP. Cette fonction pourrait alors fermer le fichier, ce qui conduira à un crash au prochain accès au pointeur.

Note : Dans de nombreux cas, cette fonction ne peut réussir que si origstream vient d'être tout juste ouvert, et qu'aucune données n'ont été mises dans les caches de la couche de flux. Pour cette raison, et parceque cette fonction est compliquée à utiliser correctement, il est recommandé que vous utilisiez la fonction php_stream_open_wrapper() en lui passant la constante PHP_STREAM_MUST_SEEK dans vos options, au lieu d'appeler cette fonction directement.

Précédent | Sommaire | Suivant
php_stream_copy_to_mem | Niveau supérieur | php_stream_cast


php_stream_open_wrapper

(no version information, might be only in CVS)

php_stream_open_wrapper -- Ouvre un flux sur un fichier ou une URL

Description

php_stream * php_stream_open_wrapper ( char * path, char * mode, int options, char ** opened)

php_stream_open_wrapper() ouvre un fichier, une URL ou n'importe quelle ressource géré, spécifiée par path. Suivant la valeur de mode, le flux peut être ouvert en lecture, écriture, ajout ou une combinaison des trois. Voyez la table ci-dessous pour connaîtres les modes utilisées. De plus vous pouvez aussi intégrer le caractère 'b' comme deuxième ou dernière option. Sa présence indiquera que le flux fonctionnera en mode binaire.

L'option 'b' est ignorée sur les systèmes POSIX, qui traitent les fichiers textes et binaires de la même façon. C'est une bonne idée que de spécifier 'b' à chaque fois que votre flux accède à des données binaires, pour que votre code fonctionne lorsqu'il est compilé sur un système où 'b' serait important.

Tous les fichiers locaux créés par l'API des flux recevront les droits par défaut du système : sous Unix, cela signifie que le masque utilisateur du processus sera utilisé. Sous Windows, le fichier sera donné au propriétaire du processus. Tous les fichiers distants seront créé suivant le protocole utilisé, et les droits utilisés seront ceux du serveur distant.

r

Ouvre le fichier texte en mode lecture. Le pointeur du flux est placé au début du fichier.

r+

Ouvre le fichier texte en lecture et écriture. Le pointeur du flux est placé au début du fichier.

w

Tronque le fichier à une taille de 0 ou bien crée le fichier, puis l'ouvre en mode écriture. Le pointeur du flux est placé au début du fichier.

w+

Tronque le fichier à une taille de 0 ou bien crée le fichier, puis l'ouvre en mode écriture et lecture. Le pointeur du flux est placé au début du fichier.

a

Ouvre le fichier en mode d'écriture. Le fichier est créé si il n'existe pas. Le pointeur de flux est positionné à la fin du fichier.

a+

Ouvre le fichier en mode d'écriture et lecture. Le fichier est créé si il n'existe pas. Le pointeur de flux est positionné à la fin du fichier.

options affecte l'interprétation du path ou de l'URL, les vérifications du safe_mode et les actions à prendre lorsqu'il y a une erreur. Voyez Stream open options pour plus de détails sur ces options.

Si opened est non NULL, il sera assigné avec le nom du fichier ou de la ressource qui aura été réellement ouverte. C'est important lorsque l'option inclus USE_PATH, qui permet de fouiller l'include_path pour rechercher le fichier. Vous, l'appelant, êtes responsable de l'appel de efree() sur le nom de fichier retourné par ce paramètre.

Note : Si vous avez spécifié l'option STREAM_MUST_SEEK dans options, le chemin retourné dans opened peut ne pas être le même que celui qui vous a été réellemetn retourné. Toutefois, ce sera le nom de la ressource originale à partir de laquelle un flux à pointeur variable a été créé.

Précédent | Sommaire | Suivant
php_stream_stat | Niveau supérieur | php_stream_read


php_stream_open_wrapper_as_file

(no version information, might be only in CVS)

php_stream_open_wrapper_as_file -- Ouvre un flux avec un fichier ou une URL, et le convertit en pointeur FILE*

Description

FILE * php_stream_open_wrapper_as_file ( char * path, char * mode, int options, char ** opened)

php_stream_open_wrapper_as_file() est exactement identique à la fonction php_stream_open_wrapper(), mais convertit le flux en un pointeur ANSI FILE* puis le retourne à la place du flux. C'est un raccourci commode pour les extensions qui passent des pointeurs FILE* aux librairies tierce partie.

Précédent | Sommaire | Suivant
php_stream_open_wrapper_ex | Niveau supérieur | php_stream_filter_register_factory


php_stream_open_wrapper_ex

(no version information, might be only in CVS)

php_stream_open_wrapper_ex -- Ouvre un flux avec un fichier ou une URL, en spécifiant le contexte

Description

php_stream * php_stream_open_wrapper_ex ( char * path, char * mode, int options, char ** opened, php_stream_context * context)

php_stream_open_wrapper_ex() est exactement comme php_stream_open_wrapper(), mais vous permet de spécifier un objet de type php_stream_context avec le paramètre context. Pour en savoir plus sur les contextes, voyez ... une section qui viendra plus tard.

Précédent | Sommaire | Suivant
php_unregister_url_stream_wrapper | Niveau supérieur | php_stream_open_wrapper_as_file


php_stream_opendir

(no version information, might be only in CVS)

php_stream_opendir -- Ouvre un dossier pour le lister

Description

php_stream * php_stream_opendir ( char * path, php_stream_context * context)

php_stream_opendir() retourne un flux qui peut être utilisé pour lister les fichiers qui sont contenu dans le dossier spécifié par path. Cette fonction est l'équivalent de opendir() sous POSIX. Bien que cette fonction retourne un objet php_stream, il n'est pas recommandé d'essayer d'utiliser les fonctions de fichiers sur ce flux.

Précédent | Sommaire | Suivant
Streams Dir API Reference | Niveau supérieur | php_stream_readdir


php_stream_passthru

(no version information, might be only in CVS)

php_stream_passthru -- Affiche toutes les données restantes d'un flux

Description

size_t php_stream_passthru ( php_stream * stream)

php_stream_passthru() affiche tous les octets restant dans le flux stream vers le buffer de sortie. Les données sont écrites directement dans le buffer de sortie, qui sera le navigateur dans le cas de PHP sur un serveur web, ou la sortie standard dans le cas de PHP en mode de ligne de commande. Cette fonction essaie d'utiliser des fichiers en mémoire pour accélérer l'exécution.

Précédent | Sommaire | Suivant
php_stream_is | Niveau supérieur | php_register_url_stream_wrapper


php_stream_read

(no version information, might be only in CVS)

php_stream_read -- Lit des octets depuis un flux dans un buffer

Description

size_t php_stream_read ( php_stream * stream, char * buf, size_t count)

php_stream_read() lit jusqu'à count octets dans le flux stream puis les copie dans le buffer buf.

php_stream_read() retourne le nombre d'octets lus. Il n'y a pas de disctinction entre une lecture qui échoue et la fin du fichier : utilisez php_stream_eof() pour tester la fin du fichier avec EOF.

Le pointeur de position dans le flux est avancé d'autant d'octets que le nombre qui en a été lu. Par conséquent, la prochaine lecture reprendra là ou la lecture précédente s'est arrêtée.

Si moins de count octets ont été lus, cet appel bloquera l'application jusqu'à ce que le nombre d'octets nécessaire soit atteint, en fonction de la configuration du flux (bloquant, non bloquant). Par défaut, un flux est ouvert en mode bloquant. Lorsque vous lisez dans des fichiers classiques, le mode bloquant ne vous gènera pas. Lors que le flux atteint EOF php_stream_read() retournera un nombre d'octets lus inférieur à count, puis il retournera 0 aux prochaines lectures.

Précédent | Sommaire | Suivant
php_stream_open_wrapper | Niveau supérieur | php_stream_write


php_stream_readdir

(no version information, might be only in CVS)

php_stream_readdir -- Lit le fichier suivant dans un dossier

Description

php_stream_dirent * php_stream_readdir ( php_stream * dirstream, php_stream_dirent * ent)

php_stream_readdir() lit le nom du fichier suivant dans le dossier dirstream et le stocke dans le paramètre ent. Si la fonction réussit, la valeur retournée est ent. Si la fonction échoue, la valeur retournée est NULL.

Précédent | Sommaire | Suivant
php_stream_opendir | Niveau supérieur | php_stream_rewinddir


php_stream_rewinddir

(no version information, might be only in CVS)

php_stream_rewinddir -- Replace le flux de dossier au début

Description

int php_stream_rewinddir ( php_stream * dirstream)

php_stream_rewinddir() replace le pointeur de dossier au début du flux. Retourne 0 en cas de succes, et -1 en cas d'échec.

Précédent | Sommaire | Suivant
php_stream_readdir | Niveau supérieur | php_stream_closedir


php_stream_seek

(no version information, might be only in CVS)

php_stream_seek -- Modifie la position du pointeur de flux

Description

int php_stream_seek ( php_stream * stream, off_t offset, int whence)

php_stream_seek() modifie la position du pointeur de position du flux stream. La nouvelle position est déterminée en ajoutant offset à la position indiquée par whence. Si whence vaut SEEK_SET, SEEK_CUR ou SEEK_END l'offset sera relativ au début du flux, à la position courante ou à la fin du flux, respectivement.

php_stream_seek() retourne 0 en cas de succès, et -1 en cas d'erreur.

Note : Tous les flux ne supportent pas la modification de la position du pointeur, même si l'API va émuler un tel pointeur si whence vaut SEEK_CUR et offset est positif, en appelant php_stream_read() pour lire (et ignorer) offset octets.

L'émulation est uniquement appliquée si l'implémentation du gestionnaire de flux suporte le pointeur de position. Si le flux est (par exemple) basé sur des fichiers qui travaille avec des flux de pipes, l'API de flux ne pourra pas appliquer une telle émulation. Le positionnement du pointeur de flux échouera et une erreur sera retournée.

Précédent | Sommaire | Suivant
php_stream_flush | Niveau supérieur | php_stream_tell


php_stream_sock_open_from_socket

(no version information, might be only in CVS)

php_stream_sock_open_from_socket -- Convertit un pointeur de socket en flux

Description

php_stream * php_stream_sock_open_from_socket ( int socket, int persistent)

php_stream_sock_open_from_socket() retourne un flux basé sur la socket socket. persistent est une option qui contrôle si le flux doit être ouvert comme un flux persistant. Généralement, ce paramètre vaudra 0.

Précédent | Sommaire | Suivant
Streams Socket API Reference | Niveau supérieur | php_stream_sock_open_host


php_stream_sock_open_host

(no version information, might be only in CVS)

php_stream_sock_open_host -- Ouvre une connexion avec un serveur, et retourne un flux

Description

php_stream * php_stream_sock_open_host ( const char * host, unsigned short port, int socktype, struct timeval * timeout, int persistent)

php_stream_sock_open_host() établit une connexion à l'hôte host et sur le port port. socktype spécifie les options de sockets qui devront être appliquées. socktype est dépendant du système, mais incluera notamment SOCK_STREAM pour les connexions full-duplex, séquentielle et fiables et SOCK_DGRAM pour les connexions non fiables, sans connexion, avec une taille maximale fixée (UDP).

persistent est une option qui contrôle si le flux doit être ouvert comme un flux persistant. Généralement, ce paramètre vaudra 0.

Si non-NULL, timeout spécifie la durée maximale de connexion. Si la connexion prend plus de temps que cette valeur, la tentative de connexion sera abandonnée et NULL sera retourné pour indiquer que le flux n'a pu être ouvert.

Note : Le paramètre timeout n'inclut pas le temps de résolution DNS. La raison à cela est qu'il n'y a pas de méthode portable pour effectuer des résolutions DNS.

La durée d'expiration s'applique à la phase de connexion; si vous avez besoin de durées d'expiration pour les opérations de lecture et d'écritures, il faudra utiliser la fonction php_stream_sock_set_timeout() pour configurer la durée d'expiration de votre flux une fois qu'il sera ouvert.

L'API n'impose aucune restriction sur les valeurs de socktype, mais il est recommandé de considérer les problèmes de portabilité lorsque vous faites ce choix.

Précédent | Sommaire | Suivant
php_stream_sock_open_from_socket | Niveau supérieur | php_stream_sock_open_unix


php_stream_sock_open_unix

(no version information, might be only in CVS)

php_stream_sock_open_unix -- Ouvre une connexion avec une socket UNIX et la convertit en flux

Description

php_stream * php_stream_sock_open_unix ( const char * path, int pathlen, int persistent, struct timeval * timeout)

php_stream_sock_open_unix() tente d'ouvrir une connexion avec une socket UNIX, spécifiée par path. pathlen spécifie la taille de path. Si non-NULL, timeout spécifie la durée maximale de connexion. Si la connexion prend plus de temps que cette valeur, la tentative de connexion sera abandonnée et NULL sera retourné pour indiquer que le flux n'a pu être ouvert. persistent est une option qui contrôle si le flux doit être ouvert comme un flux persistant. Généralement, ce paramètre vaudra 0.

Note : Cette fonction n'est pas utilisable sous Windows, qui n'implémente pas les sockets de domaines. Une exception possible à cette règle sont les exécutables PHP compilé avec cygwin. Vous êtes encouragés à considérer cet aspect de la portabilité de votre extension avant sa publication.

Note : Cette fonction traite path en tenant compte des données binaires, ce qui est bon pour les systèmes qui utilisent un espace de nom abstrait (comme par exemple Linux), où le premier caractère est le caractère NUL.

Précédent | Sommaire | Suivant
php_stream_sock_open_host | Niveau supérieur | Streams Structures


php_stream_stat

(no version information, might be only in CVS)

php_stream_stat -- Lit le statut du cache associé au flux

Description

int php_stream_stat ( php_stream * stream, php_stream_statbuf * ssb)

php_stream_stat() examine le système de stocker du flux stream, et retourne des informations telles que la taille de fichier, les droits d'accès, la date de création, etc... La valeur retournée est 0 en cas de succès, et -1 en cas d'échec. Pour plus d'informations sur les informations retournées, voyez php_stream_statbuf.

Précédent | Sommaire | Suivant
php_stream_stat_path | Niveau supérieur | php_stream_open_wrapper


php_stream_stat_path

(no version information, might be only in CVS)

php_stream_stat_path -- Lit l'état du fichier ou de l'URL

Description

int php_stream_stat_path ( char * path, php_stream_statbuf * ssb)

php_stream_stat_path() examine le fichier ou l'URL spécifié par path et retourne des informations telles que la taille, les droits d'accès, la date de création, etc... La valeur retournée est 0 en cas de succès, et -1 en cas d'échec. Pour plus d'informations, voyez php_stream_statbuf.

Précédent | Sommaire | Suivant
Référence des API communes de flux | Niveau supérieur | php_stream_stat


php_stream_tell

(no version information, might be only in CVS)

php_stream_tell -- Détermine la position du pointeur dans un flux

Description

off_t php_stream_tell ( php_stream * stream)

php_stream_tell() retourne la position du pointeur du flux stream, relativement au début du flux. Si une erreur survient, retourne -1.

Précédent | Sommaire | Suivant
php_stream_seek | Niveau supérieur | php_stream_copy_to_stream


php_stream_write

(no version information, might be only in CVS)

php_stream_write -- écrit des octets depuis un buffer vers un flux

Description

size_t php_stream_write ( php_stream * stream, const char * buf, size_t count)

php_stream_write() écrit count octets du buffer buf dans le flux stream.

php_stream_write() retourne le nombre d'octets qui ont été écrit. Si il y a eu une erreur, le nombre d'octets écrit sera inférieur au paramètre count.

Le pointeur de position dans le flux est avancé d'autant d'octets que le nombre qui en a été écrit. Par conséquent, la prochaine écriture reprendra là ou la lecture précédente s'est arrété.

Précédent | Sommaire | Suivant
php_stream_read | Niveau supérieur | php_stream_eof


php_unregister_url_stream_wrapper

(no version information, might be only in CVS)

php_unregister_url_stream_wrapper -- Désenregistre un gestionnaire pour l'API de flux

Description

int php_unregister_url_stream_wrapper ( char * protocol, TSRMLS_DC )

php_unregister_url_stream_wrapper() désenregistre le gestionnaire associé avec le protocole protocol.

Précédent | Sommaire | Suivant
php_register_url_stream_wrapper | Niveau supérieur | php_stream_open_wrapper_ex


struct php_stream_dirent

struct php_stream_dirent -- Conserve des informations sur un fichier durant une analyse de dossier

Description

php_stream_dirent
     char d_name[MAXPATHLEN]

d_name contient le nom du fichier, relativement au dossier actuellement analysé.

Précédent | Sommaire | Suivant
struct php_stream_statbuf | Niveau supérieur | struct php_stream_ops


struct php_stream_filter

struct php_stream_filter -- Conserve les propriétés et le pointeur de filtre

Description

struct _php_stream_filter {
            php_stream_filter_ops *fops;
            void *abstract; /* for use by filter implementation */
            php_stream_filter *next;
            php_stream_filter *prev;
            int is_persistent;

            /* link into stream and chain */
            php_stream_filter_chain *chain;

            /* buffered buckets */
            php_stream_bucket_brigade buffer;
        } php_stream_filter;

Précédent | Sommaire | Suivant
struct php_stream_wrapper_ops | Niveau supérieur | struct php_stream_filter_ops


struct php_stream_filter_ops

struct php_stream_filter_ops -- Conserver les fonctions membres pour un filtre de flux

Description

typedef struct _php_stream_filter_ops {
            php_stream_filter_status_t (*filter)(
                    php_stream *stream,
                    php_stream_filter *thisfilter,
                    php_stream_bucket_brigade *buckets_in,
                    php_stream_bucket_brigade *buckets_out,
                    size_t *bytes_consumed,
                    int flags
                    TSRMLS_DC);

            void (*dtor)(php_stream_filter *thisfilter TSRMLS_DC);

            const char *label;
} php_stream_filter_ops;

Précédent | Sommaire | Suivant
struct php_stream_filter | Niveau supérieur | Constantes de flux


struct php_stream_ops

struct php_stream_ops -- Conserve les fonctions membres d'une implémentation de flux

Description

typedef struct _php_stream_ops {
             /* Tous les flux DOIVENT implémenter ces opérations */
             size_t (*write)(php_stream *stream, const char *buf, size_t count TSRMLS_DC);
             size_t (*read)(php_stream *stream, char *buf, size_t count TSRMLS_DC);
             int (*close)(php_stream *stream, int close_handle TSRMLS_DC);
             int (*flush)(php_stream *stream TSRMLS_DC);

             const char *label; /* name describing this class of stream */

             /* Ces opérations sont optionnelles, et peuvent prendre la valeur de
             NULL si le flux ne supporte pas cette opération */
            int (*seek)(php_stream *stream, off_t offset, int whence TSRMLS_DC);
            char *(*gets)(php_stream *stream, char *buf, size_t size TSRMLS_DC);
            int (*cast)(php_stream *stream, int castas, void **ret TSRMLS_DC);
            int (*stat)(php_stream *stream, php_stream_statbuf *ssb TSRMLS_DC);
        } php_stream_ops;

Précédent | Sommaire | Suivant
struct php_stream_dirent | Niveau supérieur | struct php_stream_wrapper


struct php_stream_statbuf

struct php_stream_statbuf -- Conserve des information sur le fichier ou l'URL

Description

php_stream_statbuf
     struct stat sb

sb est une structure standard, définie par le système de statistiques fichier.

Précédent | Sommaire | Suivant
Streams Structures | Niveau supérieur | struct php_stream_dirent


struct php_stream_wrapper

struct php_stream_wrapper -- Conserve les propriétés et pointeur d'un gestionnaire de flux

Description

struct _php_stream_wrapper  {
            php_stream_wrapper_ops *wops;   /* operations the wrapper can perform */
            void *abstract;                 /* context for the wrapper */
            int is_url;                     /* so that PG(allow_url_fopen) can be respected */

            /* support for wrappers to return (multiple) error messages to the stream opener */
            int err_count;
            char **err_stack;
        } php_stream_wrapper;

Précédent | Sommaire | Suivant
struct php_stream_ops | Niveau supérieur | struct php_stream_wrapper_ops


struct php_stream_wrapper_ops

struct php_stream_wrapper_ops -- Conserve les fonctions d'un gestionnaire de flux

Description

typedef struct _php_stream_wrapper_ops {
            /* open/create a wrapped stream */
            php_stream *(*stream_opener)(php_stream_wrapper *wrapper, char *filename, char *mode,
                    int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC);
            /* close/destroy a wrapped stream */
            int (*stream_closer)(php_stream_wrapper *wrapper, php_stream *stream TSRMLS_DC);
            /* stat a wrapped stream */
            int (*stream_stat)(php_stream_wrapper *wrapper, php_stream *stream, php_stream_statbuf *ssb TSR$
            /* stat a URL */
            int (*url_stat)(php_stream_wrapper *wrapper, char *url, php_stream_statbuf *ssb TSRMLS_DC);
            /* open a "directory" stream */
            php_stream *(*dir_opener)(php_stream_wrapper *wrapper, char *filename, char *mode,
                    int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC);

            const char *label;

            /* Delete/Unlink a file */
            int (*unlink)(php_stream_wrapper *wrapper, char *url, int options, php_stream_context *context TSRMLS_DC);
        } php_stream_wrapper_ops;

Précédent | Sommaire | Suivant
struct php_stream_wrapper | Niveau supérieur | struct php_stream_filter


Comparaison de types en PHP

Manuel PHP
Précédent Suivant

Annexe K. Comparaison de types en PHP

La table suivante résume les différents comportement de PHP avec les types et opérateurs de comparaison, strictes ou larges. Cette table est aussi reliée au transtypage. Elle a été inspirée par différents commentaires d'utilisateurs, et par le travail fait chez BlueShoes.

Avant d'utiliser ces tables, il est important de comprendre les types et leur signification. Par exemple, "42" est une string, alors que 42 est un integer. FALSE est boolean alors que "false" est une string.

Note : Les formulaires HTML ne connaissent pas les entiers, nombres à virgules et autres booléens. Pour savoir si une structure est un entier, utilisez is_numeric().

Note : La ligne if ($x) lorsque $x est indéfini par générer une erreur de niveau E_NOTICE. Alternativement, utilisez plutôt les fonctions empty() ou isset(), ou encore, initialisez toutes vos variables.

Tableau K-1. Comparaisons de $x avec des fonctions PHP

 | gettype() | empty() | is_null() | isset() | boolean : if($x)
$x = ""; | string | TRUE | FALSE | TRUE | FALSE
$x = NULL | NULL | TRUE | TRUE | FALSE | FALSE
var $x; | NULL | TRUE | TRUE | FALSE | FALSE
$x est indéfini | NULL | TRUE | TRUE | FALSE | FALSE
$x = array(); | array | TRUE | FALSE | TRUE | FALSE
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE
$x = "1"; | string | FALSE | FALSE | TRUE | TRUE
$x = "0"; | string | TRUE | FALSE | TRUE | FALSE
$x = "-1"; | string | FALSE | FALSE | TRUE | TRUE
$x = "php"; | string | FALSE | FALSE | TRUE | TRUE
$x = "true"; | string | FALSE | FALSE | TRUE | TRUE
$x = "false"; | string | FALSE | FALSE | TRUE | TRUE

Tableau K-2. Comparaison large avec ==

 | TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php"
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE

Tableau K-3. Comparaison stricte avec ===

 | TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php"
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE

Note PHP 3.0 : La chaîne de valeur "0" était considéré comme non vide en PHP 3. Ce comportement a changé en PHP 4, où il est désormais considéré comme vide.

Précédent | Sommaire | Suivant
Domaine Unix : UNIX et UDG | Niveau supérieur | Liste des token de l'analyseur


Including Output in phpinfo

Manuel PHP
Précédent Chapitre 36. Printing Information Suivant

Including Output in phpinfo()

After creating a real module, you'll want to show information about the module in phpinfo() (in addition to the module name, which appears in the module list by default). PHP allows you to create your own section in the phpinfo() output with the ZEND_MINFO() function. This function should be placed in the module descriptor block (discussed earlier) and is always called whenever a script calls phpinfo().

PHP automatically prints a section in phpinfo() for you if you specify the ZEND_MINFO function, including the module name in the heading. Everything else must be formatted and printed by you.

Typically, you can print an HTML table header using php_info_print_table_start() and then use the standard functions php_info_print_table_header() and php_info_print_table_row(). As arguments, both take the number of columns (as integers) and the column contents (as strings). Exemple 36-1 shows a source example and its output. To print the table footer, use php_info_print_table_end().

Exemple 36-1. Source code and screenshot for output in phpinfo().

php_info_print_table_start();
php_info_print_table_header(2, "First column", "Second column");
php_info_print_table_row(2, "Entry in first row", "Another entry");
php_info_print_table_row(2, "Just to fill", "another row here");
php_info_print_table_end();

Précédent | Sommaire | Suivant
zend_error() | Niveau supérieur | Execution Information


zend_error

Manuel PHP
Précédent Chapitre 36. Printing Information Suivant

zend_error()

zend_error() can be used to generate error messages. This function accepts two arguments; the first is the error type (see zend_errors.h), and the second is the error message.
zend_error(E_WARNING, "This function has been called with empty arguments");
Tableau 36-1 shows a list of possible values (see Figure 36-1). These values are also referred to in php.ini. Depending on which error type you choose, your messages will be logged.

Tableau 36-1. Zend's Predefined Error Messages.

Error | Description
E_ERROR | Signals an error and terminates execution of the script immediately .
E_WARNING | Signals a generic warning. Execution continues.
E_PARSE | Signals a parser error. Execution continues.
E_NOTICE | Signals a notice. Execution continues. Note that by default the display of this type of error messages is turned off in php.ini.
E_CORE_ERROR | Internal error by the core; shouldn't be used by user-written modules.
E_COMPILE_ERROR | Internal error by the compiler; shouldn't be used by user-written modules.
E_COMPILE_WARNING | Internal warning by the compiler; shouldn't be used by user-written modules.

Figure 36-1. Display of warning messages in the browser.

Précédent | Sommaire | Suivant
Printing Information | Niveau supérieur | Including Output in phpinfo()


Creation of get_module

Manuel PHP
Précédent Chapitre 31. Source Discussion Suivant

Creation of get_module()

This function is special to all dynamic loadable modules. Take a look at the creation via the ZEND_GET_MODULE macro first:

#if COMPILE_DL_FIRSTMOD
     ZEND_GET_MODULE(firstmod)
#endif

The function implementation is surrounded by a conditional compilation statement. This is needed since the function get_module() is only required if your module is built as a dynamic extension. By specifying a definition of COMPILE_DL_FIRSTMOD in the compiler command (see above for a discussion of the compilation instructions required to build a dynamic extension), you can instruct your module whether you intend to build it as a dynamic extension or as a built-in module. If you want a built-in module, the implementation of get_module() is simply left out.

get_module() is called by Zend at load time of the module. You can think of it as being invoked by the dl() call in your script. Its purpose is to pass the module information block back to Zend in order to inform the engine about the module contents.

If you don't implement a get_module() function in your dynamic loadable module, Zend will compliment you with an error message when trying to access it.

Précédent | Sommaire | Suivant
Declaration of the Zend Module Block | Niveau supérieur | Implementation of All Exported Functions