함수 정의 및 적용
이 장의 핵심 사항
2 내장된 PHP 함수 사용
2 온라인 함수 매뉴얼 살펴보기
2 사용자 정의 함수
2 가격 팁: 가변 매개변수, 참조 호출 및 가변 함수
모든 프로그래밍 언어에는 일종의 프로그램 추상화 처리 기능이 있습니다( 절차적 추상화는 프로그램 코드의 다른 섹션을 작성할 때 사용할 수 있도록 프로그램 코드의 특정 섹션). 일부 스크립트 언어에는 이 기능이 부족하며, 경험상 이로 인해 복잡한 서버 측 코드를 빠르게 관리하기 어렵게 만들 수 있습니다.
이 추상 처리를 제공하기 위해 PHP에서 사용하는 메커니즘은 함수입니다. 실제로 PHP에는 두 가지 유형의 함수가 있습니다. 하나는 PHP 개발자가 이미 언어에 내장한 것이고, 다른 하나는 각 PHP 프로그래머가 정의한 것입니다.
이번 장에서는 PHP에서 제공하는 수많은 함수를 활용하는 방법을 살펴보고, 자신만의 함수를 정의하는 방법을 알아봅니다. 다행히도 내장된 함수를 사용하는 것과 직접 정의하는 것에는 차이가 없습니다.
함수 사용
함수 사용(또는 호출)의 기본 구문은 다음과 같습니다.
function_name(expression_1,expression_2,…,expression_n)
입력 작업(함수 매개변수라고 함) 목록 형식으로 표시되며 그 뒤에 함수 이름으로 구분된 괄호와 쉼표가 표시됩니다. 특정 정의에 따르면 호출 함수는 매개변수를 사용하지 않거나 동시에 여러 매개변수를 가져올 수 있습니다.
PHP는 함수 호출을 발견하면 먼저 각 매개변수 연산을 평가한 다음 이 값을 함수에 대한 입력으로 사용합니다. 함수가 실행된 후 반환 값(반환 값이 있는 경우)은 전체 함수 표현식의 결과입니다.
아래 나열된 예는 모두 PHP 내장 함수의 유효한 호출 방법입니다.
sqtr(9) //제곱근 함수, 결과는 "3 》
rand(10,10+10) //"10"과 "20" 사이의 값을 반환합니다.
strlen("This has 22characters") //Return 값 "22 전달" "
pi() //p의 대략적인 값을 반환합니다.
이 함수는 각각 1, 2, 1, 0개의 매개변수로 호출됩니다.
반환 값과 부작용
모든 함수 호출은 다른 표현식과 마찬가지로 PHP 표현식입니다. 프로그램 코드에 함수를 포함하는 이유는 두 가지뿐입니다. 아니면 부작용이 생기거나.
함수의 반환값은 함수 연산의 값입니다. 이 값은 다른 작업의 평가 결과와 마찬가지로 사용할 수 있습니다. 예를 들어 다음과 같이 변수에 할당할 수 있습니다.
$my_pi = pi() >또는 아래와 같이 복잡한 계산 표현식에 이를 포함할 수 있습니다.
$about = sprt($about)* sqrt($about)
함수 공식은 또한 파일에 데이터 쓰기, 데이터베이스 작업, 브라우저 창에 콘텐츠 출력 표시 등 다양한 부작용을 수행하는 데 사용됩니다. 콜백과 사이드 이펙트를 동시에 사용하는 것이 가능합니다. 예를 들어, 함수가 정상적으로 실행되는지 확인하기 위해 사이드 이펙트가 있는 함수를 사용하고 동시에 값을 반환하는 경우가 많습니다
.
함수의 결과는 어떤 타입이든 가능하며, 여러 값을 반환하는 함수로 배열 타입을 주로 사용합니다.
기능 매뉴얼
PHP의 아키텍처는 매우 스마트하게 설계되어 있어 다른 개발자가 쉽게 확장할 수 있습니다. 원래 PHP 언어 자체는 이해하기 쉽고 매우 유연합니다. 대부분의 PHP 함수는 수많은 내장 함수에 존재합니다. 이는 개발자가 자유롭게 새로운 내장 기능을 추가하고 PHP에 기여할 수 있다는 것을 의미합니다. 이는 사용자가 의존할 수 있는 PHP의 어떤 부분도 변경하지 않기 때문에 좋습니다.
이 책은 많은 내장 기능을 다루고 있으며 그 중 일부는 온라인 매뉴얼보다 더 자세히 설명되어 있지만 http://www.php.net에서 제공하는 매뉴얼도 중요한 참고 자료입니다. 기능 정보를 위해. 이 책에서는 우리가 발췌하고 싶은 주제를 어느 정도 확장할 것이지만, PHP 매뉴얼의 내용은 PHP의 모든 측면에 대한 가장 완전한 참고 자료로 남아 있습니다. 우리는 이 책을 향후 PHP 버전에 맞춰 최신 상태로 유지하기를 희망하며, 온라인 가이드에서는 아직 개발 중인 기능을 포함하여 새로운 PHP 기능에 대한 최신 정보를 제공할 것입니다. 따라서 시간이 있을 때 PHP 공식 웹사이트와 온라인에서 제공되는 다양한 리소스를 살펴보는 것이 매우 도움이 됩니다.
다음 정보는 이 책이 완성된 시점에서는 정확하지만(제2판은 2002년에 재출판되었습니다). 그러나 일부 세부 사항은 온라인 설명서의 업데이트 버전이나 재구성으로 인해 오래되었거나 더 이상 적용되지 않을 수 있습니다.
온라인 매뉴얼을 검색하려면 http://www.php.net 웹사이트로 이동하여 오른쪽 상단 탐색 표시줄에서 "documentaion" 옵션 라벨을 선택하면 다양한 형식과 내용이 포함된 디렉토리로 리디렉션됩니다. 사용자 매뉴얼 정보 링크. 우리가 보고 싶은 것은 사용자가 각 페이지에 자신의 주석 데이터를 게시할 수 있는 주석이 달린 매뉴얼(현재 문서 페이지의 온라인 보기 옵션에 연결되어 있음)입니다. [참고: 수동 주석 시스템은 질문을 게시하는 곳이 아닙니다! 사용법에 대해 궁금한 점이 있으면 www.php.net의 "지원" 탭에 있는 메일링 리스트 섹션을 참조하거나 PHP 리소스에 대한 이 책의 부록 D를 참조하세요. 수동 주석 시스템은 사용자가 이해한 후 자신의 말로 설명하고 의견을 제시할 수 있는 곳이지만 이는 실제로 우리가 기여할 수 있는 방법이기도 합니다. 이는 기여할 수 있는 좋은 방법이며 혼란과 발생할 수 있는 문제를 지적하기에 좋은 장소이지만 모두 "영어"로 되어 있습니다! ]
사용 설명서의 대부분은 기능에 대한 테스트 자료이며, 내장된 기능마다 별도의 설명 페이지가 있습니다. 각 페이지는 함수 이름과 한 줄 설명으로 시작하고, C 스타일 함수 헤더 선언(다음 섹션에서 설명), 약간 더 긴 설명(예제 한두 개 정도), 그리고 (Notes Manual)로 시작합니다. 사용자의 의견 및 의견 보고서입니다.
매뉴얼 헤더
C 언어 함수 헤더에 익숙하지 않은 분들에게는 함수 매뉴얼의 맨 처음 부분이 헷갈릴 수 있습니다. 기본 형식은 다음과 같습니다.
return-type function-name(type argl,type2 arg2,…);
예상 함수가 값 유형 값, 함수 이름 및 기대값을 반환함을 나타냅니다. 종류 등
다음은 기본 헤더 설명입니다.
string substr (string string,int startl [,int length])
이는 substr 함수가 문자열이며 매개변수로 문자열과 두 개의 정수를 기대합니다. 실제로 길이 양쪽에 있는 대괄호는 이 매개변수가 선택 사항임을 나타내므로 substr을 호출할 때 문자열 문자열과 int 정수 또는 문자열 문자열과 두 개의 int 정수를 가져올 수 있습니다.
C와 달리 이 매뉴얼 헤더에 선언된 매개변수 유형은 꼭 필요한 것은 아닙니다. 숫자를 인수로 사용하여 substr을 호출하면 오류가 발생하지 않습니다. PHP는 함수 실행을 시작하기 전에 첫 번째 인수를 문자열로 변환합니다. 그러나 매개변수 유형은 함수 작성자의 원래 의도를 반영합니다. 또한, 매뉴얼에 명시된 유형에 따라 함수를 사용하거나 유형 변환 사항을 충분히 이해하여 예상되는 결과를 보장하는 것이 가장 좋습니다. 결과.
일반적으로 함수 매뉴얼에 사용되는 유형 이름은 integet(또는 int), double(또는 float, real), Boolean, string, array, object, 리소스 및 NULI. 그 외에도 보이드(Void)와 믹스(Mix)의 종류도 볼 수 있습니다. Viod 유형의 함수는 아무런 값도 반환하지 않으며 혼합 매개변수 유형은 매개변수가 어떤 유형이든 될 수 있음을 의미합니다.
쿼리 기능 매뉴얼
매뉴얼에서 기능에 대한 정보를 확인하는 가장 좋은 방법은 무엇인가요? 주로 호기심과 어떤 부분에 관심이 있느냐에 따라 달라지나요? 함수에 관해 가장 많이 묻는 질문은
X 함수를 사용하고 싶은데 어떻게 사용해야 하나요?
특정 Y 작업을 완료해야 하는데 이 작업을 완료하는 데 도움이 되는 기능이 있나요?
첫 번째 경우, 온라인 매뉴얼의 정식 버전에서는 기능 이름을 기반으로 자동 쿼리를 제공합니다. 오른쪽 상단 탐색 모음 아래 "검색" 텍스트 상자의 기본 검색 모드는 함수 이름이며, 함수를 찾은 후 해당 함수를 표시하는 웹 페이지가 표시됩니다(선택할 수도 있음). 전체 웹사이트의 메일링 리스트를 포함한 기타 검색 개체는 필요한 기능 이름을 모를 때 검색하기 좋은 곳이지만 필요한 기능의 대략적인 이름은 추측할 수 있습니다.
두 번째 경우로 찾고 있다면 108개 장으로 나누어져 있는 Function Reference(PHP 매뉴얼의 기사 중 하나인 Funcrion Reference)의 계층적 구성 구조를 활용하는 것이 가장 좋습니다. . 예를 들어, 앞서 언급한 substr 함수는 "문서의 헤더" 섹션 내 "문자열 함수" 섹션에 있습니다. 함수 참조의 장 목록을 탐색하여 수행하려는 작업에 가장 적합한 장을 선택할 수 있습니다. 혹은, 수행 중인 작업과 동일한 범위에 있을 수 있는 기능의 이름을 알고 있는 경우 Quick Ref 버튼을 직접 눌러 해당 장으로 연결할 수 있습니다.
사용자 정의 함수
PHP에서는 사용자 정의 함수가 필요하지 않습니다. 또한 기본적인 언어 구조와 수많은 내장 기능만 사용하여 유용한 웹 사이트를 구축할 수도 있습니다. 그러나 프로그램 코드의 내용이 점점 길어지고, 이해하고 관리하기가 점점 더 어려워진다면, 이는 프로그램 코드 중 일부를 함수로 변환하는 것을 고려해야 한다는 의미입니다.
함수란 무엇인가요?
함수는 프로그램 코드 블록을 래핑하고 이름을 지정하는 프로그램을 작성하는 방법입니다. 이렇게 하면 프로그램 코드 한 줄만으로 나중에 프로그램 코드 블록을 더 쉽게 사용할 수 있습니다. 프로그램을 작성할 때 프로그램 코드 블록이 여러 곳에서 사용된다면 함수가 가장 효과적인 방법이지만, 한 번만 사용하더라도 함수를 생성하고 작성하는 것이 프로그램 구조에 도움이 될 것입니다. 프로그램 코드가 더 읽기 쉽습니다.
함수 정의 구문
함수는 다음 형식으로 정의할 수 있습니다.
함수 함수 이름($argument1, $argument2,..)
{
statement1; 🎜>특수 단어 "function"
함수에 부여된 이름
함수의 매개변수 목록(쉼표로 구분된 $ 기호 변수)
함수 본체(중괄호 안의 일련의 서술문)
변수명과 마찬가지로 함수명도 영문자, 숫자, 밑줄(_)로 구성되어야 하며 시작할 수 없습니다. 숫자로. 변수 이름과 달리 함수 이름은 저장되기 전에 소문자로 변환되므로 함수 이름은 대소문자를 구분하지 않는 것으로 간주될 수 있습니다.
정의된 함수를 호출하면 어떤 일이 발생하는지 간단히 설명하면 다음과 같습니다.
1. PHP는 이름으로 함수를 찾습니다(함수가 정의되지 않은 경우 오류 메시지가 표시됩니다).
2. PHP는 함수 정의의 매개변수 목록에 있는 변수(또는 "형식 매개변수")를 매개변수(또는 "실제 매개변수")의 값으로 대체합니다.
3. 함수 본문의 설명문을 실행합니다. 실행이 문의 "return" 문에 도달하면 함수는 실행을 중지하고 지정된 값을 반환합니다. 그렇지 않으면 마지막 단계까지 함수가 실행되고 값이 반환되지 않습니다.
숙련된 프로그래머라면 이전 설명이 참조별 호출이 아닌 값별 호출을 의미한다는 점을 주의하세요. 이 장의 마지막 섹션에서는 차이점을 설명하고 참조로 호출하는 방법을 보여줍니다.
함수 정의의 예
가상의 예로서 다음 프로그램 코드를 상상해 보십시오. 그 목적은 우리가 구매할 병 음료 수를 결정하는 데 도움을 주는 것입니다. 쇼핑몰에서는 이미 파괴 가능한 무선 웹 브라우저를 사용하여 비교 쇼핑 가격을 확인하고 있습니다.
$liters_1 = 1.0;
$price_1 = 1.59;
$liters_2 = 1.5;
$price_2 = 2.09; $per_liter_1 = $price_1 / $liters_1;
$per_liter_2 = $price_2 / $liters_2;
if($per_literl<$per_liter2)
print(“첫 번째 거래
else
print(“두 번째 거래가 더 좋습니다!
이 때문입니다. 유형 비교는 웹 페이지 프로그래밍 코드의 모든 곳에서 볼 수 있으며 이를 재사용 가능한 함수로 만들고 싶습니다. 이를 수행하는 한 가지 방법은 다음 예에 따라 다시 작성하는 것입니다.
function better_deal ($amount_1,$price_1,
$amount_2,$price_2)
{
$per_amount_1 = $price_1/$amount_1;
$per_amount_2 = $price_2/$amount_2;
return($per_amount_1<$per_amount_2);
}
$liters_1 = 1.0;
$price_1 = 1.59;
$liters_2 = 1.5;
$price_2 = 2.09; $price_1,
$liters_2,$price_2))
print(“첫 번째 거래가 더 좋습니다!< BR >”);
else
price(“두 번째 거래가 더 좋습니다!< BR >”);
better_deal 함수는 이전 프로그램 코드에서 세 줄의 산술 연산 및 비교를 추출합니다. 부울 표현식의 값을 반환합니다. 다른 부울 값과 마찬가지로 if 문의 테스트 부분에 포함될 수 있습니다. 이 함수는 원래 프로그램 코드보다 길지만 이 방법으로 다시 작성하면 두 가지 이점이 있습니다. 즉, 계산을 변경하기로 결정한 경우 프로그램의 다른 여러 위치에서 이 함수를 사용할 수 있습니다. 방법을 사용하려면 한 곳만 수정하면 됩니다.
또 다른 대안이 가격 비교가 어떤 거래가 더 비용 효율적인지 인쇄하는 것이라면 아래와 같이 출력 표시 문을 함수에 직접 넣을 수 있습니다.
함수 print_better_deal($amount_1,$price_1,
$amount_2,$price_2)
{
$per_amount_1 = $price_1 / $amount_1
$per_amount_2; = $price_2 / $amount_2;
if($per_amout_1<$per_amount_2)
print(“첫 번째 거래가 더 좋습니다!< BR >”);
else
print(“두 번째 거래가 더 좋습니다!< BR >”)
}
$liters_1 =
$price_1 = 1.59;
$liters_2 = 1.5;
$price_2 = 2,09; $price_2);
첫 번째 함수는 return 문을 사용하여 부울 결과를 전달합니다. 그런 다음 if 문을 사용하여 테스트에 사용됩니다. 두 번째 함수에는 사용자 브라우저에 텍스트를 표시하는 부작용이 완료되므로 return 문이 없습니다. 이 함수의 마지막 문장이
명령문이 실행된 후 PHP는 함수 호출에 이어 다음 명령문을 실행합니다.
형식 매개변수와 실제 매개변수의 비교
앞의 예에서 함수에 전달되는 매개변수는 '변수'이지만 반드시 그런 것은 아니다. 실제 인수(즉, 함수 호출의 인수)는 평가할 수 있는 모든 표현식이 될 수 있습니다. 이 예에서는 다음과 같이 변수 대신 함수 호출에 숫자를 전달할 수 있습니다.
Print_bettet_deal(1.0,1.59,1.5,2.09)
또한 이 예에서는 실제 매개변수 변수가 형식 매개변수(예: $price_1)와 동일한 이름을 갖는 경우와 실제 매개변수와 형식 매개변수의 이름이 다른 경우(예: $liters_1 및 $amount_1이 다름)에 대해 언급하겠습니다. 다음 섹션에서는 두 메서드 모두 문제가 없습니다. 함수가 자신을 호출하더라도 함수 외부에 완전히 독립적으로 존재합니다.
위 내용은 PHP 학습가이드 - 8장 (1)이며, 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요.