正在考虑创建一个名为'Request'的Single类来处理和清理POST和GET变量,但是对单例模式不熟悉我不知道如何实现它。理想情况下,我希望发布2个函数($ name,$ clean)和get($ name,$ clean) - $ clean是一个布尔值来确定是否修剪/转义值
答案 0 :(得分:1)
我认为即使是练习,使用单身人士也会很棒。仅仅因为有人不认为这是正确的方法并没有让它错。通过使用和实现想法,无论多大或多小,您将学习并扩展您对所述实现的了解。您很快就会知道它是否适合您的特定情况。那你就不必接受别人的意见了。
话虽如此,我说要去吧。我明白你为什么要这样做。这个想法是,“我希望所有东西都可以进行清洗以进行注射(等等),这样我就可以确保它会在每次输入时发生。”
请允许我说清楚一点。为什么不使用$ _REQUEST实现一个方法来处理$ _GET和$ _POST?虽然这可能是一个简单的方法,但它会让你开始。
$cleanser = Cleanser::singleton();
$new_request_array = $cleanser->clean($_REQUEST);
class Cleanser
{
private static $instance;
private function __construct() { }
public static function singleton() {
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
public function clean($request) {
foreach($request as $key => $value) {
// perform any cleansing here
$cleansed[$key] = trim($value);
}
return $cleansed;
}
public function __clone() {
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
玩得开心,记住,在学习方面没有“错误”或“错误”。我认为这是StackOverflow试图制作的方法。我们在这里学习如何做某事,而不是根据我们的实施来判断。所以玩得开心!
答案 1 :(得分:0)
我不确定为什么你认为这是一个单身人士的好候选人 - 我曾经认为一个简单的静态类会更有意义。 (顺便提一下,我认为你使用内置的filter functions?)
虽然是一种粗略的简化,但是单身人士善于限制/控制对有限资源的访问,而在这种情况下并非如此。