Syntaxe orientée aux objets
class BasicClass {
public $var = 'a default value';
public function displayVar() {
echo "$this->var + 1";
}
}
$x = new BasicClass();
$x->displayVar();
a default value + 1
Les propriétés peuvent être initialisées uniquement avec des valeurs primitives.
Propriétés statiques
class SimpleClass extends BasicClass
{
const C = 'a default constant';
public static $classvar = 'another value';
public static function displayClass() {
echo self::$classvar . "\n" . parent::class;
}
public function displayConst() {
echo self::C;
}
}
$x = new SimpleClass();
$x->displayConst();
SimpleClass::displayClass();
a default constant
BasicClass
another value
- Les propriétés statiques et les constantes peuvent être initialisées uniquement avec des valeurs primitives.
- Les mots clef
self
,parent
et la propriétéclass
sont réservés.
Constructeurs et destructeurs
class BaseClass {
function __construct() {
echo "Initialisation objet\n";
}
function __construct() {
echo "Destruction objet\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "Initialisation sous-objet\n";
}
}
new BaseClass();
new SubClass();
echo "\n\n";
Initialisation objet
Initialisation objet
Initialisation sous-objet
Destruction objet
Destruction objet
Espaces de noms
<?php
# La déclaration du namespace doit aller au début du fichier
namespace Projets\Projet1;
class MaClasse {}
function mafonction {}
mafonction();
<?php
include 'projet1.php';
$a = new Projets\Projet1\MaClasse();
Projets\Projet1\mafonction();
use Projets\Projet1 as P1;
$b = new P1\MaClasse();
use Projets\Projet1\MaClasse;
$c = new MaClasse();
Chargement automatique (autoload)
<?php
function __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
-
Inclut la définition de la classe la première fois qu’elle est utilisée.
-
Utilisable uniquement si Une classe → un fichier.
-
Lourdement utilisé par Silex.
-
Non disponible en mode interpréteur.
Très mauvaise pratique, si vous me demandez mon avis !
Autres mécanismes
-
Classes abstraites (mot clef
abstract
). -
Interfaces (mots clef
interface
,implements
). Exemple : interfaceTraversable
, utilisée en combinaison avec la boucleforeach
. -
Traits (ou Mixins, héritage partiel, mot clef
trait
). -
Typage (lourdement utilisé par Silex).
Lectures
La section sur les classes du manuel officiel de PHP.