在用户定义的类中调用用户定义的函数

时间:2015-06-01 09:47:33

标签: php function class methods

我正在尝试创建一个可以为我处理邮件的自定义类。

这是我的班级(mailerclass.php):

class Mailer {

        // Private fields
        private $to;
        private $subject;
        private $message;

        // Constructor function
        function __construct($to, $subject, $message) {
            $to = $to;
            $subject = $subject;
            $message = $message;
        }   

        // Function to send mail with constructed data.
        public function SendMail() {

            if (mail($to, $subject, $messagecontent)) {
                return "Success";
            }
            else {
                return "Failed";    
            }           
        }

    }

当我尝试在这里调用它(index.php)时,我得到一个“调用未定义函数SendMail()”消息?

if ($_SERVER['REQUEST_METHOD'] == "POST") {

        // Import class
        include('mailerclass.php');

        // Trim and store data
        $name = trim($_POST['name']);
        $email = trim($_POST['email']);
        $message = trim($_POST['message']);


        // Store mail data
        if ($validated == true) {

            // Create new instance of mailer class with user data
            $mailer = new Mailer($to, $subject, $message);          

            // Send Mail and store result
            $result = $mailer.SendMail();
        }

为什么会这样?

3 个答案:

答案 0 :(得分:1)

.用于concatenate。您使用->来访问类

的成员
$result = $mailer->SendMail();

答案 1 :(得分:1)

您不能使用点调用类方法。您可以使用->调用类方法(非静态),如:

$result = $mailer->SendMail();

此外,您需要使用$this->设置属性(如果不是静态的话),请将您的contstructor的内容更改为:

$this->to = $to;
$this->subject = $subject;
$this->message = $message;

同样适合您的mail()功能:

mail($this->to, $this->subject, $this->messagecontent)

您看到我提到静态几次,如果您想要在班级中访问静态属性或方法,可以使用self::

答案 2 :(得分:0)

.是一个联系人运营商,要访问类的成员,变量和函数都使用->运算符 使用以下代码:
$result = $mailer->SendMail();