클래스 내에서 전역 변수 사용
페이지 매김 기능을 생성하려면 클래스 내에서 데이터베이스 개체에 액세스해야 합니다. 그러나 클래스 내부의 외부 변수에 액세스하려고 하면 오류가 발생할 수 있습니다. 이 문제를 처리할 수 있는 가능한 솔루션을 살펴보겠습니다.
"객체가 아닌 멤버 함수 query() 호출"이라는 치명적인 오류를 해결하려면 클래스 내에서 데이터베이스 객체에 액세스할 수 있어야 합니다. 전역 변수를 사용하는 대신 데이터베이스 개체를 클래스나 해당 메서드에 주입하는 것이 더 적절한 접근 방식입니다.
종속성 주입
한 가지 방법은 데이터베이스를 주입하는 것입니다. 아래와 같이 클래스 생성자에 개체를 추가합니다.
include_once("pagi.php"); $db = new DB_MySQL("localhost", "root", "", "test"); // connect to the database $pagination = new Paginator($db); $records = $pagination->get_records("SELECT * FROM `table`"); class Paginator { protected $db; public function __construct(DB_MySQL $db) { $this->db = $db; } public function get_records($q) { $x = $this->db->query($q); return $this->db->fetch($x); } }
이렇게 하면 페이지 매김 클래스가 데이터베이스 개체에 액세스할 수 있습니다.
메서드 삽입
또 다른 옵션은 데이터베이스 개체를 필요한 특정 메서드에 삽입하는 것입니다.
$pagination = new Paginator(); $records = $pagination->get_records("SELECT * FROM `table`", $db); class Paginator { public function get_records($q, DB_MySQL $db) { $x = $db->query($q); return $db->fetch($x); } }
이는 더 많은 것을 제공합니다. 여러 방법에 다양한 데이터베이스 요구 사항이 있을 때 유연성을 발휘합니다.
종속성의 이점 주입
전역 변수를 사용하는 것과 비교하여 종속성 주입은 다음과 같은 몇 가지 장점을 제공합니다.
위 내용은 클래스 내에서 데이터베이스 개체에 액세스할 때 전역 변수를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!