php에서 mysql 데이터베이스를 사용하는 경우 mysqli_result 의 fetch_object () 메소드는 매우 일반적인 작업입니다. 쿼리 결과를 객체 형식으로 변환 할 수 있으므로 객체 방식으로 데이터를 처리하는 것이 편리합니다. 일반적으로 fetch_object () 메소드는 표준 클래스 stdclass 객체를 반환하지만 사용자 정의 클래스 객체를 반환하도록 구성 할 수도 있습니다. 구체적으로, fetch_object () 메소드는 stdclass 또는 사용자 정의 클래스를 반환합니까? 그들 사이의 차이점은 무엇입니까? 이 두 가지 방법은 실제 개발에 어떻게 사용되어야합니까?
먼저 Fetch_object () 메소드의 기본 사용법을 살펴 보겠습니다. 기본적으로 fetch_object ()는 stdclass 객체를 반환합니다. STDClass 는 PHP의 빈 클래스로, 일반적으로 명시적인 유형이없는 객체로 사용됩니다. 간단한 예는 다음과 같습니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT id, name FROM users");
while ($obj = $result->fetch_object()) {
echo $obj->id . " - " . $obj->name . "<br>";
}
$mysqli->close();
?>
이 예에서는 fetch_object () 가 반환 한 각 데이터 행이 stdclass 객체로 변환되고 필드 이름은 stdclass 객체의 속성이됩니다.
기본적으로 stdclass를 반환하는 것 외에도 fetch_object ()는 사용자 정의 클래스 객체를 반환 할 수 있습니다. 이를 달성하려면 fetch_object ()를 호출 할 때만 사용자 정의 클래스의 이름 만 지정하면됩니다. 예를 들어, 사용자 라는 클래스가 있다고 가정하고 Fetch_object () 가 stdclass 객체 대신 사용자 클래스의 객체를 반환하기를 원합니다.
<?php
class User {
public $id;
public $name;
public function greet() {
return "Hello, " . $this->name;
}
}
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT id, name FROM users");
while ($obj = $result->fetch_object("User")) {
echo $obj->greet() . "<br>";
}
$mysqli->close();
?>
위의 예에서는 fetch_object ( "사용자")를 각 데이터 행을 사용자 클래스의 인스턴스로 변환하여 greet () 메소드가 포함 된 객체를 반환합니다. 이렇게하면 객체에서 직접 사용자 정의 동작과 논리를 사용할 수 있습니다.
STDClass 는 PHP의 내장 표준 클래스로, 일반적으로 객체를 동적으로 생성하는 데 사용됩니다. 사전 정의 된 속성이나 메소드가 없으며 fetch_object () 가 반환 한 데이터베이스 결과는 stdclass 의 속성으로 직접 액세스 할 수 있습니다.
커스텀 클래스는 자신을 정의하는 수업입니다. 그들은 일반적으로 비즈니스 논리를 캡슐화 할 수 있으며 객체 지향 설계의 원리와 더 일치하는 몇 가지 방법과 속성을 포함합니다. 사용자 정의 클래스 사용의 주요 장점 중 하나는 데이터뿐만 아니라 데이터베이스 쿼리 결과에 더 많은 동작과 방법을 추가 할 수 있다는 것입니다.
STDCLASS를 사용하는 것이 가장 쉽고 가장 직접적인 방법입니다. 특히 데이터베이스 쿼리에 의해 반환 된 데이터 구조가 비교적 간단하고 추가 로직 또는 메소드가 필요하지 않은 경우. stdClass를 사용하면 불필요한 클래스 정의를 피하고 코드 양을 줄일 수 있습니다.
데이터베이스 쿼리에서 반환 된 데이터가 더 복잡하거나 반환 된 데이터를 캡슐화하고 작동하려면 사용자 정의 클래스를 사용하여 더 적절합니다. 사용자 정의 클래스를 통해 클래스의 메소드를 정의하고 데이터 처리를 수행하며 인터페이스 및 상속을 구현하여 코드를보다 유연하고 유지 관리 할 수 있습니다.
URL과 관련된 코드를 작성할 때 URL의 도메인 이름을 M66.net 으로 바꾸어야한다고 가정하면 PHP의 문자열 교체 함수를 사용하여 구현할 수 있습니다.
<?php
$url = "https://www.example.com/path/to/resource";
$new_url = str_replace("www.example.com", "m66.net", $url);
echo $new_url; // 산출: https://m66.net/path/to/resource
?>
코드를 여러 번 교체 해야하는 경우 기능으로 래핑 할 수 있습니다.
<?php
function replace_domain($url) {
return str_replace("www.example.com", "m66.net", $url);
}
?>
그런 다음이 기능을 코드에서 호출하십시오.
php에서 mysqli_result 의 fetch_object () 메소드는 기본적으로 stdclass 객체를 반환하지만 클래스 이름을 지정하여 사용자 정의 클래스 객체를 반환 할 수도 있습니다. STDClass 는 추가 방법이없는 간단한 시나리오에 적합하지만 더 많은 비즈니스 로직이 필요할 때 사용자 정의 클래스는보다 복잡한 응용 프로그램에 적합합니다. 이 둘의 차이를 이해하고 실제 요구에 따라 적절한 방법을 선택함으로써 코드의 구조와 유지 가능성을 더 잘 최적화 할 수 있습니다.