Les bases
Travaux pratiques
L'objet
Exercices
Travaux Pratique 2
Le routeur
18 min
Listing d'articles23-08-2019 12:00:00, ou devenir premium
24 min
Pagination24-08-2019 12:00:00, ou devenir premium
16 min
Simplifions la gestion de l'URL25-08-2019 12:00:00, ou devenir premium
20 min
Page article26-08-2019 12:00:00, ou devenir premium
23 min
Page catégorie27-08-2019 12:00:00, ou devenir premium
10 min
Réorganisation de la pagination28-08-2019 12:00:00, ou devenir premium
29 min
Affichage des catégories sur le listing29-08-2019 12:00:00, ou devenir premium
30 min
Création de la classe Table31-08-2019 12:00:00, ou devenir premium
34 min
Administration du site01-09-2019 12:00:00, ou devenir premium
23 min
Edition d'un article02-09-2019 12:00:00, ou devenir premium
30 min
Gestion des formulaires03-09-2019 12:00:00, ou devenir premium
24 min
Valider les données04-09-2019 12:00:00, ou devenir premium
23 min
Création d'un article05-09-2019 12:00:00, ou devenir premium
19 min
Gestion des catégories06-09-2019 12:00:00, ou devenir premium
35 min
Liaison article catégorie07-09-2019 12:00:00, ou devenir premium
31 min
Authentification08-09-2019 12:00:00, ou devenir premium
32 min

Maintenant que l'on a nos données de tests nous allons pouvoir attaquer le vif du sujet et mettre en place la page d'accueil. Page qui permettra de lister les 12 derniers articles de notre application.

Une classe pour représenter nos données

Lorsque l'on récupère des données il peut être intéréssant de les organiser dans des objets. Cela offre 2 avantages :

  • On peut créer des "getters" qui permettent de contrôler le type de retour pour chacun de nos champs (par exemple on peut convertir les date MySQL en DateTime PHP).
  • On a des objets avec des signatures connues et il est plus simple d'identifier leur structure lorsqu'ils sont utilisé en paramètre dans des méthodes.
namespace App\Model;

use \DateTime;

class Post {

    private $id;

    private $slug;

    private $name;

    private $content;

    private $created_at;

    private $categories = [];

    public function getName (): ?string
    {
        return $this->name; 
    }

    public function getCreatedAt (): DateTime
    {
        return new DateTime($this->created_at);
    }

    public function getSlug (): ?string
    {
        return $this->slug;
    }

    public function getID (): ?int
    {
        return $this->id;
    }

}

On le voit ici, la méthode getCreatedAt() permet de récupérer un datetime, ce qui permet de formater facilement les dates :

<p class="text-muted"><?= $post->getCreatedAt()->format('d F Y') ?></p>