클래스 내에서 전역 변수에 액세스하는 어려움은 객체 지향에서 흔히 직면하는 문제입니다. 프로그램 작성. 이 문서에서는 특히 PHP의 문제를 다루며 "비객체에서 멤버 함수 쿼리() 호출" 오류에 대한 대체 솔루션을 제공합니다.
제공된 코드 조각에서 , pagi 클래스의 get_records() 메서드 내 $db 변수에 대해 query() 메서드를 호출하려고 시도하면 치명적인 오류가 발생합니다. 근본 원인은 클래스와 전역 $db 객체 사이에 확립된 연결이 부족하기 때문입니다.
1. 종속성 주입
종속성 주입은 필수 객체를 클래스에 매개변수로 전달하는 디자인 패턴입니다. 이 경우 데이터베이스 연결 개체(예: $db)가 pagi 클래스의 생성자에 주입됩니다. 이 방법을 사용하면 클래스가 전역 범위에 의존하지 않고 전역 변수에 액세스할 수 있습니다.
2. 메소드 매개변수 주입
또는 데이터베이스 연결 객체를 get_records() 메소드 자체에 매개변수로 전달할 수도 있습니다. 이 방법이 반드시 캡슐화를 향상시키는 것은 아니지만 종속성 관리에 더 큰 유연성을 제공합니다.
1. 느슨한 결합:
종속성 주입은 클래스 간의 느슨한 결합을 촉진하여 필요에 따라 종속성을 더 쉽게 교체할 수 있도록 해줍니다. 이 시나리오에서는 pagi 클래스의 코드를 수정하지 않고 다른 데이터베이스 연결로 전환하는 것이 간단합니다.
2. 단위 테스트:
매개변수를 통해 종속성을 전달함으로써 단위 테스트를 보다 효율적으로 수행할 수 있습니다. 여러 클래스를 동시에 테스트하는 대신 특정 유닛(이 경우 pagi 클래스)만 테스트합니다.
종속성 주입과 메서드 매개변수 주입 모두 전역 변수에 액세스하기 위한 실행 가능한 솔루션을 제공합니다. 수업 내에서. 두 가지 접근 방식 중 하나를 선택하는 것은 애플리케이션의 특정 설계 요구 사항에 따라 달라집니다. 궁극적으로 두 방법 모두 필요한 외부 리소스에 대한 액세스를 제공하면서 캡슐화를 유지하는 것을 목표로 합니다.
위 내용은 오류 없이 PHP 클래스 내의 전역 변수에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!