PHPackages                             soliphp/soliphp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. soliphp/soliphp

ActiveProject[Framework](/categories/framework)

soliphp/soliphp
===============

The Soli PHP Framework.

v0.9.1(7y ago)6361MITPHPPHP &gt;=7.0.0

Since Feb 26Pushed 7y ago1 watchersCompare

[ Source](https://github.com/ueaner/soliphp)[ Packagist](https://packagist.org/packages/soliphp/soliphp)[ RSS](/packages/soliphp-soliphp/feed)WikiDiscussions master Synced 5d ago

READMEChangelog (8)Dependencies (8)Versions (9)Used By (0)

Soli PHP Framework
------------------

[](#soli-php-framework)

Soli 是一个轻量级的 PHP 框架，参考了 [Phalcon](https://phalconphp.com/), [Laravel](https://laravel.com/)框架的设计，意在松耦合、可扩展、简洁易用。

环境需求
----

[](#环境需求)

- PHP 7.0+
- 视图模块需要 [composer](https://getcomposer.org/) 或者手动下载，目前支持 [Twig](http://twig.sensiolabs.org/) 和 [Smarty](http://www.smarty.net/)

提供的功能
-----

[](#提供的功能)

MVC、[依赖注入](https://github.com/soliphp/di)、[事件管理](https://github.com/soliphp/events)、[闪存消息](http://api.soliphp.com/Soli/Web/Flash.html)、[模版引擎](https://github.com/soliphp/view)（[Twig](http://twig.sensiolabs.org/)、[Smarty](http://www.smarty.net/)） [路由](http://api.soliphp.com/Soli/Web/Router.html)、[命令行应用](http://api.soliphp.com/Soli/Console.html)等功能

请求的生命周期
-------

[](#请求的生命周期)

[![Soli请求的生命周期](https://camo.githubusercontent.com/8bb10f78ed2af56e903dc8c6f12b98d573ebacb2d528de9bb08f4b4aaede3433/68747470733a2f2f692e696d6775722e636f6d2f6d50514d6449762e706e67)](https://camo.githubusercontent.com/8bb10f78ed2af56e903dc8c6f12b98d573ebacb2d528de9bb08f4b4aaede3433/68747470733a2f2f692e696d6775722e636f6d2f6d50514d6449762e706e67)

从上图我们可以看到 Soli 请求的处理流程为：

[Application](http://api.soliphp.com/Soli/App.html "应用") 将接收到的 HTTP [请求](http://api.soliphp.com/Soli/Web/Request.html "HTTP请求环境")交给[路由](http://api.soliphp.com/Soli/Web/Router.html)处理，并将路由结果交给控制器[调度器](http://api.soliphp.com/Soli/Dispatcher.html "控制器调度器")； [控制器](http://api.soliphp.com/Soli/Controller.html)处理应用程序的业务逻辑，调用相应的[模型](https://github.com/soliphp/db)和[视图](https://github.com/soliphp/view)，并将处理结果通过调度器返给 Application 做最终的 HTTP [响应](http://api.soliphp.com/Soli/Web/Response.html "HTTP响应环境")封装。

另外，Soli 通过[依赖注入](https://github.com/soliphp/di)容器提供的[组件](http://api.soliphp.com/Soli/Component.html)机制，可以供开发者在开发组件时方便的使用容器中的各种服务。

Soli 的[事件管理](https://github.com/soliphp/events)器允许开发者通过创建"钩子"拦截框架或应用中的部分组件操作。 以便获得状态信息、操纵数据或者改变某个组件进程中的执行流向。

快速运行当前项目
--------

[](#快速运行当前项目)

```
$ composer create-project soliphp/soliphp my-project
$ cp my-project/.env.example my-project/.env
$ php -S localhost:8000 -t my-project/public

```

浏览器访问 .

NGiNX 配置
--------

[](#nginx-配置)

```
upstream php-fpm
{
    server unix:/tmp/php-fpm.sock;
}

server
{
    listen 80;
    server_name www.soliphp.com;
    index index.html index.php;
    root  /path/to/soliphp/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include        fastcgi.conf;
        fastcgi_pass   php-fpm;
    }
}
```

Apache 配置
---------

[](#apache-配置)

```
# Apache 2.4

    ServerAdmin admin@example.host
    DocumentRoot "/path/to/soliphp/public"
    DirectoryIndex index.php
    ServerName www.soliphp.com

        Options All
        AllowOverride All
        Allow from all
        Require all granted

        RewriteEngine on
        RedirectMatch 403 /\..*$
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php

```

应用程序结构
------

[](#应用程序结构)

```
├── app                            应用程序目录
│   ├── Console                    终端命令应用控制器目录
│   │   ├── Command.php            终端命令应用基类
│   │   └── Demo.php               Demo命令
│   ├── Controllers                WEB应用控制器目录
│   │   ├── Controller.php         控制器基类
│   │   ├── IndexController.php    默认控制器
│   │   └── UserController.php     和用户相关的控制器
│   ├── Events                     事件目录
│   │   ├── AppEvents.php          WEB应用事件
│   │   └── UserEvents.php         用户相关的事件
│   ├── Models                     模型目录
│   │   ├── Model.php              模型基类
│   │   └── UserModel.php          用户模型
│   ├── Services                   服务层目录
│   │   ├── Service.php            服务基类
│   │   └── UserService.php        用户相关的服务
│   └── bootstrap.php
├── bin
│   └── console                    终端命令应用入口文件
├── composer.json                  composer配置文件
├── config                         配置文件目录
│   ├── config.php                 基础配置文件
│   ├── console.php                针对终端命令应用的配置文件
│   ├── routes.php                 路由配置文件
│   └── services.php               容器服务配置文件
├── phpcs.xml
├── public                         WEB服务公共可被访问的文件目录
│   ├── css
│   ├── img
│   ├── index.php                  WEB程序入口文件
│   └── js
├── var                            生成的文件目录
│   ├── cache                      缓存文件目录
│   └── log                        日志文件目录
└── views                          视图文件目录
    └── index                      IndexController 对应的视图目录
        └── index.twig             index 函数对应的视图文件

```

目录结构并非固定不变，可以依据实际项目需要和团队开发习惯，约定目录结构，定义和表达每个目录的含义。

使用
--

[](#使用)

`bootstrap.php` 中定义了两个基本的常量：

```
APP_PATH   对应 app 目录
BASE_PATH  项目根目录

```

#### 基本配置信息

[](#基本配置信息)

基本配置信息默认存放在 `config/config.php` 文件：

```
