我在分类广告网站上创建了一个联系表单。 我使用以下函数来获取上传者的电子邮件:
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']并插入上传邮件。我试过了:
mail($image->uploadermail(), lang('account_det.....
并返回以下错误:
Fatal error: Call to a member function uploadermail() on a non-object
是否可以这样做,我应该如何完全写出来?
我试过了:
mail($uploadermail,....
它不会返回错误,但没有收到任何邮件,如何在浏览器上查看究竟包含$ uploadermail的内容?
答案 0 :(得分: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()
<强> PS 强>
您应该尝试阻止使用static
。静态内容基本上是global
和tightly couple you code,它会阻止SOLID programming中的L
。
答案 1 :(得分:0)
您应该在使用前为$ image即时添加对象! e.g。
$image = new ...
or
$image = x.GetImage(...