«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/08/03 14:50:19  №1447478 1
Ответы: >>1447479 >>1450054
Аноним 2019/08/03 14:52:28  №1447479 2
Аноним 2019/08/08 17:37:51  №1450054 3
>>1446666
>>1447478

> \tpublic function __construct($rate, $litresOfCoffee, $pgsOfDocs, $rank, $boss = false){
Это мы не проходили, но стоит использовать тайп-хинты, они защищают от ошибок и делают код читабельнее: https://www.php.net/manual/ru/functions.arguments.php#functions.arguments.type-declaration

>\tprivate function setRateWithRank(){
>\t\tif ($this->rank == 2) {
>\t\t\t$this->rate = $this->rate * 1.25;
>\t\t}

Это неудачное решение, так как ты в одном поле rate хранишь два разных значения: базовая ставка, и ставка, пересчитанная с учетом ранга. Ты затираешь базовую ставку, а это значит, если надо будет поменять ранг, то ты не сможешь легко вычислить новую ставку. Логичнее не хранить в одном поле два разных значения, а сделать два поля. Либо одно поле с базовой ставкой, а текущую ставку вычислять методом без сохранения в поле.

> \tprivate function setBossPrivelege(){

Тут та же проблема: начальные данные затираются.

> \t\tforeach ($this->employees as list($num, $position)) {

Этот способ хранения списка работников не очень-то ООП. С точки зрения ООП, наверно было бы правильнее сделать класс EmployeeGroup с полями "образец работника" и "кол-во". Но и такой подход будет плохо работать во второй части задачи, где надо менять зарплату и ранги людям.

Также, этот формат хранения не описан и трудно догадаться, глядя на конструктор класса Department, какой массив в него надо передать.

В общем, пока неплохо, делай тогда вторую часть про кризис, там недостатки кода, если они есть, вылезут наружу.