차이

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

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:php7 [2017/08/23 03:39] V_Ltech:php7 [2019/10/27 04:24] (현재) – [버전 확인] V_L
줄 1: 줄 1:
 {{tag>php7}} {{tag>php7}}
-====== Php7 ======+====== PHP7 ======
  
 [[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 였는데 함수가 제거되었다.
 영향을 받는 것은 다음 함수임. 영향을 받는 것은 다음 함수임.
줄 14: 줄 41:
 대용으로 preg_match와 preg_replace 등의 PCRE 계열 함수를 사용할 수 있다. 대용으로 preg_match와 preg_replace 등의 PCRE 계열 함수를 사용할 수 있다.
  
-=====ext/mysql 확장 폐지=====+====ext/mysql 확장 폐지====
 5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었다.  5.5에서 deprecated 였는데 mysql_ 함수들이 제거되었다. 
 PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 변화라고 생각함.  PDO와 mysqli가 준비되어 지금도 오래된 참고서에 현혹되어 사용하는 사람이 많았기 때문에 좋은 변화라고 생각함. 
줄 20: 줄 47:
 PDO와 mysqli를 사용해줘라. PDO와 mysqli를 사용해줘라.
  
-===== 가변 변수의 새로운 기술 방법 =====+==== 가변 변수의 새로운 기술 방법 ====
  
 다차원 배열을 가변 변수로 사용시 ${$var[ 'foo'][ 'bar']}처럼 {}를 사용하였다만 PHP7에서는 ($$var)['foo']['bar']로 표현할 수 있다.  다차원 배열을 가변 변수로 사용시 ${$var[ 'foo'][ 'bar']}처럼 {}를 사용하였다만 PHP7에서는 ($$var)['foo']['bar']로 표현할 수 있다. 
줄 35: 줄 62:
 </file> </file>
  
-=====「::」중첩=====+====「::」중첩====
 클래스의 상수와 static 메소드에 관해 ":"를 중첩해 사용할 수 있다. 클래스의 상수와 static 메소드에 관해 ":"를 중첩해 사용할 수 있다.
   $var::$class::$constant   $var::$class::$constant
  
-=====함수가 반환하는 값에 직접 액세스하기=====+====함수가 반환하는 값에 직접 액세스하기====
 함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있다. 함수가 돌려 준 callable(콜백)과 callable을 가지는 변수에서 직접 호출할 수 있다.
  
줄 46: 줄 73:
   $foo()['bar']();   $foo()['bar']();
  
-=====무명 클래스 지원=====+====무명 클래스 지원====
 "class"를 사용하여 일회성 무명 클래스(Anonymous Class)를 만들 수 있다. "class"를 사용하여 일회성 무명 클래스(Anonymous Class)를 만들 수 있다.
  
줄 58: 줄 85:
 </file> </file>
  
-=====use 그룹화=====+====use 그룹화====
 use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었다. use를 이용할 때 네임 스페이스를 그룹화해 여러 클래스를 일괄 지정할 수 있게 되었다.
  
줄 83: 줄 110:
 </file> </file>
  
-=====Null Coalesce 연산자 추가=====+====Null Coalesce 연산자 추가====
 지금까지는 null이 될 수 있는 값을 아래처럼 삼항 연산자로 비교하곤 했다. 지금까지는 null이 될 수 있는 값을 아래처럼 삼항 연산자로 비교하곤 했다.
   $ foo = isset ($ bar)? $ bar : $ baz;   $ foo = isset ($ bar)? $ bar : $ baz;
줄 94: 줄 121:
   $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() 함수의 강화====
 경로 문자열에서 디렉토리 이름을 반환하는 dirname()에 제 2 인수를 지정할 수 있게 되어, 몇 번째 디렉토리 이름을 취득할 것인지 지정할 수 있게 되었다. 경로 문자열에서 디렉토리 이름을 반환하는 dirname()에 제 2 인수를 지정할 수 있게 되어, 몇 번째 디렉토리 이름을 취득할 것인지 지정할 수 있게 되었다.
  
줄 110: 줄 137:
   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 
줄 146: 줄 173:
  
 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+