`

iwp - sae 版本

php 
阅读更多
新浪 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 关于这个文档的说明]
 

1
0
分享到:
评论
2 楼 vb2005xu 2012-04-04  
vb2005xu 写道

客户端禁用cookie后 url自动附加 sessionid的方法
ini_set("session.name", 'iwpssid');
        ini_set("session.use_cookies", 0);
            ini_set('session.use_trans_sid',1);
session_start();



http://php.net/manual/zh/session.configuration.php 自定义session
1 楼 vb2005xu 2012-04-04  

客户端禁用cookie后 url自动附加 sessionid的方法
ini_set("session.name", 'iwpssid');
        ini_set("session.use_cookies", 0);
            ini_set('session.use_trans_sid',1);
session_start();

相关推荐

    iwp-cmf:基于 phalcon 2.0 的 iwp-cmf

    《基于Phalcon 2.0的IWP-CMF:深入解析与应用》 IWP-CMF,全称为"IWP Content Management Framework",是一款基于Phalcon 2.0框架开发的内容管理系统。Phalcon是一款高效的PHP框架,以其C语言编译的性能优化和轻量...

    IWP-Lab

    4. **实战项目**:为了提高实践能力,IWP-Lab可能会包含一些实际的项目任务,比如创建一个简单的个人主页、模拟电子商务网站的页面等,帮助学习者应用所学知识。 5. **测试和评估**:可能有练习题、测验或小测验,...

    iwp-project

    由于文件列表只给出了"iwp-project-master",这通常是GitHub仓库的默认克隆名称,暗示这个项目可能托管在GitHub上,且遵循Git版本控制系统。"master"分支是GitHub仓库的主要分支,包含了项目的基础代码。 在这样的...

    Spotify-IWP-Backend:Spotify克隆后端

    在 `Spotify-IWP-Backend` 中,开发者选择 TypeScript 可能是因为其强大的类型检查和代码补全功能,这些功能可以在编码阶段捕捉潜在错误,从而减少运行时错误。 1. **静态类型系统**:TypeScript 引入了静态类型,...

    iwp-cse3002-das:JAYAKUMAR K的iwp cse3002

    【标题】"iwp-cse3002-das: JAYAKUMAR K的iwp cse3002" 提供的信息表明这可能是一个关于计算机科学与工程(CSE)3002课程的项目,由JAYAKUMAR K创建。"iwp"可能代表"Internet Web Programming"或类似的主题,暗示这...

    IWP-Project:请先将此仓库回当地,以免造成混乱。 在此之后,仅编辑文件并推回此处

    标题中的"IWP-Project"可能是一个项目的名字,而描述中的信息强调了在对项目进行编辑前,应当先将其克隆到本地环境,以避免在共享仓库中直接编辑导致的混乱。这种工作流程遵循了Git的基本操作流程,Git是一种分布式...

    hmi_iwp700_900_1200_operating_instructions_enUS_en-US.pdf

    hmi_iwp700_900_1200_operating_instructions_enUS_en-US.pdf 触摸屏的说明书 The Industrial Webpanel is an operator control and display device in rugged design based on the 2nd generation of SIMATIC HMI ...

    intra mart iwp文档

    - **Intra-mart Web Platform**:主要分为 Resin 版本和 JBoss 版本。 - **Intra-mart Debug Server**:用于开发调试。 - **各模块介绍**:文档详细介绍了每个模块的功能和用途,如数据库连接器、安全认证组件等...

    alet-edevat-backend

    Celal Bayar大学软件工程是名为aletedevat.com的项目的后端仓库,该项目是为第3年SOA-IWP-DB课程项目创建的。 · 内容 关于该项目 该项目的目的是创建一个平台,将电子,汽车零配件等领域的公众供求结合在一起。 其...

    spotify-iwp.github.io:Spotify克隆

    "spotify-iwp.github.io:Spotify克隆" 暗示这是一个开源项目,其目标是创建一个类似Spotify的音乐流媒体平台。这个项目可能包含了一个前端界面,模仿了Spotify的用户体验,并可能实现了部分音乐播放、搜索、推荐等...

    iwp.zip_white balance_白平衡

    "iwp.zip_white balance_白平衡"这个压缩包文件显然包含了一种优化的白平衡算法,据描述所述,它的精度比传统的“白块算法”更高,同时在处理效率上保持相近。 在实际应用中,白平衡通常通过调整红色、绿色和蓝色...

    iwp:网上节目指南的信息通报2021年第一批FGV的内容

    结合以上信息,我们可以推测这个压缩包“iwp-main”很可能包含了以下内容: 1. **FGV的详细说明文档**:解释了2021年第一批FGV的具体变化、新增功能或改进,可能涉及到节目的分类、搜索功能、界面设计等方面的更新...

    Intra-mart 7 安装配置文档

    该文档详细介绍了Intra-mart 7版本中的一个关键组件——**IM-VisualDesigner**的安装与配置流程。 - **IM-VisualDesigner**:一款可视化的设计工具,用于简化Intra-mart应用的开发过程。 - **intra-mart Web ...

    Sherlock-webpage:IWP项目2020

    欢迎来到GitHub Pages 您可以使用的来维护和预览Markdown文件中网站的内容。 每当您提交到该存储库时,GitHub Pages都将运行从Markdown文件中的内容重建站点中的页面。 降价促销 Markdown是一种轻巧且易于使用的...

    Total Commander(TC)的ulister文件查看Lister插件,已包含Oracle的Redist库,可预览大量文件格式

    1025 - Wang IWP 1026 - Wordstar 5.5 1028 - Rich Text Format 1029 - Mac Word 3.0 1030 - Mac Word 4.0 1031 - Mass 11 1032 - MacWrite II 1033 - XyWrite / Nota Bene 1034 - IBM DCA/FFT 1035 - Mac ...

    RepairLanx.BestSound.ga7iWP7

    8. **编程实践**:了解版本控制(如Git),项目构建工具(如Webpack),以及测试和调试技巧也是开发过程中的重要技能。 综合以上信息,尽管原始标题和描述没有提供太多细节,但通过标签和压缩包内的文件名,我们...

    通过窗口和熵平衡融合对中国艺术家的水墨画(IWP)分类进行识别

    通过窗口和熵平衡融合对中国艺术家的水墨画(IWP)分类进行识别

    CSE3002_IWP_LabAssesments:CSE3002的所有实验室评估和周期表

    在本资源"CSE3002_IWP_LabAssesments:CSE3002的所有实验室评估和周期表"中,我们聚焦于一门名为"CSE3002 - Internet和Web Programming"的课程。这个压缩包包含了这门课程的实验评估内容以及相关的周期表,帮助学生...

    Delphi IntraWeb使用1 -部署为 Asp.Net 的应用.docx

    首先,要将 IntraWeb 应用程序部署为 Asp.Net 应用,你需要确保你的开发环境已经安装了 .NET Framework 4.5 及以上版本以及 ASP.NET MVC 4 或更高版本。这是因为 IntraWeb 需要这些组件来运行其应用程序在 ASP.NET ...

Global site tag (gtag.js) - Google Analytics