<h2>Déclaration de type</h2>
<p>En regardant le code, c'est clair en un coup d'œil. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class person
{
public function age(int $age) : string
{
return 'Age is ' . $age;
}
}</pre><div class="contentsignin">Copier après la connexion</div></div>
<h2>Déclaration par lots de l'espace de noms et utilisation du mot-clé</h2>
<p>Mode non mixte</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<p>Mode mixte</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
};</pre><div class="contentsignin">Copier après la connexion</div></div>
<p>Mode composite</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
};</pre><div class="contentsignin">Copier après la connexion</div></div>
<h2>Classe anonyme</h2>
<p>Les classes anonymes sont déclarées et utilisées en même temps et ont toutes les fonctions des autres classes. La différence est que les classes anonymes n'ont pas de nom de classe. La syntaxe est la suivante : </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">new class(argument) { definition };</pre><div class="contentsignin">Copier après la connexion</div></div>
<p><em>Les classes anonymes n'ont pas de nom de classe, mais dans PHP, elles se verront attribuer un nom globalement unique dans la table d'adresses de référence mémoire. </em></p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$name = new class('You') {
public function __construct($name)
{
echo $name;
}
};</pre><div class="contentsignin">Copier après la connexion</div></div>
<p>Les classes anonymes peuvent hériter de la classe parent et de ses méthodes. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<p>Les classes anonymes peuvent hériter des interfaces. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<p>Les classes anonymes peuvent être imbriquées au sein d'une classe. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<h2>Abandonnez le constructeur à l'ancienne </h2>
<p> À partir de PHP4, le constructeur peut se déclarer comme constructeur en le nommant de manière cohérente avec le nom de la classe. En PHP7, le constructeur est déclaré dans. de cette façon. Il peut toujours être utilisé, mais ce n'est pas recommandé et affichera le message obsolète <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> Il est recommandé d'utiliser <code>__construct()</code> en PHP7. </p>
<h2>interface jetable </h2>
<p> À partir de PHP7, les erreurs fatales dans le programme peuvent être interceptées. PHP7 fournit l'interface jetable, et les exceptions et erreurs sont héritées de cette interface. </p>
<h2>Erreur</h2>
<p>Désormais, la plupart des conditions d'erreur fatales généreront une instance d'erreur. Semblable aux exceptions interceptées, les instances d'erreur peuvent être interceptées par try/catch. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">try
{
...
} catch(Error $e)
{
echo $e->getMessage();
}</pre><div class="contentsignin">Copier après la connexion</div></div>
<p><em>Seules les sous-instances d'erreur seront générées dans certaines situations d'erreur, telles que TypeError, DivisionByZeroError, ParseError, etc. L'opérateur </em></p>
<h2><=> </h2>
<p><code><=></code> regroupe les trois opérateurs de comparaison <code>==</code>, <code><</code> et <code>></code> ensemble, spécifiquement. Les règles d'utilisation sont comme suit. </p>
<blockquote><p>Renvoie 0 lorsque les deux côtés de l'opérateur sont égaux<br>Renvoie -1 lorsque le côté gauche de l'opérateur est inférieur au côté droit<br>Renvoie 1 lorsque le côté gauche de l'opérateur est supérieur au côté droit</p></blockquote>
<h2>Opérateur de fusion nul </h2>
<p><code>??</code> est un opérateur de fusion qui peut être renvoyé directement lorsque le premier opérande existe, sinon il renvoie le deuxième opérande. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$title = $post['title'] ?? NULL;
$title = $post['title'] ?? $get['title'] ?? 'No title';</pre><div class="contentsignin">Copier après la connexion</div></div>
<h2>Syntaxe des variables uniforme </h2>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<p> Principalement parce que la méthode d'analyse de PHP7 est différente de la version précédente de PHP. Ajoutez simplement des accolades dans PHP7, tout comme le code ci-dessus. manière, sinon une erreur sera signalée. </p>
<h2>Tableau constant</h2>
<p>À partir de PHP5.6, les tableaux constants peuvent être déclarés à l'aide du mot-clé <code>const</code>. En PHP7, les tableaux constants peuvent être initialisés via la fonction <code>define</code>. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">const STORES = ['en', 'fr', 'ar']; // php5.6
define('STORES', ['en', 'fr', 'ar']); // php7</pre><div class="contentsignin">Copier après la connexion</div></div>
<h2>valeur par défaut dans switch </h2>
<p>Avant PHP7, plusieurs valeurs par défaut étaient autorisées dans l'instruction switch À partir de PHP7, il ne peut y avoir qu'une seule valeur par défaut, sinon cela se produira. Erreur de niveau fatale. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div>
<h2>Tableau d'options dans la fonction session_start</h2>
<p>Avant PHP7, lors de l'utilisation de session, vous devez d'abord appeler la fonction session_start(), et cette fonction n'a aucun paramètre à passer, tous liés à la session. les configurations sont toutes dans le fichier php.ini. À partir de PHP7, vous pouvez transmettre un tableau d'options de paramètres lors de l'appel de cette fonction. Ces informations de configuration remplaceront la configuration de session dans php.ini. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">session_start([
'cookie_lifetime' => 3600,
'read_and_close' => true
]);</pre><div class="contentsignin">Copier après la connexion</div></div>
<h2>La fonction unserialize introduit des filtres </h2>
<p>unserialize() peut désérialiser tout type d'objet sans aucun élément de filtre, ce qui est dangereux. PHP7 introduit des filtres dans unserialize() et permet la désérialisation de. tous les types d'objets par défaut. </p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);</pre><div class="contentsignin">Copier après la connexion</div></div>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!