Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用包装器类隐藏错误是否可以接受?_Php_Oop_Wrapper_Helpers - Fatal编程技术网

Php 使用包装器类隐藏错误是否可以接受?

Php 使用包装器类隐藏错误是否可以接受?,php,oop,wrapper,helpers,Php,Oop,Wrapper,Helpers,在类中封装一个全局数组以用OOP隐藏未定义的错误(并返回false)可以吗?若否,原因为何 我正在使用下面的Inputwrapper类。主要是将它与我的FormValidator类一起使用,这样我就不必为我想要使用/检查的N个输入量编写isset() class Input { private $_source; public function __construct(Array $source){ $this->_source = $source;

在类中封装一个全局数组以用OOP隐藏
未定义的
错误(并返回false)可以吗?若否,原因为何

我正在使用下面的
Input
wrapper类。主要是将它与我的
FormValidator
类一起使用,这样我就不必为我想要使用/检查的N个输入量编写
isset()

class Input {
    private $_source;

    public function __construct(Array $source){
        $this->_source = $source;
    }

    public function exists() {
        return !empty($this->_source);
    }

    public function get($input) {
        return (isset($this->_source[$input])) ? $this->_source[$input] : false;
    }
}

正如对你的问题的好评论所指出的,有不同的方法,也许还有更好的内置概念,你可以用来解决你提出的问题

但为了回答您关于PHP中OOP实践的问题,我会明确地说,在包装器类中隐藏错误是合法的

我认为它是一个黑盒,这个错误的概念可能在外部是未知的,因为您的接口没有记录它

可以在包装器内部实现错误处理,以便以后以不需要外部知道的方式处理这些错误


这没问题,但一般来说,所有错误都应该得到处理,隐藏或吞咽它们可能会导致奇怪的行为。

这可能没问题,也可能是杀伤力过大。没有办法客观地回答。但是,如果要严格使用该类包装数组,最好实现透明包装。使用
isset()
时,不应收到未定义的通知。如果您得到它们,可能是由于代码的其他部分中的输入错误或错误,您肯定希望在发布代码之前知道这一点。但是如果我不使用这样的包装类,并且需要检查大量输入,我将不得不编写
isset()
每次都要确保在与它交互之前定义它。Hmmm。。。。我怀疑我误解了这个问题。你的意思不是“我有一个类,我是否应该隐藏它生成的错误?”而是“我是否应该编写一个类来简化潜在缺失变量的读取?”。这就是内置过滤器函数基本上要做的(除了过程式的)所以我想一般的方法是好的。