在核心PHP中实现Company与Employees类的一对多关联
核心PHP实现Company与Employees的一对多关联
1. 创建Company类
定义$name(公司名称)、$address(公司地址)属性,同时添加$employees数组存储下属员工,提供添加员工、获取员工列表及自身信息的方法:
class Company { private $name; private $address; private $employees = []; // 构造函数初始化公司信息 public function __construct(string $name, string $address) { $this->name = $name; $this->address = $address; } // 添加员工 public function addEmployee(Employee $employee) { $this->employees[] = $employee; } // 获取所有员工 public function getEmployees(): array { return $this->employees; } // 获取公司信息 public function getCompanyInfo(): array { return [ 'company_name' => $this->name, 'company_address' => $this->address ]; } }
2. 创建Employee类
定义$name(员工姓名)、$phone(电话号码)、$email(邮箱)属性,提供获取员工信息的方法:
class Employee { private $name; private $phone; private $email; // 构造函数初始化员工信息 public function __construct(string $name, string $phone, string $email) { $this->name = $name; $this->phone = $phone; $this->email = $email; } // 获取员工信息 public function getEmployeeInfo(): array { return [ 'employee_name' => $this->name, 'phone_number' => $this->phone, 'email' => $this->email ]; } }
3. 实现一对多关联及使用示例
通过Company类的addEmployee方法关联员工,之后可直接通过公司对象获取自身及下属员工的所有信息:
// 创建公司实例 $company = new Company('Tech Corp', '123 Tech Street, Silicon Valley'); // 创建员工实例 $emp1 = new Employee('John Doe', '123-456-7890', 'john.doe@techcorp.com'); $emp2 = new Employee('Jane Smith', '987-654-3210', 'jane.smith@techcorp.com'); // 将员工关联到公司 $company->addEmployee($emp1); $company->addEmployee($emp2); // 获取公司信息 $companyInfo = $company->getCompanyInfo(); echo "公司信息:\n"; print_r($companyInfo); // 获取下属员工信息 $employees = $company->getEmployees(); echo "\n下属员工信息:\n"; foreach ($employees as $emp) { print_r($emp->getEmployeeInfo()); }
运行上述代码后,会输出公司的基本信息,以及该公司下属所有员工的详细信息,完成一对多关联的需求。
内容的提问来源于stack exchange,提问作者Muhammad Yasir
相关产品推荐
相关产品推荐

