基于在 stackoverflow 上得到的一些好的建议,我需要更多的指导。有人告诉我,关注点分离对于保持代码整洁和模块化很重要,我发现确实如此。
我的问题是:根据我对 SOC 的了解,我开发了 2 个类。供应商类和 CSV 类。供应商仅从数据库中检索有关我的不同供应商的数据。Csv 类从正在导入的 csv 文件中检索数据,我需要解析它的所有信息,最终目标是将数据插入到我的供应商表中。为了实现将 csv 数据插入数据库的目标,我需要使用这两个类中的方法。我是否创建了一个名为 ImportSuppliersCsv 之类的第三类,还是将导入函数创建为 Suppliers 类的方法更有意义?
缩短以节省空间,我的课程是这样的:
class Suppliers
{
public $db;
public $inv;
public $table;
public function __construct (PDO $db)
{
$this->db = $db;
$this->inv = 'lightsnh_inventory';
$this->table = 'suppliers';
}
public function getSuppliers()
{
$sql = 'SELECT * FROM `'.$this->inv.'`.`'.$this->table.'`';
$statement = $this->db->query($sql);
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
public function getActiveSuppliers()
{
$suppliers = $this->getSuppliers();
$active = array();
foreach($suppliers as $supplier) {
if($supplier['exclude'] == 0)
$active[] = $supplier;
}
return $active;
}
public function getDistributors()
{
$suppliers = $this->getSuppliers();
$distributors = array();
foreach($suppliers as $supplier) {
if($supplier['type'] == 1)
$distributors[] = $supplier;
}
return $distributors;
}
class Csv
{
public $form;
public function __construct($form_name)
{
$this->form = $form_name;
}
public function getFile()
{
if(isset($_POST[$this->form.'-upload-submit'])) {
return $_FILES[$this->form.'-file'];
}
}
public function getName()
{
$file = $this->getFile();
return $file['name'];
}
public function getExtension()
{
return end(explode('.',$this->getName()));
}
public function getType()
{
$file = $this->getFile();
return $file['type'];
} etc.....