>  기사  >  백엔드 개발  >  PHP 7.0의 외부 클래스에서 MySQLi에 액세스하는 방법은 무엇입니까?

PHP 7.0의 외부 클래스에서 MySQLi에 액세스하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 08:21:30155검색

How to Access MySQLi from an External Class in PHP 7.0?

PHP의 외부 클래스에서 MySQLi에 액세스

문제:

PHP에서 업그레이드한 후 5.6~7.0에서는 MySQL과 MyAPI 클래스를 모두 활용하는 기존 설정에 문제가 발생했습니다. 특히 MyAPI 클래스에서 데이터베이스 연결에 액세스하면 500 내부 서버 오류가 발생합니다.

해결책:

이 오류를 일으키는 몇 가지 사례가 있습니다.

  1. 상속 방지: 데이터베이스 클래스에서 MyAPI를 확장하는 것은 중복되고 불필요합니다.
  2. 중복 데이터베이스 클래스 제거: Database 클래스는 실용적이지 않습니다. 이는 기본적으로 바닐라 mysqli 클래스를 통해 쉽게 달성할 수 있는 연결을 설정하기 때문입니다.
  3. 중앙 집중식 데이터베이스 인스턴스 생성: 데이터베이스 연결의 단일 글로벌 인스턴스를 설정하고 이를 전달합니다. 데이터베이스 액세스가 필요한 각 클래스에 연결합니다.

코드 구조:

세 개의 파일을 생성합니다:

  • database. php: 데이터베이스 연결 로직을 포함합니다.
  • myapi.php: 데이터베이스 연결에 대한 종속성 주입을 사용하여 MyAPI 클래스를 정의합니다.
  • app. php: 진입점 역할을 하며 MyAPI 클래스를 인스턴스화하여 데이터베이스 연결을 전달합니다.

database.php:

<code class="php"><?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');</code>

myapi.php:

<code class="php"><?php
class MyAPI
{
    protected $db;

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

    public function getUser($id)
    {
        // Define SQL query and subsequent operations to fetch user data.
    }
}</code>

app.php:

<code class="php"><?php
require 'database.php';
require 'myapi.php';

$api = new MyAPI($db);
$user = $api->getUser($_POST['id']);</code>

이러한 지침을 따르고 데이터베이스 문제를 클래스 기능과 분리함으로써 외부 클래스에서 MySQLi에 접근하는 문제를 효과적으로 해결할 수 있습니다.

위 내용은 PHP 7.0의 외부 클래스에서 MySQLi에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.