php - Class정의 & Class를 이용한 중복 체크

이태현·2025년 7월 6일

Web 개발

목록 보기
9/53
post-thumbnail

자료 출처 https://wikidocs.net/271940

객체지향 프로그래밍이란?

  • 객체지향 프로그래밍(OOP)은 현실 세계를 객체(Object) 라는 단위로 나누어 설계하는 프로그래밍 기법입니다.
  • 이 개념을 활용하면 코드를 보다 구조적으로 관리할 수 있으며, 유지보수 및 확장성이 뛰어난 프로그램을 만들 수 있습니다.

객체지향 프로그래밍(OOP)의 장점

  • 코드 재사용성 증가 : 같은 클래스를 여러 번 재사용 가능
  • 유지보수 용이 : 모듈화된 코드로 수정이 쉬움
  • 확장성 증가 : 기존 코드를 변경하지 않고 기능 추가 가능
  • 캡슐화(Encapsulation) 지원: 데이터 보호 기능 제공

OOP가 포함한 개념

  • 클래스(Class) : 객체를 만들기 위한 설계도
  • 객체(Object) : 클래스에서 생성된 실체
  • 속성(Property) : 객체의 상태를 나타내는 변수
  • 메서드(Method) : 객체의 동작을 정의하는 함수

클래스(Class)와 객체(Object)


클래스(Class) 정의하기

  • 클래스는 class 키워드를 사용하여 정의할 수 있습니다.
<?php
class Car
{
  public $brand;
  public $color;

  public function __construct($brand, $color)
  {
    $this->brand = $brand;
    $this->color = $color;
  }

  public function drive()
  {
    echo "<h1>{$this->brand} 가 출발합니다.</h1>";
    echo "<h1>{$this->color} 색깔이 참 멋있네요..!!</h1>";
  }
}

$car = new Car("BMW", "black");
$car->drive();
  • 위 코드를 설명해보면
    • Car 클래스는 자동차를 나타냄.
    • $brand, $color는 자동차의 브랜드와 색상을 저장하는 속성.
    • __construct()는 생성자로, 객체가 생성될 때 초기값을 설정.
    • drive() 메서드는 자동차가 출발할 때 실행되는 기능을 정의.

객체(Object) 생성하기

  • 클래스에서 객체를 생성할 때는 new 키워드를 사용합니다.
$car = new Car("BMW", "black");
$car->drive();
  • $car는 Car 클래스의 객체입니다.
  • 객체를 생성할 때 생성자 __construct()가 실행되어 brand와 color가 설정됩니다.
  • $car->drive();를 실행하면 BMW 자동차가 출발합니다! 메시지가 출력됩니다.

속성과 메서드 접근 제어

  • PHP에서는 속성과 메서드의 접근을 제한하는 키워드를 제공합니다.
접근 제어자설명
public어디서든 접근 가능
protected해당 클래스와 상속받은 클래스에서만 접근 가능
private클래스 내부에서만 접근 가능
  • 예제 코드
<?php
class Person
{
  private $name;
  public $age;

  public function __construct($name, $age)
  {
    $this->name = $name;
    $this->age = $age;
  }

  public function ShowMe()
  {
    echo "<h1>내 이름은 : " . $this->name . " 이고,</h1>";
    echo "<h1>내 나이는 : " . $this->age . "살 입니다.</h1>";
  }
}
$person = new Person("이태현", 29);
$person->ShowMe();
  • private 속성은 직접 접근할 수 없지만, ShowMe() 메서드를 통해 값을 가져올 수 있습니다.

this 키워드

  • this 키워드는 현재 객체를 가리킬 때 사용됩니다.
<?php
class Animal
{
  private $name;

  public function setName($name)
  {
    $this->name = $name;
  }

  public function getName()
  {
    return "<h1>이 귀여운 친구의 이름은 {$this->name} 입니다. 잘 부탁드려요~.</h1>";
  }
}

$cat = new Animal();
$cat->setName("server");

echo $cat->getName();

Class를 이용한 ID 중복 체크

  • 사용한 코드
<?php
class Member
{
  private $conn;

  public function __construct($db)
  {
    $this->conn = $db;
  }

  public function id_exists($id)
  {
    $sql = "SELECT * FROM member WHERE id=:id";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":id", $id);
    $stmt->execute();

    return $stmt->rowCount() ? true : false;
  }
}

위에 코드를 설명해보면

  • 공용으로 사용 할 Member Class를 하나 만들어 줍니다.
  • 생성자를 사용해서 conn 프로퍼티에 DB연결을 합니다.
  • id_exists 메소드를 사용하여 DB에 연결 된 member 테이블을 참조합니다.
    1 . SQL 쿼리문을 작성하여 member 테이블에서 id를 조회합니다.
    2 . SQL-Injection을 방지하기 위해 prepare-statement 구문을 사용합니다.
    3 . SQL 문장에서 ":id" 으로 처리된 부분을 파라미터로 바인드 합니다.
    4 . 구문이 실행된 후 rowCount 메소드가 현재 같은 아이디가 있으면 참을 아니면 거짓을 반환합니다.

결과

  • test.php 를 하나 만들어서 테스트를 진행 했습니다.
<?php

include "inc/dbconfig.php";
include "inc/member.php";

$id = "aa";

$mem = new Member($db);

if ($mem->id_exists($id)) {
  echo "<h1>아이디가 중복 되었습니다. 다른 아이디를 사용해 주세요.</h1>";
} else {
  echo "<h1>사용 가능한 아이디 입니다.</h1>";
}

현재 DB 상황

ID = aa

ID = test

마무리

다음 시간에는 ID, Email 중복 체크와 PW 일치확인을 해보겠습니다.

긴 글 봐주셔서 감사합니다.

profile
이해하고 분석하고 지배한다

0개의 댓글