iwp - sae 版本_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > iwp - sae 版本

iwp - sae 版本

 2012/3/13 15:39:43  vb2005xu  程序员俱乐部  我要评论(0)
  • 摘要:新浪SAE限制真多郁闷http://1.iwp001.sinaapp.com/iwp/public/?q=framework.doc.indexhttp://1.iwp001.sinaapp.com/iwp/public/?q=testcase.index那就在sae上开发吧,暂时...文档集成了一个不到100行的wiki引擎单元测试是我之前自己写的kencore-unit<?phpCore_Autoloader::loadFile(COREPATH.'/vendor/WikiDoc
  • 标签:iwp sae 版本
新浪?SAE?限制真多?郁闷
http://1.iwp001.sinaapp.com/iwp/public/?q=framework.doc.index
http://1.iwp001.sinaapp.com/iwp/public/?q=testcase.index
那就在 sae 上开发吧,暂时...
文档集成了一个 不到100行的 wiki引擎
单元测试是我之前自己写的 kencore-unit

<?php
Core_Autoloader::loadFile(COREPATH . '/vendor/WikiDoc.class.php');
Core_Autoloader::loadFile(COREPATH . '/vendor/TplEngine.class.php');

/**
 * Iwp 文档查看器
 *
 */
class Pkg_Iwp_Doc {
	
	const queryHome = 'query-home';
	const queryController = 'query-controller';
	const queryAction = 'query-action';
	const queryApiName = 'api-index';
	
	static $pageTitle = '';
	
	static $apiQueryHome = 'http://iwp.iamsese';
	static $apiController = 'api';
	static $apiAction = 'index';
	
	static function lookup(array $vars){
		
		static $tplEngine = null;
		if (!$tplEngine){
			$tplConfig = array(
				'templateDir' => dirname(__FILE__) . '/_views',
				'enableCache' => false,
			);
			$tplEngine = new TplEngine($tplConfig);
			
			// 注入扩展开发
			WikiDoc::addPlugin('title',"Pkg_Iwp_Doc::plugin_title");
			WikiDoc::addPlugin('apilink',"Pkg_Iwp_Doc::plugin_apilink");
			
		}
		
		$apiName = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryApiName,'index');
		
		self::$apiQueryHome = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryHome,'http://iwp.iamsese');
		self::$apiController = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryController,'api');
		self::$apiAction = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryAction,'index');
		
		
		// 过滤特殊字符
		$apiName = preg_replace('/[^a-z0-9_]+/i', '', $apiName);
		$apiName = strtolower(trim($apiName));
		
		$api_content = "{$apiName} 未找到";
		$last_mod = FALSE;
		
		do {
			if (empty($apiName)) {
				$api_content = "错误 500: 无效的 apiName ";
				break;
			}
			$apiFile = Pkg_Iwp_Doc::getApiFile($apiName);
			if ($apiFile){
				$last_mod = filemtime($apiFile);
				$api_content = WikiDoc::parse(file_get_contents($apiFile));
				break;
			}
		} while(false);
					
		$tplEngine->assign('page_title',Pkg_Iwp_Doc::$pageTitle);
		$tplEngine->assign('api_content',$api_content);
		$tplEngine->assign('last_mod',$last_mod ? date('y-m-d H:i:s',$last_mod) : '未知' );
				
		$tplEngine->display('display.php');
	}
	
	static function getApiFile($apiName){
		$apiFile = dirname(__FILE__) . '/api' . "/{$apiName}.txt";
		if (is_readable($apiFile)){
			return $apiFile;
		}
		return false;
	}
	
	/**
	 * 增加 title 标签
	 *	
	 * <<title Felix Ple?oianu>>
	 * 
	 * @param string $title
	 * @return string
	 */
	static function plugin_title($title){
		Pkg_Iwp_Doc::$pageTitle = trim($title);
		return '';
	}
	
	/**
	 * 增加 applnk 标签,用于内部api name链接
	 *	
	 * <<applnk about , 关于>>
	 * 
	 * @param string $apiName
	 * @return string
	 */
	static function plugin_apilink($apiName){
		
		static $tpl = '[%s %s]';
		
		$secs = explode(',',trim($apiName));
		if (!empty($secs)){
			$link = array_shift($secs);
			if (empty($secs)) $text = $link;
			else $text = implode(',',$secs);
			
			$link = self::$apiQueryHome . Core_AppUtils::url(self::$apiController,self::$apiAction,array(
				self::queryApiName => trim($link)
			));
			return sprintf($tpl,$link,$text);
		}
		return $apiName;
	}
}
? 这个是帮助文档的生成类

? index.txt 内容如下 写道 <<title 对 Iwp 的介绍>>
大多数PHPer都想写出运行状态良好的应用程序,而且希望尽可能做得简单且不费事。而Iwp就是一个达成以上目标的框架。

===== Iwp 是什么? 框架又是什么?
当发明计算机编程不久之后,便有人发现,这其中涉及到了太多的重复操作。之后,也许是 Ada Lovelace(人类历史上的首位程序员),又或许是 Alan Turning,决定将计算机程序模块化,从而使得片段程序代码可以重复使用。PHP 程序员们早已习惯了将需要重复使用的代码写在函数中,并将这些函数放在 include 文件里。

同样的,框架是为重用而发明的,存放在独立的文件中,用来简化重复操作的代码。

<<apilink about,关于作者 vb2005xu >>

{{http://1.iwp001.sinaapp.com/iwp/public/me.jpg}}

[http://vb2005xu.iteye.com/blog/1443451 关于这个文档的说明] ?
发表评论
用户名: 匿名