【发布时间】:2015-09-23 06:32:27
【问题描述】:
我正在开发一个 CakePHP3 应用程序,该应用程序将用于显示有关我们的供应商当前提供的产品的信息。
** 不同的供应商以不同的方式提供他们的产品列表,CSV、JSON 或通过网络抓取**
我创建了 2 个模型:
- 供应商 - 这引用了我们使用的特定供应商。
- VendorProducts - 这引用了我们所有供应商提供的所有产品。
我希望能够调用类似:
$vendor->getAvailableProducts()
让它获取 CSV 并解析它,获取 JSON,或抓取供应商网站,并使用此供应商的产品填充数据库中的 VendorProducts 表。
我了解 Fat Models 和 Skinny Controllers 背后的想法,但是我在实现此功能时遇到了一些困难。
我想提供以下功能。
- 可以通过 Web 界面和/或可以在 cron 作业中运行的 cakephp shell 脚本调用供应商的 getAvailableProducts() 函数。
- 由于某些功能(如抓取网站)需要相当长的时间,我希望能够在视图中看到此功能的进度, 例如:从 {Supplier} 更新的 X/Y 产品。
这可以分解为以下问题:
1.我的“getAvailableProducts()”函数应该放入哪个文件?
2。由于每个 $vendor 都有一个唯一的 updateProducts() 函数,如何从 $vendor->getAvailableProducts() 调用正确的函数
// something like this?
public function getAvailableProducts() {
if($vendor->name == "SupplierA") {
getProductsFromSupplierA();
}
if($vendor->name == "SupplierB") {
getProductsFromSupplierB();
}
..., etc.
}
3.这个函数的进度如何返回给一个View?
【问题讨论】:
标签: cakephp cakephp-3.0 solid-principles