Code organisé à l'arrache (procédural, spaghetti)
<?php
// Some php here
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
</html>
Solutions
Plusieurs problèmes
Organiser la logique dans des objets
Exemple PDO :
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASS);
$pdo->exec('INSERT INTO ...');
$query = $pdo->query('SELECT ...');
On parle de code orienté objet, de classe, d'instance, de modèle, ...
Ces termes sont liés, mais n'ont pas le même sens
Création d'une classe
class MyClass
{
public $foo = 'bar';
public function doSomething()
{
echo '
foo is equal to '.$this->foo;
}
}
$myClass = new MyClass();
$myClass->doSomething();
$myClass1 = new MyClass();
$myClass2 = new MyClass();
$myClass3 = new MyClass();
$myClass = new MyClass();
echo $myClass->foo;
$myClass = new MyClass();
$myClass->doSomething();
$myClass->doSomething();
$myClass->doSomething();
Le public devant les propriétés et méthodes correspond à la visibilité. Puisque nous débutons, nous mettrons toujours public.
Pour information, les autres modes de visibilité sont
Il est possible de déclencher une méthode dès que la classe est instanciée
Il suffit de créer une méthode appellée __construct
class MyClass
{
public function __construct()
{
echo '
Bonjour';
}
}
$myClass = new MyClass();
On appel Modèle une classe dont le rôle est de traiter une donnée précise
Par exemple, une classe chargée de sauvegarder, récupérer, supprimer ou modifier des dépenses dans une table SQL
Tout ce qui compose notre site peut être orienté objet
Cf. Correction partiel