Maison > développement back-end > PHP7 > Une brève analyse de l'utilisation des classes anonymes en PHP7

Une brève analyse de l'utilisation des classes anonymes en PHP7

青灯夜游
Libérer: 2023-02-18 10:20:01
avant
2199 Les gens l'ont consulté

Après PHP7, la fonctionnalité de classe anonyme a été ajoutée à PHP. Les classes anonymes et les méthodes anonymes font de PHP un langage plus moderne et rendent notre travail de développement de code de plus en plus pratique. L'article suivant vous présentera brièvement l'utilisation des classes anonymes PHP7. J'espère qu'il vous sera utile !

Une brève analyse de l'utilisation des classes anonymes en PHP7

Une classe anonyme est comme une classe qui n'est pas définie à l'avance, mais qui est instanciée directement lorsqu'elle est définie.

// 直接定义
$objA = new class{
    public function getName(){
        echo "I'm objA";
    }
};
$objA->getName();
 
 
// 方法中返回
function testA(){
    return new class{
        public function getName(){
            echo "I'm testA's obj";
        }
    };
}
 
$objB = testA();
$objB->getName();
 
 
// 作为参数
function testB($testBobj){
    echo $testBobj->getName();
}
 
testB(new class{
        public function getName(){
            echo "I'm testB's obj";
        }
});
Copier après la connexion
// 继承、接口、访问控制等
class A{
    public $propA = 'A';
    public function getProp(){
        echo $this->propA;
    }
}
trait B{
    public function getName(){
        echo 'trait B';
    }
}
interface C{
    public function show();
}
$p4 = 'b4';
$objC = new class($p4) extends A implements C{
    use B;
    private $prop1 = 'b1';
    protected $prop2 = 'b2';
    public $prop3 = 'b3';
 
    public function __construct($prop4){
        echo $prop4;
    }
 
    public function getProp(){
        parent::getProp();
        echo $this->prop1, '===', $this->prop2, '===', $this->prop3, '===', $this->propA;
        $this->getName();
        $this->show();
    }
    public function show(){
        echo 'show';
    }
};
 
$objC->getProp();
 
// 匿名类的名称是通过引擎赋予的
var_dump(get_class($objC));
 
// 声明的同一个匿名类,所创建的对象都是这个类的实例
var_dump(get_class(testA()) == get_class(testA()));
Copier après la connexion

Les membres statiques des classes anonymes sont les mêmes que les classes ordinaires. Les membres statiques appartiennent à la classe plutôt qu'à l'instance.

// 静态变量
function testD()
{
    return new class{
        public static $name;
    };
}
$objD1 = testD();
$objD1::$name = 'objD1';
 
$objD2 = testD();
$objD2::$name = 'objD2';
 
echo $objD1::$name;
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Étiquettes associées:
source:csdn.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal