Si xdebug est installé, la profondeur d'exploration est limitée par la variable xdebug.var_display_max_depth du fichier /etc/php/conf.d/xdebug.ini
Les variables globales
// variables globales$a = 1;
$b = 2;
$c = 3;
functiontest() {
global$b;
// utilisation de la variable locale a (elle est vide)echo$a;
// utilisation de la variable globale b car déclarée au début de la fonctionecho$b;
// utilisation de la variable globale c car appelée au travers du tableau associatif $GLOBALSecho$GLOBALS['c'];
}
// Déclaration de fonctionfunctionma_fonction($argument1, $argument2="2") {
// retour de la fonctionreturn"ok : $argument1$argument";
}
// Utilisation de la fonctionechoma_fonction("1");
Retourne vrai si $variable n'existe pas ou si elle est vide.
Étant considéré comme vide:
"" (une chaîne vide)
0, 0.0, "0"
NULL, FALSE
array() (un tableau vide)
$var; (une variable déclarée, mais sans valeur)
if (empty($variable)) { ... }
isset, is_null
// Détermine si une variable est définie et est différente de NULLif (isset($variable)) { ... }
// Indique si la variable donnée vaut NULL.if (is_null($variable)) { ... }
test type
if (is_bool($variable)) { ... }
if (is_string($variable)) { ... }
// vrai si $variable est un entier, un float ou un string contenant un entier ou un floatif (is_numeric($variable)) { ... }
if (is_array($variable)) { ... }
if (is_object($variable)) { ... }
$tableau = array(1, 2, 3);
foreach ($tableauas$value) {
echo$value;
}
// test si un élément est contenu dans le tableauif (in_array(1, $tableau)) { ... }
// taille du tableau / nombre d'éléments$taille = count($tableau);
// ajoutez un élémentarray_push($tableau, 4);
// remplir le tableau de n valeursarray_fill($start_index , $number , $value);
// to stringimplode("|", $tableau) // 1|2|3
$phrase = "$mot1 mot_deux $mot3";
// pour ne pas être pris en compte $ doit être utilisé avec le caractère d'échappement \$$phrase = $mot1 . 'mot_deux'. $mot3;
// ajout à la suite$phrase .= "mot quatre";
Supprime au début et à la fin de la chaine les caractères spécifiés (par défaut: espace, \t, \n, \r, \0, \x0B).
trim(' un mot - en passant - ', ' -'); // un mot - en passant
DateTime
$date = newDateTime('1984-01-30');
$date = date_create('1984-01-30'); // alias PHP 5 de new DateTime$date = date_create_from_format('d/m/Y', '13/12/2013');
echo$date->format('d F Y'); // 30 January 1984echodate_format($date, 'd F Y'); // alias PHP 5 de DateTime::format()// par défaut avec la locale courante, sinon redéfinir la localesetlocale(LC_TIME, "fr_CH");
echostrftime('%e %B %Y' ,$date->getTimestamp()); // 30 Janvier 1984
date(): It is not safe to rely on the system's timezone settings
date(): It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
L'utilisation de la fonction date() sans avoir définit la timezone entraine l’apparition de ce warning.
/etc/php/php.ini
; définit la timezone dans la configuration de phpdate.timezone = Europe/Paris
// définit la timezone depuis le codedate_default_timezone_set("Europe/Paris");
POO
Classe
classMaClasseextendsClasseParenteimplementsMonInterface{
private$Attribut = 0;
publicfunctionMéthode() {
return$this->Attribut++;
}
// Constante de classe: non modifiable.constCONSTANT = 'valeur constante';
// Utilisation dans la classe: self::$CONSTANT// Utilisation hors de la classe: MaClasse::$CONSTANT// Attribut statiquepublicstatic$StaticAttribut = 'variable statique';
// Utilisation dans la classe: self::$StaticAttribut// Utilisation hors de la classe: MaClasse::$StaticAttribut// Constructeur, appelé par newfunction__construct() { ... }
// autre constructeurfunction__construct($var1)
{
$this->Attribut = $var1;
}
// Destructeur, appelé dès qu'il n'y a plus de référence sur un objet donnéfunction__destruct() { ... }
}
// Instanciation$ma_classe = newMaClasse();
$ma_classe->Attribut;
$ma_classe->Méthode();
MaClasse::$StaticAttribut;
Par défault les méthodes et attribut sont public Les constantes sont exclusivements public
Une classe ne peut être déclarée static. On utilisera abstract à la place et des attributs static ou const.
Les attributs static ne sont persistants qu'au sein d'une même page.
Pour faire persister des données au travers de différentes pages, il faut utiliser Session
Permet d'éviter d'avoir à écrire une longue liste d'inclusions de fichier de classes au début de chaque script.
La fonction __autoload() sera automatiquement appelée lors de l'utilisation d'une classe ou interface qui n'est pas encore définie. Cette méthode donne une dernière chance pour inclure une définition de classe.
// le fichier php a inclure doit avoir le même nom que la classe.spl_autoload_register(function ($class) {
require_once$class . '.php';
});
// Méthode __autoload obsolètefunction__autoload($class) {
require_once$class . '.php';
}
A la différence de l'héritage, si un trait a une propriété publique, chaque classe qui utilise le trait a une instance indépendante (non partagée) de cette propriété.
$reflection = newReflectionClass('MaClasse');
$constants = $reflection->getConstants();
// obtenir le nom de la classe courante où est écrit le code$classe = get_class();
// obtenir le nom d'une classe depuis son objet$classe = get_class($this);
// obtenir le nom de la classe courante depuis une méthode static$classe = get_called_class();
exec("command arg1 arg2 2>&1", $output, $return_var); // $output est un tableau de stringif ($return_var == 0) { /* ok */ }
# forcer la localeputenv('LC_TIME=fr_CH');
JSON
'movie' =>
array (size=2)
'title' => string 'Las Vegas parano''originalTitle' => string 'Fear and Loathing in Las Vegas'
// Convertit une chaîne JSON en un tableau associatif$data = json_decode($json, true);
$data['movie']['title']; // Las Vegas parano// Convertit une chaîne JSON en objet$mon_objet = newMaClasse();
foreach ($jsonas$key => $value) {
$mon_objet->{$key} = $value;
}
// Convertit un objet en une chaîne JSON$json = json_encode($objet, JSON_PRETTY_PRINT);
// JSON_PRETTY_PRINT: Use whitespace in returned data to format it.
// Redéfinir la méthode json_encodeclassMaClasseimplementsJsonSerializable{
publicfunctionjsonSerialize() {
return [ 'movie' => [
'title' => $this->Title,
'originalTitle' => $this->OriginalTitle
]];
}
}
$maClasse = newMaClasse();
$json = json_encode($maClasse, JSON_PRETTY_PRINT); // utilisation de la surcharge de jsonSerialize
$dom = newDOMDocument;
// @ pour éviter l'affichage des Warnings
@$dom->loadHTML($html);
$xpath = newDOMXPath($dom);
$query = '//div';
$entries = $xpath->query($query);
echo$entries->length." resultats.<br/>";
foreach ($entriesas$entry) {
echo"$entry->tagName ; $entry->nodeValue<br/>";
}
if($entries->length > 0)
{
echo$dom->saveHTML($entries->item(0)); // affiche le code HTML
}
Session
Permet un stockage temporaire de données par utilisateur.
<?php// Appeler l'auto-chargement de classes avant session_start// pour éviter l'erreur «The script tried to execute a method or access a property of an incomplete object»spl_autoload_register(function ($class) {
require_once$class . '.php';
});
// Appeler session_start avant la balise html et dans chaque page où $_SESSION est utilisésession_start();
?>
<html>
<body>
<?php$_SESSION['clé'] = 'valeur';
require vs include
En cas d'échec:
include génère un warning et le script continue
require génère une erreur et le script stoppe
Les variantes include_once et require_once permettent de s'assurer que le fichier ne sera inclut qu'une seule fois.
Stocker le code d'une page dans une variable
$html = file_get_contents("http://url");
Afficher les erreurs dans la page
ini_set('display_errors', 1);
/etc/php/php.ini
display_errors = on
Input Form
<!-- $_SERVER['PHP_SELF'] permet d'obtenir le chemin vers le fichier courant et donc de recharger la page elle-même --><formaction="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
Texte: <inputtype="text"name="identifiant du champs input"><!-- menu déroulant dynamique --><selectname="identifiant du select"><optionvalue="">--- Select ---</option><?php
foreach ($tous_les_choix as $choix) {
echo '<option value="' . $choix . '">' . $choix . '</option>';
}
?></select><inputtype="submit"name="identifiant du bouton"value="texte affiché dans le bouton"></form><?php
$texte = $_POST["identifiant du champs input"];
if (isset($_POST["identifiant du bouton"])) { /* test si on a appuyé sur le bouton */
echo "TEXTE: $texte";
}
?>
Si l'on utilise la méthode get le dictionnaire contenant les valeurs sera $_GET
<?php// redirection relative vers dossierheader("Location: dossier/");
// redirection absolue vers un autre siteheader("Location: http://un.autre.site/dossier/");
exit();
?>
<!DOCTYPE html><html><head><metacharset="UTF-8"><!-- Scripts et CSS communs --><title></title></head><body><!-- Titre --><!--Menu--><?php
echo $content;
?><!--Footer--></body></html>
Page1.php
<?php// ajout de CSS ou de Javascript spécifique pour cette page$content .= '<link href="style.less" rel="stylesheet/less" type="text/css" />';
$content .= '<script src="less-1.5.0.min.js"></script>';
$content .= 'Contenu de la page 1';
include('MasterPage.php');
?>