问题:
我是否应该解耦SESSION变量,即将它们移出类。。。这是来自另一个POST的建议。我想把这个库扩展到更一般的情况,而不仅仅是为了我的目的。。我相信这是下一步?
摘要:
这个类以自定义标记语言的形式向客户端发送"tweet"数据。
它被用于Ajax调用,在之前的帖子中,人们建议不要回显结果。。但这是我通过Ajax responseText与服务器通信的主要方式。
此外,<tw_p>
用于表示通行证,并且由客户端读取。标记如下所示。
字段1|字段2|字段3|字段4||字段1|场2|场3|场4||
它被称为这样-
new tweet();
客户端知道如何在收到xhtml后将其呈现为xhtml
/*tweet*/
class tweet extends post
{
function __construct()
{
parent::__construct();
$email=$_SESSION['email'];
$flname=$_SESSION['name'];
$message=$this->_protected_arr['f4b'];
$time=time();
database::query("INSERT INTO tw VALUES ('$time','$flname','$message','$email')");
$query_return = database::query("SELECT * FROM tw ORDER BY time DESC LIMIT 7");
$b=0;
$c='<tw_p>';
while($a=mysqli_fetch_assoc($query_return))
{
if($b==0)
{
$c = $c . $a['email'] . "|" . $a['fname'] . "|" . $a['time'] . "|" . $time . "|" . $a['message'];
}
else
{
$c = $c . "||" . $a['email'] . "|" . $a['fname'] . "|" . $a['time'] . "|" . $time . "|" . $a['message'];
}
$b++;
}
echo $c;
}
}
如果是我的代码,我会怎么做:
- 从构造函数中删除逻辑,它仅用于初始化。因此,将所有业务逻辑删除到单独的方法
doTheWork
中(选择解释代码中发生的事情的有意义的名称( - 将构造函数参数化为:
- 电子邮件
- 名称
- 数据库实例(是的,我会避免静态
database::query()
方法(
- 最后去掉
echo $c;
,换成return $c;
- 从类外部移除表示逻辑(带有
||
内容的行( - 对查询中使用的数据进行消毒(感谢vzwick(