ДоХтор, но ты в аргумент проверку типа Foo убери, и в конструкторе сделай проверку типа, в которой если объект не подходит, вызывать преобразователь, который в итоге вызовет new self($args);
Мы используем файлы cookie и сервис веб-аналитики Яндекс.Метрика. Используя сайт, вы соглашаетесь с Политикой использования cookie-файлов и даёте согласие на обработку данных сервисом веб-аналитики Яндекс.Метрика в соответствии с Политикой обработки персональных данных. Cookies можно отключить в любой момент в настройках вашего браузера.