이 글에서는 주로 PHP SPL 표준 라이브러리에서 사용되는 함수인 spl_autoload_extensions(), spl_autoload_register(), spl_autoload() 세 가지 함수를 중점적으로 소개합니다. 필요한 친구들이 참고할 수 있습니다.
PHP SPL에서 제공됩니다. 표준 라이브러리 자동 로딩, 반복자 처리 등의 처리를 위해 일부 기능을 제공합니다.
spl_autoload_extensions()는 spl_autoload()로 로드할 수 있는 파일 확장자를 추가합니다.
spl_autoload_register()는 SPL __autoload 함수 스택에 함수를 등록합니다.
코드는 다음과 같습니다.
/*test1.php*/ <?php class Test1 { } /*test2.lib.php*/ <?php class Test2 { } /*test.php*/ <?php //设置可加载类的文件扩展名 spl_autoload_extensions(".php,.inc.php,.class.php,.lib.php"); //设置include_path,autoload会在这些path中去寻找类文件,可通过PATH_SEPARATOR添加多个path set_include_path(get_include_path().PATH_SEPARATOR.'libs/'); //不提供参数,默认实现函数是spl_autoload() spl_autoload_register(); $test1 = new Test1(); $test2 = new Test2(); spl_autoload()它是__autoload()的默认实现,它会去include_path中加载文件(.php/.inc)
코드는 다음과 같습니다.
/*test1.php*/ <?php class Test1 { } /*test.php*/ <?php set_include_path(get_include_path().PATH_SEPARATOR.'libs/'); spl_autoload('test1'); $test1 = new Test1(); spl_autoload_call()调用所有spl_autoload_register注册函数来加载文件
코드는 다음과 같습니다.
/*test1.php*/ <?php class Test { public function getFilename() { echo 'test1.php'; } } /*test2.lib.php*/ <?php class Test { public function getFilename() { echo 'test2.lib.php'; } } /*test.php*/ <?php function loader($classname) { if($classname == 'Test1') { require __DIR__ . '/test1.php'; } if($classname == 'Test2') { require __DIR__ . '/test2.lib.php'; } } spl_autoload_register('loader'); spl_autoload_call('Test2'); $test = new Test(); $test->getFilename(); //test2.lib.php
기타 SPL 함수 소개:
class_implements - 지정된 클래스가 구현한 모든 인터페이스를 반환합니다.
class_parents — 지정된 클래스의 부모를 반환합니다.
class_uses — 주어진 클래스에서 사용하는 특성을 반환합니다.
iterator_apply — 반복자의 각 요소에 대해 사용자 정의 함수를 호출합니다.
iterator_count — 반복자의 요소 수를 계산합니다.
iterator_to_array — 반복자의 요소를 배열에 복사합니다.
spl_autoload_functions — 등록된 모든 __autoload() 함수 반환
spl_autoload_unregister — 등록된 __autoload() 함수 등록 취소
spl_classes — 사용 가능한 모든 SPL 클래스 반환
spl_object_hash — 지정된 개체의 해시 ID 반환
반복자 관련 함수처럼 사용:
코드는 다음과 같습니다.
$iterator = new ArrayIterator (array( 'recipe' => 'pancakes' , 'egg' , 'milk' , 'flour' )); print_r(iterator_to_array($iterator)); //将迭代器元素转化为数组 echo iterator_count($iterator); //计算迭代器元素的个数 print_r(iterator_apply($iterator, 'print_item', array($iterator)));//为迭代器每个元素调用自定义函数 function print_item(Iterator $iterator) { echo strtoupper ( $iterator -> current ()) . "\n" ; return TRUE ; }
요약: 위 내용은 이 글의 전체 내용이며, 모든 분들의 공부에 도움이 되길 바랍니다.
관련 권장 사항:
PHP를 사용하여 데이터베이스를 작동하여 테이블이 존재하는지 확인하는 방법
PHP 사용 방법 MySQL 데이터베이스 및 세션 대화를 운영하기 위해
위 내용은 PHP SPL 표준 라이브러리에서 일반적으로 사용되는 세 가지 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!