Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Classes PHP
- ## I. Concept
- Une classe est un élément de code qui contient d'autres éléments. Ces éléments sont propres à la classe, et peuvent être utilisés au sein d'elle même. On appelle les variables de la classe des Propriétés, et ses fonctions des méthodes. Par convention, le nom d'une classe commence toujours par une majuscule.
- #### 1. Propriétés
- `$property = 'content';`
- + La propriété est contenu dans chaque instance de l'objet.
- + Une classe peut contenir autant de propriétés que l'on souhaite.
- #### 2. Méthodes
- `function method() {}`
- + Une méthode est une fonction propre à l'objet. Elle peut s'executer en prenant en compte les autres propriétés et méthodes propres à l'objet.
- + Une classe peut contenir autant de méthodes que l'on souhaite.
- ## II. Application
- #### 1. Création et utilisation d'une classe.
- + Il faut *construire* une classe, le mot clé utilisé est `class`. Les propriétés et routines de la classe sont placées entre accolades.
- + Il faut *créer* la classe dans une variable pour l'utiliser. On utilise pour cela le mot clé `new`.
- + On accède aux propriétés et méthodes grace à la syntaxe Classe->Membre *(tiret-chevron>)*.
- + On accède à la classe comme à une variable normale, avec le signe $.
- + Il ne faut pas utiliser le signe $ avant l'accès à une propriété.
- + Une méthode est une fonction, même sans paramètre il faut utiliser les parenthèses ().
- ```php
- class MyClass
- {
- public $property = 'Une propriété<br>';
- function method()
- {
- return 'Une méthode<br>';
- }
- }
- $object = new MyClass();
- echo $object->property;
- echo $object->method();
- ```
- ```
- Une propriété
- Une méthode
- ```
- #### 2. Visibilité des éléments
- + On peut définir une visibilité aux membres des classes. La visibilité permet de limiter ou non l'accès en lecture et en écriture au membre de la classe depuis l'extérieur. Les deux mots clés principaux sont `public` et `private`, mais il en existe d'autres.
- **`public`**
- + l'élément est accessible à l'intérieur et à l'extérieur de l'objet.
- ```php
- class MyClass
- {
- public $property = "public param";
- }
- $object = new MyClass();
- echo $object->property;
- ```
- ```
- public param
- ```
- **`private`**
- + L'élément n'est accessible qu'à l'intérieur de la classe
- ```php
- class MyClass
- {
- private $property = 'Une propriété privé<br>';
- }
- $object = new MyClass();
- echo $object->property;
- $object->property = 'Nouvelle valeur';
- ```
- ```
- Fatal error: Uncaught Error: Cannot access private property MyClass::$property
- ```
- + Nous aurons besoin *d'accesseurs* pour pouvoir lire et définir les propriétés protégées par *`private`*.
- #### 3. La variable $this
- + `$this` est une variable contextuelle, qui existe dans tous les objet. C'est un objet qui pointe vers la classe dans laquelle il est appelé.
- + `$this` ne s'utilise que dans les méthodes de l'objet.
- ```php
- class MyClass
- {
- public $property = "Une propriété<br>";
- public function modifyProperty()
- {
- $this->property = 'Une propriété modifiée grace à $this<br>';
- }
- }
- $object = new MyClass();
- echo $object->property;
- $object->property = 'Une propriété modifiée<br>';
- echo $object->property;
- $object->modifyProperty();
- echo $object->property;
- $this->property = 'bonjour';
- ```
- ```
- Une propriété
- Une propriété modifiée
- Une propriété modifiée grace à $this
- Fatal error: Uncaught Error: Using $this when not in object context
- ```
- #### 4. Accesseurs
- + Pour des raisons de sécurité, les propriétés des classes sont généralement *`private`*. Pour pouvoir y accéder, pour les lire ou les modifier depuis l'extérieur de la classe, nous définirons des méthodes que l'on appelle *accesseurs*.
- + Il existe deux types principaux d'accesseurs. *GET* et *SET*. *GET* permet de récupérer le contenu d'une variable, *SET* permet de le modifier.
- + set et get sont des nom arbitraires, c'est à vous d'écrire les accesseurs, sous la forme de set*Name*(), get*Name*().
- ```php
- class MyClass
- {
- private $property = "Une propriété<br>";
- public function getProperty()
- {
- return $this->property;
- }
- public function setProperty($value)
- {
- $this->property = $value;
- }
- }
- $object = new MyClass();
- echo $object->getProperty();
- $object->setProperty('Nouvelle valeur');
- echo $object->getProperty();
- ```
- ```
- Une propriété
- Nouvelle valeur
- ```
Add Comment
Please, Sign In to add comment