Utente PHP, cliente, relazione commerciale

0

Sto creando un sistema di gestione delle fatture con una classe utente che gestisce il sistema di accesso.

Attualmente ogni utente è associato a un cliente e la classe cliente gestisce le fatture mensili.

Il mio problema è che alcuni utenti sono titolari di attività commerciali e vorremmo poter vedere tutte le loro fatture attraverso un unico login invece di avere più.

Se il mio attuale cliente ha queste proprietà

class Customer {

private $f_name;
private $l_name;
private $address_1;
private $address_2;
private $zip;
private $state;
private $phoneNumber;
private $email;
private $registrationDate;
private $user_id;
private $customer_id;

Creerei una sottoclasse di Business? E come gestirò opzioni come f_name e l_name perché ogni azienda non avrebbe un f_name o l_name sarebbe solo un nome commerciale.

O ciascun utente può associarsi con un cliente commerciale e / o standard e ognuno ha una propria classe?

Non so perché questo concetto mi confonda così tanto.

    
posta Matodobra24 25.03.2018 - 18:36
fonte

1 risposta

2

Non sono sicuro del motivo per cui sia i clienti che i clienti degli affari non sarebbero in grado di vedere le loro fatture dopo un singolo accesso?

Per come la vedo io, tutti i proprietari di aziende sarebbero un tipo di cliente. Inoltre, probabilmente vorrai conoscere una persona di contatto dietro l'azienda, non necessariamente solo il nome dell'azienda. Sebbene, se non volessi avere f_name e l_name per i proprietari di attività commerciali, potresti lasciare il campo vuoto. In futuro potresti voler impostare un nome_f e un nome_l.

Potrebbe valere la pena anche avere una classe cliente astratta per basare tutti i tipi di clienti su off. Rende il tuo codice più polimorfico. È meglio affidarsi alle astrazioni che alle concrezioni.

abstract class Customer {
 //using protected instead of private so child classes have access to the properties
 protected $f_name;
 protected $l_name;
 //etc...
}
class SimpleCustomer extends Customer {}
class BusinessCustomer extends Customer {
 public function __construct(){
  parent::__construct(); //calls to the parent Customer class’s construction
  //May want to pass args if Customer requires them
  //This is only necessary if BusinessCustomer does anything unique in its construction compared to in it’s parent class
 }
 public function setBusinessName(String $b_name) {
  $this->business_name = $b_name;
 }
}

Essenzialmente, come hai detto, ognuno avrebbe una sua classe.

    
risposta data 28.05.2018 - 20:51
fonte

Leggi altre domande sui tag