PHP中的类调用函数

时间:2016-04-14 18:14:07

标签: php object

我在外部文件中有一个带有几个变量的函数

include 'external.php'; 

它有:

function external ($username){
    $subjectreq = "Subject";
    $message = '
        <html>
            <head>
                <title>Hi '.$username.'</title>
            </head>
            <body>
                <p>Hi '.$username.'</p>
                <table style="background: #fff;marg in: 2px;padding: 5px 10px;border:1px solid #999;">
                    <tr>
                      <td>Somebody would like to add you among friends.</td>
                    </tr>                           
                    <tr>
                      <td>Please visit this site to accept the request.</td>
                    </tr>                               
                </table>
            </body>
        </html>';
    }

然后我创建了一个类,我试图调用这个函数,但它不起作用:

include 'external.php'; 

    class FriendLoad {
          public function __construct(){
             add_friend();
          }

        private function add_friend(){

            // select user email and names
            $select = $this->db_connection->prepare("SELECT * FROM  users WHERE user_id= :friend_user_id");
            $select->bindParam(':friend_user_id', $friend_user_id, PDO::PARAM_INT);
            $select->execute();
            $to = "";
            $username = "";
            while($row = $select->fetch(PDO::FETCH_ASSOC)) { $to .= $row['user_email']; $username .= $row['user_name']; }

             external($username);

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
            $headers .= 'From: "Bla" <bla@bla.com>' . "\r\n" ;
            mail($to, $subjectreq, $message, $headers); 
        }
    }
    $friendload = new FriendLoad();

我不确定为什么要调用函数external();这种方式不起作用。我得到了unifined变量$ message和$ subjectreq。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您发布的代码工作正常。我认为缺少的是你没有从函数返回$message。尝试将其添加到external()函数的底部:

return $message;

在课堂上,请在通话前添加:

$message = external($username);

我也应该指出Vincent G's answer。当您调用add friend时,您属于班级范围,因此您需要添加$this->add_friend()以便PHP知道您要使用当前类的方法。

答案 1 :(得分:0)

错误在这里(我已经测试过了)。您需要使用$this来调用私有函数add_friend()

  public function __construct(){
     $this -> add_friend();
  }

否则,外部文件加载良好。

您还需要在external()函数中返回var:return $message;