"잡히지 않은 오류: 정의되지 않은 메소드 데이터베이스 호출"이라는 오류 메시지 ::prepare()"는 별도의 클래스에서 PDO 연결을 사용하려고 시도할 때 발생할 수 있습니다. 이 오류는 객체 지향 프로그래밍(OOP)이 객체를 상호 연결하는 방식에 대한 오해에서 발생합니다.
1. 데이터베이스 클래스를 다시 생각해보세요:
기존 데이터베이스 클래스는 의미 있는 목적을 제공하지 않습니다. 대신 PDO의 기능을 확장하는 경우 래퍼 클래스를 만드는 데 집중하세요.
2. 중앙 데이터베이스 연결 설정:
PDO 또는 향상된 데이터베이스 클래스를 사용하여 독립형 $db 개체를 인스턴스화합니다. 이 단일 연결은 향후 모든 데이터베이스 활동의 초석이 될 것입니다.
3. 연결을 생성자 매개변수로 전달:
데이터베이스 액세스가 필요한 모든 클래스는 $db 연결을 생성자 인수로 받아야 합니다. 이 접근 방식은 전체 애플리케이션에서 데이터베이스에 대한 원활한 액세스를 보장합니다.
다음 개선 사항을 고려하세요. 코드베이스:
database.php:
$host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new \PDO($dsn, $user, $pass, $opt);
u ser.php:
class User { /* Properties */ private $conn; /* Get database access */ public function __construct(\PDO $pdo) { $this->conn = $pdo; } /* List all users */ public function getUsers() { return $this->conn->query("SELECT username, usermail FROM user")->fetchAll(); } }
app.php:
include 'database.php'; $user = new User($pdo); $list = $user->getUsers(); foreach($list as $test) { echo $test["username"],"\n"; }
이것 세련된 코드베이스는 여러 클래스에서 PDO 연결의 올바른 사용법을 예시하여 오류 없는 작동과 우아한 코딩 관행을 보장합니다.
위 내용은 PHP의 여러 클래스에서 PDO 연결을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!