我在外部文件中有一个带有几个变量的函数
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。有什么想法吗?
答案 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;