gpt4 book ai didi

php - Trait 中的 insteadof 关键字如何工作

转载 作者:可可西里 更新时间:2023-11-01 13:42:30 26 4
gpt4 key购买 nike

我刚刚阅读了关于特征以及如何在以逗号分隔的相同 php 代码中使用多个 php 特征。但是,我不理解用于在两个特征具有相同功能的情况下解决冲突的 insteadof 关键字的概念。任何人都可以解释 insteadof 关键字是如何工作的以及如何使用它来告诉引擎我愿意使用特征 A 的函数 hello() 而不是特征 B 的函数,因为有两个特征 A 和 B 以及一个函数 hello( ) 在这两个特征中。

最佳答案

解释

根据 Traits Documentation ,当你在多个特征中有相同的方法时,那么你可以通过使用 insteadof 运算符显式地 Bootstrap 使用特定特征的方法。引用下面从上面链接借用的例子,这里,当 $t->smallTalk() 被调用时,它调用 trait B 中的 smallTalk 方法而不是 trait A 这正是 insteadof 运算符已被用于此处。由于 Class Talker 使用特征 A、B,并且两个特征都有 smallTalk() 方法,我们明确告诉它使用特征 B 的 smallTalk

例子

<?php
trait A {
public function smallTalk() {
echo 'a';
}
public function bigTalk() {
echo 'A';
}
}

trait B {
public function smallTalk() {
echo 'b';
}
public function bigTalk() {
echo 'B';
}
}

class Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
}
}

class Aliased_Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
B::bigTalk as talk;
}
}

$t = new Talker;
$t->smallTalk();
$t->bigTalk();

输出

bA

我希望这已经消除了您的困惑。

关于php - Trait 中的 insteadof 关键字如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com