php ?

recette(s) semblable(s): php
Utilisation

PHP est un langage de script d'usage général qui est particulièrement adapté au développement Web côté serveur, PHP fonctionne généralement sur un serveur web. Tout code PHP dans un fichier demandé est exécuté par le runtime PHP, généralement pour créer des dynamiques contenu de la page Web ou des images dynamiques utilisés sur les sites web ou ailleurs. [35] Il peut également être utilisé pour la ligne de commande et les scripts côté client des applications GUI . PHP peut être déployé sur les serveurs les plus web, plusieurs systèmes d'exploitation et plates-formes, et peut être utilisé avec de nombreux systèmes de gestion de base de données relationnelle (SGBDR). Il est disponible gratuitement, et le groupe PHP fournit le code source complet pour les utilisateurs à construire, personnaliser et d'étendre pour leur propre usage. [3]

PHP agit principalement comme un filtre, [36] en prenant d'entrée à partir d'un fichier ou un flux contenant du texte et / ou des instructions PHP et délivrant un autre flux de données; le plus souvent la sortie sera HTML. Depuis PHP 4, PHP compile l'analyseur d'entrée pour produire du bytecode pour le traitement par le moteur Zend, ce qui donne de meilleures performances que son prédécesseur interprète. [37]

Initialement conçu pour créer des pages web dynamiques, PHP se concentre désormais principalement sur les scripts côté serveur [38], et il est similaire aux autres langages de script côté serveur qui fournissent un contenu dynamique à partir d'un serveur web pour un client, tels que ASP.NET de Microsoft , Sun Microsystems JavaServer Pages, [39] et mod_perl. PHP a également attiré l'élaboration de cadres qui fournissent de nombreux blocs de construction et d'une structure de conception visant à promouvoir le développement d'applications rapide (RAD). Certains de ces CakePHP comprennent, Symfony, CodeIgniter et Zend Framework, offrant des fonctionnalités similaires aux autres frameworks d'applications web.

L'architecture LAMP est devenu populaire dans l'industrie du Web comme un moyen de déployer des applications Web. PHP est couramment utilisé comme le P dans ce bundle aux côtés de Linux, Apache et MySQL, bien que le P peut également se référer à Python ou Perl, ou une combinaison des trois. Paquets similaires sont également disponibles pour Windows et Mac OS X, alors appelé WAMP et MAMP, avec la première lettre date du système d'exploitation respectifs.

En avril 2007, plus de 20 millions de domaines Internet a des services Web hébergés sur des serveurs avec PHP installé et mod_php a été enregistré comme le module le plus populaire du serveur HTTP Apache. [40] PHP est utilisé comme langage de programmation côté serveur sur 75% de tous les serveurs web. [41] Les systèmes de gestion de contenu Web écrit en PHP include MediaWiki, [42] Joomla, eZ Publish, WordPress, [43] Drupal [44] et Moodle. [45] Tous les sites Web créés à l'aide de ces outils sont écrits en PHP, y compris la partie face à l'utilisateur de Wikipedia, Facebook, [46] et Digg. [47]
[Modifier] Sécurité

Les vulnérabilités sont causées principalement par le non respect meilleures règles de programmation pratique:. Failles de sécurité technique de la langue elle-même ou de ses bibliothèques de base ne sont pas fréquentes (23 en 2008, environ 1% du total) [48] [49] Reconnaissant que les programmeurs ne peuvent pas faire confiance, incluent certaines langues de vérification de pollution de détecter automatiquement l'absence de validation d'entrée qui induit de nombreuses questions. Une telle fonctionnalité est en cours de développement pour PHP, [50], mais son inclusion dans un communiqué a été rejetée à plusieurs reprises dans le passé. [51] [52]

Hébergement d'applications PHP sur un serveur nécessite une attention particulière et constante pour faire face à ces risques de sécurité. [53] Il existe des patchs de protection avancées, telles que Suhosin et Durcissement-Patch, spécialement conçu pour les environnements d'hébergement Web. [54]

