Когато пиша код от страна на клиента, използвам HTML/CSS/JavaScript и напоследък jQuery както за ускоряване на кодирането, така и за използване на подобрени методи за постигане на същата цел.
В моя текстов редактор използвам дзен кодиране, за да ускоря писането на код, а също и за да избегна грешки. Разглеждах дзен-кодирането като jQuery плъгин за известно време, но той има фатален недостатък, че искате HTML да бъде написан и изпратен на клиента просто, преди да се включи javascript.
Въпреки че можем да използваме JavaScript сървъри (env.js или node.js) и следователно да правим много разработка от страна на сървъра, използвайки JavaScript и jQuery, все още не ми е удобно да преминавам, тъй като това е нововъзникваща технология и има много разлики и недостатъци ( както и някои основни предимства).
Искам да продължа да използвам PHP от страната на сървъра, но да се развивам по начина, по който ми е най-удобно и съм запознат с това, което е JavaScript от страна на клиента.
Ето защо - разглеждах QueryPath, който е PHP порт на jQuery, който има за цел да вземе най-добрите и най-подходящите части от jQuery и да го преработи, за да отговаря на сървърната среда.
Всичко това е страхотно и сега разглеждам два PHP класа, способни да анализират дзен кодиране, което, когато се комбинира, действа като страхотен шаблонен двигател и също така избягва грешки в моя код.
Проблемът, който имам, е, че нито един парсер за дзен кодиране не поддържа почти пълен набор от функции за дзен кодиране.
И така, най-накрая моите въпроси (съжалявам за доста дългото въведение)
- Има ли по-добър парсер за дзен кодиране от страна на сървъра, който мога да използвам в моя PHP код?
- Има ли добра (много кратка и пълнофункционална) алтернативна система за шаблони за използване на дзен кодиране? (което знам, че първоначално не е предназначено за тази задача)
- Има ли по-добър подход, който трябва да предприема, за да постигна крайната си цел да стесня разделението между начина, по който кодирам от страната на клиента и страната на сървъра?
- Има ли PHP библиотека, която внедрява множество помощни функции, които чрез използване ще подобрят сигурността/производителността на моя код, без аз да научавам цялата вътрешна работа? (както jQuery прави за javascript)
NB: Търся повече функционална еквивалентност, отколкото синтактична прилика - въпреки че и двете са плюс за мен.
Ето малко коментиран тестов код, който трябва да осветли какво се опитвам да постигна:
<?php
// first php based zen-coding parser
// http://code.google.com/p/zen-php
require_once 'ZenPHP/ZenPHP.php';
// my own wrapper function
function zp($abbr){ return ZenPHP::expand($abbr); }
// second php based zen-coding parser
// https://github.com/philipwalton/PW_Zen_Coder
require_once 'PW_Zen_Coder/PW_Zen_Coder.php';
$zc = new PW_Zen_Coder;
// my own wrapper function
function pwzc($abbr){ global $zc; return $zc->expand($abbr); }
// php port of jQuery with a new server-side flavor
// http://querypath.org/
require_once 'QueryPath/QueryPath.php';
// initialize query path with simple html document structure
qp(zp('html>head+body'))
// add a heading and paragraph to the body
->find('body')
->html(zp('h1{Zen Coding and jQuery - Server Side}+p{This has all been implemented as a php port of JavaScript libraries}'))
// add a comments link to the paragraph
->find('p')
->append(pwzc('span.comments>a[href=mailto:[email protected]]{send a comment}'))
// decide to use some jquery - so add it to the head
->find(':root head')
->append(zp('script[type=text/javascript][src=/jquery.js]'))
// add an alert script to announce use of jQuery
->find(':root body')
->append(zp('script[type=text/javascript]{$(function(){ alert("just decided to use some jQuery") })}'))
// send it to the browser!
->writeHTML();
/* This will output the following html
<html>
<head>
<script type="text/javascript" src="/jquery.js"></script>
</head>
<body>
<h1>
Zen Coding and jQuery - Server Side
</h1>
<p>
This has all been implemented as a php port of JavaScript libraries
<span class="comments">
<a href="/bgmailto:[email protected]">
send a comment
</a>
</span>
</p>
<script type="text/javascript">
$(function(){ alert("just decided to use some jQuery") })
</script>
</body>
</html>
*/
?>
Всяка помощ е много ценена