sql >> Database >  >> RDS >> Mysql

OOP PHP PDO Mijn eerste project, doe ik het goed?

Ik zou beginnen met het gebruik van model / mapper. Het is een heel eenvoudige manier om gewone objecten te krijgen en ze in de database te kunnen bewaren. Het voorkomt ook dat database-aanroepen en code (persistentielogica) worden gemengd met functionaliteit (toepassings- of bedrijfslogica). Eenvoudig voorbeeld:

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;
    }
}

Ik zou ook aanraden om getters/setters te gebruiken in plaats van directe toegang voor leden, maar dit was alleen voor de eenvoud van code... Naarmate je meer modellen/mappers ontwikkelt, zul je algemene mapper-functionaliteit vinden (opslaan, laden, verwijderen, zoeken) en je kan uw code refactoren om de gemeenschappelijke logica te bevatten, zodat u niet een hoop copypasta heeft.




  1. android.database.CursorIndexOutOfBoundsException

  2. Wat weerhoudt mij ervan om verbinding te maken met een MySQL-server op AWS RDS vanaf een AWS EC2-VM?

  3. MySQL-query:UNION gebruiken en rijnummer ophalen als onderdeel van SELECT

  4. Fix Error Msg 4151 "Het type van het eerste argument voor NULLIF kan niet de NULL-constante zijn omdat het type van het eerste argument bekend moet zijn" in SQL Server