我正在开始一个新的网络项目。我对处理用户帐户有一些疑问。我有一些基本的OOP知识,但有PHP的新知识。
我的情景非常熟悉。将有两种不同类型的帐户。客户和公司。他们将拥有一些共享和特定的属性。 在数据库中,我将使用三个表来存储用户数据。一个用于共享属性。其他人将获得有关用户类型的具体信息。
shared_data
+---------+-----------------------+---------------+----------+----------+--------+
| user_id | email | user_name | password | type | active |
+---------+-----------------------+---------------+----------+----------+--------+
| 1 | mail@supercompany.com | Super Company | secret | company | 1 |
| 2 | mail@boldcompany | Bold Company | cetres | company | 1 |
| 3 | johndoe@mail.com | John Doe | retsec | customer | 1 |
| 4 | janedoe@mail.com | Jane Doe | setrec | customer | 1 |
+---------+-----------------------+---------------+----------+----------+--------+
company_only_data
+---------+-----------------+------------------+
| user_id | company_address | person_in_charge |
+---------+-----------------+------------------+
| 1 | Berlin | Steven Seagal |
| 2 | Budapest | Chuck Norris |
+---------+-----------------+------------------+
user_only_data
+---------+--------+--------------+
| user_id | gender | last_shoping |
+---------+--------+--------------+
| 3 | male | never |
| 4 | female | yesterday |
+---------+--------+--------------+
我不想重新发明这一点。由于用户处理是网络编程的重要步骤之一,我认为我找到了关于该主题的更好资源。我读了许多文章,包括" 抽象类和接口"但没有一个是清楚的。
我的计划是构建如下
class UserManager
{
private $user_id;
public function __construct($user_id)
{
$this->user_id = $user_id;
}
public function getData()
{
//Return joined data of shared_data table
//and second table (based on type of account)
}
public function deactivate()
{
//Update shared_data set active=0 WHERE user_id = $this->user_id
}
public function login()
{
//...
}
public function logout()
{
//...
}
}
class CustomerManager extends UserManager
{
public function getShoppingData()
{
//Return results of shopping_data table for $this->user_id
}
//...some other customer related methods
}
class CompanyManager extends UserManager
{
public function getSalesReport()
{
//Work with results of sales_data table for $this->user_id
}
//...some other company related methods
}
我是在正确的轨道上还是做错了什么?
你能否建议我一些记录良好的链接,或者建议我采用一种方法?
答案 0 :(得分:0)
您应该使用界面来设置常用方法和属性。通过使用接口,您可以确保所有类都具有应用逻辑所需的最小方法和属性集(如登录,注销,commonDetails等)