<?php
class Worker {
// An array with workers
protected $workers = array( 'salary' => 100
),
'salary' => 200
)
);
// An array of worker params
protected $current_worker;
/**
* Worker constructor.
*/
public function __construct( $job_title = 'marketer' ) {
// Check if such position exists
// Assign job title
$this->current_worker = $this->workers[$job_title];
} else {
throw new Exception( 'Passed job title does not exist!' );
}
}
/**
* Getter for worker salary
*/
public function get_worker_salary() {
// Check if salary key exists
return $this->current_worker['salary'];
} else {
return false;
}
}
/**
* Setter for worker salary???
* Обратите внимание сюда пожалуйста!
*/
public function setWorkerNewSalary(int $newSalary) {
// и как мне работать с твоим классом теперь???
// Окей, разобрался, но выглядит всё равно не очень очевидно для меня :(
$this->current_worker['salary'] = $newSalary;
}
}
$Vasya = new Worker( 'engineer' );
//и вижу что объект жирный и в итоге вместо сотни потенциальных классов
// будет туча жирнючих объектов в каждом из которых хранится инфа по сути
// предназдаченная для класса, разве классы это не шаблоны?
// зачем хранить шаблоны в самих объектах?
$Vasya->setWorkerNewSalary(300);
ICAgIDw/cGhwCiAgICAKICAgIGNsYXNzIFdvcmtlciB7CiAgICAJLy8gQW4gYXJyYXkgd2l0aCB3b3JrZXJzCgkgICAgcHJvdGVjdGVkICR3b3JrZXJzID0gYXJyYXkoCgkgICAgCSdlbmdpbmVlcicgPT4gYXJyYXkoCgkgICAgCQknc2FsYXJ5JyA9PiAxMDAKCSAgICAJKSwKCSAgICAJCgkgICAgCSdtYXJrZXRlcicgPT4gYXJyYXkoCgkgICAgCQknc2FsYXJ5JyA9PiAyMDAKCSAgICAJKQoJICAgICk7CgkgICAgCgkgICAgLy8gQW4gYXJyYXkgb2Ygd29ya2VyIHBhcmFtcwoJICAgIHByb3RlY3RlZCAkY3VycmVudF93b3JrZXI7CiAgICAgCiAgICAgCS8qKgogICAgIAkgKiBXb3JrZXIgY29uc3RydWN0b3IuCiAgICAgCSAqLwogICAgCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGpvYl90aXRsZSA9ICdtYXJrZXRlcicgKSAgewogICAgCQkvLyBDaGVjayBpZiBzdWNoIHBvc2l0aW9uIGV4aXN0cwogICAgCQlpZiAoIGFycmF5X2tleV9leGlzdHMoICRqb2JfdGl0bGUsICR0aGlzLT53b3JrZXJzICkgKSB7CiAgICAJCQkvLyBBc3NpZ24gam9iIHRpdGxlCiAgICAJCQkkdGhpcy0+Y3VycmVudF93b3JrZXIgPSAkdGhpcy0+d29ya2Vyc1skam9iX3RpdGxlXTsKICAgIAkJfSBlbHNlIHsKICAgIAkJCXRocm93IG5ldyBFeGNlcHRpb24oICdQYXNzZWQgam9iIHRpdGxlIGRvZXMgbm90IGV4aXN0IScgKTsKICAgIAkJfQogICAgCX0KICAgIAkKICAgIAkvKioKICAgIAkgKiBHZXR0ZXIgZm9yIHdvcmtlciBzYWxhcnkKICAgIAkgKi8KICAgIAlwdWJsaWMgZnVuY3Rpb24gZ2V0X3dvcmtlcl9zYWxhcnkoKSB7CiAgICAJCS8vIENoZWNrIGlmIHNhbGFyeSBrZXkgZXhpc3RzCiAgICAJCWlmICggYXJyYXlfa2V5X2V4aXN0cyggJ3NhbGFyeScsICR0aGlzLT5jdXJyZW50X3dvcmtlciApICkgewogICAgCQkJcmV0dXJuICR0aGlzLT5jdXJyZW50X3dvcmtlclsnc2FsYXJ5J107CiAgICAJCX0gZWxzZSB7CiAgICAJCQlyZXR1cm4gZmFsc2U7CiAgICAJCX0KICAgIAl9CiAgICAJLyoqCiAgICAJICogU2V0dGVyIGZvciB3b3JrZXIgc2FsYXJ5Pz8/CiAgICAJICog0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1INGB0Y7QtNCwINC/0L7QttCw0LvRg9C50YHRgtCwIQogICAgCSAqLwogICAgCXB1YmxpYyBmdW5jdGlvbiBzZXRXb3JrZXJOZXdTYWxhcnkoaW50ICRuZXdTYWxhcnkpIHsKICAgIAkJLy8g0Lgg0LrQsNC6INC80L3QtSDRgNCw0LHQvtGC0LDRgtGMINGBINGC0LLQvtC40Lwg0LrQu9Cw0YHRgdC+0Lwg0YLQtdC/0LXRgNGMPz8/CiAgICAJCS8vICDQntC60LXQuSwg0YDQsNC30L7QsdGA0LDQu9GB0Y8sINC90L4g0LLRi9Cz0LvRj9C00LjRgiDQstGB0ZEg0YDQsNCy0L3QviDQvdC1INC+0YfQtdC90Ywg0L7Rh9C10LLQuNC00L3QviDQtNC70Y8g0LzQtdC90Y8gOigKICAgIAkJJHRoaXMtPmN1cnJlbnRfd29ya2VyWydzYWxhcnknXSA9ICRuZXdTYWxhcnk7CiAgICAJCQogICAgCX0KICAgIAkKICAgIH0KICAgICAKICAgICRWYXN5YSA9IG5ldyBXb3JrZXIoICdlbmdpbmVlcicgKTsKICAgIAogICAgCiAgICB2YXJfZHVtcCgkVmFzeWEpOwogICAgLy/QuCDQstC40LbRgyDRh9GC0L4g0L7QsdGK0LXQutGCINC20LjRgNC90YvQuSDQuCDQsiDQuNGC0L7Qs9C1INCy0LzQtdGB0YLQviDRgdC+0YLQvdC4INC/0L7RgtC10L3RhtC40LDQu9GM0L3Ri9GFINC60LvQsNGB0YHQvtCyCiAgICAvLyDQsdGD0LTQtdGCINGC0YPRh9CwINC20LjRgNC90Y7Rh9C40YUg0L7QsdGK0LXQutGC0L7QsiDQsiDQutCw0LbQtNC+0Lwg0LjQtyDQutC+0YLQvtGA0YvRhSDRhdGA0LDQvdC40YLRgdGPINC40L3RhNCwINC/0L4g0YHRg9GC0LgKICAgIC8vINC/0YDQtdC00L3QsNC30LTQsNGH0LXQvdC90LDRjyDQtNC70Y8g0LrQu9Cw0YHRgdCwLCDRgNCw0LfQstC1INC60LvQsNGB0YHRiyDRjdGC0L4g0L3QtSDRiNCw0LHQu9C+0L3Riz8KICAgIC8vINC30LDRh9C10Lwg0YXRgNCw0L3QuNGC0Ywg0YjQsNCx0LvQvtC90Ysg0LIg0YHQsNC80LjRhSDQvtCx0YrQtdC60YLQsNGFPwogICAgCiAgICAKICAgICRWYXN5YS0+c2V0V29ya2VyTmV3U2FsYXJ5KDMwMCk7CiAgICAKICAgIHZhcl9kdW1wKCRWYXN5YSk7