وظيفة فب __construct () مسألة تنطوي على هذا-> الحصول = $ _GET

StackOverflow https://stackoverflow.com/questions/1635100

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أعمل على كود لشخص ما ولديهم منشئ يستخدم:

class qwerty {
public function __construct(){
// some other code
    $this->get = $_GET;
}
}

وسؤالي هو: هل من الممكن لتطهير البيانات ضمن منشئ؟ حتى باستخدام بعض من وظيفة بسيطة مثل strip_tags ()؟

ومثال على الاستخدام:

$qwerty = new qwerty;
qwerty->get['id'];
هل كانت مفيدة؟

المحلول

وأرى طريقتان لالاقتراب منه. يمكن للمرء أن يكون لمجرد استخدام حلقة foreach في دالة البناء لحلقة من خلال المعلمات $ _GET

foreach($_GET AS $key => $val)
{
  $_GET[$key] = sanitize($val);
}

وبدلا من ذلك، استرداد البيانات من خلال وظيفة الحصول على وتعقيم هناك.

function getParams($key)
{
  return sanitize($_GET[$key]);
}

نصائح أخرى

ويمكنك القيام الى حد كبير أي شيء تريده في المنشئ. أما وقد قلت ذلك، فإنه لا يعني أنك يجب. أن العديد من المحللين أن أي شيء ذات معنى أو التي يمكن رمي استثناء لا ينبغي أن يكون في منشئ. على أي حال، إذا كنت تسير على استخدام هذه الفئة هل يمكن أن تفعل شيئا مثل هذا:

class qwerty
{
    private $get;

    public function __construct($params)
    {
       $this->get = $this->sanitize($params);
    }

    public function sanitize($params)
    {
        $sanitized = $params;

        foreach ($sanitized as $key => $value) {
            $sanitized[$key] = strip_tags($value);
        }

        return $sanitized;
    }

    public function getField($field)
    {
        if (array_key_exists($field,$this->get)) {
            return $this->get[$field];
        } else {
            return null;
        }
    }
}

$q = new qwerty($_GET);
$q->getField('id');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top