Добавление элементов в другие элементы - PullRequest
2 голосов
/ 02 августа 2010

Я использую .net последние пару лет, и мне нравится, как вы можете добавлять элементы управления в любой точке страницы из любого места. Например, вы можете сказать Head.Controls.add(new LiteralControl("<link rel='stylesheet' type='text/css' href='styles.css' />")), даже если тело уже есть.

Можно ли делать такие вещи в php? Мой сайт настроен так, что у нас есть агенты, клиенты и художники (это для компании по производству карточек, которая хочет, чтобы клиентское приложение использовалось в автономном режиме на выставках). Форма добавления агента может иметь разные стили для формы добавления клиента. Поэтому я хочу, чтобы каждый тип находился в отдельной папке (например, агенты, клиенты и исполнители), каждый со своей таблицей стилей. Будет одна страница формы, которая принимает GET параметры типа (исполнитель, клиент и т. Д.), Режима (создание, редактирование) и необязательный параметр ID (в режиме редактирования). Я хотел бы иметь возможность звонить $agentForm->generateForm() и $agentForm->generateStyleTag() за один раз, а не то, что я сейчас делаю, это звонить $agentForm->generateForm() в теле и $agentForm->generateStyleTag в голове (даже без начального тела тег создается).

Хороший способ сказать, что у меня есть тег Head и Body. В другой функции под названием $agentForm->generateHTML() я хочу сказать Body->addChild("bla") и Head->addChild("bla"). Это значительно облегчает разработку новой страницы, поскольку обеспечивает наличие стилей и их правильность для раздела сайта, на котором находится пользователь.

Возможно ли этого добиться или это одно из главных отличий между php и .net?

Ответы [ 4 ]

5 голосов
/ 02 августа 2010

PHP, по сути, предназначен только для того, чтобы бросать строки в STDOUT, если они не буферизированы. Чтобы это работало, вам нужно использовать систему шаблонов, которая поддерживает это, или использовать свою собственную. Не существует 'встроенной' системы шаблонов, если только вы не рассчитываете загрузить все это в DOMDocument или что-то в этом роде и не выполняете основные необработанные манипуляции с DOM, которые будут намного медленнее и которые я бы не хотел Рекомендую, если вы не планируете делать много других модификаций DOM. Поищите в Google системы шаблонов PHP и проверьте, какая из них отвечает вашим потребностям.

3 голосов
/ 02 августа 2010

Вам нужно что-то осознать. .NET - это framework , а не язык программирования. Вопрос идентичен Can you do this in C#. Поймите, что вы сравниваете яблоки с апельсинами.

Язык PHP завершен по Тьюрингу, так что да, вы можете это сделать. Это не означает, что код для этого написан (может быть) или что это будет легко (кто знает). Это только означает, что это возможно.

С учетом вышесказанного вам нужно найти основу, чтобы делать то, что вы хотите. Ни один язык не придет с такой операцией (поскольку он слишком ограничивает язык в целом). Таким образом, ваша задача больше не «Может ли PHP сделать это», а «Мне нужно найти основу для этого». Попробуйте заглянуть в рамки, и, держу пари, вы довольно легко найдете свой ответ ...

2 голосов
/ 02 августа 2010

Посмотрите на PRADO рамки и Yii рамки.Они имеют иерархическую, основанную на компонентах философию, которая позволяет вложения и компоновки, что делает необходимым создание целого сайта из небольших, подключаемых компонентов.

0 голосов
/ 02 августа 2010

Как уже указывалось, PHP - это язык, а .Net - это фреймворк.Это очень разные вещи.

Если вы хотите использовать PHP в качестве языка сценариев для .Net, всегда есть Phalanger

...