gpt4 book ai didi

PHP:如何检查两个类的所有公共(public)方法是否返回相同的值?

转载 作者:行者123 更新时间:2023-12-02 01:23:20 26 4
gpt4 key购买 nike

实际上,如果我有一个类c以及$c1$c2的实例可能有不同的私有(private)变量数量,但它们所有的公共(public)方法返回相同的值我希望能够检查 $c1 == $c2?

有人知道一个简单的方法吗?

最佳答案

您还可以实现 equal($other) 函数,例如

<?phpclass Foo {    public function equals($o) {        return ($o instanceof 'Foo') && $o.firstName()==$this.firstName();    }}

或使用 foreach 迭代一个对象的公共(public)属性(此行为可能会被覆盖),并将它们与另一个对象的属性进行比较。

<?phpfunction equalsInSomeWay($a, $b) {    if ( !($b instanceof $a) ) {        return false;    }    foreach($a as $name=>$value) {        if ( !isset($b->$name) || $b->$name!=$value ) {            return false;        }    }    return true;}

(未经测试)

或(或多或少)使用反射类相同,请参阅 http://php.net/manual/en/language.oop5.reflection.php#language.oop5.reflection.reflectionobject
通过反射,如果您愿意,您还可以实现更多鸭子类型的比较,例如“我不在乎它是一个类的实例还是同一个类,只要它具有相同的公共(public)方法并且它们返回'相同的值(value)观”
这实际上取决于你如何定义“平等”。

关于PHP:如何检查两个类的所有公共(public)方法是否返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com