Table des matières
Préface
组件化开发
命名空间
命名冲突
解决办法
PSR 规范
namespace 操作符与__NAMESPACE__ 魔术常量
三种命名空间的导入
全局命名空间
多重导入与多个命名空间
导入常量、函数
文件包含
手动加载
自动加载
反射
后期静态绑定
trait
基本使用
重要性质
优先级
trait 函数冲突
Espace de noms
Conflit de noms
Solution
Spécification PSR
Opérateur d'espace de noms Avec __NAMESPACE__ constantes magiques
Importation de trois espaces de noms
Espace de noms global
Imports multiples et espaces de noms multiples
Importer des constantes et des fonctions
Inclusion de fichiers
Chargement manuel
Utilisation de base
Propriétés importantes
Priorité
重命名与访问控制
其他
总结
Maison cadre php Laravel Résumez la syntaxe PHP couramment utilisée dans Laravel

Résumez la syntaxe PHP couramment utilisée dans Laravel

Sep 09, 2021 am 11:28 AM
laravel php

Préface

Framework LaravelEn raison de sa conception composée de composants et de l'utilisation appropriée des modèles de conception, le framework lui-même est simple et facile à développer. Différent du framework de fonctions intégré de ThinkPHP (soit toutes les fonctions sont utilisées, soit aucune), Laravel utilise l'outil composer pour gérer les packages. Si vous souhaitez ajouter des fonctions, vous pouvez directement ajouter des composants. Par exemple, si vous écrivez un robot et utilisez le composant de collection de pages : composer require jaeger/querylistcomposer require jaeger/querylist

本文简要介绍 Laravel 中频繁用到的 PHP 特性与新语法,具体可参考。

组件化开发

Laravel 进行组件化开发,得益于遵循 PSR-4 规范的 composer 工具,其利用命名空间和自动加载来组织项目文件。更多参考:composer 自动加载机制

命名空间

命名冲突

在团队协作、引入第三方依赖代码时,往往可能会出现类、函数和接口重名的情况。比如:

<?php     
# google.php
class User 
{
    private $name;
}
Copier après la connexion
<?php     
# mine.php
// 引入第三方依赖
include &#39;google.php&#39;;

class User
{
    private $name;
}

$user = new User();    // 命名冲突
Copier après la connexion

因为同时定义了类 User 导致命名冲突:

Résumez la syntaxe PHP couramment utilisée dans Laravel

解决办法

从 PHP 5.3 开始引入,参考 PHP 手册 能知道命名空间有 2 个作用:避免命名冲突、保持命名简短。比如使用命名空间后:

<?php # google.php
namespace Google;

// 模拟第三方依赖
class User {
    private $name = &#39;google&#39;;

    public function getName() {
        echo $this->name . PHP_EOL;
    }
}
Copier après la connexion
<?php # mine.php
namespace Mine;

// 导入并命名别名
use Google as G;

// 导入文件使得 google.php 命名空间变为 mine.php 的子命名空间
include &#39;google.php&#39;;

/* 避免了命名冲突 */
class User
{
    private $name = &#39;mine&#39;;

    public function getName() {
        echo $this->name . PHP_EOL;
    }
}

/* 保持了命名简短 */
// 如果没有命名空间,为了类名也不冲突,可能会出现这种函数名
// $user = new Google_User();
// Zend 风格并不提倡
$user = new G\User();

// 为了函数名也不冲突,可能会出现这种函数名
// $user->google_get_name()
$user->getName();

$user = new User();
$user->getName();
Copier après la connexion

运行:

$ php demo.php
google
mine
Copier après la connexion

PSR 规范

其实 namespace 与文件名无关,但按 PSR 标准要求:命名空间与文件路径一致 & 文件名与类名一致。比如 Laravel 默认生成的 laravel-demo/app/Http/Controllers/Auth/LoginController.php,其命名空间为 AppHttpControllersAuth & 类名为 LoginController

遵循规范,上边的 mine.phpgoogle.php 都应叫 User.php

namespace 操作符与__NAMESPACE__ 魔术常量

...
// $user = new User();
$user = new namespace\User();    // 值为当前命名空间
$user->getName();

echo __NAMESPACE__ . PHP_EOL;    // 直接获取当前命名空间字符串    // 输出 Mine
Copier après la connexion

三种命名空间的导入

<?php namespace CurrentNameSpace;

// 不包含前缀
$user = new User();        # CurrentNameSpace\User();

// 指定前缀
$user = new Google\User();    # CurrentNameSpace\Google\User();

// 根前缀
$user = new \Google\User();    # \Google\User();
Copier après la connexion

全局命名空间

如果引用的类、函数没有指定命名空间,则会默认在当在 __NAMESPACE__下寻找。若要引用全局类:

<?php namespace Demo;

// 均不会被使用到
function strlen() {}
const INI_ALL = 3;
class Exception {}

$a = \strlen(&#39;hi&#39;);         // 调用全局函数 strlen
$b = \CREDITS_GROUP;          // 访问全局常量 CREDITS_GROUP
$c = new \Exception(&#39;error&#39;);   // 实例化全局类 Exception
Copier après la connexion

多重导入与多个命名空间

// use 可一次导入多个命名空间
use Google,
    Microsoft;

// 良好实践:每行一个 use
use Google;
use Microsoft;
Copier après la connexion
<?php // 一个文件可定义多个命名空间
namespace Google {
    class User {}
}    
    
namespace Microsoft {
    class User {}
}   

// 良好实践:“一个文件一个类”
Copier après la connexion

导入常量、函数

从 PHP 5.6 开始,可使用 use functionuse const 分别导入函数和常量使用:

# google.php
const CEO = 'Sundar Pichai';
function getMarketValue() {
    echo '770 billion dollars' . PHP_EOL;
}
Copier après la connexion
# mine.php
use function Google\getMarketValue as thirdMarketValue;
use const Google\CEO as third_CEO;

thirdMarketValue();
echo third_CEO;
Copier après la connexion

运行:

$ php mine.php
google
770 billion dollars
Sundar Pichaimine
Mine
Copier après la connexion

文件包含

手动加载

使用 includerequire 引入指定的文件,(字面理解)需注意 require 出错会报编译错误中断脚本运行,而 include 出错只会报 warning 脚本继续运行。

include 文件时,会先去 php.ini 中配置项 include_path 指定的目录找,找不到才在当前目录下找:

Résumez la syntaxe PHP couramment utilisée dans Laravel

<?php     
// 引入的是 /usr/share/php/System.php
include &#39;System.php&#39;;
Copier après la connexion

自动加载

void __autoload(string $class )  能进行类的自动加载,但一般都使用 spl_autoload_register 手动进行注册:

<?php // 自动加载子目录 classes 下 *.class.php 的类定义
function __autoload($class) {
    include &#39;classes/&#39; . $class . &#39;.class.php&#39;;
}

// PHP 5.3 后直接使用匿名函数注册
$throw = true;        // 注册出错时是否抛出异常
$prepend = false;    // 是否将当前注册函数添加到队列头

spl_autoload_register(function ($class) {
    include &#39;classes/&#39; . $class . &#39;.class.php&#39;;
}, $throw, $prepend);
Copier après la connexion

在 composer 生成的自动加载文件 laravel-demo/vendor/composer/autoload_real.php  中可看到:

class ComposerAutoloaderInit8b41a
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            // 加载当前目录下文件
            require __DIR__ . '/ClassLoader.php';
        }
    }
    
     public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }
    
        // 注册自己的加载器
        spl_autoload_register(array('ComposerAutoloaderInit8b41a6', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit8b41a6a', 'loadClassLoader'));

        ...
     }
 
    ...
}
Copier après la connexion

这里只提一下,具体 Laravel 整体是怎么做自动加载的,后边的文章会细说。

反射

参考 PHP 手册,可简单的理解为在运行时获取对象的完整信息。反射有 5 个类:

ReflectionClass     // 解析类名
ReflectionProperty     // 获取和设置类属性的信息(属性名和值、注释、访问权限)
ReflectionMethod     // 获取和设置类函数的信息(函数名、注释、访问权限)、执行函数等
ReflectionParameter    // 获取函数的参数信息
ReflectionFunction    // 获取函数信息
Copier après la connexion

比如 ReflectionClass 的使用:

<?php class User
{
    public $name;
    public $age;

    public function __construct($name = &#39;Laruence&#39;, $age = 35) {
        $this->name = $name;
        $this->age  = $age;
    }

    public function intro() {
        echo '[name]: ' . $this->name . PHP_EOL;
        echo '[age]: '  . $this->age  . PHP_EOL;
    }
}

reflect('User');

// ReflectionClass 反射类使用示例
function reflect($class) {
    try {
        $ref = new ReflectionClass($class);
        // 检查是否可实例化
        // interface、abstract class、 __construct() 为 private 的类均不可实例化
        if (!$ref->isInstantiable()) {
            echo "[can't instantiable]: ${class}\n";
        }

        // 输出属性列表
        // 还能获取方法列表、静态常量等信息,具体参考手册
        foreach ($ref->getProperties() as $attr) {
            echo $attr->getName() . PHP_EOL;
        }

        // 直接调用类中的方法,个人认为这是反射最好用的地方
        $obj = $ref->newInstanceArgs();
        $obj->intro();
    } catch (ReflectionException $e) {
            // try catch 机制真的不优雅
            // 相比之下 Golang 的错误处理虽然繁琐,但很简洁
        echo '[reflection exception: ]' . $e->getMessage();
    }
}
Copier après la connexion

运行:

$ php reflect.php
name
age
[name]: Laruence
[age]: 35
Copier après la connexion

其余 4 个反射类参考手册 demo 即可。

后期静态绑定

参考 PHP 手册,先看一个例子:

<?php class Base
{
        // 后期绑定不局限于 static 方法
    public static function call() {
        echo &#39;[called]: &#39; . __CLASS__ . PHP_EOL;
    }

    public static function test() {
        self::call();        // self   取值为 Base  直接调用本类中的函数
        static::call();        // static 取值为 Child 调用者
    }
}

class Child extends Base
{
    public static function call() {
        echo &#39;[called]: &#39; . __CLASS__ . PHP_EOL;
    }
}


Child::test();
Copier après la connexion

输出:

$ php late_static_bind.php
[called]: Base
[called]: Child
Copier après la connexion

在对象实例化时,self:: 会实例化根据定义所在的类,static:: 会实例化调用它的类。

trait

基本使用

参考 PHP 手册,PHP 虽然是单继承的,但从 5.4 后可通过 trait 水平组合“类”,来实现“类”的多重继承,其实就是把重复的函数拆分成 triat 放到不同的文件中,通过 use 关键字按需引入、组合。可类比 Golang 的 struct 填鸭式组合来实现继承。比如:

<?php class DemoLogger
{
    public function log($message, $level) {
        echo "[message]: $message", PHP_EOL;
        echo "[level]: $level", PHP_EOL;
    }
}

trait Loggable
{
    protected $logger;

    public function setLogger($logger) {
        $this->logger = $logger;
    }

    public function log($message, $level) {
        $this->logger->log($message, $level);
    }
}

class Foo
{
        // 直接引入 Loggable 的代码片段
    use Loggable;
}

$foo = new Foo;
$foo->setLogger(new DemoLogger);
$foo->log('trait works', 1);
Copier après la connexion

运行:

$ php trait.php
[message]: trait works
[level]: 1
Copier après la connexion

更多参考:我所理解的 PHP Trait

重要性质

优先级

当前类的函数会覆盖 trait 的同名函数,trait 会覆盖父类的同名函数( use trait 相当于当前类直接覆写了父类的同名函数)

trait 函数冲突

同时引入多个 trait 可用 ,

Cet article présente brièvement les fonctionnalités PHP et la nouvelle syntaxe fréquemment utilisées dans Laravel. Veuillez vous y référer pour plus de détails. . 🎜🎜Développement basé sur les composants🎜🎜Laravel effectue un développement basé sur les composants, grâce à l'outil composer qui suit la spécification PSR-4, qui utilise des espaces de noms et le chargement automatique pour organiser les fichiers de projet. Plus de référence : mécanisme de chargement automatique du compositeur🎜

Espace de noms

Conflit de noms

🎜Lors de la collaboration en équipe et de l'introduction de code dépendant de tiers, des noms en double de classes, de fonctions et d'interfaces peuvent souvent se produire. Par exemple : 🎜
<?php trait Apple
{
    public function getCEO() {
        echo &#39;[Apple CEO]: Tim Cook&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[Apple Market Value]: 953 billion&#39;, PHP_EOL;
    }
}


trait MicroSoft
{
    public function getCEO() {
        echo &#39;[MicroSoft CEO]: Satya Nadella&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[MicroSoft Market Value]: 780 billion&#39;, PHP_EOL;
    }

    abstract public function MadeGreatOS();

    static public function staticFunc() {
        echo &#39;[MicroSoft Static Function]&#39;, PHP_EOL;
    }

    public function staticValue() {
        static $v;
        $v++;
        echo &#39;[MicroSoft Static Value]: &#39; . $v, PHP_EOL;
    }
}


// Apple 最终登顶,成为第一家市值超万亿美元的企业
trait Top
{
    // 处理引入的 trait 之间的冲突
    use Apple, MicroSoft {
        Apple::getCEO insteadof MicroSoft;
        Apple::getMarketValue insteadof MicroSoft;
    }
}


class Linux
{
    use Top {
            // as 关键字可以重命名函数、修改权限控制
        getCEO as private noCEO;
    }

    // 引入后必须实现抽象方法
    public function MadeGreatOS() {
        echo &#39;[Linux Already Made]&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[Linux Market Value]: Infinity&#39;, PHP_EOL;
    }
}

$linux = new Linux();
// 和 extends 继承一样
// 当前类中的同名函数也会覆盖 trait 中的函数
$linux->getMarketValue();

// trait 中可以定义静态方法
$linux::staticFunc();

// 在 trait Top 中已解决过冲突,输出库克
$linux->getCEO();
// $linux->noCEO();        // Uncaught Error: Call to private method Linux::noCEO() 

// trait 中可以定义静态变量
$linux->staticValue();
$linux->staticValue();
Copier après la connexion
Copier après la connexion
$ php trait.php
[Linux Market Value]: Infinity
[MicroSoft Static Function]
[Apple CEO]: Tim Cook
[MicroSoft Static Value]: 1
[MicroSoft Static Value]: 2
Copier après la connexion
Copier après la connexion
🎜La classe User étant définie en même temps, un conflit de nom se produit : 🎜🎜Résumez la syntaxe PHP couramment utilisée dans Laravel🎜

Solution

🎜Introduit à partir de PHP 5.3, au manuel PHP pour savoir que les espaces de noms ont 2 fonctions : éviter les🎜 conflits de noms 🎜, garder les 🎜noms courts🎜. Par exemple, après avoir utilisé l'espace de noms : 🎜rrreeerrreee🎜Exécuter : 🎜rrreee

Spécification PSR

🎜En fait, l'espace de noms n'a rien à voir avec le nom du fichier, mais selon les exigences de la norme PSR : l'espace de noms est cohérent avec le chemin du fichier et le nom du fichier est cohérent avec le nom de la classe. Par exemple, le laravel-demo/app/Http/Controllers/Auth/LoginController.php généré par Laravel par défaut a un espace de noms de AppHttpControllersAuth et un nom de classe de LoginController code>🎜🎜Suivez les spécifications, les <code>mine.php et google.php ci-dessus appellent tous deux User.php🎜

Opérateur d'espace de noms Avec __NAMESPACE__ constantes magiques

rrreee

Importation de trois espaces de noms

rrreee

Espace de noms global

🎜Si la classe ou la fonction référencée ne spécifie pas un espace de nom, il sera recherché sous __NAMESPACE__ par défaut. Pour référencer une classe globale : 🎜rrreee

Imports multiples et espaces de noms multiples

rrreeerrreee

Importer des constantes et des fonctions

🎜À partir de PHP 5.6, vous pouvez utiliser utiliser la fonction et utilisez const pour importer respectivement des fonctions et des constantes. Utilisez : 🎜rrreeerrreee🎜Exécutez : 🎜rrreee

Inclusion de fichiers

Chargement manuel

🎜Utilisez include. ou <code>require introduit le fichier spécifié. (Interprétation littérale) Veuillez noter que si une erreur require se produit, une erreur de compilation sera signalée et le script sera interrompu, tandis qu'une erreur d'inclusion ne fera que signaler un avertissement et le script continuera à s'exécuter. 🎜🎜Lors de l'inclusion d'un fichier, il ira d'abord dans le répertoire spécifié par l'élément de configuration include_path dans php.ini pour rechercher. S'il ne le trouve pas, il recherchera dans le répertoire actuel : 🎜🎜. Résumez la syntaxe PHP couramment utilisée dans Laravel🎜rrreee Chargement automatique 🎜 void __autoload(string $class) peut charger automatiquement les classes, mais spl_autoload_register est généralement utilisé pour s'inscrire manuellement : 🎜rrreee🎜Dans le fichier de chargement automatique généré par composer laravel -demo/vendor/composer/autoload_real. Vous pouvez le voir en php : 🎜rrreee🎜Je ne le mentionnerai ici, plus précisément comment Laravel effectue le chargement automatique dans son ensemble, qui sera expliqué en détail dans l'article suivant. . 🎜🎜Réflexion🎜🎜Référez-vous au manuel PHP, qui peut être simplement compris comme l'obtention des informations complètes de l'objet au moment de l'exécution. Il existe 5 classes de réflexion : 🎜rrreee🎜Par exemple, l'utilisation de ReflectionClass : 🎜rrreee🎜Run : 🎜rrreee🎜Les 4 classes de réflexion restantes peuvent se référer à la démo manuelle. 🎜🎜Liaison statique ultérieure🎜🎜Référez-vous au manuel PHP et regardez d'abord un exemple : 🎜rrreee🎜Sortie : 🎜rrreee🎜Lorsque l'objet est instancié, self:: instanciera la classe en fonction de la définition, static:: instanciera la classe qui l'appelle. 🎜🎜trait🎜