PHPIDS ajoute une sécurité à toute application PHP pour se défendre contre les intrusions. PHPIDS détecte Cross-site scripting (XSS), injection SQL, injection d'en-tête, de traversée de répertoire, l'exécution de fichiers à distance, d'Inclusion de Fichier Local, Déni de Service (DoS). [55]
[Modifier] Syntaxe
Article principal: la syntaxe et la sémantique de PHP

<! DOCTYPE html>
<html>
  
<head>
    
<meta charset="utf-8" />
    
<title> test PHP </ title>
  
</ Head>
  
<body>
  
<? Php
  
«Bonjour tout le monde 'écho;
  
/ Echo * ("Bonjour le monde"); fonctionne aussi bien,
  
Bien que l'écho n'est pas une fonction, mais un
  
structure du langage. Dans certains cas, ces
  
comme lorsque plusieurs paramètres sont transmis
  
d'écho, les paramètres ne peuvent pas être fermés
  
entre parenthèses. * /
  
?>
  
</ Body>
</ Html>


Programme Bonjour tout le monde dans le code PHP intégré dans le code HTML

L'interpréteur PHP ne s'exécute que du code PHP dans ses délimiteurs. Tout l'extérieur de ses délimiteurs ne sont pas traitées par PHP (bien que non-PHP texte est encore soumis à des structures de contrôle décrites dans le code PHP). Les délimiteurs les plus courants sont: <? Php pour ouvrir et?> À fermer des sections de PHP. <script language="php"> et </ script> délimiteurs sont également disponibles, comme le sont les formes raccourcies <? ou <? = (qui est utilisé pour écho une chaîne ou variable) et?> ainsi que de style ASP formes courtes% <ou <>% = et%. Alors que délimiteurs courtes sont utilisées, elles font fichiers de script moins portable que le soutien pour eux peut être désactivé dans la configuration de PHP, et donc ils sont découragés. [56] Le but de toutes ces délimiteurs est de séparer le code PHP de la non-code PHP, y compris HTML [57].

La première forme de délimiteurs, <? Php et?>, En XHTML et autres documents XML, crée correctement formée 'instructions' XML. [58] Cela signifie que le mélange résultant de code PHP et autres balises dans le fichier côté serveur est en soi XML bien formé.

Les variables sont précédées d'un symbole du dollar, et un type n'a pas besoin d'être spécifié à l'avance. Contrairement aux noms de fonction et de classe, les noms de variables sont sensibles à la casse. Les deux guillemets ("") et les chaînes Heredoc offrent la possibilité d'interpoler la valeur d'une variable dans la chaîne. [59] PHP traite des sauts de ligne comme un espace à la manière d'un langage de forme libre (sauf quand cite chaîne à l'intérieur), et les déclarations sont terminées par un point-virgule [60] PHP a trois types de syntaxe de commentaire: / * * / marques commentaires bloc et inline; / / ainsi que # est utilisé pour des commentaires en ligne [61] L'instruction echo est l'un des.. plusieurs installations PHP fournit au texte de sortie (par exemple à un navigateur web).

En termes de mots clés et la syntaxe du langage, PHP est similaire aux langages de haut niveau le plus qui suivent la syntaxe de style C. si les conditions, boucles for et while, et retourne la fonction sont similaires dans la syntaxe de langages tels que C, C + +, Java et Perl.
[Modifier] Les types de données

