mardi 27 avril 2010

PHP : classes et objets

J'ai jeté un coup d'œil sur la manière dont PHP implémente les objets.
La syntaxe ressemble globalement au JAVA. Un objet est une référence vers une construction qui se rapproche d'un tableau associatif.

Voici un exemple de manipulation




<?php
abstract class Mamifere {
// nom
var $nom;
function __construct($nickname) {

$this->nom= $nickname ;

}

function parle () { }
}

class Chien extends Mamifere {
function parle () {
echo "ouaf ouaf\n";
}
}
$a= new Chien ("fido");
print_r( $a);
var_dump($a);
echo get_class($a)."\n";
echo get_parent_class($a)."\n";
$method= "parle";
call_user_func(array ($a,$method));
$b= get_class_methods($a);
var_dump($b);
?>



La manipulation d'un attribut d'instance à l'intérieur d'une classe est un peu lourde ($this->attribut) .

Des fonctions comme :
get_class , get_parent_class, get_class_methods permettent d'obtenir des informations sur les objets.

La fonction call_user_func peut etre utilisée pour envoyer un message à un objet afin qu'il exécute une méthode. C'est une des façons de réaliser de la métaprogrammation en PHP.



La sortie du programme donne :


php ./essaiclasse.php
Chien Object
(
[nom] => fido
)
object(Chien)#1 (1) {
["nom"]=>
string(4) "fido"
}
Chien
Mamifere
ouaf ouaf
array(2) {
[0]=>
string(5) "parle"
[1]=>
string(11) "__construct"
}



J'ai installé PHP 'client' pour faire tourner mon programme sous forme de script et non pas de CGI afin de m'affranchir de la couche du serveur Apache.

Aucun commentaire: