PHP OOP新手 - 需要将$ _POST数据转换为变量

时间:2012-08-19 14:09:46

标签: php oop

当我开始遇到问题清理然后执行进一步验证时,我基本上正在使用OOP并创建一种验证和清理输入的方法。我正在寻找的是获取发布的$_POST['name']数据,清理输入以删除任何数字并验证剩下的数据既不是null也不是数字字符。

但是我无法将已清理的输入保存到$sanitised,它似乎是空的,但是当我替换

$sanitised=$fv->noNumbers($_POST['name']);

$sanitised=preg_replace('/[0-9]/', '', $_POST['name']);

一切正常,所以我认为我在这个$sanitised变量中弄乱了一些东西。

我想学习所以要么解决这个问题,要么“你是个白痴并且做错了”将不胜感激。

<?php
    class formSanitise {

        public function noNumbers($value) {
            $value = preg_replace('/[0-9]/', '', $value);
        }
        public function isEmpty($value) {
                    return (!isset($value) || trim($value) == '') ? true : false;
        }
        public function isAlpha($value) {
            return preg_match('/[^a-z]/i', $value) ? false : true;
        }
?>
  

processor.php

<?php
    include('class.formSanitise.php');
    $fv = new formSanitise();

    $sanitised= $fv->noNumbers($_POST['name']);

    if ($fv->isEmpty($sanitised)) {
        $fv->addError('Name', 'Please enter something');
    }
    if (!$fv->isAlpha($sanitised)) {
        $fv->addError('Name', 'Please enter your name');
    }
?>

2 个答案:

答案 0 :(得分:1)

您需要在noNumbers中创建return或通过$value by reference

退货方式:

public function noNumbers($value) {
            return preg_replace('/[0-9]/', '', $value);
        }

参考

public function noNumbers(&$value) {
            $value = preg_replace('/[0-9]/', '', $value);
        }

returning一个值意味着$value是一个完全不同的变量,并且当它从函数返回时将被分配给$sanitized。通过引用传递意味着$value是与您传递给noNumbers完全相同的变量,因此,函数内部变量发生的任何事件都会发生在传入的变量。

答案 1 :(得分:0)

在上面的代码片段中,函数noNumbers不返回任何值。传递给函数的参数只在该函数中有一个范围,为了使该值可用于调用函数,函数中必须有一个return语句。将值返回给调用函数。或者,您可以通过引用将值传递给函数。