【问题标题】:mail function not working in OO PHP邮件功能在 OO PHP 中不起作用
【发布时间】:2015-07-15 12:15:40
【问题描述】:

我尝试了以下方法:

一个.php

<?php
    class Page
    {
        function go(){
            echo "1";
            send();
        }

        function send(){
            mail("whatever@gmail.com","subj","hi");
        }
    }
?>

b.php

<?php 
require("a.php");
$page=new Page();
$page->go();
?>

b.php 既不发送邮件也不回显任何内容。当我在函数 go() 中发送之前放置回显时,PHP 回显“1”但不发送任何内容。我想也许 mail() 函数有问题,所以我将 b.php 更改为:

<?php 
require("a.php");
$page=new Page();
$page->send();
?>

一切正常。初始代码有什么问题?

【问题讨论】:

  • 您需要在 PHP 设置中配置 STMP 服务器。
  • @Pupil 直接调用邮件功能正常。

标签: php oop


【解决方案1】:

这不是邮件功能。您正在尝试调用未正确标记的函数。在这种类型中,您尝试调用静态函数。但是您调用的函数未标记为静态。不过,您可以通过几种不同的方式解决此问题。

您的 echo 不起作用,因为它无法找到您在 go() 中引用的函数。

// best use
class Page{
    public function go(){
        echo "yay";
        $this->send();
    }
    ...
}

// static isn't recommended most often, but this will work.
class Page{
    // same go function
    public static function send(){
       // same
    }
}

【讨论】:

  • 谢谢。我怎么错过了?!
  • 超级超级常见的错误。
【解决方案2】:

自从我使用 PHP 以来已经有一段时间了,但是您必须使用 $this 从类方法中调用 send 方法。见下文:

<?php
    class Page
    {
        function go(){
            echo "1";
            $this->send();  # Added the $this-> to the function call
        }

        function send(){
            mail("whatever@gmail.com","subj","hi");
        }
    }
?>

【讨论】:

    【解决方案3】:

    更改send();

    $this->send();
    

    send() 是类方法而不是函数,因此在这种情况下,如果没有$this,则无法调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-19
      • 2011-04-07
      • 2012-07-12
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多