Mysql
 sql >> Datenbank >  >> RDS >> Mysql

OOP PHP PDO Mein erstes Projekt, mache ich das richtig?

Ich würde mit Model/Mapper beginnen. Es ist eine sehr einfache Möglichkeit, einfache Objekte zu erhalten und sie in der Datenbank zu speichern. Außerdem wird vermieden, Datenbankaufrufe und Code (Persistenzlogik) mit Funktionalität (Anwendungs- oder Geschäftslogik) zu vermischen. Einfaches Beispiel:

class User {
    public $id;
    public $username;

}

class UserMapper {
    /**
     * @param User $user
     */
    public function save(User $user) {

        if(isset($user->id)) {
            $statement = "Update users set username = ? where id = ?"
        } else {
            $statement = "insert into users set username = ?, id = ?"
        }
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->username, $user->id);
        $db_result = $sth->execute($values_a);
    }

    /**
     * @param int $userId
     * @return User
     */
    public function load($userId) {
        $statement = "select * from users where id = ?";
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->id);
        $db_result = $sth->execute($values_a);
        $returnUser = new User();
        $returnUser ->id       = $db_result[0]['id'];
        $returnUser ->username = $db_result[0]['username'];
        return $returnUser;
    }
}

Ich würde auch empfehlen, Getter/Setter anstelle des direkten Member-Zugriffs zu verwenden, aber dies diente nur der Einfachheit des Codes ... Wenn Sie mehr Modelle/Mapper entwickeln, werden Sie allgemeine Mapper-Funktionen (Speichern, Laden, Löschen, Finden) und Sie finden können Ihren Code so umgestalten, dass er die allgemeine Logik enthält, sodass Sie keinen Haufen Copypasta haben.