PHP
Sommaire
Configuration
La configuration de php se fait via le fichier php.ini
Sous la plupart des distributions linux, il se situe sous
/etc/php/php.ini
- Afficher les erreurs (On en dev, Off en production)
display_errors = Off
- Limiter la portée des operations de php dans certains repertoires.
open_basedir = /var/www:/usr/share/nginx/php/
Si
- Activer les Extensions pour ajouter des fonctionnalités à PHP
par exemple
extension=pdo_sqlite.so
il faut aussi installer les paquets appropriés et vérifier ques les fichiers lib sont present dans le répertoire extension_dir
Appliquer une nouvelle configuration
Pour appliquer la configuration relancer le serveur HTTP ou fast-cgi
exemple:
systemctl restart php-fpm
Note
- Pour vérifier la configuration utiliser la fonction phpinfo() dans un fichier PHP.
Classes
Definition
class MaClasse1{ };
Instanciation
$obj = new MaClasse1();
Constantes
define("FOO", "something");
Tableaux
Tableaux associatifs
$a = array( 1 => 'hello, world 41' , 2 => 'hello, world 42' , ); $a[3] = "hello world 43";
Snippets
array_merge
<?php $nb_en_jp_1 = array ( 'one' => 'ichi', 'two' => 'ni', 'three' => 'san', 'four' => 'yon' ); $nb_en_jp_2 = array ( 'four' => 'yon', //yon will be merged 'five' => 'go', 'six' => 'roku' ); $nb_en_jp_3 = array ( 6 => 'roku', 7 => 'nana', 8 => 'hachi' ); $en_jp = array_merge($nb_en_jp_1, $nb_en_jp_2); $en_jp = array_merge($en_jp, $nb_en_jp_3); // will loose index because of mixed data type var_dump($en_jp); /* array 'one' => string 'ichi' (length=4) 'two' => string 'ni' (length=2) 'three' => string 'san' (length=3) 'four' => string 'yon' (length=3) 'five' => string 'go' (length=2) 'six' => string 'roku' (length=4) 0 => string 'roku' (length=4) 1 => string 'nana' (length=4) 2 => string 'hachi' (length=5) */ ?>
unset on array
<?php class Foo{ public $bar; function __construct($bar){ $this->bar = $bar; } } $array_of_foo = array( (new Foo(42)), (new Foo(43)), (new Foo(44)) ); var_dump($array_of_foo); echo 'unset at index 1<br/>'; unset($array_of_foo[1]); echo 'now the index 1 is no longer there<br/>'; var_dump($array_of_foo); echo 'reindexing...<br/>'; $array_of_foo = array_values($array_of_foo); var_dump($array_of_foo); ?>
Boucles
foreach
foreach ($var_array as $value){ //commandes } foreach ($var_array as $key => $value){ //commandes }
Arguments ligne de commande
Lire les arguments
getopt();
<?php $options = getopt("f:hp:"); var_dump($options); ?>
source http://www.php.net/manual/en/function.getopt.php
Arguments pour PHP
-r executer du code
php -r "echo 'coucou';"
Variables globales
Variables disponible quel que soit le contexte
$_FILES
Tableaux associatif permettant d'accéder au contenu d'un fichier uploadé.
La première clé est le nom de la variable utilisé lors de la requête HTTP, la valeur correspondante est au autre tableau comprenant les clé suivantes :
[name] => MyFile.jpg [type] => image/jpeg [tmp_name] => /tmp/php/php6hst32 [error] => UPLOAD_ERR_OK [size] => 98174
$_SESSION
tableau de variables enregistre en mémoire pour une utilisation entre scripts :
chaque page utilisant les sessions doivent appeler la fonction session_start(), avant que PHP n'affiche un seul charactere
exemple :
<?php require('Garage.php'); require('Car.php'); session_start(); if(isset($_SESSION['oGarage'])){ $oGarage = unserialize($_SESSION['oGarage']); } else{ $oGarage = new Garage(); $_SESSION['oGarage'] = serialize($oGarage); } ?>
Source
http://php.net/manual/fr/language.variables.superglobals.php
Usage memoire
memory_get_peak_usage
renvoie l'usage memoire en octet, pour avoir le resultat en mega octets, utiliser :
memory_get_peak_usage(true) / (1024*1024);
ini_get
cette fonction permet d’accéder aux variable de la configuration de PHP.
l'argument 'memory_limit' permet de récupérer la taille mémoire accordée a PHP sous forme de chaine de caractère
de la forme 999UNITEE : exemple 500M pour 500 Mega octets.
pour avoir la taille sous forme d'entier, utiliser :
(int)ini_get('memory_limit');
Chaîne de caractères
sprintf
<?php $the_number = 42; $the_number = sprintf("%05d", $the_number); echo 'the answer is '.$the_number.'<br/>'; /* the answer is 00042 */ ?>
Exceptions
<?php function test42($nb){ if($nb != 42)throw new exception('the number is not 42, but '.$nb); } $nb = 30; try{ test42($nb); } catch(Exception $e){ echo $e->getMessage(); } ?>
the number is not 42, but 30
Réferences
Réference sur une fonction
Utiliser la fonction call_user_funct
function bar($arg1, $arg2){ echo __METHOD__, " got $arg1 and $arg2\n"; } call_user_funct('bar', 'ichi', 'ni');
Réferance sur une fonction membre d'une classe
Utiliser la fonction call_user_funct_array
class foo { function bar($arg1, $arg2) { echo __METHOD__, " got $arg1 and $arg2\n"; } } $foo = new foo(); call_user_func_array(array($foo, 'bar'), array('ichi', 'ni'));