-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathaggregation.php
More file actions
95 lines (80 loc) · 1.96 KB
/
Copy pathaggregation.php
File metadata and controls
95 lines (80 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* This example just to simulate how Aggregation can be work
* 2nees.com
*/
class CollageA {
private string $name;
/**
* @var Teacher[]
*/
private array $teachers;
/**
* @var Student[]
*/
private array $students;
/**
* Collage constructor.
* @param string $name
* @param array $teachers
* @param array $students
*/
public function __construct(string $name, array $teachers, array $students)
{
$this->name = $name;
$this->teachers = $teachers;
$this->students = $students;
}
public function printCollageDetails(): void
{
$teachersList = [];
$studentsList = [];
foreach ($this->teachers as $teacher){
$teachersList[] = $teacher->getName();
}
foreach ($this->students as $student){
$studentsList[] = $student->getName();
}
$printableTeachers = implode(", ", $teachersList);
$printableStudents = implode(", ", $studentsList);
echo "
Collage Name: {$this->name}
Teachers: {$printableTeachers}
Students: {$printableStudents}" . PHP_EOL;
}
}
abstract class Users {
private string $name;
/**
* Users constructor.
* @param string $name
*/
public function __construct(string $name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
}
class Teacher extends Users {
// Do any thing...
}
class Student extends Users {
// Do any thing...
}
// Client
$tech1 = new Teacher("Hikmat");
$tech2 = new Teacher("Ahmad");
$std1 = new Student("Anees");
$std2 = new Student("Taher");
$std3 = new Student("Saed");
$collage = new CollageA("Information Technology", [$tech1, $tech2], [$std1, $std2, $std3]);
$collage->printCollageDetails();
unset($collage);
echo $tech1->getName() . PHP_EOL;
echo $std1->getName();