Не стоит бояться абстрактных классов, это может быть очень удобным, интерфейс не содержит реализации, не может иметь свойств, только константы. Так же интерфейс только публичные методы имеет, когда абстрактный класс может содержать какие то приватные методы, где будет содержаться общая логика
Я за второй вариант
Тут главное не начинать все подряд массивы в итераторы загонять. Много где удобно работать в ОО стиле через итераторы, туда же можно при желании добавить генераторы. Есть куча стандартных (SPL) итераторов, есть кучи хэши и прочие прелести
Впервые начал работать через итераторы, когда начал работать с фс, списки файлов, параметры файлов, плюс есть рекурсивные
Можно. Берете картинку с сайта. Создаёте ресурс
$img = imagecreatefromstring($imgData);
Далее все тоже самое
Сохранять не нужно предварительно, главное создать ресурс. Функция создаёт ресурс из содержимого, расширение не важно, так же как и сохранить можно в любом из ресурса
Скажу стоит, обучая других, сам разберёшься в вопросе лучше, плюс появятся вопросы от новичков, но будьте готовы к критике, найдутся и те, которые будут кричать про какой нибудь фреймворк и вообще учите быдлокодерству.
Рано или поздно хочется чем то подобным заняться, многие даже пытаются, но не у всех получается завершить начатое
Все что делается сначала, нужно для вывода, то что в конце для записи в базу. По нормальному, надо чистые данные писать в базу, делая эскейп, и при выводе делать замены для защиты от xss.
Например у нас форум, куча ббкодов или маркдаун, вставки кода, если сразу все применить, то на выходе придётся делать обратно конвертер, чтоб оно работало