在PHPExcel的各种教程中,有两种方法可用于创建编写器:
$writer = new PHPExcel_Writer_Excel2007($document);
和
$writer = PHPExcel_IOFactory::createWriter($document, 'Excel2007');
这两个陈述有什么区别?
答案 0 :(得分:1)
静态实用程序类有一个内部过程来提供编写器的不同类型/实现,作为覆盖或添加,而直接创建" stock"的实例。当然,使用new
关键字的编写者总是会为您提供代码中特定类的实例。
使用工厂将允许您覆盖项目范围内的编写器,而无需修改创建实例的代码中的各个位置。
查看代码有助于理解:
https://github.com/PHPOffice/PHPExcel/blob/1.8/Classes/PHPExcel/IOFactory.php#L129
但值得注意的是,应该谨慎对待这样的静态工厂 - 它可以在代码中创建隐藏的依赖项。