PHP Extension은 PHP 언어의 기본 기능을 향상시키기 위해 C 언어를 사용하여 개발 된 동적 라이브러리입니다. 사용자 정의 확장을 통해 개발자는 PHP에 새로운 기능, 클래스 및 데이터 구조를 추가하여 성능 및 기능의 돌파구를 달성 할 수 있습니다. 이전 버전과 비교하여 PHP7은 확장 아키텍처 측면에서 많은 최적화를 만들었으며 성능이 크게 향상되고 표준화 된 구문이있었습니다.
PHP7 확장을 개발할 때 매개 변수의 전달은 주로 값과 참조를 전달하는 두 가지 방법을 포함하는 핵심 링크 중 하나입니다. 이 두 매개 변수 전송 메커니즘의 구현은 아래의 특정 예제에 의해 설명 될 것이다.
값 전송 방법은 함수 내에서 매개 변수 값의 수정이 원래 변수에 영향을 미치지 않음을 의미합니다. 매개 변수 값 만 읽는 시나리오에 적합합니다.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// 매개 변수 값을 수정하십시오
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
위의 코드에서 전달 된 정수 매개 변수는 zend_parse_parameters 함수를 통해 구문 분석되어 곱하기를하고 마지막으로 처리 된 결과는 return_long을 사용하여 반환됩니다.
참조 매개 변수를 사용하여 전달 된 변수의 값을 직접 수정하고 입력 매개 변수의 수정이 필요한 함수에 적합한 메모리 주소에서 작동합니다.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// 매개 변수 값을 수정하십시오
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
코드 양식은 전달 값과 유사하지만 기본 처리 로직에서 참조 방법은 매개 변수 메모리를 직접 조작하여 발신자가 전달한 원래 데이터에 영향을 줄 수 있습니다.
확장 된 개발에서 반환 값은 마찬가지로 중요하며, PHP7은 일련의 매크로 정의를 통해 데이터를 반환하는 데 효율적인 지원을 제공합니다.
문자열을 반환 해야하는 경우 return_string 매크로를 사용할 수 있습니다.
PHP_FUNCTION(my_function) {
RETURN_STRING("Hello, world", 1);
}
여기서 두 번째 매개 변수 1은 문자열을 복사할지 여부를 나타냅니다. 전달 1은 PHP가 자동으로 문자열 데이터를 할당하고 복사한다는 것을 의미합니다.
정수를 반환하는 방법이 더 직접적입니다.
PHP_FUNCTION(my_function) {
RETURN_LONG(42);
}
return_long 매크로를 통해 정수 값은 스크립트 호출을 위해 PHP 계층으로 반환 할 수 있습니다.
이 기사에서는 PHP7 확장 개발에서 반환 값을 전달하기위한 일반적인 처리 방법을 소개합니다. 값 전달과 매개 변수 참조의 차이뿐만 아니라 문자열 및 정수를 반환하는 구현 방법을 포함합니다. 이러한 기본 기능을 마스터하면보다 효율적이고 안정적인 PHP 확장 모듈을 개발하여 PHP 개발에서 C 언어의 성능 장점을 더욱 발전시킬 수 있습니다.