Вы можете использовать (очень) ограниченные подписи для ваших функций, с указанием разрешенных типов аргументов.
Например:
public function Right( My_Class $a, array $b )
указывает, что первый аргумент должен быть объектом My_Class, а второй - массивом.My_Class означает, что вы также можете передать объект класса, который либо расширяет My_Class, либо реализует (если My_Class является абстрактным классом) My_Class.Если вам нужен именно My_Class, вам нужно либо сделать его окончательным, либо добавить некоторый код, чтобы проверить, что на самом деле $ a.
Также обратите внимание, что (к сожалению) «массив» - это единственный встроенный тип, который вы можете использоватьв подписи.Любые другие типы, например:
public function Wrong( string $a, boolean $b )
вызовут ошибку, потому что PHP будет жаловаться, что $ a не является объектом строки класса (а $ b -не объект класса boolean).
Так что если вам нужно знать, является ли $ a строкой или $ b bool, вам нужно написать некоторый код в теле функции и, например, выдать исключение, если вы обнаружите несоответствие типов(или вы можете попытаться разыграть, если это возможно).