My favorites | Sign in
Project Home Downloads Wiki Source
Project Information
Members
Featured
Downloads
Wiki pages

SlightPHP 高效的PHP敏捷开发框架 2.0(进行中)

正在开发中,主要特点:

1.用高效的STpl模板替换SGui(SGui是基于smarty的模板,效率不高,要使用smarty的话,需要自己加载,smarty3.0太不给力了)

2.弃用ini配置文件格式,全完启用conf(基于SConfig)的配置文件格式,更灵活,更强大~

3.SCache优化,效率显著提升

4.待续

SlightPHP 高效的PHP敏捷开发框架 1.4.1

注意:源码不要在trunk上更新,移到tag1.4( https://slightphp.googlecode.com/svn/tags/1.4 )了

成功案例

1.猪八戒(http://zhubajie.com)

2.优酷电台(http://youku.fm)

3.微彩云(http://www.weicaiyun.com/)

4.评东家(http://www.pingdongjia.com/)

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

QQ交流群:182935949

主要特点

1 独有的"框架"与"plugins"分离方式,与现在主流框架完全不同,把核心框架与其它功能独立分开,灵活性大,耦合度小,很方便移植 
2 框架本身核心代码非常小,速度快效率极高,更支持php模块方式加载(请编译pecl目录下的源码,或者直接编译到php里)
3 框架支持nginx,lighttpd,apache,iis等web服务器
4 插件SDb 支持mysql,mysqli,pdo,mssql,oracle等主流数据库,同时更支持数据库读写库分离,特适合大流量网站
5 插件SRoute 支持各种简洁路由支持,精简URL
6 插件STpl模板类,高效与灵活,比Smarty轻量级不少!
7 插件SCache(memcache)采用consistent hashing算法,支持分布式服务与依赖KEY,同时也支持file,apc缓存
8 其它更多灵活可定制的插件,请查看wiki或者samples下的例子

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} !-f
RewriteCond %{REQUEST_FILENAME} !-d
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[0] 就是当前的 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缓存插件

http://code.google.com/p/slightphp/w/list

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

Powered by Google Project Hosting