함수가 호출될 때만 함수의 코드 문이 실행되며, 그 목적은 일부 특정 작업을 완료하는 것입니다. 함수가 실행된 후에는 함수가 호출된 위치로 제어가 돌아가고, 함수는 반환값의 형태로 프로그램에 정보를 반환할 수 있습니다. 프로그램의 함수를 사용하면 구조화된 프로그래밍을 수행할 수 있습니다. 구조적 프로그래밍에서는 각 작업이 독립적인 프로그램 코드를 사용하여 하나씩 완료됩니다. 함수는 이 "독립적인 Cheng Xun 코드 세그먼트"를 공식적으로 구현하는 가장 이상적인 방법이므로 함수와 구조적 프로그래밍 간의 관계는 매우 가깝습니다. 구조적 프로그래밍은 그 자체의 고유한 이유로 우수하며, 주로 다음 두 가지 중요한 이유:
1. 구조적 프로그래밍 복잡한 프로그래밍 문제가 여러 개로 나누어져 있기 때문에 작성하기가 더 쉽습니다. 더 작고 간단한 작업. 각 작업은 함수에 의해 수행되며 함수의 코드와 변수는 프로그램의 나머지 부분과 독립적입니다. 한 번에 하나의 간단한 작업을 처리하면 프로그래밍 속도가 빨라집니다.
2. 구조화된 프로그램은 디버그하기가 더 쉽습니다. 프로그램에 올바르게 실행되지 않는 일부 코드가 있는 경우 구조화된 설계를 통해 문제를 특정 기능과 같은 특정 단일 코드 조각으로 좁힐 수 있습니다. 이런 식으로 오류를 디버그하고 수정하는 것이 더 편리합니다. 위에서 아래로, 왼쪽에서 오른쪽으로 단계적으로 진행하면 됩니다.
구조적 프로그래밍의 가장 큰 장점은 시간을 절약할 수 있다는 것입니다. 특정 작업을 수행하는 한 프로그램에 함수를 작성하면 동일한 작업을 수행해야 하는 다른 프로그램에서 해당 함수를 사용할 수 있습니다. 프로그램이 약간 다른 작업을 요구하더라도 기존 함수를 다시 작성하는 것보다 수정하는 것이 더 쉽습니다. 생각해 보세요. echo() 및 var_dump()를 자주 사용합니다. 비록 먼저 프로그램의 기능을 확인해야 하고 몇 가지 계획을 세워야 하며, 계획에는 프로그램이 수행할 모든 특정 작업을 나열해야 합니다. 그런 다음 함수를 사용하여 각 특정 작업을 작성하고 메인 프로그램에서 실행 순서대로 각 작업 함수를 호출하여 완전한 구조의 프로그램을 구성합니다. 아래 그림에는 세 가지 기능이 포함된 프로그램이 나와 있습니다. 각 기능은 특정 작업을 수행하며 기본 프로그램에서 한 번 또는 여러 번 호출될 수 있습니다. 함수가 호출될 때마다 제어권이 해당 함수로 전달됩니다. 함수가 실행되면 아래 그림과 같이
함수가 호출된 위치로 제어가 돌아갑니다.
php는 일반적인 동적 언어를 구현합니다. 실행 프로세스: 코드 조각을 얻은 후 어휘 분석, 구문 분석 및 기타 단계를 거쳐 소스 프로그램이 명령(opcode)으로 변환되고 ZEND 가상 머신이 이러한 명령을 순서대로 실행하여 작업을 완료합니다. Php 자체는 C로 구현되어 있으므로 최종적으로 호출되는 함수는 모두 C 함수입니다. 사실 PHP는 C로 개발된 소프트웨어라고 볼 수 있습니다. 위의 설명에서 PHP의 함수 실행은 호출을 위한 opcode로 변환된다는 것을 쉽게 알 수 있습니다.
각 함수에 대해 zend는 다음 데이터 구조로 설명됩니다.
typedef union _zend_function { zend_uchar type; /* MUST be the first element of this struct! */ struct { zend_uchar type; /* never used */ char *function_name; zend_class_entry *scope; zend_uint fn_flags; union _zend_function *prototype; zend_uint num_args; zend_uint required_num_args; zend_arg_info *arg_info; zend_bool pass_rest_by_reference; unsigned char return_reference; } common; zend_op_array op_array; zend_internal_function internal_function; } zend_function; typedef struct _zend_function_state { HashTable *function_symbol_table; zend_function *function; void *reserved[ZEND_MAX_RESERVED_RESOURCES]; } zend_function_state;
여기서 유형은 함수 유형(사용자 함수, 내장 함수, 오버로드된 함수)을 나타냅니다. 공통에는 함수 이름, 매개변수 정보, 함수 플래그(일반 함수, 정적 메서드, 추상 메서드) 등 함수의 기본 정보가 포함됩니다. 또한, 사용자 함수에 대해서는 내부 변수 등을 기록하는 함수 기호 테이블도 있는데 이에 대해서는 나중에 자세히 설명하겠습니다. Zend는 대규모 해시 테이블인 전역 function_table을 유지 관리합니다. 함수가 호출되면 먼저 함수 이름을 기반으로 테이블에서 해당 zend_function을 찾습니다. 함수를 호출할 때 가상 머신은 유형에 따라 호출 방법을 결정합니다. 함수 유형에 따라 실행 원칙이 다릅니다.
【관련 튜토리얼 추천】
1. "php.cn Dugu Jiujian (4) - PHP 비디오 튜토리얼 "
2. PHP 프로그래밍 입문부터 마스터링까지 전체 동영상 튜토리얼
위 내용은 PHP 사용자 정의 함수의 작동 방식 및 구조적 프로그래밍 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!