PHP stocke des nombres entiers dans une large plate-dépendants, soit un 64-bit ou 32-bit équivalent entier signé le type de langage C de long. Entiers non signés sont converties en valeurs signé dans certaines situations, ce comportement est différent de d'autres langages de programmation [62] variables Integer peut être attribuée à l'aide décimaux (positif et négatif), octal et hexadécimal notations.. Nombres à virgule flottante sont également stockées dans une gamme spécifique à la plateforme. Elles peuvent être spécifiées en utilisant la notation en virgule flottante, ou deux formes de notation scientifique [63]. PHP a un type natif booléenne qui est similaire aux types booléen natif en Java et C + +. En utilisant les règles de conversion de type booléen, les valeurs non nulles sont interprétées comme des vrais et zéro comme faux, comme en Perl et C + +. [63] Le type de données NULL représente une variable qui n'a aucune valeur. La seule valeur dans le type de données Null est NULL. [63] Les variables de la «ressource» de type représentent des références à des ressources provenant de sources externes. Ce sont généralement créées par des fonctions d'une extension particulière, et ne peuvent être traitées par les fonctions de la même extension; exemples de fichiers, images, base de données et de ressources [63] Les tableaux peuvent contenir des éléments de tout type que PHP peut gérer, y compris les ressources. , des objets et même d'autres tableaux. Ordre est conservée dans les listes de valeurs et de hachages à la fois avec les clés et valeurs, et les deux peuvent être mêlées. [63] PHP supporte aussi les cordes, qui peut être utilisé avec des guillemets simples, guillemets doubles, ou la syntaxe Heredoc Nowdoc [64].

Le Standard PHP Library (SPL) tente de résoudre les problèmes de standards et met en œuvre efficace des interfaces d'accès des données et des classes [65].
[Modifier] Fonctions

PHP a des centaines de fonctions de base et des milliers d'autres via des extensions. Ces fonctions sont bien documentés sur le site de PHP;.. Cependant, la bibliothèque intégrée a une grande variété de conventions de nommage et d'incohérences [66] PHP ne dispose pas actuellement des fonctions de programmation de fil, bien qu'il ne support multi-processus de programmation sur les systèmes POSIX [ 67]
Des fonctions supplémentaires peuvent être définis par un développeur:

myFunction function () {/ / déclare une fonction, ce n'est nommée myFunction
    
return 'John Doe'; / / retourne 'John Doe' la valeur
}
 
echo 'Mon nom est'. myFunction (). '!'; / / Affiche le texte et la variable de retour de la
                                         
/ / MyFunction, la fonction est aussi appelée
/ / Le résultat de la sortie sera «Mon nom est John Doe!

[Modifier] PHP 5.2 et antérieures

Fonctions ne sont pas de première classe des fonctions et ne peuvent être référencées par leur nom, directement ou de manière dynamique par une variable contenant le nom de la fonction [68]. Défini par l'utilisateur des fonctions peuvent être créés à tout moment sans être prototypé. [68] Fonctions peut être défini à l'intérieur des blocs de code, permettant une décision d'exécution quant à savoir si ou non une fonction doit être définie. Les appels de fonction doivent utiliser des parenthèses, à l'exception des fonctions de son argument numéro zéro constructeur de la classe appelée à l'opérateur PHP nouvelle, où les parenthèses sont facultatives. PHP supporte les fonctions quasi anonyme à travers le create_function () la fonction, même si elles ne sont pas vraies fonctions anonymes, car les fonctions anonymes sont anonymes, mais les fonctions ne peuvent être référencées par leur nom, ou indirectement par une variable $ nom_fonction ();., En PHP [ 68]
[Modifier] PHP 5.3 et plus récents

PHP a obtenu le soutien pour les fermetures. Véritable fonctions anonymes sont supportés en utilisant la syntaxe suivante:

getAdder fonction ($ x) {
    
fonction de retour ($ y) utilisation ($ x) {
        
return $ x + $ y;
    
};
}
 
$ Additionneur = getAdder (8);
echo $ additionneur (2); / / affiche "10"

Ici, le getAdder () crée une fermeture à l'aide du paramètre $ x (mot-clé de l'utilisation des importations une variable du contexte lexical), qui prend un argument supplémentaire $ y et il retourne à l'appelant. Une telle fonction est un objet de première classe, ce qui signifie qu'il peut être stockée dans une variable, passée en paramètre à d'autres fonctions, etc Pour plus de détails, voir les fonctions lambda et les fermetures de la RFC.

L'instruction goto contrôle de flux est utilisé comme suit:

verrouiller function () {
    
$ Fichier = fopen ('fichier.txt', 'r +');
    
retry:
    
if (! troupeau ($ fichier, LOCK_EX & LOCK_NB)) {
        
goto retry;
    
}
    
fwrite ($ fichier, 'Succès');
    
fclose ($ fichier);
    
return 0;
}

