我正在编写自己的PHP框架,以了解这些框架的工作原理。现在我的项目中有以下结构:
所以现在我正在使用composer的自动生成文件自动加载我正在使用的软件包。 我如何制作它以便每次我想使用它时都不必创建一个新的包实例?现在使用我通过作曲家获得的一个包我正在这样做 - 这只是一个例子,我永远不会通过我的控制器输出任何“html”:
/**
* Home Controller
*/
class Home extends Controller
{
public function index()
{
$mail = new PHPMailer();
$mail->addAddress('joe@example.net', 'Joe User');
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
..
我想要像Laravel一样,在那里你可以写一些类似于没有写“新”的东西来开始上课:
$user = Sentry::authenticate($credentials, false);
或:
if (Hash::check('secret', $hashedPassword))
{
// The passwords match...
}
它是一个“Facades”类或类似的东西我需要编码吗?我不确定我怎么也找不到任何知识来源。
答案 0 :(得分:0)
我的建议就像是。
public static function getInstance(){
if(!isset(self::$_instance)){
self::$_instance = new thisClass();
echo "instantiated";
}
return self::$_instance;
}
所以当你调用thisClass :: getInstance()时;你想要的次数只会实例化1个对象。 通过测试只会有一个实例化的消息。