Facciamo un esempio perchè io non ho capito nulla.

class MyClass {
public function __call($name, $args) {
echo "È stato richiamato il metodo " . $name . " con i seguenti argomenti: ";
foreach($args as $arg) echo $arg . " ";
}

public function __callStatic($name, $args) {
echo "È stato richiamato il metodo " . $name . " in un contesto statico con i seguenti argomenti: ";
foreach($args as $arg) echo $arg . " ";
}
}

$obj1 = new MyClass();

// stampa "È stato richiamato il metodo setName con i seguenti argomenti: George"
$obj1->setName("George");


// stampa "È stato richiamato il metodo setName in un contesto con i seguenti argomenti: George"
MyClass::setName("George");

################################################## #################################

I metodi magici presenti in questo codice sono 2:

__call

__callstatic

call riceve come parametri $name e $args giusto?

Si istanzia la classe $obj1=new MyClass();

$obj-> setName("George"); >>>>>Qui cosa fa esattamente? Cosa richiama?