PHP 将无法实例化对象视为整个应用程序的致命错误(无法捕获),这让我非常恼火。我有一组对我的应用程序运行不是绝对必要的类——它们真的很方便。我有一个工厂对象,它试图实例化配置文件中指示的类变体。
此机制正在部署用于消息存储,并将支持多种存储类型:
DatabaseMessageStore
FileMessageStore
MemcachedMessageStore
- 等等
一个MessageStoreFactory
类将从配置文件中读取应用程序的首选项,实例化并返回相应类的实例。
在实例化周围添加一个条件可能很容易,以确保class_exists()
,但MemcachedMessageStore
扩展了 PHP 的Memcached
类。因此,class_exists()
如果没有安装 PHP 的 memcached 绑定,测试将会成功——尽管实例化会失败。
有没有其他方法可以测试一个类是否可以正确实例化?如果不能,我需要做的就是告诉用户哪些功能对他们不可用,但让他们继续使用该应用程序。