Ну уж на этот вопрос информации просто море да и слишком общий вопрос.
Если вкратце:
1. Не писать велосипеды (использовать фреймворки/микро-фреймворки)
2. По принципу - всё нельзя, можно только жёстко заданное.
Николай Лапшин: Для больших проектов Symfony вне конкуренции.
Для более мелких laravel / yii.
Нынче всегда уже Symfony. Правда вам будет трудно его осилить, поэтому советую выбрать для начала Laravel