在 PHP 中定义具有相同名称和不同参数类型的多个函数

Mah*_*iry 0 php arguments function

可能的重复:
PHP OOP:每个参数类型都有唯一的方法?
PHP 5.3 方法重载(就像 Java 中一样)

我有一些不同的类别,例如用户和组。我想创建一个通用类来添加该类的属性。我的类有一些功能,如添加、删除、编辑等,例如:

<?php
class Persistence{
    function add(Users $userObj){
        ....
    }
    function add(Groups $groupObj){
        ....
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Pat*_*and 5

虽然 PHP 中允许类型提示,但不允许基于参数类型的方法重载。因此,您需要为每种情况创建不同的方法并使用这些方法。但是,您可以做的是从 add-method 中删除类型提示,并使用 if-else 语句或参数上的 switch 来代替:

public function add ($collection) }
   if($collection instanceof Users) {
     return $this->addUsers($collection);
   }
   if($collection instanceof Groups) {
     return $this->addGroups($collection);
   }
   ...
   throw new InvalidArgumentException("Unknown collection type");
}

public function addUsers(Users $users) {
}

public function addGroups(Groups $groups) {
}
Run Code Online (Sandbox Code Playgroud)