현재 위치: > 최신 기사 목록> pdostatement :: fetchObject에서 매개 변수의 구성과 사용을 이해하십시오

pdostatement :: fetchObject에서 매개 변수의 구성과 사용을 이해하십시오

gitbox 2025-05-11

pdostatement :: FetchObject는 데이터베이스 개발에 PHP의 PDO를 사용할 때 매우 실용적인 기능입니다. 쿼리 결과를 기존의 연관 배열 또는 인덱스 어레이 대신 객체에 직접 매핑 할 수 있습니다. 매개 변수 구성 및 실제 애플리케이션을 이해하면 코드가 명확하고 객체 지향적이며 유지 보수를 향상시킬 수 있습니다.

이 기사는 심층적으로 설명합니다.

  • FetchObject 의 역할

  • 매개 변수에 대한 자세한 설명

  • 일반적인 사용 시나리오 및 예방 조치

  • 샘플 코드 데모

1. pdostatement의 역할 :: fetchObject

일반적으로 SQL 쿼리를 실행 한 후 Fetch 메소드를 사용하여 배열, 연관 배열, 객체 등이 될 수있는 결과 행을 얻을 수 있습니다. FetchObject는 쿼리 결과를 지정된 클래스 인스턴스 로 직접 캡슐화합니다.

요컨대, 강성 데이터 대신 데이터베이스에서 직접 "살아있는 개체"를 가져올 수 있습니다.

2. 매개 변수에 대한 자세한 설명

FetchObject 의 기본 서명은 다음과 같습니다.

 public PDOStatement::fetchObject(?string $class = "stdClass", array $constructorArgs = []): object|false

매개 변수 설명 :

매개 변수 설명
$ 클래스 선택적으로 클래스 이름을 인스턴스화하도록 지정하십시오. 기본값은 stdClass 입니다. 자신의 모델 클래스가있는 경우 여기에서 지정할 수 있습니다.
$ constructorargs선택적 , 생성자 매개 변수 배열. 클래스를 인스턴스화 할 때 매개 변수를 전달하는 데 사용됩니다.

반품 값 :

  • 성공하면 물체를 반환합니다.

  • 실패시 False를 반환합니다.

3. 실제 응용 시나리오

1. 객체로 빠르게 변환 (기본 stdClass)

클래스 이름을 지정하지 않고 가장 간단한 사용량 :

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject();

echo $user->name;  // 출력 사용자 이름
?>

현재 $ userstdclass 객체이며 속성은 데이터베이스 필드에 해당합니다.

2. 사용자 정의 클래스에지도

사용자 수업이 있다고 가정합니다.

 <?php
class User {
    public $id;
    public $name;
    public $email;

    public function greet() {
        return "Hello, {$this->name}!";
    }
}
?>

FetchObject를 사용하여 데이터베이스 행을 사용자 클래스 객체로 전환하십시오.

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject(User::class);

echo $user->greet();  // 산출 "Hello, xxx!"
?>

이것은 데이터를 얻을뿐만 아니라 객체 지향 디자인과 더 일치하는 객체 메소드를 직접 호출 할 수 있습니다.

3. 생성자 매개 변수가있는 경우

클래스가 생성자가 있고 매개 변수를 전달 해야하는 경우 다음과 같이 사용할 수 있습니다.

 <?php
class UserWithConstructor {
    public $id;
    public $name;
    public $email;

    public function __construct($prefix) {
        $this->name = $prefix . $this->name;
    }
}
?>

호출 할 때 생성자 매개 변수를 전달합니다.

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject(UserWithConstructor::class, ['Mr. ']);

echo $user->name;  // 산출 "Mr. xxx"
?>

? 주목해야 할 것

  • 데이터베이스가 검색 한 필드는 객체에 할당 된 다음 생성자가 호출됩니다. 이는 생성자에 액세스 한 속성이 데이터베이스에서 지정된 값임을 의미합니다.

  • 클래스의 필드 이름과 속성이 일치하지 않으면 추가 처리가 필요하거나 사용자 정의 메소드가 수동으로 바인딩하는 데 사용됩니다.

4. 실제 사례 : API는 사용자 정보 객체를 반환합니다

지정된 ID로 사용자 객체를 반환하는 API를 만들려고한다고 가정하십시오. 샘플 코드는 다음과 같습니다.

 <?php
// 매개 변수를 얻으십시오
$id = $_GET['id'] ?? 1;

$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->prepare('SELECT id, name, email FROM users WHERE id = :id');
$stmt->execute(['id' => $id]);
$user = $stmt->fetchObject(User::class);

if ($user) {
    header('Content-Type: application/json');
    echo json_encode($user);
} else {
    header("Location: https://gitbox.net/error/user-not-found");
}
?>

사용자가 발견되면 API는 JSON 객체를 반환합니다. 찾을 수없는 경우 gitbox.net 의 오류 페이지로 이동합니다.

5. 요약

  • FetchObject 는 특히 MVC 패턴과 결합 될 때 객체 지향 개발 에 적합합니다.

  • $ class$ constructorargs를 사용하는 데 능숙하면 필기 할당 코드를 줄이고 개발 효율성을 향상시키는 데 도움이 될 수 있습니다.

  • 그러나 참고 : 클래스 속성 및 데이터베이스 필드가 일치하지 않으면주의하십시오.