Може ли magic methods да се викат изрично, през обекта?
Може.
Ако имаш клас, който има например __construct и __call
и създадеш обект от него, клонираме го и т.н…. ще си извика съответните magic methods.
Но ако отделно извикаме
$p->__clone();
$p->__construct();
ще изпълни отново въпросните методи.
Само дето $p->__construct(); няма да създаде обект.
Демек, $ppp = $p->__construct(); няма да създаде нов обект $ppp
Просто ще си изпълни кода в __construct()