Giter Site home page Giter Site logo

hetao29 / slightphp Goto Github PK

View Code? Open in Web Editor NEW
113.0 14.0 38.0 12.32 MB

SlightPHP 高效的PHP敏捷开发框架

License: MIT License

C 10.57% PHP 56.57% HTML 31.49% CSS 0.94% JavaScript 0.07% M4 0.36%
php composer framework mysql apc pecl workerman swoole database slightphp

slightphp's Introduction

SlightPHP 高效的PHP敏捷开发框架

安装方法

  • 方法一 ,执行下面的命令
//使用**镜像
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
  • 更简单方便的命令行执行模式

主要特点:

  • 独有的"框架"与"plugins"分离方式,与现在主流框架完全不同,把核心框架与其它功能独立分开,灵活性大,耦合度小,很方便移植
  • 支持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,如

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方法

你可以改变其默认规则

<?php
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");
SlightPHP::setPageAlias("profile","p");

你访问这个地址 http://localhost/index.php/u/p/updatehttp://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目录不要让外部访问到

插件导航

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;
}

Version

3.2

Free Software, MIT License!

slightphp's People

Contributors

csk83 avatar hetao29 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slightphp's Issues

php7报错

您好,以前用您的框架写了一个小应用,在php5的环境下能正常运行,最近准备迁移到php7上,但是到php7上一开始就报了一个奇怪的错误:

 Parse error: syntax error, unexpected '<', expecting end of file in /srv/www/bt-search/runtime/aW5kZXgudHBs.%%.tpl on line 1

查看上面生成的tpl文件内容也非常奇怪

<?php <; ?><?php !; ?><?php d; ?><?php o; ?><?php c; ?><?php t; ?><?php y; ?><?php p; ?><?php e; ?> <?php h; ?><?php t; ?><?php m; ?><?php l; ?><?php >; ?>
<?php <; ?><?php h; ?><?php t; ?><?php m; ?><?php l; ?> <?php l; ?><?php a; ?><?php n; ?><?php g; ?><?php =; ?><?php "; ?><?php e; ?><?php n; ?><?php "; ?><?php >; ?>
<?php <; ?><?php h; ?><?php e; ?><?php a; ?><?php d; ?><?php >; ?>
    <?php {; ?><?php i; ?><?php n; ?><?php c; ?><?php l; ?><?php u; ?><?php d; ?><?php e; ?> <?php "; ?><?php h; ?><?php e; ?><?php a; ?><?php d; ?><?php .; ?><?php t; ?><?php p; ?><?php l; ?><?php "; ?><?php }; ?>

差不错一年没有更新了,所以没有动以前的代码,就直接在php7的环境上跑的,目前我也不知道是不是对php7支持得还不是很好?

工程地址https://github.com/ecator/bt-search
入口文件是 public/index.php


再次感谢您的框架,本来我也准备放弃迁移到php7了,但是看到您的模版貌似还在更新,所以就抱着试一试的心态发个issue了,如果可能,希望您能帮我看看这个问题。 ☺️

SlightPHP.php Line278代码优化问题

虽然看readme和已关闭的issue发现这个框架确实挺老的吧……但是现在刚好初学一些php的内容这个框架的逻辑结构我目前还是受益匪浅的。
然后就是一个简单的小bug,今天尝试的时候发现的。
README的部署中说直接访问http://localhost/index.php即可访问到对应的defaultZone/defaultPage/detaultEntry下,但是实际访问的时候发现只有访问http://localhost/index.php/才能实现跳转
SlightPHP.phpLine278

$zone = !empty($path_array[0]) ? $path_array[0] : self::$defaultZone ;

导致访问时会出现对http://localhost/index.php的请求报file[./index.php/page.page.php] does not exists的错误,此时$path_array[0]由于没有分隔符导致错误接收了index.php
修改后代码如下

$zone = !empty($path_array[0]) ? ($path_array[0] == 'index.php' ? self::$defaultZone : $path_array[0]) : self::$defaultZone ;

判段当传入的$path_array[0]的参数为index.php时,将$zone转化为self::$defaultZone
谢谢作者的这个框架,为初学的我提供了不少学习案例和思路,目前只看到这个,如果这个是我个人的使用错误也谢谢作者啦!

我写了一个框架

也是很小的那种框架,但是用了php 7 你这个有点老啊!**也有点旧吧?

slightPHP用于长链接应用的情形

因比较喜欢slightPHP的框架处理方式,最近在一个Workman的 长链接应用 中也使用了slightphp,基本逻辑就是根据URI到响应的page文件里面处理业务。碰到一个问题不知道是什么原因:

slightPHP用于长链接应用时碰到一个问题

因比较喜欢slightPHP的框架处理方式,最近在一个Workman的 长链接应用 中也使用了slightphp,基本逻辑就是根据URI到响应的page文件里面处理业务。碰到一个问题不知道是什么原因:

  1. 表面上的功能正常
  2. 一次我调试完成后,没有关闭客户端,因为客户端在不停的发送心跳包,结果第二天发现出现了“Warning: slightphp::run(/Users/Sites/YS/Work/app/cloud/device.page.php): failed to open stream: Too many open files ”的错误警告
  3. 此时只有一个连接的

不知是我对于slightPHP有哪里地方理解不对的吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.