我在课外有108个变量,我是否需要将其全部声明为全局?

时间:2016-03-02 06:03:28

标签: php

我有这段代码:

scores[j]

问题是,我在div { z-index: 500;} ul { z-index: 1000;} 文件中有36个不同的电子邮件模板。每个模板有3个不同的变量:require_once ($_SERVER["DOCUMENT_ROOT"] . '/config.php'); require_once ($_SERVER["DOCUMENT_ROOT"] . '/lib/phpmailer/PHPMailerAutoload.php'); require_once ($_SERVER['DOCUMENT_ROOT'] . '/assets/messaging/email-template.php'); // This is where the templates stored class Email { public function sendEmail ($send_to_email, $sent_to_name, $template_name) { // this variables stored in config.php global $mandrill_host; global $mandrill_port; global $mandrill_username; global $mandrill_password; global $mandrill_from; global $mandrill_from_name; $mail = new PHPMailer; $mail->IsSMTP(); $mail->Host = $mandrill_host; $mail->Port = $mandrill_port; $mail->SMTPAuth = true; $mail->Username = $mandrill_username; $mail->Password = $mandrill_password; $mail->SMTPSecure = 'tls'; $mail->From = $mandrill_from; $mail->FromName = $mandrill_from_name; $mail->AddAddress($send_to_email, $sent_to_name); $mail->IsHTML(true); // I will have CASE here to select $subject, $body and $body_txt // from /assets/messaging/email-template.php // based on $template_name parameter $mail->Subject = $subject; $mail->Body = $body; $mail->AltBody = $body_txt; if(!$mail->Send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } } }

我是否必须将所有这些变量声明为全局变量?还是有另一种更好的方法来在PHP类之外使用变量?

谢谢你,我非常感谢你的回答

2 个答案:

答案 0 :(得分:2)

将变量置于全局状态永远不是一个好主意。它可以使测试和调试成为一场噩梦。我建议您创建一个Config()类并将变量放在那里。此类可以使用getConfig($itemName)方法返回您请求的变量的值。

答案 1 :(得分:1)

你必须远离全球,这是邪恶的! :)
首先,您可以将所有global $mandrill_*;放入属性文件中,然后使用parse_ini_file加载/读取它们。 另外,我建议您将所有模板放在不同的 xml / xsd json 文件中,并创建 properties / ini 文件,其中你会把他们的道路......