PHP

De drev
(Redirigé depuis Php)
Aller à : navigation, rechercher

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'));