-2

クラス内に次のコードがあります

class Mail {
    function AddAttachment($path, $name = '', $filetype = 'application/octet-stream') {
        if (!@is_file($path)){
            echo'<pre>Filepath was not found.</pre>';
        }

        if (empty($name)) {
            echo 'no filename';
        }

        //store attachment in array
        if(!isset($attachments)) {
            $attachments = array();
        }

        $attachments[] = array('path' => $path,'name' => $name,'type' => $filetype);
        //echo '<pre>';print_r($attachment);
        return  $attachments;
    }

    function SetMail() {
        foreach ($this->$attachments as $attachment) {
            echo '<pre>';print_r($attachment);
        }
    }
}

$mail = new Mail;
$mail->AddAttachment('../images/logo.png','filename');
$mail->AddAttachment('../images/logo.png','filensame');
$mail->SetMail();

ご覧のとおり、添付ファイル (addAttachment) 用の配列を最初から作成していますが、これは正常に機能します。次のメソッドではこの配列を使用できないようですが。

$attachments プロパティを公開しようとしましたが、それでも次のエラー メッセージが表示されます。

(パブリックなし): 空のプロパティにアクセスできません

(公開あり): 空のプロパティにアクセスできません

(self::$attachments代わりに使用する場合$this::$attachments) :宣言されていない静的プロパティへのアクセス:

$attachments プロパティを SetMail メソッドに渡す方法を説明できる人はいますか?

もうありがとう!

4

2 に答える 2

0

AddAttachment を呼び出すたびに、新しい $attachments 変数を宣言しています

class Mail
{
    private $attachments=array();

    function AddAttachment($path, $name = '', $filetype = 'application/octet-stream')
    {
        if (!@is_file($path)){
            echo'<pre>Filepath was not found.</pre>';
        }
        if (empty($name))
        {
            echo 'no filename';
        }
        $att= array('path' => $path,'name' => $name,'type' => $filetype);

        $this->attachments[]=$att;

        return  $att;
    }
    function SetMail() 
    {
        foreach ($this->$attachments as $attachment)
        {
            echo '<pre>';print_r($attachment);
        }
    }
}
于 2013-05-18T12:48:12.673 に答える