gpt4 book ai didi

php - 如何使用别名调用特征方法

转载 作者:可可西里 更新时间:2023-10-31 22:48:41 26 4
gpt4 key购买 nike

我试图在一个名为 Page 的类中放置一个特征。我还需要重命名一个特征函数,这样它就不会与现有的类函数发生冲突。我以为我成功地完成了所有这些,但是我得到一个指向错误位置的错误?!

调用未定义函数 App\Pages\Models\myTraitDefaultScope()

我也尝试过:MyTrait\defaultScope($query) 而不是尝试重命名冲突函数。但我随后收到以下错误:

调用未定义函数 App\MyTrait\defaultScope()

下面是包含在单独文件中的特征和类。

<?php
namespace App;

use Illuminate\Support\Facades\Auth;

trait MyTrait{
public function defaultScope($query){
return $query->where('active', '1')
}
}

.

<?php namespace Modules\Pages\Models;
use Illuminate\Database\Eloquent\Model;
use App\MyTrait;

class Page extends Model {

use MyTrait{
MyTrait::defaultScope as myTraitDefaultScope;
}

public function defaultScope($query){
return myTraitDefaultScope($query);
}
}

我在这方面并不是那么出色,所以如果我有严重错误,请不要开枪 :)

最佳答案

当你在你的类中“使用”一个特征时,这个类继承这个特征的所有方法和属性,就像它扩展了一个抽象类或接口(interface)一样

因此,MyTrait 的这个方法:

public function defaultScope($query){
return $query->where('active', '1')
}

将被你的Page类继承

因为您已将此方法别名为:myTraitDefaultScope,要调用该方法,您应该以与调用 Page 类的所有其他方法相同的方式调用它:

public function defaultScope($query){

//call the method of the class
return $this->myTraitDefaultScope($query);
}

关于php - 如何使用别名调用特征方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363431/

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