Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Analyse der Verwendung anonymer Klassen in PHP7

Eine kurze Analyse der Verwendung anonymer Klassen in PHP7

青灯夜游
青灯夜游nach vorne
2022-07-27 14:26:542095Durchsuche

Nach PHP7 wurde PHP um die Funktion „Anonyme Klassen“ erweitert. Anonyme Klassen und anonyme Methoden machen PHP zu einer moderneren Sprache und machen unsere Codeentwicklung immer komfortabler. Der folgende Artikel wird Sie kurz in die Verwendung anonymer PHP7-Klassen einführen. Ich hoffe, er wird Ihnen hilfreich sein!

Eine kurze Analyse der Verwendung anonymer Klassen in PHP7

Eine anonyme Klasse ist wie eine Klasse, die nicht im Voraus definiert wird, sondern direkt bei der Definition instanziiert wird.

// 直接定义
$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";
        }
});
// 继承、接口、访问控制等
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()));

Statische Mitglieder in anonymen Klassen sind die gleichen wie normale Klassen und gehören zur Klasse und nicht zur Instanz.

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

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Verwendung anonymer Klassen in PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen