PHP 개발에서 INT 기능은 일반적으로 일부 설정 또는 리소스를 초기화하는 데 사용되며 응용 프로그램 수명 동안 하나의 초기화 작업 만 수행 할 수 있습니다. 그러나 개발자는 종종 Init 기능을 사용할 때 반복 초기화 오류에 직면합니다. 이 기사는 이러한 일반적인 반복 초기화 오류를 효과적으로 피하는 방법을 살펴 봅니다.
반복 초기화 오류는 응용 프로그램에서 여러 번 초기화되는 리소스, 구성 또는 객체를 말합니다. 이 오류는 일반적으로 다음 상황에서 발생합니다.
init 함수는 여러 번 호출됩니다.
상태 플래그는 초기화되었는지 확인하는 데 사용되지 않습니다.
객체 또는 자원은 여러 곳에서 일관되지 않게 초기화됩니다.
반복 초기화는 시스템 자원을 낭비하고 성능 문제로 이어질 수 있으며 예상치 못한 오류를 유발할 수 있습니다. 그러므로 우리는 이것을 피해야합니다.
PHP에서 반복 초기화를 피하는 가장 일반적인 방법은 정적 변수를 사용하는 것입니다. 정적 변수의 값은 함수 호출간에 변경되지 않으므로 여러 호출이 이루어질 때 시작 함수가 한 번만 실행되도록합니다.
function init() {
static $initialized = false;
if ($initialized) {
// 초기화 된 경우,직접 돌아옵니다
return;
}
// 초기화 작업을 수행하십시오
echo "초기화 작업이 실행 중입니다...\n";
// 태그 초기화가 완료되었습니다
$initialized = true;
}
이 예에서 $ 초기화 변수는 init () 가 먼저 호출 될 때만 TRUE 로 설정되며 모든 후속 통화가 직접 반환되어 반복 초기화를 피합니다.
여러 기능 또는 클래스에서 초기화 상태를 공유 해야하는 경우 전체 변수를 사용하거나 구성 파일에서 초기화 상태를 유지할 수 있습니다.
// 초기화 상태가 글로벌 변수로 표시되어 있다고 가정합니다.
$GLOBALS['initialized'] = false;
function init() {
if ($GLOBALS['initialized']) {
return;
}
// 초기화 작업을 수행하십시오
echo "초기화 작업이 실행 중입니다...\n";
// 초기화 상태를 설정합니다
$GLOBALS['initialized'] = true;
}
이 접근법은 종종 복잡한 애플리케이션에 적합합니다. 특히 초기화에 여러 클래스 나 모듈이 포함될 때 전역 변수 또는 구성 파일을 사용하여 초기화 상태를 공유하는 경우 일반적인 연습입니다.
INT 기능이 네트워크 요청을 시작해야한다고 가정 하고이 요청을 한 번만 실행해야합니다. 다음은 CURL을 사용하여 요청을 시작하고 중복 요청을 피하는 방법을 보여주는 예입니다.
function init() {
static $initialized = false;
if ($initialized) {
return;
}
$url = 'https://gitbox.net/api/init'; // 교체 된 것을 사용하십시오 URL
// 요청하십시오
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
if ($response) {
echo "초기화 요청이 성공했습니다\n";
} else {
echo "초기화 요청이 실패했습니다\n";
}
// 초기화 된 것으로 표시됩니다
$initialized = true;
}
이 예에서 CURL 요청은 정적 변수 $ 를 통한 요청을 반복적으로 전송하지 않습니다. 요청은 초기화 중에 만 전송되며 후속 통화는이 부분을 건너 뜁니다.
싱글 톤 패턴을 사용하는 것은 객체 초기화와 관련하여 우아한 솔루션입니다. 싱글 톤 모드를 통해 응용 프로그램 라이프 사이클 내에 클래스 인스턴스가 하나만 있는지 확인할 수 있습니다.
class InitManager {
private static $instance = null;
// 민영화 생성자,외부 인스턴스화를 방지하십시오
private function __construct() {
// 초기화 작업
echo "초기화 작업이 실행 중입니다...\n";
}
// 인스턴스를 얻는 방법
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new InitManager();
}
return self::$instance;
}
}
$init = InitManager::getInstance();
싱글 톤 패턴은 Initmanager 클래스의 인스턴스가 한 번만 생성되도록합니다. 코드에서 getInstance ()를 몇 번이나 호출하더라도 동일한 인스턴스가 반환되어 중복 초기화 작업을 피합니다.
PHP에서 반복 초기화 오류를 피하십시오. 정적 변수, 글로벌 변수, URL 요청 및 싱글 톤 패턴을 사용할 수 있습니다. 불필요한 성능 손실 및 오류를 피하면서 초기화시 리소스를 효과적으로 관리 할 수 있도록 실제 요구에 따라 적절한 솔루션을 선택하십시오.