Действительно, эта конкретная компоновка (явная реализация свойства интерфейса get-only автоматически реализуемым свойством) не поддерживается языком. Таким образом, либо делает это вручную (с полем), либо записывает частную автоматическую поддержку и прокси-сервер. Но, честно говоря, к тому моменту, когда вы это сделали, вы могли бы использовать поле ...
private bool MyBool {get; set;} bool IMyInterface.MyBoolOnlyGet {get { return MyBool;}}
или:
private bool myBool; bool IMyInterface.MyBoolOnlyGet {get {return myBool;}}
Синтаксис callback
немного нечетный в PHP. Вам нужно сделать массив. Первый элемент - это объект, а второй - метод.
call_user_func(array($player, 'SayHi'));
Вы также можете сделать это без call_user_func
:
$player->{'SayHi'}();
Или:
$method = 'SayHi';
$player->$method();
Вам нужно передать объект и метод вместе как массив:
call_user_func(array($Player, 'SayHi'));
См. обратные вызовы , в частности:
// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
Вы все равно создаете объект класса, поэтому вы можете использовать объект для вызова его функции.
$player = new Player();
$player->SayHi();
или использовать обратный вызов
$player = new Player();
call_user_func(array($player, 'SayHi'));