データベースにアクセスするには、シングルトンオブジェクトを作成し、db::db->query($sql);
Kind of nice!のようにアクセスします。
class db {
private static $instance = NULL;
private function __construct() {} //Make private
private function __clone(){} //Make private
public static function db() //Get instance of DB
{
if (!self::$instance)
{
self::$instance = new PDO("mysql:host=xxx;dbname=xxx", 'xxx', 'xxx');
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
}
PHPMailerでも同じアプローチを取ることができますか?「プライベートプロパティへのアクセスの試行」エラーが発生するbccプロパティを設定することを除いて、機能しているようです。
class email{
public $bcc;
private static $instance = NULL;
private function __construct() {} //Make private
private function __clone(){} //Make private
public static function email() //Get instance of email
{
if (!self::$instance)
{
require_once ('PHPMailer_v5.1/class.phpmailer.php');
self::$instance = new PHPMailer();
self::$instance->IsSMTP();
self::$instance->SMTPAuth = true;
self::$instance->SMTPSecure = "tls"; //Or SSL?
self::$instance->Host = "smtp.gmail.com";
self::$instance->Port = 587; //Maybe 465 instead? SSL only?
self::$instance->Username = "xxx";
self::$instance->Password = "xxx";
}
return self::$instance;
}
}
$mail = email::email();
$mail->AddReplyTo('email@email.com','name');
$mail->SetFrom('email@email.com','name');
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->bcc = 'doesntwork@gmail.com';
$mail->FromName = $users_name;
$mail->Subject = $subject;
$mail->WordWrap = 50; // set word wrap