如何使用php使用trait中的对象初始化属性?

如何使用php使用trait中的对象初始化属性?,php,traits,Php,Traits,我设置的环境使用的是带有php 7.2.14版和PhpStorm的MAMP。根据, 特征是单继承语言中代码重用的机制 我创建了一个ValidationHelper.phptrait来帮助验证表单数据。Pear具有类似于电子邮件($email\u addr)的验证功能,可接受电子邮件地址进行验证。静态调用这个类似乎不再理想,所以我尝试实例化它。如果试图用对象初始化属性,Php会抛出一个错误,因此,我添加了一个构造函数来实例化该对象。报告还指出 单独实例化一个特征是不可能的 本身是歧义的关键短语。既

我设置的环境使用的是带有php 7.2.14版和PhpStorm的MAMP。根据,

特征是单继承语言中代码重用的机制

我创建了一个
ValidationHelper.php
trait来帮助验证表单数据。Pear具有类似于电子邮件($email\u addr)的验证功能,可接受电子邮件地址进行验证。静态调用这个类似乎不再理想,所以我尝试实例化它。如果试图用对象初始化属性,Php会抛出一个错误,因此,我添加了一个构造函数来实例化该对象。报告还指出

单独实例化一个特征是不可能的

本身是歧义的关键短语。既然如此,您将如何添加一个初始化某些属性的构造函数,或者如何使用trait实例化一个对象

这就是我读到的特质可以拥有这些成员的地方。我确实看到他们包含了一个构造函数,但不是100%确定它是如何工作的

include_once 'Pear/Validate.php';
trait ValidationHelper
{

    protected $validate;

    public function __constructor(){
        $this->validate = new Validate();
    }

    public function validate_email($email){
        return $this->validate->email($email); //$validate is null
    }

}

不要试图在trait中实例化一个对象,而是在您的层次系统中实例化它

include_once 'Pear/Validate.php';
class My_Object_Class
{
    protected $validate;
    public function __construct(){
        $this->validate = new Validate();
    }
}

这是什么?他问如何初始化一个特征。我也有同样的问题。