Pull to refresh
10
0
Send message
Я хотел сказать
protected function addFile( $params ){
  return parent::addFile( $params );
}
Спасибо за хорошие комментарии.
Я вас, кажется, понимаю. У всех этих документов (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'ом. Но с другой стороны, мы изобретаем велосипед. Можно просто прикрутить готовый шаблонизатор в свойство и скармливать ему шаблон. Вопрос — какой шаблонизатор?
2

Information

Rating
Does not participate
Registered
Activity