То же, что (исключение защищенного и частного участника):
foreach ($obj as $property_name => $property_value) {
if (array_key_exists($property_name, $arr))
//discarding protected and private member
$obj->$property_name = $arr[$property_name];
}
Или просто добавьте метод итерации в класс A:
class A {
public $a;
public $b;
function iterate($array) {
foreach ($this as $property_name => $property_value) {
if (array_key_exists($property_name, $array))
$this->$propety_name = $array[$property_name];
}
}
function f1 () {
// Code
}
}
и используйте метод iterate ().