- sprintf: documentation ( source)
<?php
class Base {
public static function test(self $obj) : self {
echo get_class($obj) . "\n";
if (!$obj instanceof static) {
throw new InvalidArgumentException(sprintf(
"Object (%s) must be an instance of %s",
get_class($obj),
static::class
));
}
return new static($obj);
}
}
class Ext extends Base {}
$base = new Base;
$ext = new Ext;
Base::test($base);
Base::test($ext);
Ext::test($ext);
Ext::test($base);