차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| tech:php7 [2017/08/23 02:25] – V_L | tech:php7 [2019/10/27 04:24] (현재) – [버전 확인] V_L | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| {{tag> | {{tag> | ||
| - | ====== | + | ====== |
| - | + | ||
| + | [[PHP]] 5.x 계열의 메이저 업데이트인 PHP 7.0 에서는 처리 속도의 향상 및 언어 사양의 변경이 이루어져 있다. | ||
| - | PHP 5.x 계열의 메이저 업데이트인 PHP 7.0 에서는 처리 속도의 향상 및 언어 사양의 변경이 이루어져 있습니다. | + | =====버전 확인===== |
| - | 새로운 기능 및 사용되지 않는 기능 중 큰 영향을 미치는 변경 사항에 대해 정리해 보았습니다. | + | |
| - | =====POSIX 정규 표현식 함수의 폐지===== | + | > php -v |
| - | 5.3에서 deprecated 였는데 함수가 제거되었습니다. | + | |
| - | 영향을 받는 것은 다음 함수입니다. | + | |
| - | > ereg (), eregi (), ereg_replace | + | <file> |
| + | $ php -v | ||
| + | PHP 7.3.11-1+ubuntu18.04.1+deb.sury.org+1 | ||
| + | Copyright | ||
| + | Zend Engine v3.3.11, Copyright | ||
| + | with Zend OPcache v7.3.11-1+ubuntu18.04.1+deb.sury.org+1, | ||
| + | </ | ||
| - | ereg와 관련된 대부분의 기능이 제거되었습니다. | + | 우분투 |
| - | 대용으로 preg_match와 preg_replace 등의 PCRE 계열 | + | |
| + | > dpkg -l php | ||
| + | |||
| + | < | ||
| + | $ dpkg -l php | ||
| + | Desired=Unknown/ | ||
| + | | Status=Not/ | ||
| + | |/ Err? | ||
| + | ||/ Name Version | ||
| + | +++-===================-==============-==============-=========================================== | ||
| + | ii php | ||
| + | </ | ||
| + | =====바뀐 점===== | ||
| + | 새로운 | ||
| + | |||
| + | ====POSIX 정규 표현식 함수의 폐지==== | ||
| + | 5.3에서 deprecated 였는데 함수가 | ||
| + | 영향을 받는 것은 다음 | ||
| + | |||
| + | > ereg (), eregi (), ereg_replace () eregi_replace, | ||
| - | =====ext/ | + | ereg와 관련된 대부분의 기능이 제거되었다. |
| - | 5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었습니다. | + | 대용으로 preg_match와 preg_replace 등의 PCRE 계열 함수를 사용할 수 있다. |
| - | PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 변화라고 생각합니다. | + | |
| - | 숫자가 너무 많아 폐지된 함수는 | + | |
| - | PDO와 mysqli를 사용해주세요. | + | |
| - | ===== 가변 | + | ====ext/mysql 확장 폐지==== |
| + | 5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었다. | ||
| + | PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 | ||
| + | 숫자가 너무 많아 폐지된 함수는 열거할 | ||
| + | PDO와 mysqli를 사용해줘라. | ||
| - | 다차원 배열을 | + | ==== 가변 변수의 새로운 기술 방법 ==== |
| - | 클래스 메소드나 속성의 경우는 다음과 같이합니다 | + | |
| + | 다차원 배열을 가변 변수로 사용시 ${$var[ ' | ||
| + | 클래스 메소드나 속성의 경우는 다음과 같이함 | ||
| < | < | ||
| 줄 38: | 줄 62: | ||
| </ | </ | ||
| - | =====「:: | + | ====「:: |
| - | 클래스의 상수와 static 메소드에 관해 ":" | + | 클래스의 상수와 static 메소드에 관해 ":" |
| $var:: | $var:: | ||
| - | =====함수가 반환하는 값에 직접 액세스하기===== | + | ====함수가 반환하는 값에 직접 액세스하기==== |
| - | 함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있습니다. | + | 함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있다. |
| foo()(); | foo()(); | ||
| 줄 49: | 줄 73: | ||
| $foo()[' | $foo()[' | ||
| - | =====무명 클래스 지원===== | + | ====무명 클래스 지원==== |
| - | " | + | " |
| < | < | ||
| 줄 61: | 줄 85: | ||
| </ | </ | ||
| - | =====use 그룹화===== | + | ====use 그룹화==== |
| - | use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었습니다. | + | use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었다. |
| < | < | ||
| 줄 87: | 줄 110: | ||
| </ | </ | ||
| - | =====Null Coalesce 연산자 추가===== | + | ====Null Coalesce 연산자 추가==== |
| - | 지금까지는 null이 될 수 있는 값을 아래처럼 삼항 연산자로 비교하곤 했습니다. | + | 지금까지는 null이 될 수 있는 값을 아래처럼 삼항 연산자로 비교하곤 했다. |
| $ foo = isset ($ bar)? $ bar : $ baz; | $ foo = isset ($ bar)? $ bar : $ baz; | ||
| - | PHP7에서는 새로운 연산자 ?? 를 사용하여 좀 더 쉽게 쓸 수 있게 되었습니다. | + | PHP7에서는 새로운 연산자 ?? 를 사용하여 좀 더 쉽게 쓸 수 있게 되었다. |
| $ foo = $ bar ?? $ baz; | $ foo = $ bar ?? $ baz; | ||
| - | ??는 여러 개 사용할 수 있습니다.(물론 ??와 ?를 섞어서 쓸 수 있습니다. 삼항 연산자 안에 null coalesce 연산자를 사용) | + | ??는 여러 개 사용할 수 있다.(물론 ??와 ?를 섞어서 쓸 수 있다. 삼항 연산자 안에 null coalesce 연산자를 사용) |
| - | 아래는 $a가 null 이라면 $b의 값을, $b가 null 이라면, $c의 값이 저장됩니다. | + | 아래는 $a가 null 이라면 $b의 값을, $b가 null 이라면, $c의 값이 저장된다. |
| $var = $a ?? $b ?? $c; | $var = $a ?? $b ?? $c; | ||
| - | =====우주선 연산자 (< | + | ====우주선 연산자 (< |
| - | 우주선 연산자 (Spaceship-Operator)라고 자주 불리는 "< | + | 우주선 연산자 (Spaceship-Operator)라고 자주 불리는 "< |
| - | 두 값이 같으면 0을, 왼쪽의 값이 작으면 -1, 크면 +1 반환합니다. | + | 두 값이 같으면 0을, 왼쪽의 값이 작으면 -1, 크면 +1 반환함. |
| - | =====배열을 이용한 상수===== | + | ====배열을 이용한 상수==== |
| - | define()를 사용해서 상수 선언할 때 배열을 지정할 수 있게 되었습니다. | + | define()를 사용해서 상수 선언할 때 배열을 지정할 수 있게 되었다. |
| - | =====preg_replace_callback_array() 함수의 추가===== | + | ====preg_replace_callback_array() 함수의 추가==== |
| - | preg_replace_callback_array() 정규식 패턴과 대체 처리를 배열의 형태로 부여해 각각의 처리를 동시에 할 수 있습니다. | + | preg_replace_callback_array() 정규식 패턴과 대체 처리를 배열의 형태로 부여해 각각의 처리를 동시에 할 수 있다. |
| - | + | ||
| - | =====dirname() 함수의 강화===== | + | |
| - | 경로 문자열에서 디렉토리 이름을 반환하는 dirname()에 제 2 인수를 지정할 수 있게 되어, 몇 번째 디렉토리 이름을 취득할 것인지 지정할 수 있게 되었습니다. | + | |
| + | ====dirname() 함수의 강화==== | ||
| + | 경로 문자열에서 디렉토리 이름을 반환하는 dirname()에 제 2 인수를 지정할 수 있게 되어, 몇 번째 디렉토리 이름을 취득할 것인지 지정할 수 있게 되었다. | ||
| $path = '/ | $path = '/ | ||
| dirname($path, | dirname($path, | ||
| - | =====password_hash ()의 salt 옵션 폐지===== | + | ====password_hash ()의 salt 옵션 폐지==== |
| - | password_hash ()에 수동으로 salt를 설정하는 옵션이 있었지만 폐지되었습니다. | + | password_hash ()에 수동으로 salt를 설정하는 옵션이 있었지만 폐지되었다. |
| - | 사용시에는 E_DEPRECATED가 발생합니다. | + | 사용시에는 E_DEPRECATED가 발생함. |
| - | =====assert () 언어 구조화===== | + | ====assert () 언어 구조화==== |
| - | 디버깅에 사용해온 assert ()가 함수에서 언어 문법에 포함되어 식을 직접 지정할 수 있어 프로덕션 환경에서 오버헤드가 없어졌습니다. | + | 디버깅에 사용해온 assert ()가 함수에서 언어 문법에 포함되어 식을 직접 지정할 수 있어 프로덕션 환경에서 오버헤드가 없어졌다. |
| - | =====try~catch에서 다루는 오류 종류의 확대===== | + | ====try~catch에서 다루는 오류 종류의 확대==== |
| - | 5.x에서는 불가능했던 PHP의 일반적 오류가 " | + | 5.x에서는 불가능했던 PHP의 일반적 오류가 " |
| - | 그 외에도 " | + | 그 외에도 " |
| - | =====Unicode 확장 영역에 대응===== | + | ====Unicode 확장 영역에 대응==== |
| - | Unicode 문자 관한 많은 기능을 가진 IntlChar가 도입되 이모티콘 등의 명칭을 산출하거나 영숫자 여부 판정 할 수 있는 기능이 추가되었습니다. | + | Unicode 문자 관한 많은 기능을 가진 IntlChar가 도입되 이모티콘 등의 명칭을 산출하거나 영숫자 여부 판정 할 수 있는 기능이 추가되었다. |
| - | =====타입 힌팅 강화===== | + | ====타입 힌팅 강화==== |
| - | 변수가 배열 또는 콜백인지 명시하는 기능은 PHP 5.x에도 있었습니다만 사용할 수 있는 유형이 늘어나 다음과 같은 형식도 지정할 수 있게되었습니다. | + | 변수가 배열 또는 콜백인지 명시하는 기능은 PHP 5.x에도 있었다만 사용할 수 있는 유형이 늘어나 다음과 같은 형식도 지정할 수 있게되었다. |
| * bool | * bool | ||
| * float | * float | ||
| 줄 136: | 줄 158: | ||
| * string | * string | ||
| - | 함수 function( int $foo )라고 했을때, "100 " | + | 함수 function( int $foo )라고 했을때, "100 " |
| - | declare() 함수에서 " | + | declare() 함수에서 " |
| - | 반환 값도 타입 힌팅을 사용할 수 있으며 다음과 같이 지정합니다. | + | 반환 값도 타입 힌팅을 사용할 수 있으며 다음과 같이 지정함. |
| < | < | ||
| function example(string $str): int | function example(string $str): int | ||
| 줄 147: | 줄 169: | ||
| </ | </ | ||
| - | 지금까지 소개한 것은 새로운 기능의 극히 일부로 실제로는 더 많은 변화가 있습니다. | + | 지금까지 소개한 것은 새로운 기능의 극히 일부로 실제로는 더 많은 변화가 있다. |
| - | 자세한 내용은 공식 문서를 참고해 | + | 자세한 내용은 공식 문서를 참고해 |
| Migrating from PHP 5.6.x to PHP 7.0.x : http:// | Migrating from PHP 5.6.x to PHP 7.0.x : http:// | ||
| - | Viewer | + | |