SlightPHP

晨曦之光 发布于 2012/03/09 14:49
阅读 402
收藏 0

 SlightPHP是一个轻量级的php框架,支持php5,和php模块方式使用,和apc使用性能更高!

项目地址:http://code.google.com/p/slightphp/
源码地址:http://slightphp.googlecode.com/svn/trunk/

你有两种方法使用SlightPHP类:

一、使用普通的php方法

index.php的代码如下:
<?php
require_once("SlightPHP.php");
$SlightPHP = new SlightPHP;
$SlightPHP->run();
?>

二、使用php模块方法

index.php的代码如下:
<?php
if(!extension_loaded('SlightPHP')) {
     
    if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
        $rt = dl('SlightPHP.dll');
    } else {
        $rt = dl('SlightPHP.so');
    }
    if($rt===false){
        die("skip");
    }
}
$SlightPHP = new SlightPHP;
$SlightPHP->run();
?>


那么你就可以这样访问
index.php/$zone/$object/$method
这样的方式

他就会执行APP_DIR/$zone/$object.class.php的Page$method方法

你要做的就是建立 APP_DIR/$zone/$object.class.php文件,里面定议类名为$zone_$object的类和Page$method方法就行了,相当简单!

APP_DIR/$zone/$object.class.php的代码如下:

<?php
class $zone_$object{
    function Page$method(){}
}
?>
  
第一个示例,HelloWorld!

第一步:index.php文件内容
<?php
require_once("SlightPHP.php");
$SlightPHP = new SlightPHP;
$SlightPHP->run();
?>
第二步:请在index.php所在目录下新建zone目录,在zone目录下新建default.class.php,源代码如下:
<?php  
class zone_default{  
    function PageEntry($inPath){
        echo "Hello, world!";
    }  
}  
?>
第三步:正常访问你的index.php

 

SlightPHP 1.0 (正式发布!)

SlightPHP是一个轻量级的PHP框架,支持PHP5及以上版本。

成功案例

1.优酷网

http://lipton-icha.youku.com/

2.猪八戒

http://zhubajie.com

3.优酷电台

http://youku.fm

4.其它

如果您正使用这个框架,请联系我们,我们将会展示到这里

主要特点

1 支持模块和普通方式加载,用模块方式请编译pecl目录下的源码 
2 支持数据库读写库分离 
3 支持ApacheRewrite,精简URL 
4 扩展Sphinx 
5 核心代码非常小,就6K,速度快效率高,几乎和原生的一样 
6 其它

Hello, world!

第一步 建立index.php

<?php 
require_once("SlightPHP.php"); 
//或者你也可以用动态库方式 dl("SlightPHP.so"); 
 
SlightPHP::run(); 
 
?>

第二步 请在index.php所在目录下新建zone目录,在zone目录下新建page.page.php

<?php  
class zone_page{  
    function PageEntry($inPath){ 
        echo "Hello, world!"; 
    }  
}  
?>

第三步 请在你的地址栏里访问index.php,如

http://localhost/index.php

基本概念

zone 映射为一个目录名,默认为"zone" 
page 映射为一个文件名,以.page.php为扩展名,默认为"page" 
entry 映射为方法名,以Page开头的方法名,默认为"entry" 
appDir 应用程序目录,默认为".",就是当前目录 
splitFlag 分割符,默认为"/" 
inPath entry入口参数,数组,下面会有更详细的介绍

一、地址解析

这个地址 http://localhost/index.php

实际上和 http://localhost/index.php/zone/page/entry 一样

会执行你的

$appDir/zone/page.page.php下的pageEntry方法

你可以改变其默认规则

SlightPHP::setDefaultZone("user"); 
SlightPHP::setDefaultPage("profile"); 
SlightPHP::setDefaultEntry("update");

当访问 http://localhost/index.php 时,就会执行

$appDir/user/profile.page.php里的pageUpdate方法,其实就是

http://localhost/index.php/user/profile/update

这个URL

二、高级地址解析-别名

如果加了这代码

SlightPHP::setZoneAlias("user","u");

你访问这个地址

http://localhost/index.php/u/profile/update



http://localhost/index.php/user/profile/update

会是一样的效果

它的作用是增加user一个别名u

三、分隔符(splitFlag)

zone,page,entry的分隔默认是用/来分的,你可以改成自己想要的,如

SlightPHP::setSplitFlag(".")

就可以这样访问了

http://localhost/index.php/user.profile.update

或者更好看,加上.html

http://localhost/index.php/user.profile.update.html

这样的方式

你也可以这样,用多个分割符

SlightPHP::setSplitFlag("-.")

http://localhost/index.php/user-profile-update.html

和上面的是一样

四、Apache Rewrite

在你的.htaccess里或者apache的配置文件里加下类似代码

RewriteEngine   on 
RewriteCond %{REQUEST_FILENAME} !-RewriteCond %{REQUEST_FILENAME} !-RewriteRule ^(.*)$ index.php/$1 [L]

你就可以直接这样访问了

http://localhost/user/profile/update

如果你还加上了

SlightPHP::setSplitFlag(".");

那么就可以用这样的方式 http://localhost/user.profile.update

五、短路由

如你要直接这样,更短的地址

http://localhost/profile/update

请在apache的配置文件里加上类似这样的代码

RewriteRule   ^(/profile/.*)$ /index.php/user/profile/update/$1 [E=PATH_INFO:$1,L]

六、关于$inPath

$inPath[] 就是当前的 zone的名字 
$inPath[1] 就是当前的 page的名字 
$inPath[2] 就是当前的 entry的名字 
$inPath[...] 超过以前的就是后面更多的参数,如html

http://localhost/index.php/user/profile/update/other1/other2/... inPath是这样的

$inPath=array("user","profile","update","other1","other2","...")

七、appDir,程序目录设置

你可以自定义你的程序目录

SlightPHP::setAppDir("/home/www/myAppdir");

http://localhost/index.php/user/profile/update

就会执行

/home/www/myAppdir/user/profile.page.php下的pageUpdate方法

建议你的appDir目录不要让外部访问到

八、插件导航

SDb数据库插件

SCache缓存插件

更多插件功能请看samples下的示例

 


原文链接:http://blog.csdn.net/21aspnet/article/details/6740414
加载中
返回顶部
顶部