<h2>Déclaration de type</h2>
<p>En regardant le code, c'est clair en un coup d'œil. </p>
<pre class="brush:php;toolbar:false">class person
{
public function age(int $age) : string
{
return 'Age is ' . $age;
}
}</pre>
<h2>Déclaration par lots de l'espace de noms et utilisation du mot-clé</h2>
<p>Mode non mixte</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>Mode mixte</p>
<pre class="brush:php;toolbar:false">use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
};</pre>
<p>Mode composite</p>
<pre class="brush:php;toolbar:false">use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
};</pre>
<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>
<pre class="brush:php;toolbar:false">new class(argument) { definition };</pre>
<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>
<pre class="brush:php;toolbar:false">$name = new class('You') {
public function __construct($name)
{
echo $name;
}
};</pre>
<p>Les classes anonymes peuvent hériter de la classe parent et de ses méthodes. </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>Les classes anonymes peuvent hériter des interfaces. </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>Les classes anonymes peuvent être imbriquées au sein d'une classe. </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>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>
<pre class="brush:php;toolbar:false">try
{
...
} catch(Error $e)
{
echo $e->getMessage();
}</pre>
<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>
<pre class="brush:php;toolbar:false">$title = $post['title'] ?? NULL;
$title = $post['title'] ?? $get['title'] ?? 'No title';</pre>
<h2>Syntaxe des variables uniforme </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> 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>
<pre class="brush:php;toolbar:false">const STORES = ['en', 'fr', 'ar']; // php5.6
define('STORES', ['en', 'fr', 'ar']); // php7</pre>
<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>
<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>
<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>
<pre class="brush:php;toolbar:false">session_start([
'cookie_lifetime' => 3600,
'read_and_close' => true
]);</pre>
<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>
<pre class="brush:php;toolbar:false">$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);</pre>
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!