Я работаю в PHP5 уже пару лет и разработал облегченную среду MVC, которую я использую для ускорения разработки сайта. Прекрасно работает, автоматизированный formbuilder, модуль autoSQL и т. Д.
Одна плохая привычка, которую я разработал, однако, полагается на $ this как на простой объектный параметр. Мне еще предстоит выяснить, как действительно инкапсулировать данные без необходимости расширяться из базового класса (где определены все переменные сайта) и с помощью метода setter заполнять каждый экземпляр объекта переданным $ this объектом. Все работает, но смешно, что каждый объект должен знать обо всем состоянии приложения. Я хотел бы, чтобы каждый объект выполнял свою назначенную задачу, требующую только минимального знания внешнего контекста.
Например, допустим, у меня есть класс, который генерирует данные учетной записи клиента:
// pseudo account
Class account extends siteBase {
protected $formObj;
public $custID = 1;
public $name;
public $email;
// etc...
function __construct() {
$this->formObj = new FormBuild($this); // easy $this passing
$this->formObj->getFormData();
$this->formObj->build();
}
}
// pseudo form builder class
Class FormBuild extends siteBase {
protected $data;
function __construct($caller) {
$this->set($caller);
}
function set($arr) {
foreach($arr as $key => $val) {
$this->$key = $val;
}
}
function getFormData() {
$this->data = new FormQuery($this); // more easy $this passing
}
function build() {
foreach($this->data as $key => $val) {
echo $key . " " . $val . "<br>";
}
}
}
Class FormQuery extends siteBase {
function __construct($caller) {
$this->set($caller);
}
function query() {
$sql = "SELECT email, phone FROM account WHERE custID = '$this->custID'";
// query & return return result, etc.
}
}
Что «профи» делают это в ситуации? Я бы хотел немного почистить интерфейс ...