Php 如何使用别名调用trait方法

Php 如何使用别名调用trait方法,php,class,laravel,namespaces,traits,Php,Class,Laravel,Namespaces,Traits,我试图在一个名为Page的类中放置一个特性。我还需要重命名一个trait函数,这样它就不会与现有的类函数冲突。我以为我成功地完成了所有这一切,但我得到了一个指向错误位置的错误 调用未定义的函数App\Pages\Models\myTraitDefaultScope() 我也尝试过:MyTrait\defaultScope($query)而不是尝试重命名冲突函数。但我得到了以下错误: 调用未定义的函数App\MyTrait\defaultScope() 下面是包含在单独文件中的trait和clas

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

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

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

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

下面是包含在单独文件中的trait和class

<?php
namespace App;

use Illuminate\Support\Facades\Auth;

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

当您使用trait时。因此它指向当前或父类。因此,调用任何方法都应该像$this->method($params);语法

当您在类中“使用”trait时,该类继承该trait的所有方法和属性,就像它在扩展抽象类或接口一样

因此,
MyTrait
的这种方法:

public function defaultScope($query){
    return $query->where('active', '1')
}
将由您的
页面继承

由于您将此方法别名为:
myTraitDefaultScope
,要调用此方法,您应该以调用
页面
类的其他每个方法的相同方式调用它:

public function defaultScope($query){

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

不是100%确定,但不应该是
return$this->myTraitDefaultScope($query)
这样php就可以在同一个对象上查找函数了?感谢您的帮助,现在一切都运行得很好!其他人早就回答了,但你提供了更多细节!
public function defaultScope($query){

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