ここで得られたスタックオーバーフローに関するいくつかの良いアドバイスに基づいて、さらにガイダンスが必要です。関心の分離は、コードをきちんとモジュール化した状態に保つために重要であると言われましたが、そうであることがわかりました。
私の質問は次のとおりです。SOC について読んだ内容に基づいて、2 つのクラスを作成しました。仕入先クラスと Csv クラス。サプライヤーは、さまざまなサプライヤーに関するデータベースからデータを取得するだけです。Csv クラスは、インポートされている csv ファイルからデータを取得し、それを解析するために必要なすべての情報を取得します。最終的な目標は、データを Supplier テーブルに挿入することです。csv データをデータベースに挿入するという目標を達成するには、両方のクラスのメソッドを使用する必要があります。ImportSuppliersCsv のような名前の 3 番目のクラスを作成する必要がありますか?それとも、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.....