gpt4 book ai didi

PHP 类使用与特征函数相同的名称

转载 作者:行者123 更新时间:2023-12-04 16:38:36 25 4
gpt4 key购买 nike

我有以下代码作为示例。

trait sampletrait{
function hello(){
echo "hello from trait";
}
}

class client{
use sampletrait;

function hello(){
echo "hello from class";
//From within here, how do I call traits hello() function also?
}
}

我可以把所有细节都说明为什么这是必要的,但我想让这个问题保持简单。由于我的特殊情况,从类客户端扩展不是这里的答案。

是否可以让特征与使用它的类具有相同的函数名称,但除了类函数之外还调用特征函数?

目前它只会使用 classes 函数(因为它似乎覆盖了特征)

最佳答案

你可以这样做:

class client{
use sampletrait {
hello as protected sampletrait_hello;
}

function hello(){
$this->sampletrait_hello();
echo "hello from class";
}
}

编辑 :
哎呀,忘了 $this->(感谢 JasonBoss)

编辑2:
刚刚对“重命名”特征函数做了一些研究。

如果您重命名一个函数但不覆盖另一个函数(参见示例),则两个函数都将存在(php 7.1.4):
trait T{
public function f(){
echo "T";
}
}

class C{
use T {
f as public f2;
}
}

$c = new C();
$c->f();
$c->f2();

您只能更改可见性:
trait T{
public function f(){
echo "T";
}
}

class C{
use T {
f as protected;
}
}

$c->f();// Won't work

关于PHP 类使用与特征函数相同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702337/

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