차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
tech:php7 [2017/08/23 02:25] – 만듦 V_Ltech:php7 [2019/10/27 04:24] (현재) – [버전 확인] V_L
줄 1: 줄 1:
 {{tag>php7}} {{tag>php7}}
-====== Php7 ====== +====== PHP7 ======
-{{INLINETOC}}+
  
 +[[PHP]] 5.x 계열의 메이저 업데이트인 PHP 7.0 에서는 처리 속도의 향상 및 언어 사양의 변경이 이루어져 있다.
  
 +=====버전 확인=====
  
-PHP 5.x 계열의 메이저 업데이트인 PHP 7.0 에서는 처리 속도의 향상 및 언어 사양의 변경이 이루어져 있습니다+>  php -v 
-새로운 기능 및 사용되지 않는 기능 중 큰 영향을 미치는 변경 사항에 대해 정리해 보았습니다.+ 
 +<file> 
 +$ php -v 
 +PHP 7.3.11-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Oct 24 2019 18:23:23) ( NTS ) 
 +Copyright (c) 1997-2018 The PHP Group 
 +Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies 
 +    with Zend OPcache v7.3.11-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies 
 +</file> 
 + 
 +우분투 
 + 
 +>  dpkg -l php 
 + 
 +<file> 
 +$ dpkg -l php 
 +Desired=Unknown/Install/Remove/Purge/Hold 
 +| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend 
 +|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) 
 +||/ Name                Version        Architecture   Description 
 ++++-===================-==============-==============-=========================================== 
 +ii  php                 2:7.3+69+ubunt all            server-side, HTML-embedded scripting langua 
 +</file> 
 +=====바뀐 점===== 
 +새로운 기능 및 사용되지 않는 기능 중 큰 영향을 미치는 변경 사항에 대해 정리해 보았다.
  
 ====POSIX 정규 표현식 함수의 폐지==== ====POSIX 정규 표현식 함수의 폐지====
-5.3에서 deprecated 였는데 함수가 제거되었습니다. +5.3에서 deprecated 였는데 함수가 제거되었다. 
-영향을 받는 것은 다음 함수입니다.+영향을 받는 것은 다음 함수.
  
 > ereg (), eregi (), ereg_replace () eregi_replace, split () spliti () sql_regcase () > ereg (), eregi (), ereg_replace () eregi_replace, split () spliti () sql_regcase ()
  
-ereg와 관련된 대부분의 기능이 제거되었습니다.  +ereg와 관련된 대부분의 기능이 제거되었다.  
-대용으로 preg_match와 preg_replace 등의 PCRE 계열 함수를 사용할 수 있습니+대용으로 preg_match와 preg_replace 등의 PCRE 계열 함수를 사용할 수 있다.
- +
-=====ext/mysql 확장 폐지===== +
-5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었습니다.  +
-PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 변화라고 생각합니다.  +
-숫자가 너무 많아 폐지된 함수는 열거할 수 없지만 "mysql_"로 시작하는 함수는 향후 사용할 수 없습니다.  +
-PDO와 mysqli를 사용해주세요.+
  
-===== 가변 의 새운 기술 방법 =====+====ext/mysql 확장 폐지==== 
 +5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었다.  
 +PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 화라고 생각함.  
 +숫자가 너무 많아 폐지된 함수는 열거할 수 없지만 "mysql_"로 시작하는 함수는 향후 사용할 수 없다.  
 +PDO와 mysqli를 사용해줘라.
  
-다차원 배열을 가변 변수로 사용시 ${$var[ 'foo'][ 'bar']}처럼 {}를 사용하였습니다만 PHP7에서는 ($$var)['foo']['bar']로 표현할 수 있습니다.  +==== 가변 변수의 새운 기술 방법 ====
-클래스 메소드나 속성의 경우는 다음과 같이합니다+
  
 +다차원 배열을 가변 변수로 사용시 ${$var[ 'foo'][ 'bar']}처럼 {}를 사용하였다만 PHP7에서는 ($$var)['foo']['bar']로 표현할 수 있다. 
 +클래스 메소드나 속성의 경우는 다음과 같이함
  
 <file> <file>
줄 39: 줄 62:
 </file> </file>
  
-=====「::」중첩===== +====「::」중첩==== 
-클래스의 상수와 static 메소드에 관해 ":"를 중첩해 사용할 수 있습니다.+클래스의 상수와 static 메소드에 관해 ":"를 중첩해 사용할 수 있다.
   $var::$class::$constant   $var::$class::$constant
  
-=====함수가 반환하는 값에 직접 액세스하기===== +====함수가 반환하는 값에 직접 액세스하기==== 
-함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있습니다.+함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있다.
  
   foo()();   foo()();
줄 50: 줄 73:
   $foo()['bar']();   $foo()['bar']();
  
-=====무명 클래스 지원===== +====무명 클래스 지원==== 
-"class"를 사용하여 일회성 무명 클래스(Anonymous Class)를 만들 수 있습니다.+"class"를 사용하여 일회성 무명 클래스(Anonymous Class)를 만들 수 있다.
  
 <file> <file>
줄 62: 줄 85:
 </file> </file>
  
-=====use 그룹화===== +====use 그룹화==== 
-use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었습니다. +use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었다.
  
 <file> <file>
줄 88: 줄 110:
 </file> </file>
  
-=====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 = '/dir1/dir2/dir3/example.txt';   $path = '/dir1/dir2/dir3/example.txt';
   dirname($path, 2); // "/dir1/dir2"   dirname($path, 2); // "/dir1/dir2"
  
-=====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의 일반적 오류가 "\Error"로 잡을 수 있게 되었습니다.  +5.x에서는 불가능했던 PHP의 일반적 오류가 "\Error"로 잡을 수 있게 되었다.  
-그 외에도 "\ParseError"이나 "\TypeError"등의 오류도 다룰 수 있습니다.+그 외에도 "\ParseError"이나 "\TypeError"등의 오류도 다룰 수 있다.
  
-=====Unicode 확장 영역에 대응===== +====Unicode 확장 영역에 대응==== 
-Unicode 문자 관한 많은 기능을 가진 IntlChar가 도입되 이모티콘 등의 명칭을 산출하거나 영숫자 여부 판정 할 수 있는 기능이 추가되었습니다.+Unicode 문자 관한 많은 기능을 가진 IntlChar가 도입되 이모티콘 등의 명칭을 산출하거나 영숫자 여부 판정 할 수 있는 기능이 추가되었다.
  
-=====타입 힌팅 강화===== +====타입 힌팅 강화==== 
-변수가 배열 또는 콜백인지 명시하는 기능은 PHP 5.x에도 있었습니다만 사용할 수 있는 유형이 늘어나 다음과 같은 형식도 지정할 수 있게되었습니다.+변수가 배열 또는 콜백인지 명시하는 기능은 PHP 5.x에도 있었다만 사용할 수 있는 유형이 늘어나 다음과 같은 형식도 지정할 수 있게되었다.
   * bool    * bool 
   * float    * float 
줄 137: 줄 158:
   * string   * string
  
-함수 function( int $foo )라고 했을때, "100 "등의 문자열을 넘겨 주면 int 형의 100로 변환됩니다.  +함수 function( int $foo )라고 했을때, "100 "등의 문자열을 넘겨 주면 int 형의 100로 변환다.  
-declare() 함수에서 "strict_types = 1"로 지정하면 자동 변환을 무효화하고 적절한 형태의 값이 주어지지 않은 경우 "\TypeError"을 발생시킬 수 있습니다.+declare() 함수에서 "strict_types = 1"로 지정하면 자동 변환을 무효화하고 적절한 형태의 값이 주어지지 않은 경우 "\TypeError"을 발생시킬 수 있다.
  
-반환 값도 타입 힌팅을 사용할 수 있으며 다음과 같이 지정합니다.+반환 값도 타입 힌팅을 사용할 수 있으며 다음과 같이 지정.
 <file> <file>
 function example(string $str): int function example(string $str): int
줄 148: 줄 169:
 </file> </file>
  
-지금까지 소개한 것은 새로운 기능의 극히 일부로 실제로는 더 많은 변화가 있습니다.  +지금까지 소개한 것은 새로운 기능의 극히 일부로 실제로는 더 많은 변화가 있다.  
-자세한 내용은 공식 문서를 참고해 주세요. 아래는 마이그래션에 관한 내용입니다.+자세한 내용은 공식 문서를 참고해 줘라. 아래는 마이그래션에 관한 내용.
  
 Migrating from PHP 5.6.x to PHP 7.0.x : http://php.net/manual/kr/migration70.php Migrating from PHP 5.6.x to PHP 7.0.x : http://php.net/manual/kr/migration70.php
-Viewer+