필자는 PHP 확장 튜토리얼을 살펴 보았지만 기존 함수를 오버로드하는 방법에 대한 정보는 찾을 수 없습니다.PHP 확장 기능에서 오버로드하는 방법은 무엇입니까?
예를 들어, 나는 그렇게 할 수있는 방법
PHP_FUNCTION(fopen)
{
if condition_is_true(condition)
original_fopen();
else
show_error();
}
같은 것을로는 fopen()을 변경하려면? 감사합니다.
PS입니다. 해결책 발견 고든 링크 덕분에 : 나는 (httpd.conf 파일에 .so를 컴파일하고 포함 C로 작성 아닌 .PHP 프로그램) 확장
편집을 의미한다.
기능 rename_function
에 대한 PECL 패키지를 다운로드했습니다. 소스 코드는 필요한 결론에 저를 주도하고있다 :
자신의 이름을 기반으로 기능에 대한 모든 포인터를 보유하고 글로벌 해시 테이블
function_table
,있다.zend_hash_find
/zend_hash_add
/이 표에서 내가 원하는대로 변경할 수 있습니다. 당신이 젠드 프레임 워크를 사용하는 경우
나는 그 일을하도록 허락을 심각하게 의심합니다. 그것은 PHP에 내장 된 일부 기능에 대해 거룩한 일을하여 갑자기 예상과 다르게 동작합니다. – GordonM