Environnement

Les fichiers php sont interprétés par l'exécutable php. Cette commande peut être inclus à l'intérieur du serveur apache2 (via mod-apache2-php5) ou en ligne de commande (php CLI).

Le code php doit être à l'intérieur de balise <?php et ?> pour être exécuter. Tout ce qui n'est pas dans ces balises est écrit directement à la sortie.

L'extension du fichier est généralement .php. Certains serveurs http apache accepte d'autres extensions comme .php3, .phtml, .php4, .php5, selon la configuration.

 <?
  // code
 ?>
ou 
 <?php
  // code
 ?>
ou
 <?= $variable ?> // impression d'une variable php...
  $variable représente la variable à afficher...

Affichage

1.  <?php echo "Si vous voulez afficher du texte, faites comme ceci\n"; ?>

2.  <?php echo "code ici, sans fin de balise"

// l'usage des techniques ci-dessous est découragé et nécessite des modifications au configuration php.
3.  <? echo "Ceci est un exemple d'affichage à l'écran en PHP\n"; ?>
 
4.  <script language="php">
        echo "Certain éditeur HTML n'accepte pas les délimiteurs ci-dessus.";
    </script>

5.  <% echo "Vous pouvez aussi utiliser le style ASP comme délimiteur."; %>
    <%= $variable; # ceci est un raccourci pour "<% echo $variable %>"
		

Syntaxe

Commentaires

# commentaire sur une ligne

// commentaire sur une ligne

/* commentaire
   multi-ligne */

/**
 * Commentaire PHPDoc
 * @param string $s
 * @return boolean true
 */
function commentPHPDoc($s) { return true; }

Variable

$nomVariable; $nomVariable = valeur;

Globale

Dans une fonction, on peut accéder aux variables globales en déclarant global $nomVariable; et ensuite utilisé $nomVariable.

On peut aussi utilisé en tout temps $GLOBALS['nomVariable'].

Il est beaucoup plus portable d'utiliser toujours la syntaxe $GLOBALS['nomVariable'] (affectation, utilisation) qui assure en tout temps que la variable est globale. Ainsi, lors de la maintenant aucune accolade {} ou function() {} ne viendra diminuer la portée de la variable qui se retrouve dans un bloc.

Variables super-globales

Lire l'article sur variables super-globales comme $_GET, $_POST ou $_SERVER.

Chaîne de caractères

$a = 11;
$nomVariable = "chaine $a" // double-guillemet accepte les variables       (affiche chaine 11)
$nomVariable = 'chaine $a' // simple-guillemet n'accepte pas les variables (affiche chaine $a)

Test

Rapidité de l'affichage d'une chaîne de caractères (avec simple ou double guillemets)

Opérateur

Voir aussi: PHP Comparison Operators

Comparaison booléenne

// avec comparaison de type
ÉGALITÉ STRICTE     <instruction1> === <instruction2>
DIFFÉRENCE STRICTE  <instruction1> !== <instruction2>

// changement de type
ÉGALITÉ             <instruction1> == <instruction2>
DIFFÉRENCE          <instruction1> != <instruction2>

// nombre
PLUS PETIT          <instruction1> < <instruction2>
PLUS GRAND          <instruction1> > <instruction2>
PLUS PETIT OU ÉGAL  <instruction1> <= <instruction2>
PLUS GRAND OU ÉGAL  <instruction1> >= <instruction2>

Négation

!$nom_variable
!(condition)

Opérateur ??

Depuis PHP 7, l'opérateur ??, ou encore "Null Coalescing Operator" permet de retourner la première valeur non nulle et définie, ou la dernière valeur. La dernière valeur doit toujours être définie.
La syntaxe exprGauche ?? exprDroite permet de retourner l'expression de droite si la valeur de gauche est null ou s'il s'agit d'une variable non définie.

Les constantes non définies produisent un avertissement et retourne la constante comme une chaîne et ne fonctionne pas avec ??.

On peut chaîner les expressions: $result = $a ?? $b ?? $c;

Remplace: isset($exprGauche) ? $exprGauche : $exprDroite;

$color = null;
echo ($color ?? 'red'); // red

