nction() { //process $this->a } } 尽快的 unset 它们, 让内存得以释放,减轻脚本负担.25. 由始至终使用单一数据库连接确保你的脚本由始至终都使用单一的数据库连接. 在开始处正确的打开连接, 使用它直到结束, 最后关闭它. 不要像下面这样在函数中打开连接:function add_to_cart() { $db = new Database(); $db->query("INSERT INTO cart ....."); } function empty_cart() { $db = new Database(); $db->query("DELETE FROM cart ....."); } 使用多个连接是个糟糕的, 它们会拖慢应用, 因为创建连接需要时间和占用内存.特定情况使用单例模式, 如数据库连接.26. 避免直接写SQL, 抽象之不厌其烦的写了太多如下的语句:<span style="color:#333333;font-family:''''Helvetica, Arial, sans-serif'''';">$query = "INSERT INTO users(name , email , address , phone) VALUES(''$name'' , ''$email'' , ''$address'' , ''$phone'')"; $db->query($query); //call to mysqli_query()</span> 这不是个建壮的方案. 它有些缺点:>>每次都手动转义值>>验证查询是否正确>>查询的错误会花很长时间识别(除非每次都用if-else检查)>>很难维护复杂的查询因此使用函数封装:<span style="color:#333333;font-family:''''Helvetica, Arial, sans-serif'''';">function insert_record($table_name , $data) { foreach($data as $key => $value) { //mysqli_real_escape_string $data[$key] = $db->mres($value); } $fields = implode('','' , array_keys($data)); $values = "''" . implode("'',''" , array_values($data)) . "''"; //Final query $query = "INSERT INTO {$table}($fields) VALUES($values)"; return $db->query($query); } $data = array(''name'' => $name , ''email'' => $email , ''address'' => $address , ''phone'' => $phone); insert_record(''users'' , $data);</span> 看到了吗? 这样会更易读和扩展. record_data 函数小心的处理了转义. 最大的优点是数据被预处理为一个数组, 任何语法错误都会被捕获.该函数应该定义在某