how уже ответил и дал по поводу интерфейса дельное замечание. Но оно не раскрыто подробнее, новички в ООП не поймут. Исправляю ситуацию, так как это полезный трюк:
1. Создаем пустой интерфейс
interface Object {
// Здесь ничего нет
}
Его название потом и будем использовать для type hinting.
2. Имплементируйте этот интерфейс в нужных классах:
class MyBaseClass implements Object {
// ваш обычный код класса
}
3. Теперь все будет работать, например:
function myFunc (Object $obj);