$color = 'blue';
echo ($color ?? 'red'); // blue

$tableau = [];
echo ($variableNonDefinie ?? $tableau['indiceQuiNexistePas'] ?? 'yellow'); // yellow

Opérateur ternaire

$variable = <condition> ? <instruction si vrai> : <instruction si faux>

Depuis 5.3, on peut utiliser la syntaxe de l'opérateur ternaire sans la valeur du milieu. L'expression sera retournée si elle n'est pas fausse.

$color = 'red';
$value = $color ?: 'blue';
echo $value; // red, car boolval($color) n'est pas false

$color = null;
$value = $color ?: 'blue';
echo $value; // blue, car boolval($color) est false

Concaténation d'une chaîne : . et .=

L'opérateur de concaténation de chaîne de caractères est le point.

L'opérateur .= permet d'ajouter une chaîne à à la fin d'une variable.

exemple: $allotoi = "al"."lo";  // la variable = "allo"
         $allotoi .= " toi"; // la variable = "allo toi"

Include du code (bibliothèque)

require_once 'nomfichier.php';  // exige que nomfichier.php existe sinon erreur fatale
require 'nomfichier.php';
include_once 'nomfichier.php';  // ne provoque pas d'erreur fatale si le fichier n'existe pas
include 'nomfichier.php';

La différence entre x et x_once est que x_once inclus une seule fois le fichier.

Le fichier est inclus tel quel comme si on exécutait manuellement un copier-coller. Les chemins relatifs vers le système de fichiers utilisent toujours le répertoire en cours lors de l'exécution du script d'origine. On peut éviter des problèmes dans les fichiers inclus en utilisant require_once dirname(__FILE__).'/nomfichier.php';

Structure

Structure de conditions:

// il faut au moins un case ou un default, les break sont optionnels
switch ( $<variable> ) {
    case <constante> : <instructions> break;
    default  :        break;
}

// si la condition est vrai, exécute une instruction
if (<condition>) instruction

// si la condition est vrai, exécute un bloc d'instruction
if (<condition>) {
    <bloc d'instruction>
}

// si la condition est vrai ou si la condition2 est vraie ou sinon
if (<condition>) {
   <bloc instruction>
} elseif (<condition2>) {
   <bloc d'instruction>
} else {
   <bloc d'instruction>
}

Structure de boucle

while(<condition>) {
  <bloc d'instructions>
}

do {
   <bloc d'instruction> 
} while(<condition);


for(<initialisation>; <condition>; <postinstruction>) {
  <bloc d'instructions>
}

// voici comment convertir une boucle for en while
<initialisation>
while(<condition) {
  <bloc d'instructions>
  <postinstruction>
}

// pour chaque item
foreach($array as $value) {
  <bloc d'instructions>
}

// pour chaque clé et item
foreach($array2 as $key2=>$value2) {
  <bloc d'instructions>
}


Fonctions

Appel d'une fonction:

     <nomFonction>;
     <nomFonction>();
     <nomFonction>(param[,param...]);

Syntaxe d'une fonction:

  function <nomFonction> (param[, param...])
  {
   <instructions>

   return $<variable>;
  }

Fonction interne

Une fonction peut être à l'intérieur d'une autre fonction.

<?php
// cet exemple affiche 1.
class a {
	function __construct() {
		$t = 1;
		function bla() {
			echo $t;
		}
		bla();
	}
}
$instanceA = new a();
?>

Fonctions anonymes (PHP 5.4)

<?php
$a = function() { return 1; }
$a();

$b = array(function() { return 1; }, function() { return 2; });
$b[0]() + $b[1](); // 3

sort($arr, function($a,$b) { return strcmp($a,b); });
?>

Closures (PHP 5.4)

<?php
$x = 1;
$inputArr = [1,2,3];

$arr = array_filter($inputArr, function($item) use ($x) { return $item !== $x; });
$arr // [2,3]
?>

Opérateur ::

Appel de méthode classique: C::methode(), self::methode()

Paamayim Nekudotayim (hébreu pour deux-points). Ajouté le 2004/10/08

Fonctions prédéfinies

Voir Code PHP

Tableau (array)