Lorsque flock () est appelée, PHP ouvre un fichier et tente de le verrouiller. L'étiquette cible réessayer: définit le point d'où l'exécution doit revenir si flock () échoue et goto retry; est appelée. L'instruction goto est restreinte et nécessite que l'étiquette cible soit dans le même fichier et le contexte.

L'instruction goto a été soutenue depuis PHP 5.3.
[Modifier] Objets

La fonctionnalité de base de programmation orientée-objet a été ajouté en PHP 3 et PHP 4 amélioré dans [6]. Manutention d'objets a été complètement réécrit pour PHP 5, en élargissant l'ensemble des caractéristiques et de performance. [69] Dans les versions précédentes de PHP, les objets étaient traités comme des les types de valeur [69]. L'inconvénient de cette méthode est que l'objet entier était copié lorsqu'une variable a été cédé ou transmis comme paramètre à une méthode. Dans la nouvelle approche, les objets sont référencés par poignée, et non par valeur. PHP 5 introduit des variables membres privés et protégés et méthodes, avec les classes abstraites et les classes terminales ainsi que des méthodes et des méthodes abstraites finale. Elle a également introduit un moyen standard de constructeurs et destructeurs déclarant, semblable à celle d'autres langages orientés objet tels que C + +, et un modèle de gestion des exceptions standard. De plus, PHP 5 ajouté des interfaces et des permis de multiples interfaces à mettre en œuvre. Il existe des interfaces spéciales qui permettent aux objets d'interagir avec le système d'exécution. Les objets implémentant ArrayAccess peut être utilisé avec la syntaxe de tableaux et d'objets mise en œuvre Iterator ou IteratorAggregate peut être utilisé avec le langage foreach construire. Il n'existe aucune fonctionnalité de table virtuelle dans le moteur, donc les variables statiques sont liés avec un nom au lieu d'une référence au moment de la compilation [70].

Si le développeur crée une copie d'un objet en utilisant le clone mot réservé, le moteur Zend va vérifier si une méthode __clone () a été définie ou non. Si non, il va appeler une __clone défaut () qui va copier les propriétés de l'objet. Si une méthode __clone () est définie, alors il sera chargé de définir les propriétés nécessaires à l'objet créé. Pour plus de commodité, le moteur va fournir une fonction qui importe les propriétés de l'objet source, de sorte que le programmeur peut commencer avec une réplique par la valeur de l'objet source et seulement substituer des propriétés qui doivent être modifiés [71].

Exemple de base de la programmation orientée objet tel que décrit ci-dessus:

Personne classe {
   
public $ prenom;
   
public $ lastName;
 
   
public function __construct ($ prenom, $ lastname ='') {/ / paramètre optionnel
       
$ This-> prenom = $ prenom;
       
$ This-> lastName = $ lastname;
   
}
 
   
fonction publique saluer () {
       
return "Bonjour, mon nom est". $ This-> prenom. "". $ This-> lastName. ".";
   
}
 
   
statiques staticGreet fonction publique ($ prenom, $ lastname) {
       
return "Bonjour, mon nom est". $ Prenom. "". $ LastName. ".";
   
}
}
 
$ Il = new Person ('John', 'Smith');
$ Qu'elle = new Person ("Sally", "Davis");
$ Une autre personne = new ('Joe');
 
echo $ il-> saluent (); / / affiche "Bonjour, mon nom est John Smith».
echo '<br />';
echo $ qu'elle-> saluent (); / / affiche "Bonjour, mon nom est Sally Davis."
echo '<br />';
echo $ d'autres-> saluent (); / / affiche "Bonjour, mon nom est Joe."
echo '<br />';
Personne écho:: staticGreet («Jane», «Untel»); / / affiche "Bonjour, mon nom est Jane Doe».

[Modifier] Visibilité des propriétés et méthodes

