To do the feasibility study for a PHP to C converter
Осталось только подождать.
Хотя если ждать не хочется, написать транслятор можно вполне, это, для основных функций, по силам одному человеку хорошо знающему оба языка.
Резюмирую
Сейчас все компиляторы для РНР, работают как VB6, что очень медленно. Если же РНР можно будет компилировать "по настоящему", это реально может понравится многим "не web" программистам.
То есть, не стоит писать шаблонизатор, юзающий её?
Если очень хочется, почему бы и не попробывать.
Открою секрет, Ytrams это мой 4-й шаблонизатор. Поэтому перепробывал я многое... И Eval тоже.
2-й шаблонизатор назывался "eVa" и работал так:
брались все шаблоны которые юзались для генереции страницы, превращались в РНР код (заметте, не отдельно как в смарти, а все сразу) и все это дело сохранялось на некоторое время в большой куче (в базе данных)
Ядро получает запрос на вывод страницы, смотрит в куче, есть ли уже "собраный макет", если есть, то подключает его через eval(), если нет, то собирает его и подключает.
В итоге, эта штука обгоняла Smarty в 6-8 раз по скорости. Но эа это я платил тем, что "куча" с шаблонами была немаленькой (1-3Мб)
Резюмирую
Нет неправильных подходов, но перед тем как юзать, надо сначала надо потестировать.
President оставте кактус в покое, он у меня один остался
Возможно вам таки стоит описать задачу, что вы хотите получить. А то я так подозреваю что мы вас не понимаем... или вы нас.
Кстати... А что если человек хотел транслятор с РНР на Си... Следите за руками... раааз, а вот и...
пример из жизни
Помню в универе нашем, матфаковцы все писали на паскале, а потом транслировали в Си и сдавали преподу... Ибо 3-и курса их учили паскалю, а потом препод сменился.
Возможно чел хотел автоматический транслятор+компилятор... Запускается РНР разборщик, смотрит на РНР код, переводит его на СИ, затем скармливает с предустановками GCC, и бинарники складывает в кеш...
И собственно выполняется уже не РНР файл а скомиленный из него бинарник.
И кстати насчет IF и друних конструкций в шаблоне - может использовать XML вместе с XLT ?
Мир не идеален дорогой JustUserR. Не идеальны броузеры, мониторы и люди. А так как неидеальны люди, неидеальны и их спецификации.
К чему это я?
Я к тому, что даные готовит РНР и хранит он их в виде хешей-масивов. Шаблонизатор это набор логики отображения который эту логику наложит на сырые данные. И в чем отличие XSLT от конструкций вида foreach/if? Где прибыль так сказать?
XSLT требует лишний шаг...
Так как РНР это набор хеш-масивов, их надо перегнать в XML и XML передать XSLT движку, который, даст бог, выдаст результат.
XSLT дороже в создании и еще дороже в поддержке, потому что, кодеров в универах учат языку C/C++ и окромя классов ничего такие кодеры не признают...
Если заикнутся про Пролог, удавят на месте.
Заработало! Спасибо! Только я не понял как теперь там табличку то вставить в правильное место
Я когда в первый раз XML парсил сложный, тоже "шокировался" по типу "ээ а где остальное".
На самом деле отображается глубина не более 3-х вроде... Это специфика перевода в array. Показывает 3, а содержит все.
Чтобы получить полную копию xml->array можно обработать как-то так
Как видите, мы получили подробненько всего монстра.
Учтите, что я не приводил к cp1251, так как пример учебный.
Резюмирую:
То что simplexml выводит xml в таком необычном на первый взгляд виде - это нормально и правильно. А то что таблички "пропали", так просто они слишком глубоко лежали и были скрыты.
Если нужны более подробные/точные пояснения, прошу стучать в аську, не стесняйтесь.
simplexml_load_file() - создает из документа xml класс со свойствами... Вы можете пробежатся по нему как по массиву,
учитывая "<![!DATA", вложенось и прочие XML заморочки.