소개
선언 구문 PHP의 문은 while, for, foreach 등과 같은 다른 흐름 제어 구조와 유사합니다.
구문
declare (directive) { statement1; statement2; . . }
블록의 동작은 지시문 유형에 따라 정의됩니다. 세 가지 유형의 지시문이 선언문에 제공될 수 있습니다. - ticks , 인코딩 및 strict_types 지시.
틱 지시문
틱은 스크립트에서 특정 수의 문이 실행되는 특수 이벤트에 부여되는 이름입니다. 이러한 명령문은 PHP 내부에 있으며 스크립트의 명령문과 대략 동일합니다(조건 및 인수 표현식 제외. 모든 함수는 register_tick_function에 의해 틱 이벤트와 연관될 수 있습니다. . 등록된 함수는 선언 지시문에서 지정된 수만큼 틱 후에 실행됩니다.
다음 예제에서 myfunction()은 선언 구조의 루프가 5번의 반복을 완료할 때마다 실행됩니다.
예시
<?php function myfunction(){ echo "Hello World\n"; } register_tick_function("myfunction"); declare (ticks=5){ for ($i=1; $i<=10; $i++){ echo $i."\n"; } } ?>
출력
위의 스크립트가 명령줄에서 실행될 때 다음과 같은 결과가 생성됩니다 -
1 2 3 4 5 Hello World 6 7 8 9 10 Hello World
PHP에는 unregister_tick_function() 도 있습니다. 틱 이벤트와 함수의 연결 제거
strict_types 지시문
PHP는 약한 유형의 언어이므로 특정 작업을 수행하는 데 적합하게 데이터 유형을 변환하려고 합니다. 두 개의 정수 인수가 있는 함수가 있고 그 덧셈을 반환하고 호출하는 동안 두 인수 중 하나가 float로 주어지면 PHP 파서는 자동으로 float를 정수로 변환합니다. 이 강제를 원하지 않으면 strict_types=1을 지정할 수 있습니다. 선언 구조에서
예시
<?php //strict_types is 0 by default function myfunction(int $x, int $y){ return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>
Float 매개변수는 다음 결과를 제공하기 위해 덧셈을 수행하기 위해 정수로 강제 변환됩니다 -
출력
total=3
그러나 strict_types=1과 함께 delcare 구문을 사용하면 강제 변환이 방지됩니다.
예시
<?php declare (strict_types=1); function myfunction(int $x, int $y){ return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>
출력
이것은 다음 오류를 생성합니다 -
Fatal error: Uncaught TypeError: Argument 1 passed to myfunction() must be of the type integer, float given, called in line 7 and defined in C:\xampp\php\testscript.php:3
인코딩 지시문
선언 구조에는 스크립트의 인코딩 체계를 지정할 수 있는 Encoding 지시문이 있습니다.
예시
<?php declare(encoding='ISO-8859-1'); echo "This Script uses ISO-8859-1 encoding scheme"; ?>