Спасибо за хорошие комментарии.
Я вас, кажется, понимаю. У всех этих документов (doc, odt, pdf) есть что-то общее, а именно, создание файла, добавление контента, упаковка. Ключевое слово — инкапсуляция. Здесь вы совершенно правы.
Сдружить наследование с инкапсуляцией, как мне видится, можно двумя способами:
1. Использовать геттеры/сеттеры
2. Написать костылей:
protected function addFile( $params ){
return $this->addFile( $params );
}
Не вижу смысла, т.к. получается, что везде где есть $this, вы приписали ->archive.
Забыли приписать возле $this->addFile(…
Если еще путь к шаблону поместить в ->archive, тогда вообще вся работа будет идти только через одно свойство.
В принципе, если DocxDocument должен будет являться наследником какого-то другого класса, тогда ваша реализация — выход.
Название класса — да, согласен. DocxDocument будет понятнее.
Наследование от ZipArchive — это концепция этого топика, я уверен, что именно так можно (не скажу что нужно, т.к. могут быть другие пути) генерить MSWord. Причина — в упаковщике. Если DocxDocument — генератор, то он должен быть и упаковщиком.
Вопрос про шаблон template — отдельная тема. В топике я реализовал лишь самое главное, применив str_replace. Но у каждого свои тараканы в голове — можно хоть Smarty применить.
Самое главное, что меня интересует — правильная ли реализация генерации контента при помощи метода assign? Ведь можно сделать assign методом регистрации переменных, как принято в Template-движках, а парсинг — методом pparse в конце. Что-то такое уже проглядывается в текущей реализации, поскольку весь контент регистрируется в одну переменную {CONTENT}, а в конце она одна парсится str_replac'ом. Но с другой стороны, мы изобретаем велосипед. Можно просто прикрутить готовый шаблонизатор в свойство и скармливать ему шаблон. Вопрос — какой шаблонизатор?
Я вас, кажется, понимаю. У всех этих документов (doc, odt, pdf) есть что-то общее, а именно, создание файла, добавление контента, упаковка. Ключевое слово — инкапсуляция. Здесь вы совершенно правы.
Сдружить наследование с инкапсуляцией, как мне видится, можно двумя способами:
1. Использовать геттеры/сеттеры
2. Написать костылей:
Забыли приписать возле $this->addFile(…
Если еще путь к шаблону поместить в ->archive, тогда вообще вся работа будет идти только через одно свойство.
В принципе, если DocxDocument должен будет являться наследником какого-то другого класса, тогда ваша реализация — выход.
Да, конечно.
Название класса — да, согласен. DocxDocument будет понятнее.
Наследование от ZipArchive — это концепция этого топика, я уверен, что именно так можно (не скажу что нужно, т.к. могут быть другие пути) генерить MSWord. Причина — в упаковщике. Если DocxDocument — генератор, то он должен быть и упаковщиком.
Вопрос про шаблон template — отдельная тема. В топике я реализовал лишь самое главное, применив str_replace. Но у каждого свои тараканы в голове — можно хоть Smarty применить.
Самое главное, что меня интересует — правильная ли реализация генерации контента при помощи метода assign? Ведь можно сделать assign методом регистрации переменных, как принято в Template-движках, а парсинг — методом pparse в конце. Что-то такое уже проглядывается в текущей реализации, поскольку весь контент регистрируется в одну переменную {CONTENT}, а в конце она одна парсится str_replac'ом. Но с другой стороны, мы изобретаем велосипед. Можно просто прикрутить готовый шаблонизатор в свойство и скармливать ему шаблон. Вопрос — какой шаблонизатор?