免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1866 | 回复: 1

iwp - sae 版本 [复制链接]

论坛徽章:
0
发表于 2012-03-11 18:29 |显示全部楼层
iwp - 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代码
  1. 1.<?php   
  2. 2.Core_Autoloader::loadFile(COREPATH . '/vendor/WikiDoc.class.php');   
  3. 3.Core_Autoloader::loadFile(COREPATH . '/vendor/TplEngine.class.php');   
  4. 4.  
  5. 5./**  
  6. 6. * Iwp 文档查看器  
  7. 7. *  
  8. 8. */  
  9. 9.class Pkg_Iwp_Doc {   
  10. 10.      
  11. 11.    const queryHome = 'query-home';   
  12. 12.    const queryController = 'query-controller';   
  13. 13.    const queryAction = 'query-action';   
  14. 14.    const queryApiName = 'api-index';   
  15. 15.      
  16. 16.    static $pageTitle = '';   
  17. 17.      
  18. 18.    static $apiQueryHome = 'http://iwp.iamsese';   
  19. 19.    static $apiController = 'api';   
  20. 20.    static $apiAction = 'index';   
  21. 21.      
  22. 22.    static function lookup(array $vars){   
  23. 23.           
  24. 24.        static $tplEngine = null;   
  25. 25.        if (!$tplEngine){   
  26. 26.            $tplConfig = array(   
  27. 27.                'templateDir' => dirname(__FILE__) . '/_views',   
  28. 28.                'enableCache' => false,   
  29. 29.            );   
  30. 30.            $tplEngine = new TplEngine($tplConfig);   
  31. 31.               
  32. 32.            // 注入扩展开发   
  33. 33.            WikiDoc::addPlugin('title',"Pkg_Iwp_Doc::plugin_title");   
  34. 34.            WikiDoc::addPlugin('apilink',"Pkg_Iwp_Doc::plugin_apilink");   
  35. 35.               
  36. 36.        }   
  37. 37.           
  38. 38.        $apiName = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryApiName,'index');   
  39. 39.           
  40. 40.        self::$apiQueryHome = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryHome,'http://iwp.iamsese');   
  41. 41.        self::$apiController = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryController,'api');   
  42. 42.        self::$apiAction = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryAction,'index');   
  43. 43.           
  44. 44.           
  45. 45.        // 过滤特殊字符   
  46. 46.        $apiName = preg_replace('/[^a-z0-9_]+/i', '', $apiName);   
  47. 47.        $apiName = strtolower(trim($apiName));   
  48. 48.           
  49. 49.        $api_content = "{$apiName} 未找到";   
  50. 50.        $last_mod = FALSE;   
  51. 51.           
  52. 52.        do {   
  53. 53.            if (emptyempty($apiName)) {   
  54. 54.                $api_content = "错误 500: 无效的 apiName ";   
  55. 55.                break;   
  56. 56.            }   
  57. 57.            $apiFile = Pkg_Iwp_Doc::getApiFile($apiName);   
  58. 58.            if ($apiFile){   
  59. 59.                $last_mod = filemtime($apiFile);   
  60. 60.                $api_content = WikiDoc::parse(file_get_contents($apiFile));   
  61. 61.                break;   
  62. 62.            }   
  63. 63.        } while(false);   
  64. 64.                       
  65. 65.        $tplEngine->assign('page_title',Pkg_Iwp_Doc::$pageTitle);   
  66. 66.        $tplEngine->assign('api_content',$api_content);   
  67. 67.        $tplEngine->assign('last_mod',$last_mod ? date('y-m-d H:i:s',$last_mod) : '未知' );   
  68. 68.                  
  69. 69.        $tplEngine->display('display.php');   
  70. 70.    }   
  71. 71.      
  72. 72.    static function getApiFile($apiName){   
  73. 73.        $apiFile = dirname(__FILE__) . '/api' . "/{$apiName}.txt";   
  74. 74.        if (is_readable($apiFile)){   
  75. 75.            return $apiFile;   
  76. 76.        }   
  77. 77.        return false;   
  78. 78.    }   
  79. 79.      
  80. 80.    /**  
  81. 81.     * 增加 title 标签  
  82. 82.     *   
  83. 83.     * <<title Felix Pleșoianu>>  
  84. 84.     *   
  85. 85.     * @param string $title  
  86. 86.     * @return string  
  87. 87.     */  
  88. 88.    static function plugin_title($title){   
  89. 89.        Pkg_Iwp_Doc::$pageTitle = trim($title);   
  90. 90.        return '';   
  91. 91.    }   
  92. 92.      
  93. 93.    /**  
  94. 94.     * 增加 applnk 标签,用于内部api name链接  
  95. 95.     *   
  96. 96.     * <<applnk about , 关于>>  
  97. 97.     *   
  98. 98.     * @param string $apiName  
  99. 99.     * @return string  
  100. 100.     */  
  101. 101.    static function plugin_apilink($apiName){   
  102. 102.           
  103. 103.        static $tpl = '[%s %s]';   
  104. 104.           
  105. 105.        $secs = explode(',',trim($apiName));   
  106. 106.        if (!emptyempty($secs)){   
  107. 107.            $link = array_shift($secs);   
  108. 108.            if (emptyempty($secs)) $text = $link;   
  109. 109.            else $text = implode(',',$secs);   
  110. 110.               
  111. 111.            $link = self::$apiQueryHome . Core_AppUtils::url(self::$apiController,self::$apiAction,array(   
  112. 112.                self::queryApiName => trim($link)   
  113. 113.            ));   
  114. 114.            return sprintf($tpl,$link,$text);   
  115. 115.        }   
  116. 116.        return $apiName;   
  117. 117.    }   
  118. 118.}  
  119. <?php
  120. Core_Autoloader::loadFile(COREPATH . '/vendor/WikiDoc.class.php');
  121. Core_Autoloader::loadFile(COREPATH . '/vendor/TplEngine.class.php');

  122. /**
  123. * Iwp 文档查看器
  124. *
  125. */
  126. class Pkg_Iwp_Doc {
  127.        
  128.         const queryHome = 'query-home';
  129.         const queryController = 'query-controller';
  130.         const queryAction = 'query-action';
  131.         const queryApiName = 'api-index';
  132.        
  133.         static $pageTitle = '';
  134.        
  135.         static $apiQueryHome = 'http://iwp.iamsese';
  136.         static $apiController = 'api';
  137.         static $apiAction = 'index';
  138.        
  139.         static function lookup(array $vars){
  140.                
  141.                 static $tplEngine = null;
  142.                 if (!$tplEngine){
  143.                         $tplConfig = array(
  144.                                 'templateDir' => dirname(__FILE__) . '/_views',
  145.                                 'enableCache' => false,
  146.                         );
  147.                         $tplEngine = new TplEngine($tplConfig);
  148.                        
  149.                         // 注入扩展开发
  150.                         WikiDoc::addPlugin('title',"Pkg_Iwp_Doc::plugin_title");
  151.                         WikiDoc::addPlugin('apilink',"Pkg_Iwp_Doc::plugin_apilink");
  152.                        
  153.                 }
  154.                
  155.                 $apiName = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryApiName,'index');
  156.                
  157.                 self::$apiQueryHome = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryHome,'http://iwp.iamsese');
  158.                 self::$apiController = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryController,'api');
  159.                 self::$apiAction = Core_AppUtils::val($vars,Pkg_Iwp_Doc::queryAction,'index');
  160.                
  161.                
  162.                 // 过滤特殊字符
  163.                 $apiName = preg_replace('/[^a-z0-9_]+/i', '', $apiName);
  164.                 $apiName = strtolower(trim($apiName));
  165.                
  166.                 $api_content = "{$apiName} 未找到";
  167.                 $last_mod = FALSE;
  168.                
  169.                 do {
  170.                         if (empty($apiName)) {
  171.                                 $api_content = "错误 500: 无效的 apiName ";
  172.                                 break;
  173.                         }
  174.                         $apiFile = Pkg_Iwp_Doc::getApiFile($apiName);
  175.                         if ($apiFile){
  176.                                 $last_mod = filemtime($apiFile);
  177.                                 $api_content = WikiDoc::parse(file_get_contents($apiFile));
  178.                                 break;
  179.                         }
  180.                 } while(false);
  181.                                        
  182.                 $tplEngine->assign('page_title',Pkg_Iwp_Doc::$pageTitle);
  183.                 $tplEngine->assign('api_content',$api_content);
  184.                 $tplEngine->assign('last_mod',$last_mod ? date('y-m-d H:i:s',$last_mod) : '未知' );
  185.                                
  186.                 $tplEngine->display('display.php');
  187.         }
  188.        
  189.         static function getApiFile($apiName){
  190.                 $apiFile = dirname(__FILE__) . '/api' . "/{$apiName}.txt";
  191.                 if (is_readable($apiFile)){
  192.                         return $apiFile;
  193.                 }
  194.                 return false;
  195.         }
  196.        
  197.         /**
  198.          * 增加 title 标签
  199.          *       
  200.          * <<title Felix Pleșoianu>>
  201.          *
  202.          * @param string $title
  203.          * @return string
  204.          */
  205.         static function plugin_title($title){
  206.                 Pkg_Iwp_Doc::$pageTitle = trim($title);
  207.                 return '';
  208.         }
  209.        
  210.         /**
  211.          * 增加 applnk 标签,用于内部api name链接
  212.          *       
  213.          * <<applnk about , 关于>>
  214.          *
  215.          * @param string $apiName
  216.          * @return string
  217.          */
  218.         static function plugin_apilink($apiName){
  219.                
  220.                 static $tpl = '[%s %s]';
  221.                
  222.                 $secs = explode(',',trim($apiName));
  223.                 if (!empty($secs)){
  224.                         $link = array_shift($secs);
  225.                         if (empty($secs)) $text = $link;
  226.                         else $text = implode(',',$secs);
  227.                        
  228.                         $link = self::$apiQueryHome . Core_AppUtils::url(self::$apiController,self::$apiAction,array(
  229.                                 self::queryApiName => trim($link)
  230.                         ));
  231.                         return sprintf($tpl,$link,$text);
  232.                 }
  233.                 return $apiName;
  234.         }
  235. }
复制代码
这个是帮助文档的生成类




  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 关于这个文档的说明]

论坛徽章:
0
发表于 2012-03-11 21:11 |显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP