Php 如何使用别名调用trait方法
我试图在一个名为Page的类中放置一个特性。我还需要重命名一个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
调用未定义的函数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);
}