La visibilité des propriétés et méthodes PHP se réfère à la visibilité en PHP. Elle est définie en utilisant les mots clés public, privé et protégé. La valeur par défaut est public, si var est utilisée seule; var est un synonyme pour le public. Articles déclarées publiques peut être consulté partout. protégée limite l'accès aux classes héritées (et à la classe qui définit l'élément). privés visibilité limite uniquement à la classe qui définit l'article. [72] Les objets du même type ont accès à des uns et des autres membres privés et protégés, même s'ils ne sont pas la même instance. Fonctionnalités PHP visibilité membres ont parfois été décrit comme «très utile». [73] Cependant, ils ont aussi parfois été décrit comme «au mieux non pertinentes et, au pire carrément nuisibles». [74]
[Modifier] Vitesse d'optimisation
Article détaillé: accélérateur PHP

Code source de PHP est compilé sur la volée dans un format interne qui peut être exécuté par le moteur PHP. [75] [76] Dans le but d'accélérer le temps d'exécution et ne pas avoir à compiler le code source PHP à chaque fois que la page Web est accessibles, scripts PHP peut également être déployé dans un format exécutable en utilisant un compilateur PHP.

Optimiseurs de code visent à améliorer les performances du code compilé, en réduisant sa taille, la fusion des instructions redondantes et faire d'autres changements qui peuvent réduire le temps d'exécution. Avec PHP, il ya souvent des possibilités d'optimisation du code. [77] Un exemple d'un optimiseur de code est l'extension PHP eAccelerator [78].

Une autre approche pour réduire les frais généraux de compilation pour les serveurs PHP est d'utiliser une cache d'opcode. Opcode caches de travail en mettant en cache la forme compilée d'un script PHP (opcodes) dans la mémoire partagée afin d'éviter le coût d'analyse et de compilation du code à chaque fois que le script s'exécute. Une cache d'opcode, APC, sera intégré dans une prochaine version de PHP [79].

La mise en cache d'opcode et l'optimisation de code peuvent être combinées pour une meilleure efficacité, car les modifications ne dépendent pas de l'autre (ils se produisent dans les stades distincts de la compilation).
[Modifier] Les compilateurs

Le langage PHP a été initialement mis en œuvre comme un interprète. Plusieurs compilateurs ont été développées qui découpler le langage PHP à partir de l'interprète. Avantages de la compilation comprennent la vitesse meilleure exécution, l'analyse statique, et une interopérabilité améliorée avec le code écrit dans d'autres langues [80]. Compilateurs PHP de note incluent Phalanger, qui compile PHP dans CIL byte-code, et HipHop, développé à Facebook et maintenant disponible en tant que open source, qui transforme le script PHP en C + +, compile ensuite, en réduisant la charge du serveur jusqu'à 50%.
[Modifier] Ressources

PHP inclut des bibliothèques libres et open source avec le noyau construire. PHP est un système fondamentalement Internet conscients avec des modules construits pour accéder au serveur FTP, serveurs de base de nombreuses bibliothèques intégrées telles que SQL PostgreSQL embarqués, MySQL et SQLite, les serveurs LDAP, et d'autres. Beaucoup de fonctions familières aux programmeurs C tels que ceux de la famille stdio sont disponibles dans la norme de compilation de PHP. [81]

PHP permet aux développeurs d'écrire des extensions en C à ajouter des fonctionnalités au langage PHP. Ceux-ci peuvent ensuite être compilée dans PHP ou chargée dynamiquement à l'exécution. Des prolongations ont été écrites pour ajouter le support de l'API Windows, la gestion des processus sur les systèmes Unix-like d'exploitation, les chaînes multi-octets (Unicode), cURL, et plusieurs formats de compression populaire. Certaines fonctionnalités plus inhabituels comprennent l'intégration avec Internet Relay Chat, la génération dynamique d'images et de contenu Adobe Flash, et la synthèse vocale, même. Le PHP Extension Community Library (PECL) de projet est un référentiel pour des extensions au langage PHP. [82]

Zend fournit un examen de certification pour les programmeurs de devenir certifié développeurs PHP.