php software design architecture