Qu'est-ce que PHP ?

Acronyme récursif de PHP : Hypertext Preprocessor. Langage serveur hétéroclite, PHP se dinstigue des autres langages par son histoire. Créé à l'origine comme un langage de script à typage dynamique et générant du code HTML, PHP est désormais capable d'un paradigme objet avancé et ses applications, bien qu'historiquement liées à la création de sites Internet, dépassent largement ces préjugés et permettent de concevoir rapidement des logiciels fiables et performants (On rappelera que PHP est intimement lié au langage C).

La puissance de PHP

Le typage dynamique des variables

La puissance de PHP repose fondamentalement sur le typage dynamique des variables. Il devient ainsi possible d'utiliser une même variable afin de stocker plusieurs types de contenu et de construire dynamiquement des noms de variable.

$a = 21;   // $a is an integer.
$a = '21'// $a is now a string (dynamic type hinting).
 
$a = 'b';
$b = 42; 
echo $$a;  // Display 42 ($$a --> ${$a} --> ${'b'} --> $b --> 42).
 
$b = 'myFunction';
function myFunction() {
  return 63;
}
$a = $b();
echo $a;   // Display 63 ($b() --> ${'myFunction'}() --> myFunction() --> 63).

Les tableaux associatifs

Les tableaux, tels que traités par PHP, disposent d'une grande aisance de manipulation. Associatifs par nature, ils se superposent efficacement aux types de données présents dans les autres langages de programmation, donnant ainsi à PHP une flexibilité inédite dans le traitement des opérations tabulaires.

$a             = array('Mario''Luigi');
$a[]           = 'Toad';
$a['Princess'] = 'Peach';
$a[]           = 'Koopa';
$a[5]          = 'Lakitu';
$a[]           = 'Bowser';
 
foreach($a as $key => $value) {
  echo $key.' => '.$value."\n";
}
 
// The result is :
// ---------------
// 0 => Mario
// 1 => Luigi
// 2 => Toad
// Princess => Peach
// 3 => Koopa
// 5 => Lakitu
// 6 => Bowser

L'orientation à la fois procédurale et objet

PHP est capable d'interpréter des scripts dont la syntaxe est aussi bien procédurale que objet, et cela même lorsque les styles sont mélangés au sein d'un même fichier. L'orientation objet, disponible depuis PHP 4, a été étendue de manière significative avec PHP 5.

class A {
  protected $a;
 
  public function __construct() {
    $this->a = 42;
  }
  public function getA() {
    return $this->a;
  }
}
 
class extends A {
  public function __construct() {
    parent::__construct();
  }
}
 
$a = new A();
echo $a->getA(); // Display 42.
 
$b = 'B';
$b = new $b();
echo $b->getA(); // Display 42.
 
$a = null;       // Free memory.
$b = null;

Les méthodes et fonctions magiques

L'intelligence de PHP repose également sur l'emploi de méthodes et de fonctions dites « magiques ». Grâce à ces caractéristiques, PHP est à même de charger dynamiquement des classes, et d'intercepter automatiquement les appels aux méthodes inexistentes. A l'aide de cette dernière fonctionnalité, nous pouvons construire à la volée les getters et setters.

// We are here : ./classes/EntityObject.php
 
abstract class EntityObject {
  /**
   * Construct the class.
   */
  public function __construct() {
  }
  /**
   * Destroy the class.
   */
  public function __destruct() {
  }
  /**
   * Intercept calls on accessors (getters and setters)
   * and dynamically create them.
   */
  public function __call($method, $attrs) {
    $prefix = substr($method, 0, 3);
    $suffix = chr(ord(substr($method, 3, 1)) + 32);
    $suffix .= substr($method, 4);
    $cattrs = count($attrs);
    if (property_exists($this, $suffix)) {
      if ($prefix == 'set') {
        return $this->__set($suffix, $attrs[0]);
      }
      if ($prefix == 'get') {
        return $this->__get($suffix);
      }
    }
    trigger_error('The method '.$method.' does not exist.');
  }
  /**
   * Get the value of the given member.
   */
  public function __get($member) {
    return $this->{$member};
  }
  /**
   * Set the given value to the given member.
   */
  public function __set($member, $value) {
    $this->{$member} = $value;
  }
}

// We are here : ./
 
/**
 * Load automatically classes definition.
 * This is a kind of file auto-inclusion.
 */
function __autoload($class_name) {
  require_once './classes/' . $class_name . '.php';
}
 
class MyObject extends EntityObject {
  protected $a;
  protected $b;
 
  public function getB() {
    return $this->b + 1;
  }
}
 
$myobject = new MyObject();
$myobject->setA(2);
$myobject->setB(1);
echo $myobject->getA(); // Display 2.
echo $myobject->getB(); // Display 2.
$myobject = null;

Une facilité déconcertante

L'une des devises de PHP est l'accessibilité au plus grand nombre. Ceci se traduit par un langage aussi bien accessible aux novices qu'aux développeurs expérimentés. Ce qui rend également PHP remarquable, c'est la simplicité avec laquelle il est possible d'interagir avec des fonctionnalités tierces, comme les bases de données avec PDO, les fichiers XML avec SimpleXML, ...etc. De tous les langages de programmation, PHP est de loin le plus intéressant qu'il m'ait été donné d'approcher.

Denis TRUFFAUT - Ingénieur Web

[Page générée en 0.059437036514282 seconde]