- 通过开发框架,让自己对web开发有了更好的认识
- ORM使用的是eloquent,即laravel使用的ORM
- 视图使用的是smarty或者原生PHP
- session支持存放到mysql和redis和PHP自带方式
- cache支持文件和redis
#安装
- 运行composer create-project ljw/framework ljw --prefer-dist
- 直接下载或克隆 (git clone https://github.com/lejianwen/FMZ_framework.git)
- 然后运行composer install
#目录结构
ljw WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controllers 控制器
│ ├─models 模型
│ └─views 视图
├─bootstrap
│ └─bootstrap.php 应用启动文件
├─config 配置文件目录
│ ├─app.php 项目配置
│ ├─routes.php 路由配置文件
│ ├─redis.php redis配置
│ └─database.php 数据库配置文件
├─lib 框架系统目录
│ ├─http http目录
│ ├─session session存放实现目录
│ ├─view 视图目录
│ └─ ... 更多系统模块
│
├─public WEB目录(对外访问目录)
│ ├─static 静态文件目录,比如js,image
│ ├─index.php 入口文件
│ └─.htaccess 用于apache的重写
├─runtime
│ ├─cache 缓存文件目录
│ ├─log 日志文件目录
│ └─smarty smarty使用的目录
|
├─vendor 第三方类库目录(Composer依赖库)
├─.env 环境配置文件,请自行创建或复制.env.example
├─.env.example 环境配置文件示例,请复制修改为.env
├─composer.json composer 定义文件
└─README.md README 文件
每个环境可能不同,顾没有加入到git版本控制中,请自行添加,或者复制 .env.example 文件为 .env
- app.php 项目配置文件
- routes.php 路由配置文件
- redis.php redis配置文件
- database.php 数据库配置文件
###1. app.php
return [
//session存放 为空表示用自带的, '' || mysql_pdo || redis , 具体看lib/session中的文件
'session' => '',
'session_table' => 'session', //session 存放在mysql中的表名
'session_lefttime' => 1000, //session有效时间
'session_redis_dir' => 'default', //session 使用的redis配置
'debug' => env('APP_DEBUG', false), //调试模式
'view' => 'smarty', //模板 smarty||native
'smarty' => [ //smarty配置
'debug' => env('SMARTY_DEBUG', false), //是否弹出debug窗口
'force_compile' => env('SMARTY_FORCE_COMPILE', false), //检查模板是否改动,开发时打开,正式 关闭
'cache' => env('SMARTY_CACHE', true), //是否缓存
'cache_lifetime' => 1200, //缓存时间
'cache_dir' => RUNTIME_PATH . 'smarty/cache/', //缓存目录
'compile_dir' => RUNTIME_PATH . 'smarty/templates_c/', //编译目录
'left_delimiter' => '<{', //左定界符
'right_delimiter' => '}>' //右定界符
],
'cache' => 'file', //缓存类型,file||redis
'cache_expire' => 1200, //缓存时间
'cache_file_dir' => RUNTIME_PATH . 'cache/',
'cache_redis_dir' => 'default', //cache 使用的redis配置
'sys_log' => env('SYS_LOG', true), //系统日志是否开启
'sys_log_level' => env('SYS_LOG_LEVEL', 'debug'), //系统日志级别
'sys_error_log' => env('SYS_ERROR_LOG', true) //系统错误日志是否开启
];
- '' 使用PHP默认的session存储方式,此时session_lefttime配置失效,请查看php.ini;
- 'mysql_pdo' 使用mysql存储session,暂时只支持pdo,请安装好pdo扩展
- 使用此配置时,请填写session_table,表示session存储的表名
- 创建session表
CREATE TABLE `table` (
id varchar(255) NOT NULL,
expire TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
data blob,
UNIQUE KEY `id` (`id`) USING BTREE,
KEY `expire` (`expire`) USING BTREE
)ENGINE=myisam default charset=utf8;
- 'redis' 使用redis存储session, 必须安装php_redis扩展
视图模板都用.tpl作为文件后缀
- 'smarty' 使用smarty作为视图
- 使用此配置时,请填写smarty详细配置
- 'native' 使用原生PHP作为视图,在视图模板使用原生php
- 'file' 使用文件缓存
- 'redis' 使用redis缓存,必须安装php_redis扩展
路由配置 参考ljw/route
use \Ljw\Route\Route;
Route::space('app\\controllers\\', 'app\\middleware\\');
Route::get('', 'IndexController@index');
Route::get('index/middle','Index@index', 'IndexController@middle');
Route::error(function (){
app('response')->status('404');
echo '404 Not Found!';
});
Route::run();
###3. redis.php
return [
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'pwd' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
]
];
###4. database.php
return [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
];
php console demo/first[/param1[/param2[...]]]