<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> > ;</code>세 가지 비교 연산자가 함께 패키지되어 있습니다. 구체적인 사용 규칙은 다음과 같습니다. 🎜<blockquote>🎜연산자의 양쪽이 같으면 0을 반환합니다.<br/>연산자의 왼쪽이 오른쪽보다 작으면 -1을 반환합니다.<br/>연산자의 왼쪽이 더 크면 1을 반환합니다. 오른쪽보다🎜</blockquote>🎜null 병합 연산자🎜🎜< code>??</code> 병합 연산자는 첫 번째 피연산자가 있으면 직접 반환할 수 있고, 그렇지 않으면 두 번째 피연산자를 반환합니다. 🎜<pre class="brush:php;toolbar:false">// php7之前
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
default:
# code...
break;
}
// php7
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
}</pre>🎜균일한 변수 구문🎜<pre class="brush:php;toolbar:false">session_start([
'cookie_lifetime' => 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!