CakePHP는 웹 애플리케이션을 빠르게 개발하는 데 필요한 기본 기능과 구조를 제공하는 인기 있는 PHP 개발 프레임워크입니다. 최신 애플리케이션에서는 마스터-슬레이브 데이터베이스 연결을 설정하거나 데이터를 다른 데이터베이스로 분할하는 등 여러 데이터베이스 연결을 사용하는 것이 일반적인 요구 사항이 되었습니다. 이 기사에서는 CakePHP에서 다중 데이터베이스 연결을 사용하는 방법을 소개합니다.
CakePHP의 기본 데이터베이스 연결
시작하기 전에 먼저 CakePHP의 기본 데이터베이스 연결을 이해하겠습니다. CakePHP는 구성 파일을 사용하여 일반적으로 config/app.php 파일에 저장되는 데이터베이스 연결 정보를 관리합니다. 이 파일에는 배열의 기본 하위 키에 데이터베이스 연결 구성 정보를 설정할 수 있는 구성 배열이 포함되어 있습니다.
기본적으로 CakePHP는 MySQL을 기본 데이터베이스 연결로 사용합니다. 다음은 샘플 코드입니다.
'Datasources' => [ 'default' => [ 'className' => 'CakeDatabaseConnection', 'driver' => 'CakeDatabaseDriverMysql', 'persistent' => false, 'host' => 'localhost', 'username' => 'myuser', 'password' => 'mypass', 'database' => 'mydb', 'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'cacheMetadata' => true, 'quoteIdentifiers' => false, 'log' => false, ], ],
위 구성 정보에서 데이터베이스 연결의 클래스 이름, 드라이버 유형, 사용자 이름 및 비밀번호 등과 같은 여러 가지 일반 항목을 볼 수 있습니다.
여러 데이터베이스 연결 사용
여러 데이터베이스 연결을 사용하려면 위의 기본 하위 키를 복사하여 새 데이터베이스 연결을 만들 수 있습니다. 예를 들어, 다음 코드는 보조라는 이름의 새 연결을 만듭니다.
'Datasources' => [ 'default' => [ 'className' => 'CakeDatabaseConnection', 'driver' => 'CakeDatabaseDriverMysql', '... ], 'secondary' => [ 'className' => 'CakeDatabaseConnection', 'driver' => 'CakeDatabaseDriverPostgres', 'persistent' => false, 'host' => 'localhost', 'username' => 'myuser', 'password' => 'mypass', 'database' => 'mydb2', 'encoding' => 'utf8', 'timezone' => 'UTC', 'cacheMetadata' => true, 'quoteIdentifiers' => false, 'log' => false, ], ],
위 코드에서는 다양한 클래스 이름, 드라이버 유형, 사용자 이름 및 비밀번호 등을 포함한 새 연결 구성 항목을 볼 수 있습니다. 예를 들어 사용자 이름 및 비밀번호와 같은 민감한 정보의 경우 Crypt 클래스의 encrypt() 및 decrypt() 함수를 사용하여 암호화하고 해독해야 합니다.
다른 연결 사용
이제 여러 데이터베이스 연결을 설정했으므로 다음 단계는 이를 애플리케이션에서 사용하는 것입니다. CakePHP에서는 ConnectionManager 클래스를 사용하여 다양한 연결에 액세스할 수 있습니다. 다음은 샘플 코드입니다.
// 使用默认连接 $users = TableRegistry::get('Users'); // 使用secondary连接 $secondaryConn = ConnectionManager::get('secondary'); $secondaryUsers = TableRegistry::get('Users', [ 'connection' => $secondaryConn ]);
위 코드에서 ConnectionManager 클래스를 사용하여 다양한 연결을 얻는 방법을 확인할 수 있습니다. 연결이 이루어지면 TableRegistry 클래스를 사용하여 연결과 관련된 데이터 테이블 개체를 가져올 수 있습니다. 기본 연결의 경우 연결 옵션을 전달하지 않음을 생략할 수 있습니다.
연결 사용 확장
연결 사용 시 애플리케이션의 요구 사항에 맞게 추가로 확장할 수 있습니다. 예를 들어, 연결을 더 잘 처리할 수 있도록 CakePHP의 데이터베이스 연결 클래스를 상속하여 사용자 정의 연결 클래스를 만들 수 있습니다. 다음은 샘플 코드입니다.
class CustomMySqlConnection extends MySqlConnection { public function __construct($config) { parent::__construct($config); $this->_isCustom = true; } public function customFunction() { return "Hello from CustomMySqlConnection!"; } } // 使用CustomMySqlConnection来创建连接 'custom' => [ 'className' => 'CustomMySqlConnection', 'driver' => 'CakeDatabaseDriverMysql', '... ], // 获取custom连接并调用自定义函数 $customConn = ConnectionManager::get('custom'); $customConn->customFunction();
위 코드에서는 CakePHP의 기본 MySqlConnection 클래스를 확장하기 위해 CustomMySqlConnection이라는 클래스를 만들었습니다. 이 클래스는 사용자 정의 함수를 추가하고 _isCustom 변수를 true로 설정하여 애플리케이션의 원래 연결과 구별할 수 있도록 합니다.
결론
위 방법을 사용하면 CakePHP에서 여러 데이터베이스 연결을 쉽게 설정하고 사용할 수 있어 복잡한 애플리케이션 요구 사항을 지원할 수 있습니다. 이러한 연결은 매우 유사해 보이지만 ConnectionManager 및 TableRegistry 클래스를 사용하여 연결을 얻고 조작하면 애플리케이션에서 이를 사용하고 관리할 수 있는 유연성이 제공됩니다.
위 내용은 CakePHP에서 다중 데이터베이스 연결을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!