Passer au volet Contenu
Accueil Astuces Mosaïque Produits Outils Me contacter
  • Accueil
  • Astuces
  • Mosaïque
  • Produits
  • Outils
  • Me contacter
Connexion
  • Vous êtes ici :  
  • Accueil
  • Astuces
  • PhP
  • Programmation Orienté Objet
…

Programmation Orienté Objet

Détails
Mis à jour : 21 février 2014

Syntaxe POO PHP

Vous débutez dans l'apprentissage de ce langage en utilisant la POO ? Vous désirez parfaire vos connaissances pour obtenir une bonne base ? Cet article est fait pour vous !

1. Constructeur et destructeur

class Exemple1 // Le polymorphisme n'existe pas en PHP5, il n'est donc pas possible d'avoir plusieurs contrusteurs.
{
	public $maVar;
	function __construct()
	{
		$this->maVar = "7";
		echo "Constructeur déclenché
"; } function Function1() { echo "Exemple Function : ".$this->maVar."
"; } function __toString() // Comment doit réagir la classe lorsqu'elle est convertie en chaîne de caractère { return "ToString"; } function __destruct() { echo "Destructeur déclenché"; } } $obj = new Exemple1(); echo $obj."
"; // Affichera "ToString" $obj->Function1(); // Affichera "Exemple Function : 7" echo $obj->maVar."
"; // Affichera "7"

2. Portée des membres

class Exemple2 
{
	public function methode1()
	{
		echo "méthode publique, ";
		$this->methode3();
	}
	protected function methode2()
	{
		echo "méthode protégée";
	}	
	private function methode3()
	{
		echo "méthode privée";
	}
}

class Exemple2Fille extends Exemple2 // Héritage
{
	function __construct()
	{
		$this->methode1(); // Affichera "méthode publique, méthode privée"
		$this->methode2(); // Affichera "méthode protégée"
		$this->methode3(); // ERREUR
	}
}


$obj = new Exemple2Fille(); // Création d'une instance

3. Constantes

class MaClasse 
{
    const CONST1 = 'MaConstante';
    public $var1 = 'MaConstante';
}


echo MaClasse::CONST1;

// Une constante n'est pas accessible depuis l'instance d'un objet, mais uniquement dans un context static 
//$inst = new MaClasse();
//echo $inst->$var1;

4. Accesseurs

class MaClasse 
{
    private $propertie;
    private $propertie1;
    private $propertie2;
    private $propertie3;

	function __construct() 
	{
		$this->propertie = "Value1";
    }
	
	function __call($name , $arguments) 
	{
        echo "Vous tentez d'appeler la méthode ".$name." avec les arguments suivants : 
"; print_r($arguments); } function __get($name) { echo "
__get
"; return $this->$name; } function __set($name, $value) { echo "
__set
"; $this->$name = $value; } } $obj = new MaClasse(); echo $obj->callFunction(18, "String"); echo $obj->propertie; $obj->propertie = "newValue"; echo $obj->propertie; echo $obj->propertie3; $obj->propertie3 = "newValue"; echo $obj->propertie3;

5. Classe abstraite

abstract class Abstract1
{ 
	public $propertie = "123";
	
	abstract public function Function1();
}

class Exemple4 extends Abstract1 // L'héritage multiple n'existe pas : une classe peut hériter uniquement que d'une seule classe mère
{  
	public function Function1()
	{
		echo "Implémentation du prototype Function1 de la classe abstraite Abstract1
"; } } //$obj = new Abstract1(); // -> ERREUR on ne peut pas instancier une classe abstraite $obj = new Exemple4(); $obj->Function1(); echo $obj->propertie;

6. Interface

interface Interface1
{
	//Prototypes des méthodes
	//Aucune propriété ne peut être définie dans une interface
	public function Function1();
	public function Function2();
}

interface Interface2
{
	//public $propertie = "123"; // -> ERREUR une interface ne peut pas contenir de propriété
	
	//Prototypes des méthodes
	//Aucune propriété ne peut être définie dans une interface
	public function Function3();
	public function Function4();
}

class Exemple3 implements Interface1, Interface2 // Il est possible d'implémenter plusieurs intefaces
{
	public function Function1()
	{
		echo "Implémentation du prototype Function1 de l'interface Interface1
"; } public function Function2() { echo "Implémentation du prototype Function2 de l'interface Interface1
"; } public function Function3() { echo "Implémentation du prototype Function3 de l'interface Interface2
"; } public function Function4() { echo "Implémentation du prototype Function4 de l'interface Interface2
"; } } //$obj = new Interface1(); // -> ERREUR on ne peut pas instancier une interface $obj = new Exemple3(); $obj->Function1(); $obj->Function2(); $obj->Function3(); $obj->Function4();

7. Static

class MainClass
{
	function ParentFunction($arg)
	{
		echo "ParentFunction de la classe mère avec l'argument : ".$arg."<br?-->";
	}
}

class Exemple extends MainClass
{
	public static $propertie = 1;
	public $propertie2 = "Proriété non static";
			
	static function StaticFunction()
	{
		return self::$propertie;
		//return $this->propertie; // INCORRECT car nous sommes dans un contexte static
	}
	
	function NewFunction()
	{
		parent::ParentFunction($this->propertie2);
		//parent::ParentFunction(self::$propertie2); // INCORRECT car $propertie2 est non static
	}
}

echo "Accès statique : ".Exemple::StaticFunction()."
"; $obj = new Exemple(); echo $obj->NewFunction()."
";

8. Final

class Exemple
{
	final public function Function1() 
	{
		echo "Function1 de type final";
	}
}

class ExempleFille extends Exemple
{
	public function Function1()
	{
		echo "Override de la méthode Function1 de la classe Exemple6"; // Interdit
	}
}

9. Clone

class CloneClass
{
	public $propertie;

	function __construct()
	{
		echo "Construct ";
		$this->propertie = 1;
	}
	
	function __clone()
	{
		echo "Clone ";
		$this->propertie=2;
	}
}

$obj = new CloneClass(); 
echo $obj->propertie."
"; $clone = clone $obj; echo $clone->propertie."
";

10. Exception

class CustomException extends Exception
{
	__construct($Message,$ErrorCode)
	{
		parent::$Message = $Message
	}
}

class ExClass
{
	public function throwException() 
	{
    	throw new CustomException ("Exception déclenchée", 3);
	}
}

$Obj = new ExClass();

try 
{
    $Obj->throwException();
}
catch (Exception $exception) 
{
    echo "Message : ".$exception->getMessage().", Line : ".$exception->getLine().", File : ".$exception->getFile();
}
catch (CustomException $exception) 
{
    echo "Message : ".$exception->getMessage().", Line : ".$exception->getLine().", File : ".$exception->getFile();
}

11. Singleton

class Single 
{
	static $instance;
	private function __construct() 
	{
		// Générera une erreur si appelé grâce au new par l'exterieur car le constructeur est déclaré en private
	}
	static function GetInstance() 
	{
		if (empty(self::$instance)) 
		{
			self::$instance = new Single;  
		}
		return self::$instance;
	}
	
    public function __clone()
    {
        trigger_error("Le clônage n'est pas autorisé", E_USER_ERROR); // On déclenche une erreur car le clonage n'est pas autorisé
    }
}


//$obj = new Single();					  // => ERREUR car constructeur déclaré en private
//$obj = clone Single::GetInstance();	  // => ERREUR car la méthode __clone déclenche une erreur
Single::GetInstance();

12. Autoload

function __autoload($ClassName) 
{
    @require $ClassName.".class.php"; // MaClasse.class.php
}
$obj = new MaClasse();
echo $obj->var1;

13. Serialize

class exempleSerialize
{
	public $var1;
	public $var2;
	
    function __construct()
	{
        $this->var1 = "Value1";
        $this->var2 = 1;
    }
	
	function __sleep()
	{
		return array('var1','var2');
	}

	function __wakeup()
	{
		echo "methode __wakeup
"; } } $exempleSerialize = new exempleSerialize(); echo $exempleSerialize->var1."
"; echo $exempleSerialize->var2."
"; $lin = serialize($exempleSerialize); echo $lin."
"; $de_lin = unserialize($lin); echo $de_lin->var1."
"; echo $de_lin->var2."
";

 

Merci de prendre en compte l'ancienneté de l'article : 2014 soit 7 ans

On en discute ensemble...

  • Suivant

outils nokia bases email quelques supprimer fichier jours dangers plus logiciels jdownloader vous configurer reprendre relev votre voir ches skype avira contr enfants raccourci pour internet meilleurs rajouter raccourcis rateur pubs certificat microsoft liste voici styles chargement chou corbeille afficher mettre ception sous steam identit applications activation accus code prot

Me suivre
Développer Réduire
Me suivre
Twitter Twitter
Facebook Facebook
Feedburner Flux RSS
Youtube Youtube
Youtube Skype

Les dernières astuces
Développer Réduire
Les dernières astuces
  • Supprimer et désactiver l'historique Google

  • Supprimer les pubs indésirables

  • Supprimer les pubs spotify sous android

  • Supprimer la pub avast des emails

  • Supprimer les pubs android


Statistiques
Développer Réduire
Statistiques
  • Articles Nb : 47

  • Articles Vues : 586071

  • Articles Com's : 329

  • Youtube Nb : 9

  • Youtube Vues : 53691

  • Youtube Followers : 41

  • Twitter Followers : 51


Les dernières vidéos
Développer Réduire
Les dernières vidéos
  • Supprimer les pubs indésirables

  • Supprimer les pubs spotify sous android

  • Supprimer la pub avast des emails

  • Supprimer les pubs android

  • Supprimer les pubs spotify


Mes services
Développer Réduire
Mes services
  • Dépannage à domicile

  • Cours particuliers

  • Création de site internet

  • Mon curriculum vitae

  • Partenaire du web


Infos
DévelopperRéduire
Infos
  • Adblock plus :

  • Flash :

  • Java :

  • Votre adresse Ip v4 : 18.207.108.182

  • Host : ec2-18-207-108-182.compute-1.amazonaws.com

  • Proxy : Oui

  • Votre résolution :

  • Votre os : Inconnu

  • Votre navigateur : Inconnu


Nous avons 11 invités et aucun membre en ligne

Par Sébastien FUCHS en Version 3.0.0

Joomla Licence Creative Commons Webutation Norton Safe Web PageRank Actuel

❤ Jésus