В целях саморазвития (1) и дальнейшего личного использования (2).
И (3) интересен процесс написания и разработки подобных вещей.
1. По вашему примеру получается, что для обозначения каждой новой переменной нужно каждый раз вызывать метод set()? По-моему, это слишком громоздко. Хотя... Там вряд ли много чего будет.
2. Как соотносятся обычные .php или .html файлы и все .tpl файлы?
3. Куда подключать обработчик?
4. Как будут встроены .tmpl файлы?
Буду очень признателен, если покажете все на простом примере.
index.php
Леша Киселев: и тогда еще вопрос. Если я подключаю классы spl_autoload_register()'ом, то как лучше подключать интерфейсы, ведь не будешь же их для каждого класса создавать?
(Мне важно только, правильно ли я все понял)
* - рассуждения.
ТЗ: написать класс, регистрирующий пользователя.
* - Что должен делать класс? - Регистрировать. - Значит, обязательный метод должен быть один: Register. - Что-нибудь еще? - Пароль обязательно должен быть зашифрован. Значит, еще один обязательный метод: Hashpassword.
* От этого и пляшем.
interface iRegistration {
public function Register;
private function Hashpassword;
}
Создал я этот "глобальный шаблон" (почему? Потому что называя интерфейсы только так и способен понять их предназначение (и то, если понимаю правильно)), и теперь, когда пишу класс Registration, просто должен этого шаблона придерживаться. Так?
То есть интерфейс, это как шаблон, да? Сначала я в нем описываю глобальные задачи, которые ставлю перед собой, а потом реализую их в виде методов.
Леша Киселев: ладно, убедили. Тогда, получается, что интерфейс должен содержать объявления САМЫХ глобальных методов, без которых класс не имеет смысла?
Например, класс Registration обязательно должен содержать функцию Register, но необязательно - PasswordHashing (вообще, конечно, обязательно, но я для примера). Значит в интерфейсе этого класса обязательно должна быть только функция Register?
Леша Киселев: "и где же?"
Вася создал интерфейс (Вася тимлид, Вася точно знает, какие функции должен реализовывать класс).
Миша пишет класс. Миша решил, что метод MyMethod совсем не нужен. Миша тестит и получает фатальную ошибку. Итог: Мише надо сообщать Васе, что интерфейс содержит лишнее, а Васе надо лишнее удалять. Очевидно же.
Леша Киселев: видимо, использовать их логично в таких примерах, типа ваших, когда 2 класса почти идентичны друг другу, но направлены на разные области.
Кстати, что касается "Конечно, дело твое как писать свой код :)":
Зачем порождать быдлокод? Я за строгость. Пусть все пишут в одном стиле (утопия, согласен), зато все будут понимать друг друга.
И, касаясь этого, в спецификации нигде не написано, где и как конкретно (и в каких задачах) использовать те же самые интерфейсы. Отличие - четко написано, что "программистами принято, что классы нужно хранить в отдельных файлах". И сразу все понятно. И спором не возникает. Принято - значит советуем делать именно так.
"а вообще препроцессоры как минимум дают более читабельный код"
Готов поспорить. Лично я бы не сказал, что это
Выглядит читабельнее этого:
Не согласен с тем, что легко гуглятся. Моя проблема гуглиться не хотела. Просто уже давно были мысли переходить на *nix, а тут еще и повод появился.
Единственный плюс, который мне принес тот же SCSS за 10 минут пользования это то, что благодаря нему я перешел на linux :D