hetao29 / slightphp
SlightPHP PHP 框架
Requires
- guzzlehttp/guzzle: >=7.0
README
安装方法
- 方法一,执行以下命令
//使用中国镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
//下载安装最新
composer require "hetao29/slightphp:dev-master"
- 方法二,添加 composer.json,然后执行 composer install
{
"require": {
"hetao29/slightphp": "dev-master"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
pecl 模块支持php7
- 最新更新,支持php7模块
- 支持composer
- 更简单方便的命令行执行模式
主要特点:
- 独特的"框架"与"插件"分离方式,与现在主流框架完全不同,将核心框架与其它功能独立分开,灵活性大,耦合度小,便于移植
- 支持composer(3.0及以上)
- 支持php7(3.0及以上)
- 支持pecl的模块加载 请编译pecl目录下的源码,或者直接编译到php里
- 支持命令行/cli模式 可以直接执行SlightPHP::run($path_info),适用于WorkerMan、Swoole等PHP服务端项目
- 框架本身核心代码非常小
- 框架支持nginx、lighttpd、apache、iis等Web服务器
- 插件SDb 支持mysql、mysqli、pdo、mssql、oracle等主流数据库,同时支持数据库读写分离,特别适合高流量网站
- 插件SRoute 支持各种简洁路由,精简URL
- 插件STpl模板类,高效灵活,比Smarty轻量级不少!
- 插件SCache(memcache)采用consistent hashing算法,支持分布式服务与依赖KEY,同时也支持file、apc缓存
- 更多灵活可定制的插件,请查看wiki或者samples下的例子
Hello, world!
第一步
在网站根目录下,建立index.php
<?php //加载方式1,直接加载框架 //require_once("SlightPHP.php"); //加载方式2,使用扩展,或者直接编译进PHP也可以 //dl("slightphp.so"); //或者在php.ini里增加(如果不支持dl的话) //extension = slightphp.so //加载方式3,使用composer的autoload require_once("vendor/autoload.php"); SlightPHP::run(); ?>
第二步
第二步 请在index.php所在目录下新建zone目录,在zone目录下新建page.page.php
<?php class zone_page{ function PageEntry($inPath){ echo "Hello, world!"; } } ?>
第三步
请在您的地址栏里访问index.php,如
https:///index.php
基本概念
zone 映射为一个目录名,默认为"zone" page 映射为一个文件名,以.page.php为扩展名,默认为"page" entry 映射为方法名,以Page开头的方法名,默认为"entry" appDir 应用程序目录,默认为".",就是当前目录 splitFlag 分割符,默认为"/" inPath entry入口参数,数组,下面会有更详细的介绍
地址解析
这个地址 https:///index.php 实际上和 https:///index.php/zone/page/entry 一样,会执行您的$appDir/zone/page.page.php下的pageEntry方法
您可以改变其默认规则
<?php SlightPHP::setDefaultZone("user"); SlightPHP::setDefaultPage("profile"); SlightPHP::setDefaultEntry("update"); ?>
当访问 https:///index.php 时,就会执行 $appDir/user/profile.page.php里的pageUpdate方法,其实就是 https:///index.php/user/profile/update 这个URL
高级地址解析-别名
如果加了这代码
SlightPHP::setZoneAlias("user","u"); SlightPHP::setPageAlias("profile","p");
您访问这个地址 https:///index.php/u/p/update 和https:///index.php/user/profile/update 会是一样的效果,它的作用是给user添加一个别名u
分隔符(splitFlag)
zone、page、entry的分隔默认是用/来分的,您可以改成自己想要的,如
SlightPHP::setSplitFlag(".")
就可以这样访问了 https:///index.php/user.profile.update 或者更好看,加上.html https:///index.php/user.profile.update.html 这样的方式您也可以这样,用多个分隔符
SlightPHP::setSplitFlag("-.")
https:///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]
您就可以直接这样访问了 https:///user/profile/update 如果您还加入了
SlightPHP::setSplitFlag(".");
那么就可以用这样的方式 https:///user.profile.update
短路由
如果您想要直接这样,更短的地址 https:///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
如 https:///index.php/user/profile/update/other1/other2/... inPath是这样的 $inPath=array("user","profile","update","other1","other2","...")
appDir,程序目录设置
您可以自定义您的程序目录
SlightPHP::setAppDir("/home/www/myAppdir");
如https:///index.php/user/profile/update
就会执行
/home/www/myAppdir/user/profile.page.php下的pageUpdate方法
建议您的appDir目录不要让外部访问到
插件导航
Wiki文档地址:https://github.com/hetao29/slightphp/tree/master/wiki
API文档地址:http://hetao29.github.io/slightphp/
STpl 模板插件 https://github.com/hetao29/slightphp/blob/master/wiki/STpl.md
SDb 数据库插件 https://github.com/hetao29/slightphp/blob/master/wiki/SDb.md
SCache 缓存Memcache,File,Apc插件 https://github.com/hetao29/slightphp/blob/master/wiki/SCache.md
SRedis 缓存Redis插件 https://github.com/hetao29/slightphp/blob/master/wiki/SRedis.md
SConfig 配置文件插件 https://github.com/hetao29/slightphp/blob/master/wiki/SConfig.md
SRoute 路由插件 https://github.com/hetao29/slightphp/blob/master/wiki/SRoute.md
SError 错误插件 https://github.com/hetao29/slightphp/blob/master/wiki/SError.md
...
更多插件功能请查看samples目录下的示例
Nginx配置
location / {
root /var/www/slightphp/samples/www;
index index.php;
if (!-e $request_filename){
rewrite ^/(.+?)$ /index.php last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/slightphp/samples/www$fastcgi_script_name;
include fastcgi_params;
}
版本
3.2
免费软件,MIT许可!