PHP - Avis sur déclaration de peopriétés

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, je voudrai prendre vos avis SVP. Pour un projet, j'utilise l'ORM de Laravel 5. Mais ma question n'est pas sur l'ORM, mais + sur des "bonnes pratiques".

Pour l'exemple, on va dire que ma table 'articles' a comme colonne 'title' et 'description'. Et je voudrai savoir si dans mon exemple, je suis obligé de déclarer dans le Model enfant, une propriété protected pour chaque colonne. Je ne pense pas qu'en PHP ce soit obligé, mais je voulais savoir si c'est mieux de le faire pour des raison de bonne pratique… Voici mon code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php

/**
 * Classe parent des Models qui fonctionnent avec l'ORM Eloquent
 */
class Model extends ModelEloquent
{
    /**
     * Parcourir le resultat d'une requete SQL qui retourne plusieurs enregistrements
     * Pour chaque enregistrement -> créer un nouveaux object du Model enfant
     * Parcourir les collones d'un enregistrement
     * Et pour chaque object affecter comme valeurs aux propriétés de l'object les valeurs des colonnes de chaque enregistrement
     *
     * @param PDOStatement $resultQuery - Resultat d'une requete SQL qui retourne plusieurs enregistrements
     * @return tableaux d'objets
     */
    public function setPropertiesAndGetCollection($resultQuery) {
        $objects = [];
        foreach ($resultQuery as $ligneQuery) {
            $object = new $this;

            foreach ($ligneQuery as $property => $value) {
                $object->$property = $value;
            }

            $objects[] = $object;
        }

        return $objects;
    }

}


class Article extends Model
{
    // Est-ce mieux d'ajouter :
    // protected $titre;
    // protected $description;
    // Ou ce n'est pas utile ?



    /**
     * @return chassis qui sont loués (relation One To Many avec table dedie)
     */
    public function findExample() {
        $result = Capsule::table('articles')
                        ->leftJoin('comment', 'article.title', '=', 'comment.title')
                        ->where('commet.status', '1')
                        ->get();

        $collection = $this->setPropertiesAndGetCollection($result);

        return $collection;
    }
}

ps: Si je var_dump $collection, voici le résultat dans l'état actuelle des choses :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
Array
(
    [0] => App\Model\Article Object
        (
            [attributes:protected] => Array
                (
                    [title] => titre...
                    [description] => description...
                ) 
        )

    [1] => App\Model\Article Object
        (
            [attributes:protected] => Array
                (
                    [title] => titre...
                    [description] => description...
                (

        )
]

Merci beaucoup

Édité par stephweb

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte