> 백엔드 개발 > PHP 튜토리얼 > 강력하지만 거의 사용되지 않는 PHP 함수

강력하지만 거의 사용되지 않는 PHP 함수

*文
풀어 주다: 2023-03-18 22:36:01
원래의
1077명이 탐색했습니다.

이 글에서는 PHP에서 강력하지만 거의 사용되지 않는 기능을 주로 소개하고, 함수 호출, 등록, 호출, 판단 및 기타 조작 기술을 포함하여 PHP에서 매우 실용적인 여러 기능을 예제 형식으로 요약하고 분석합니다. 도움이 필요한 친구들이 참고하면 좋을 것 같아요.

자세한 내용은 다음과 같습니다.

call_user_func_array — 배열 형식의 매개변수를 사용하여 함수 호출
call_user_func — 기존 함수 호출
create_function — 함수 생성
func_get_arg — 함수에서 매개변수 값 가져오기
func_get_args — 함수 가져오기 모든 매개변수가 배열로 결합됩니다.
func_num_args — 함수의 매개변수 개수 가져오기
function_exists — 함수 존재 여부 확인
get_define_functions — 기존 함수 정보 가져오기
register_shutdown_function — 페이지 이후에 실행될 함수 등록 로드됨
register_tick_function — 요청 시 호출된 함수 등록
unregister_tick_function — 요청 시 호출된 함수 취소

get_define_functions는 모든 PHP 함수와 사용자 정의 함수를 가져올 수 있습니다.

<?php
function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)
?>
로그인 후 복사

function_exists 함수는 함수가 존재하는지 확인합니다(PHP 함수일 수 있음) 또는 사용자 정의 기능).

<?php
if (function_exists(&#39;a&#39;)) {
  echo "yes";
} else {
  echo "no";
}
function a(){}
// 显示 yes
?>
로그인 후 복사

call_user_func 함수는 함수를 호출하는 특별한 방법과 유사합니다. 사용 방법은 다음과 같습니다.

<?php
function a($b,$c)
{
  echo $b;
  echo $c;
}
call_user_func(&#39;a&#39;, "111","222");
call_user_func(&#39;a&#39;, "333","444");
//显示 111 222 333 444
?>
로그인 후 복사

클래스 내부에서 메서드를 호출하는 것이 이상합니다. 실제로는 배열을 사용합니다. 물론 개발자의 생각은 생략되었습니다. new도 새로운 아이디어로 가득 차 있습니다.

<?php
class a {
  function b($c)
  {
    echo $c;
  }
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
로그인 후 복사

call_user_func_array 함수는 call_user_func의 구조를 만들기 위해 매개변수가 다른 방식으로 전달된다는 점을 제외하면 call_user_func와 매우 유사합니다. 매개변수 명확화:

<?php
function a($b, $c)
{
  echo $b;
  echo $c;
}
call_user_func_array(&#39;a&#39;, array("111", "222"));
//显示 111 222
?>
로그인 후 복사

call_user_func 함수와 call_user_func_array 함수 모두 참조를 지원하므로 일반 함수 호출과 기능적으로 더 일관성이 있습니다.

<?php
function a(&$b)
{
  $b++;
}
$c = 0;
call_user_func(&#39;a&#39;, &$c);
echo $c;//显示 1
call_user_func_array(&#39;a&#39;, array(&$c));
echo $c;//显示 2
?>
로그인 후 복사

func_num_args 함수는 함수에서 수신한 매개변수 수를 가져올 수 있습니다.

<?php
function a()
{
  echo func_num_args();
}
a(111, 222, 333);
//显示 3
?>
로그인 후 복사

func_get_arg 함수는 다음을 수행할 수 있습니다. 다음 예에서는 함수에서 어떤 매개변수가 허용되는지 지정하지 않습니다. func_get_arg를 사용하여 추가 매개변수를 얻을 수도 있습니다.

<?php
function a()
{
   echo func_get_arg(1);
}
a (111, 222, 333);
//显示 222
?>
로그인 후 복사

func_get_args 함수는 func_get_arg와 매우 유사합니다. 모든 매개변수를 배열로 호출합니다.

<?php
function a()
{
  $numargs = func_num_args();
  $b = func_get_args();
  for ($i = 0; $i < $numargs; $i++) {
    echo $b[$i];
  }
}
a(111, 222, 333);
//显示 111 222 333
?>
로그인 후 복사

create_function 함수를 생성할 수 있습니다. 익명 함수(기본적으로 PHP에서 함수 이름은lambda_1,lambda_2)처럼 보이지만 두 번째 문이 이상하다는 점에 유의하세요. 매개변수는 ";"로 구분되어야 합니다.

<?php
$newfunc = create_function(&#39;$a,$b&#39;, &#39;return $a + $b;&#39;);
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5
?>
로그인 후 복사

register_shutdown_function 함수는 페이지가 로드된 후 실행되는 함수를 등록할 수 있습니다(함수는 캐싱과 약간 비슷합니다). call_user_func 함수:

<?php
function a() {
  echo 222 ;
}
echo 111;
register_shutdown_function(&#39;a&#39;);
//显示 111 222
?>
로그인 후 복사
<?php
class a
{
  function b ($c)
  {
   echo $c;
  }
}
register_shutdown_function (array (&#39;a&#39;, &#39;b&#39;), &#39;111&#39;);
//显示 111
?>
로그인 후 복사

register_tick_function 및 unregister_tick_function은 선언 프로세스 제어 메커니즘과 결합되어야 합니다. 그런 다음 먼저 선언 및 틱을 이해하겠습니다.

declare (directive){
statement
}
로그인 후 복사

Tick은 인터프리터가 선언 코드에서 N 개의 하위 수준 문을 실행할 때마다 발생하는 이벤트입니다. 분절. N 값은 선언의 지시문 부분에서 Ticks=N으로 지정됩니다. 각 틱에서 발생하는 이벤트는 Register_tick_function()에 의해 지정됩니다. 예는 다음과 같습니다.

<?
function foo($str) {
static $i = 0;
print "$str: $i<br>";
$i++;
}
register_tick_function("foo", "count");
declare (ticks = 6) {
for($i=0; $i<20; $i++) {
echo "$i<br>";
}
}
?>
로그인 후 복사

이 예의 선언(ticks = N){statement} 프로세스 제어에서는 6줄의 코드(ticks = 6)가 실행될 때마다 foo() 함수가 한 번 실행되어야 합니다. 틱 값을 변경하면 다른 실행 결과를 얻을 수 있습니다.

관련 추천 :

PHP 함수 구문 소개 1_PHP Tutorial

PHP 함수 실행 효율성의 소소한 비교_PHP Tutorial

php 함수 사용 방법과 함수 정의 방법_ PHP Tutorial

위 내용은 강력하지만 거의 사용되지 않는 PHP 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