2012-04-28 36 views
-2

我在我的分類廣告網站上創建了聯繫表格。 我用下面的函數來獲取上傳電子郵件:另一個函數裏面的php函數?

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

它工作正常,我使用回聲得到的結果:

<?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: [email protected]'.$_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?

+0

有兩封郵件:一封來自實際連接的成員,另一封來自發布廣告的成員(uploadermail),並且沒有連接,也沒有任何會話。 而我需要的郵件是數據庫上的靜態郵件。它應該很簡單,但我與codeigniter混淆:/ – PhilMarc 2012-04-28 13:28:00

回答

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: [email protected]'.$_SERVER['HTTP_HOST']); 

但是$image從未宣佈(/實例化)在範圍。經過進一步調查,我發現在正確的課程中有一種方法叫做uploadermail,我想你正試圖訪問這個課程。

所以訪問方法,你應該做的:

self::uploadermail() 

$this->uploadermail() 

PS

你真的應該儘量避免使用static秒。靜態的東西基本上是global s和他們tightly couple you code,它阻止LSOLID programming

+0

我做了var_dump和我有大量的數據,包括uploadermail – PhilMarc 2012-04-28 13:24:28

+0

不知道你的意思,我是一個PHP初學者。 你可以在這裏檢查var_dump的結果: http://www.veloccasion.net/Fc/ – PhilMarc 2012-04-28 13:29:52

+0

謝謝! http://pastebin.com/ydiMQ8zR – PhilMarc 2012-04-28 13:36:57

0

您應該在使用之前使用$ image臨時對象!例如

$image = new ... 
or 
$image = x.GetImage(... 
+0

是的,我已經做了'$ image = new Image($ id);' – PhilMarc 2012-04-28 13:14:35

+0

這是什麼:mail($ image?$ image-> uploadermail():$ data ['email'],... – 2012-04-28 13:29:46

+0

沒有錯誤,但沒有收到任何郵件 – PhilMarc 2012-04-28 13:32:30