>  기사  >  백엔드 개발  >  PHP7의 기능은 무엇입니까

PHP7의 기능은 무엇입니까

零下一度
零下一度원래의
2017-06-23 14:25:041222검색
<h2>Type 선언</h2> <p>코드를 보면 한 눈에 알 수 있습니다. </p> <pre class="brush:php;toolbar:false">class person {     public function age(int $age) : string     {         return 'Age is ' . $age;     } }</pre> <h2>네임스페이스 일괄 선언 및 키워드 사용</h2> <p>비혼합 모드</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{ Book, Ebook, Video}; use function Publishers\Packt\{ getBook, saveBook }; use const Publishers\Packt\{ COUNT, KEY };</pre> <p>혼합 모드</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{     Book,     Ebook,     Video,     function getBook,     function saveBook,     const COUNT,     const KEY };</pre> <p>복합 모드</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{     Paper\Book,     Electronic\Ebook,     Media\Video };</pre> <h2>익명 클래스</h2> <p>익명 클래스는 동시에 선언되어 사용되며, 동일한 기능을 갖습니다. 기타 클래스 따라서 기능적으로 차이점은 익명 클래스에는 클래스 이름이 없다는 것입니다. 구문은 다음과 같습니다: </p> <pre class="brush:php;toolbar:false">new class(argument) { definition };</pre> <p><em>익명 클래스에는 클래스 이름이 없지만 PHP 내부에서는 메모리 참조 주소 테이블에 전역적으로 고유한 이름이 할당됩니다. </em></p> <pre class="brush:php;toolbar:false">$name = new class('You') {     public function __construct($name)     {         echo $name;     } };</pre> <p>익명 클래스는 상위 클래스와 해당 메서드를 상속할 수 있습니다. </p> <pre class="brush:php;toolbar:false">class Packt {     protected $number;     public function __construct()     {         echo 'parent construct';     }     public function getNumber() : float     {         return $this->number;     } } $number = new class(5) extends Packt {     public function __construct(float $number)     {         parent::__construct();         $this->number = $number;     } }; echo $number->getNumber();</pre> <p>익명 클래스는 인터페이스를 상속할 수 있습니다. </p> <pre class="brush:php;toolbar:false">interface Publishers {     public function __construct(string name, string address);     public function getName();     public function getAddress(); } class packt {     protected $number;     protected $name;     protected $address;     public function ... } $info = new class('name', 'address') extends Packt implement Publishers {     public function __construct(string $name, string $address)     {         $this->name = $name;         $this->address = $address;     }     public function getName() : string     {         return $this->name;     }     public function getAddress() : string     {         return $this->address;     } } echo $info->getName() . ' ' . $info->getAddress();</pre> <p>익명 클래스는 클래스에 중첩될 수 있습니다. </p> <pre class="brush:php;toolbar:false">class Math {     public $first_number = 10;     public $second_number = 10;     public function add() : float     {         return $this->first_number + $this->second_number;     }     public function mutiply_sum()     {         return new class() extends Math         {             public function mutiply(float $third_number) : float             {                 return $this->add() * $third_number;             }         };     } } $math = new Math(); echo $math->mutiply_sum()->mutiply(2);</pre> <h2>기존 생성자를 버리세요</h2> <p>PHP4부터 생성자는 클래스 이름과 일치하는 이름을 지정하여 자신을 생성자로 선언할 수 있습니다. PHP7에서는 이러한 방식으로 생성자를 선언하는 것이 여전히 사용 가능하지만 그렇지 않습니다. 권장되지 않는 정보 출력 <code>사용되지 않음: 해당 클래스와 동일한 이름을 가진 메소드는 PHP의 향후 버전에서 생성자가 아닙니다....</code>, PHP7에서 권장됨 <code> __construct; ()</code>. <code>Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...</code>,PHP7中推荐使用 <code>__construct()</code>。</p> <h2>throwable接口</h2> <p>从PHP7开始,程序中的fatal错误都可以被截获,PHP7提供了throwable接口,异常与错误都继承于这个接口。</p> <h2>Error</h2> <p>现在大多数的fatal错误情况会抛出一个error实例,类似于截获异常,error实例可以被try/catch截获。</p> <pre class="brush:php;toolbar:false">try {     ... } catch(Error $e) {     echo $e->getMessage(); }</pre> <p><em>一些错误情况只有error的子实例会被抛出,例如 TypeError、DivisionByZeroError、ParseError等。</em></p> <h2><=>操作符</h2> <p><code><=></code>操作符将<code>==</code>、<code><</code>、<code>></code>三个比较操作符打包在了一起,具体使用规则如下。</p> <blockquote><p>操作符两边相等时返回 0<br>操作符左边小于右边时返回 -1<br>操作符左边大于右边时返回 1</p></blockquote> <h2>null合并运算符</h2> <p><code>??</code> 合并运算符,在第一操作数存在时可被直接返回,否则返回第二操作数。</p> <pre class="brush:php;toolbar:false">$title = $post['title'] ?? NULL; $title = $post['title'] ?? $get['title'] ?? 'No title';</pre> <h2>uniform变量语法</h2> <pre class="brush:php;toolbar:false">$first = ['name' => 'second']; $second = 'two'; echo $$first['name']; echo ${Sfirst['name']}; // PHP7 ... echo $object->$methods['title']; echo $object->{$methods['title']}; // PHP7</pre> <p>主要是因为PHP7与之前版本PHP的解析方式不一样,在PHP7中加上花括号就可以啦,就像上边代码这样,否则会报错。</p> <h2>常量数组</h2> <p>从PHP5.6开始常量数组可以用<code>const</code>关键字来声明,在PHP7中常量数组可以通过<code>define</code></p>throwable 인터페이스<h2></h2> PHP7부터 프로그램의 치명적인 오류를 차단할 수 있습니다. PHP7은 throwable 인터페이스를 제공하며 이 인터페이스에서 예외와 오류가 상속됩니다. <p></p>Error<h2></h2>이제 대부분의 치명적인 오류 조건에서는 가로채는 예외와 마찬가지로 오류 인스턴스를 try/catch로 가로챌 수 있습니다. <p></p> <pre class="brush:php;toolbar:false">const STORES = ['en', 'fr', 'ar']; // php5.6 define('STORES', ['en', 'fr', 'ar']); // php7</pre> <h2>일부 오류 상황에서는 TypeError, DivisionByZeroError, ParseError 등과 같은 오류의 하위 인스턴스만 발생합니다. </h2> <p></p><=>operator🎜🎜<code><=></code>연산자는 <code>==</code>, <code><</code>, <code> &gt ;</code>세 가지 비교 연산자가 함께 패키지되어 있습니다. 구체적인 사용 규칙은 다음과 같습니다. 🎜<blockquote>🎜연산자의 양쪽이 같으면 0을 반환합니다.<br/>연산자의 왼쪽이 오른쪽보다 작으면 -1을 반환합니다.<br/>연산자의 왼쪽이 더 크면 1을 반환합니다. 오른쪽보다🎜</blockquote>🎜null 병합 연산자🎜🎜< code>??</code> 병합 연산자는 첫 번째 피연산자가 있으면 직접 반환할 수 있고, 그렇지 않으면 두 번째 피연산자를 반환합니다. 🎜<pre class="brush:php;toolbar:false">// php7之前 switch (true) { case &#39;value&#39;: # code... break; default: # code... break; default: # code... break; } // php7 switch (true) { case &#39;value&#39;: # code... break; default: # code... break; }</pre>🎜균일한 변수 구문🎜<pre class="brush:php;toolbar:false">session_start([ &#39;cookie_lifetime&#39; => 3600,     'read_and_close' => true ]);🎜 주로 PHP7의 구문 분석 방법이 이전 버전의 PHP와 다르기 때문입니다. 위 코드처럼 PHP7에 중괄호를 추가하면 됩니다. 그렇지 않으면 오류가 발생합니다. 🎜🎜상수 배열🎜🎜PHP5.6부터는 <code>const</code> 키워드를 사용하여 상수 배열을 선언할 수 있습니다. PHP7에서는 <code>define</code> 함수를 통해 상수 배열을 초기화할 수 있습니다. 🎜<pre class="brush:php;toolbar:false">$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);</pre>🎜switch의 기본값🎜🎜PHP7 이전에는 switch 문에 여러 개의 기본값이 허용되었습니다. PHP7부터는 기본값이 하나만 있을 수 있으며, 그렇지 않으면 치명적인 수준의 오류가 발생합니다. 🎜rrreee🎜session_start 함수의 옵션 배열🎜🎜PHP7 이전에는 session을 사용할 때 먼저 session_start() 함수를 호출해야 하는데, 이 함수에는 전달할 매개변수가 없습니다. 모든 세션 관련 구성은 php.ini에 있습니다. PHP7부터 이 함수를 호출할 때 매개변수 옵션 배열을 전달할 수 있으며 이러한 설정 정보는 php.ini의 세션 구성을 재정의합니다. 🎜rrreee🎜unserialize 함수에 필터가 도입되었습니다🎜🎜unserialize()는 필터링 항목 없이 모든 유형의 객체를 역직렬화할 수 있습니다. 이는 안전하지 않습니다. PHP7은 unserialize()에 필터를 도입하고 기본 객체로 모든 유형의 역직렬화를 허용합니다. 🎜아아아아</code>

위 내용은 PHP7의 기능은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.