다음은 모델(Module)을 호출하는 함수입니다. 이 함수의 기본 기능은 모델 이름(클래스로 추상화됨)을 지정하고 모델 디렉터리에서 이 클래스의 스크립트를 검색하여 인스턴스화 후 반환하는 것입니다. 이 접근 방식의 한 가지 장점은 로드 및 인스턴스화가 자동으로 수행되어 유연성이 극대화된다는 것입니다. 아래 코드를 보세요. 길지도 복잡하지도 않습니다.
function &load_class($class_name, $param = null, $instantiate = true)
{
static $objects = array();
$class_name = ucfirst(strtolower($class_name));
if (isset($objects[$class_name])) {
return $objects[$class_name]
}
$ class_file = DIR_MODELS . "/{$class_name}.inc.php";
if (file_exists($class_file)) {
require_once $class_file
if (!class_exists($class_name)) > false 반환
} else { } else {
if ($instantiate) {
$objects[$class_name] = null
return null; $class_ name, $ param 및 $instaniate라는 세 개의 매개변수만 있습니다. 여기서 $param은 생성자의 매개변수이고 $instaniate는 선택사항입니다. 함수의 $objects 배열은 정적 변수입니다. 즉, 이 함수가 호출될 때 배열이 해제되지 않습니다. 이 배열의 데이터는 다음에 이 함수가 호출될 때 저장됩니다. 이것의 장점은 대부분의 클래스를 인스턴스화한 후 반복적으로 호출해야 하는 경우 이 클래스의 인스턴스를 직접 반환할 수 있으므로 반복 호출을 피하고 성능이 향상된다는 것입니다. 코드는 다음과 같습니다.
static $objects = array();
if (isset($objects[$class_name])) {
return $objects[$class_name]
}기타 계속 코드는 이 클래스 이름의 파일이 있는지 확인합니다. 그렇다면 이 파일을 로드하고 지정된 이름의 클래스를 찾으면 인스턴스화됩니다. 이를 위해서는 스크립트의 클래스 이름이 스크립트의 파일 이름과 일치해야 합니다. 이는 향후 코드 관리에도 도움이 될 것이라고 생각합니다.
이 때 $instaniate 매개변수가 작동합니다. 이 매개변수는 함수가 파일 이름을 반복적으로 검색하고 로드하는 것을 방지하기 위해 $objects 아래에 표시 비트(null)를 만들도록 지시합니다. 수색.
$class_file = DIR_MODELS . "/{$class_name}.inc.php"
if (file_exists($class_file)) {
require_once $class_file
if (!class_exists($class_name) ) {
false 반환 🎜> }
🎜>$objects[$class_name ] =& new $class_name($param); 여러 번 생각해 볼 수 있습니다. $class_name은 함수의 문자열 변수입니다. new 키워드는 지정된 문자열(존재하는 경우)의 클래스를 동적으로 인스턴스화할 수 있습니다.이 호출 방법에 대한 자세한 내용은 PHP 매뉴얼과 여기를 참조하세요.
이 함수의 단점은 서로 다른 클래스의 생성자에 서로 다른 개수의 매개변수를 전달하는 것을 고려하는 방법입니다. 아마도 call_user_func_array와 같은 함수를 사용하여 구현할 수 있지만 이 접근 방식은 매우 비정상적입니다. 여기에는 몇 가지 생각이 필요합니다. 실제로 file_exists와 같은 파일의 존재 여부에 대한 테스트는 __autoload 함수에 넘겨질 수 있습니다. 하지만, interface_exists와 같은 다른 함수도 __autolaod 함수를 호출하므로 호환성상의 이유로 함수 내에서는 간단한 테스트만 수행됩니다. .
PHP5는 PHP4보다 객체 지향적입니다. 이제 우리의 코딩 사고방식을 업데이트할 때라고 생각합니다. 여기에는 PHP5 클래스와 객체에 대한 매우 훌륭한 튜토리얼이 있습니다.
위 내용은 인스턴스 내용을 포함하여 인스턴스 PHP 인스턴스화 클래스의 일부를 발췌한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.