Mah*_*iry 0 php arguments function
我有一些不同的类别,例如用户和组。我想创建一个通用类来添加该类的属性。我的类有一些功能,如添加、删除、编辑等,例如:
<?php
class Persistence{
function add(Users $userObj){
....
}
function add(Groups $groupObj){
....
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
虽然 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)