*Zendの導入 [#ic082d57]
 PukiWiki Adv. 1.1では、キャッシュ処理を中心に命令をZend Frameworkのものに置き換えていく予定です。
 
 とりあえず、ものすごくやっつけ仕事で、gettextの処理をi18nモジュールを置き換えてみました。
 
+main.php
 #sh(diff){{
+/////////////////////////////////////////////////
+// Include subroutines
 
+defined('LIB_DIR') or define('LIB_DIR', realpath('./').'/');
 
++use Zend\Loader\StandardAutoloader;
++require_once (LIB_DIR.'Zend/Loader/StandardAutoloader.php');
++$loader = new StandardAutoloader(array('autoregister_zf' => true));
++$loader->register();
+}}
 
+#sh(diff){{
 function set_language()
 {
 	global $language_considering_setting_level;
 	global $language;
 	global $public_holiday_guest_view;
 	global $translator;
 
 	$language = get_language($language_considering_setting_level);
 /*
 LANG
 LANG_ENCODING
 DOMAIN
 PO_LANG
 */
 
 	// LANG - Internal content encoding ('en', 'ja', or ...)
 	define('LANG', $language);
 
 	// Set COOKIE['lang']
 	$parsed_url = parse_url(get_script_absuri());
 	$path = $parsed_url['path'];
 	if (($pos = strrpos($path, '/')) !== FALSE) {
 		$path = substr($path, 0, $pos + 1);
 	}
 	setcookie('lang', $language, 0, $path);
 	$_COOKIE['lang'] = $language;
 
 	// PUBLIC HOLIDAY
 	// Installation person's calendar is adopted.
 	if ( $public_holiday_guest_view ) {
 		$_c = explode('_', $language);
 	} else {
 		// 設置者のカレンダーを採用
 		$_c = explode('_', DEFAULT_LANG);
 	}
 	define('COUNTRY', $_c[1]);
 	unset($_c);
 
 	// FIXME:
 	// UI_LANG - Content Language for buttons, menus,  etc
 	define('UI_LANG', LANG); // 'en' for Internationalized wikisite
 	// LANG_ENCODING - content encoding ('', 'UTF-8', or ...)
 	define('LANG_ENCODING', 'UTF-8');
 
 	// I18N
 	if (extension_loaded('intl')){
 		locale_set_default($language);
 	}
 
 	// LOCALE Name specified by GETTEXT().
 	define('DOMAIN', 'pukiwiki');
 	// LOCALE Name specified by SETLOCALE().
 	defined('PO_LANG') or define('PO_LANG', $language); // 'en_US', 'ja_JP'
 
 	// PHP mbstring process.
 	set_mbstring($language);
 
 +	global $translator;
 +	$translator = new Translator();
 }
 
 +// gettext to Zend gettext emulator
 +function T_setlocale($locale){
 +	// through
 +}
 +
 +function T_($string){
 +	global $translator, $domain, $language;
 +	return $translator->translate($string, $domain, $language);
 +}
 +
 +function T_bindtextdomain($domain, $dir){
 +	global $translator, $language;
 +	$gettext_file = $dir.PO_LANG.'/LC_MESSAGES/'.$domain.'.mo';
 +	if (file_exists($gettext_file)){
 +		$translator->addTranslationFile('gettext', $gettext_file, $domain, $language);
 +	}
 +}
 +
 +function T_bind_textdomain_codeset($name, $endode){
 +	// through
 +}
 +
 +function T_textdomain($text_domain){
 +	global $domain;
 +	$domain = $text_domain;
 +}
 }}
 
 PukiWiki Adv.ではサーバーの設定を変えないとGettextが効かないことから、予め用意されているgettextを使わず、php-gettextを使用するため、T_のプレフィックスのつく関数に変えていました。要はそこの処理を、Zend\i18nの処理に変更しただけですが、この変更だけで0.150秒ほどかかっていた処理が0.12秒ほどに短縮されました。
 
 個人的予想では、Zendではオートローディングなどの機能が重いため、遅くなると予想していましたが、これはうれしい誤算でした。また、zend\Cacheを用いることで更に軽量化も見込めるとのことで、本格的に導入したいと考えています。
 
// IP:"220.216.49.217" TIME:"2012-10-21(<abbr class="week_sun" title="日曜日">日</abbr>)14:45:35" REFERER:"http://pukiwiki.logue.be/?cmd=edit&amp;page=%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%2F2012-10-21" USER_AGENT:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4