Mysql
 sql >> база данни >  >> RDS >> Mysql

OOP PHP PDO Моят първи проект, правилно ли правя?

Бих започнал с използване на model/mapper. Това е много прост начин да получите обикновени обекти и да можете да ги запазите в базата данни. Той също така избягва смесването на извиквания на база данни и код (логика на постоянство) с функционалност (приложение или бизнес логика). Прост пример:

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

Също така бих препоръчал да използвате getters/setter, вместо директен достъп до членове, но това беше само за опростяване на кода... Докато разработвате повече модели/mappers, ще намерите обща функционалност на картографа (запазване, зареждане, изтриване, намиране) и вие може да преработи кода ви, за да съдържа общата логика, така че да нямате куп копипаста.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Позоваване на външни ключове в същата колона

  2. Намерено несъответствие на типа Scala Spark Единица, задължителна rdd.RDD

  3. ADDDATE() срещу DATE_ADD() в MySQL:Каква е разликата?

  4. php mysql IN клаузата не работи с CSV променлива. само първият ред е засегнат

  5. Използвайте чувствителен към акцент първичен ключ в MySQL