<?php
$a = array();
$b = array(1,2,3);    // ($b[0] = 1, $b[1] = 2, $b[2] = 3)
$c = array(1=>1,2,3); // ($c[1] = 1, $b[2] = 2, $b[3] = 3) 
$d = array("a"=>1,2,"b"=>3); // ($d["a"] = 1, $d[0] = 2, $d["b"] = 3) 
$key1 = 1; $key2 = "foo";
$e = array($key=>111, $key2=>222); // $e[1] = 111; $e["foo"] = 222;
?>

Tableau PHP 5.4

<?php

$a = [];
$b = [1,2,3];
$c = [1=>1,"2",3.3];

?>

Objet

<?php
// définition
class a {}

// création d'une instance
$instanceA = new a();

// copie (par référence)
$referenceA = $instanceA; // même instance  mais dans deux noms de variable différents

// définition avec un attribut public
class b {
  var $attributA = 1;
}
$instanceB = new b();
echo $instanceB->attributA;  // affiche 1

// changer une variable publique
$instanceB->attributA = 2;

// copie (par référence)
$referenceB = $instanceB;
$referenceB->attributA = 3;

echo $instanceB->attributA; // affiche 3

Affectation dans un if()

Ne pas faire 
if ( $item = unefonction()) {}  
mais 
if ( ($item = unefonction()) ) {} 
parce que si on ajoute une condition après l'affectation, on pourra utiliser $item avec les parenthèse
if (($item = unefonction()) && $item->variable != 0) {}

Conversion de type

// Vers une chaîne de caractères
(string)$var;            // ou (string) $var;
(string)1;               // ou (string) 1;
(string)functionName();  // ou (string) functionName();
''.$var;

// vers un entier
(int)42.1; // 42
(int)42.9; // 42
(int)-42.1; // -42
(int)-42.9; // -42
(int)"42things"; // 42
(int)true; // 1
(int)false; // 0
(int)null; // 0

commande

Interface externe (eth0)

<?php echo exec('/sbin/ifconfig eth | grep "inet adr" | awk -F: \'{print $2}\' | awk \'{print $1}\''); ?>

Entrée/sortie

$_GET, $_POST, $_COOKIE: les points "." sont convertis en "_" dans les nom de variable. setcookie('test.test', 'test') créera la variable $_COOKIE['test_test'] au prochain chargement.

Hyperliens qui ne fonctionnent plus...

  • PHPTeam v3 : Le PHP Professionel [http://www.phpteam.net/]
  • Installer apache sur fedora [http://www.flmnh.ufl.edu/linux/install_apache.htm]
  • Php Source Index [http://www.phpresourceindex.com/] ; EN ; redtemple; 23-08-2002 18:13
  • PhpScripts-fr [http://www.phpscripts-fr.net/] ; FR ; philiweb ; 26-09-2002 15:04
  • PhpInfo [http://www.phpinfo.net/] ; FR ; philiweb ; 26-09-2002 15:04
  • Comparatif des IDE PHP [http://steph.pineau.free.fr/php/index.php?LNK=EDIT] ; FR ; burninghat@nulpart.com ; 02 Oct 2002 10:24:10 GMT
  • Forum Gratuit (Hébergement gratuit d'un forum PHPBB2) [http://forum-gratuit.com/]; FR; Gorgon 3698 ; 2002/10/02 08:38
  • Quick-Web [http://www.quick-web.com/]; FR ; rubriquetitine ; 20-08-2002 20:48
  • InvisionBoard [http://forums.multimania.lycos.fr/use/php/716093/716820/read.phtml]; FR; ewebpatch; 01-09-2002 12:16

Hyperliens...

Tutoriaux [Portail|Documentation|Script]

FR nexen.net suedemm 26-11-2001 21:45
FR Php Debutant philiweb 26-09-2002 15:04
EN PHPBuilder.com - The Resource For PHP Developers

Hébergement Gratuit

EN 0-PHP

Forum

FR AZ-PHP rubriquetitine 20-08-2002 20:48
EN Principaux Forums jametflencolyn 01-09-2002 02:22
EN|FR PHPBB3 2009-08-23 14:02