-2

我在我的分类广告网站上创建了一个联系表。我使用以下功能获取上传者电子邮件:

public function uploadermail()
{
    return $this->User_id?$this->User->email:lang('anonymous');
}

它工作正常,我使用 echo 得到结果:

<?php echo $image->uploadermail(); ?>

然后我使用一个函数来发送邮件:

public static function sendmail_anon()
{
    $form = new Form('sendmail_anon');

    $form->field('email', 'text', array
    (
        'valid_email'   =>  true
    ));

    $form->field('message', 'textarea', array
    (
        'min_length'    =>  25
    ));

    if($data = $form->validate())
    {
        $envoi = array
        (
            'message'   =>  $data['message'],
            'email' =>  $data['email']
        );

        mail($data['email'], lang('account_details'), lang('email_contact', $envoi), 'From: noreply@'.$_SERVER['HTTP_HOST']);
    }

    return $form;
}

问题是这是从表单字段将邮件发送到电子邮件。我想替换 $data['email'] 并插入 uploadermail 。我试过 :

mail($image->uploadermail(), lang('account_det.....

它返回以下错误:

Fatal error: Call to a member function uploadermail() on a non-object 

有可能吗?我应该怎么写?

我试过 :

 mail($uploadermail,....

而且它不返回错误,但没有收到任何邮件,我如何检查浏览器上的 $uploadermail 究竟包含什么?

4

2 回答 2

2

这意味着它$image不是一个类实例。所以你不能这样做$image->uploadermail()

您可以通过以下方式检查它:var_dump($image);

发布完整代码后,我看到您正在从以下位置访问该功能public static function sendmail_member()

mail($image?$image->uploadermail():$data['email'], lang('account_details'), lang('email_contact', $envoi), 'From: noreply@'.$_SERVER['HTTP_HOST']);

但是$image,从未在该范围内声明(/实例化)。经过进一步调查,我发现uploadermail在正确的类中调用了一个方法,我猜您正在尝试访问该方法。

因此,要访问该方法,您应该执行以下操作:

self::uploadermail()

或者

$this->uploadermail()

附言

你真的应该尽量避免使用statics. 静态的东西基本上global是 s 并且它们紧密地耦合你的代码并且它阻止了LSOLID编程

于 2012-04-28T13:10:31.147 回答
0

您应该在使用前为 $image 实例化一个对象!例如

$image = new ... 
or
$image = x.GetImage(...
于 2012-04-28T13:12:35.700 回答