【问题标题】:PHP: Problems Instantiating ClassPHP:实例化类的问题
【发布时间】:2014-01-25 05:36:06
【问题描述】:

我尝试创建一个名为 Isolate 的类的新对象(该类用于防止 XSS 和其他通过 htmlspecialchars 等进行的攻击)。

所以,我这样做:

$data['name'] = $_POST['name'];
$data = $isolate->isolateArr($data);

我的 Isolate 类看起来像这样:

class Isolate {
    public function isolate($var) {
        $iVar = htmlspecialchars($var);
        $iVar = mysql_real_escape_string($iVar);
        $iVar = stripcslashes($iVar);

        return $iVar;
    }

    public function isolateArr($arr) {
        foreach($arr as &$instance) {
            $instance = $this->isolate($instance);
        }
        unset($instance);
        return $arr;
    }

但结果我收到了类似Missing argument 1 for Isolate 的警告。据我了解,它要求我提供第一个函数的参数,但我不需要调用第一个函数,我需要调用第二个函数(因为在这种情况下我有一个数组)。

那么,为什么它总是要求第一个函数参数?没有任何__construct 方法,有什么意义?

提前谢谢你!

【问题讨论】:

    标签: php class oop methods constructor


    【解决方案1】:

    isolate() 是你的构造方法。

    http://www.php.net/manual/en/language.oop5.decon.php

    为了向后兼容,如果 PHP 5 找不到给定类的 __construct() 函数,并且该类没有从父类继承一个,它将搜索旧式构造函数,名称为类。

    【讨论】:

    • 应该添加__construct() { $a = 'b'; }帮助吗?
    • 我不知道 $a ='b';应该做,但无论如何。
    • 我的意思是抽象的。因为我不确定我是否可以创建抽象构造方法
    • 似乎重命名错误的函数比创建一个不需要的空无用构造函数更容易。
    • 如果你重命名isolate那么你将不再有构造方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多