Utilisation de base

🎜Référez-vous au manuel PHP. Bien que PHP soit un héritage unique, à partir de la version 5.4, les "classes" peuvent être combinées horizontalement via des traits pour obtenir un héritage multiple de "classes". , il s'agit de fonctions répétées divisées en triats et placées dans différents fichiers, et elles sont introduites et combinées selon les besoins via le mot-clé use. L'héritage peut être implémenté par analogie avec la combinaison de bachotage de structures de Golang. Par exemple : 🎜rrreee🎜Exécuter : 🎜rrreee🎜Plus de référence : Ce que je comprends du trait PHP🎜

Propriétés importantes

Priorité

🎜La fonction de la classe actuelle remplacera la fonction du trait du même nom, le trait écrasera la fonction du même nom de la classe parent (use trait équivaut à la classe actuelle écrasant directement la fonction du même nom de la classe parent)🎜Conflit de fonctions de trait🎜Introduction de plusieurs traits en même temps Peut être séparé par , , c'est-à-dire un héritage multiple. 🎜

多个 trait 有同名函数时,引入将发生命名冲突,使用 insteadof 来指明使用哪个 trait 的函数。

重命名与访问控制

使用 as 关键字可以重命名的 trait 中引入的函数,还可以修改其访问权限。

其他

trait 类似于类,可以定义属性、方法、抽象方法、静态方法和静态属性。

下边的苹果、微软和 Linux 的小栗子来说明:

<?php trait Apple
{
    public function getCEO() {
        echo &#39;[Apple CEO]: Tim Cook&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[Apple Market Value]: 953 billion&#39;, PHP_EOL;
    }
}


trait MicroSoft
{
    public function getCEO() {
        echo &#39;[MicroSoft CEO]: Satya Nadella&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[MicroSoft Market Value]: 780 billion&#39;, PHP_EOL;
    }

    abstract public function MadeGreatOS();

    static public function staticFunc() {
        echo &#39;[MicroSoft Static Function]&#39;, PHP_EOL;
    }

    public function staticValue() {
        static $v;
        $v++;
        echo &#39;[MicroSoft Static Value]: &#39; . $v, PHP_EOL;
    }
}


// Apple 最终登顶,成为第一家市值超万亿美元的企业
trait Top
{
    // 处理引入的 trait 之间的冲突
    use Apple, MicroSoft {
        Apple::getCEO insteadof MicroSoft;
        Apple::getMarketValue insteadof MicroSoft;
    }
}


class Linux
{
    use Top {
            // as 关键字可以重命名函数、修改权限控制
        getCEO as private noCEO;
    }

    // 引入后必须实现抽象方法
    public function MadeGreatOS() {
        echo &#39;[Linux Already Made]&#39;, PHP_EOL;
    }

    public function getMarketValue() {
        echo &#39;[Linux Market Value]: Infinity&#39;, PHP_EOL;
    }
}

$linux = new Linux();
// 和 extends 继承一样
// 当前类中的同名函数也会覆盖 trait 中的函数
$linux->getMarketValue();

// trait 中可以定义静态方法
$linux::staticFunc();

// 在 trait Top 中已解决过冲突,输出库克
$linux->getCEO();
// $linux->noCEO();        // Uncaught Error: Call to private method Linux::noCEO() 

// trait 中可以定义静态变量
$linux->staticValue();
$linux->staticValue();
Copier après la connexion
Copier après la connexion

运行:

$ php trait.php
[Linux Market Value]: Infinity
[MicroSoft Static Function]
[Apple CEO]: Tim Cook
[MicroSoft Static Value]: 1
[MicroSoft Static Value]: 2
Copier après la connexion
Copier après la connexion

总结

本节简要提及了命名空间、文件自动加载、反射机制与 trait 等,Laravel 正是恰如其分的利用了这些新特性,才实现了组件化开发、服务加载等优雅的特性。

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

See all articles