一个基于GTPHP框架开发的后台管理应用,GTPHP框架帮助开发者快速地创建Web应用。干净简洁、优雅高效,让人怦然心动!
解压文件包,放到网站运行目录下即可;适用环境:Apache 2.4及以上;PHP 7.4或更新版本;开启 URL Rewriting
.htaccess(Apache):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
.htaccess(Nginx):
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
目录:
root/
├── index.php # 入口文件
├── .htaccess # .htaccess文件
├── Sys # 系统目录
│ ├── Config # 配置文件目录
│ │ └── config.php # 配置文件
│ └── Src # 系统类库目录
│── Static # 静态资源目录
│ ├── images # 图片目录
│ ├── scripts # js目录
│ └── styles # css目录
└── admin # Admin目录
├── index.php # 入口文件
├── .htaccess # .htaccess文件
├── App # 应用目录
│ │── Controllers # 控制器目录
└── └── Views # 视图目录
使用以下方法添加路由
$router->addRoute('GET|POST', 'pattern', function() { … });
当路由与当前URL($_SERVER['REQUEST_URI'])匹配时,将执行附加的路由处理函数。路由处理函数必须是可调用的。处理一条匹配路由。当没有找到匹配的路由时,将输出404。
路由模式可以是静态路由或正则路由: 静态路由不包含动态参数的最简单的路由,直接与当前URL的路径部分进行比较,必须完全匹配。 正则路由包含可以随请求而变化的动态部分,使用与Perl兼容的正则表达式(PCRE)进行定义
// 系统目录
define('SYS_PATH', __DIR__ . '/');
define('APP_PATH', 'App/');
define('VIEWS_PATH', 'Views/');
define('MODELS_PATH', 'Models/');
define('MODELS_NP', '\App\Models'); //Model Namespace
define('STATIC_PATH', '/App/Static/');
// 配置
require SYS_PATH . APP_PATH . 'Sys/Config/config.php';
require SYS_PATH . APP_PATH . 'Sys/Src/Router.php';
require SYS_PATH . APP_PATH . 'Sys/Src/PDODb.php';
//数据库
define('DB_HOST', 'localhost');
define('DB_NAME', 'db');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_CHARSET', 'utf8mb4');
define('DB_PORT', 3306);
use \GoodText\App\Appdump;
use \GoodText\App\Application;
use \GoodText\App\Authorization;
use \GoodText\App\Router;
$router = new Router();
$router->setNamespace('\App\Controllers');
$router->smatch('GET', '/', 'user@index');
$router->smatch('GET|POST', '/admin/list', 'user@list');
$router->dispatch();
控制器 App\Controllers\MyuserController.php
namespace App\Controllers;
use \GoodText\App\Application;
use \GoodText\App\PDODb;
class My_userController extends Application {
public function My_indexAction()
{
$Model = Application::model('users');
$user_data = $Model->user();
Application::view(APP_PATH.VIEWS_PATH.'index', $user_data);
}
public function My_hiAction()
{
$view_data = array('username' => 'admin');
Application::view(APP_PATH.VIEWS_PATH.'hi', $view_data);
}
public function My_homeAction()
{
Application::view(APP_PATH.VIEWS_PATH.'home');
}
}
模型 App\Models\usersModel.php
namespace App\Models;
use \GoodText\App\PDODb;
class users {
public function user()
{
$username = 'admin';
$app = new PDODb();
$pdo = $app->dbInterface();
//查询
$sql = 'SELECT * FROM gt_auth_users WHERE user_status = 1';
$stmt = $pdo->prepare($sql);
//$stmt->bindParam(':user_name', $username, $pdo::PARAM_STR, 20);
$stmt->execute();
if($stmt && $stmt->rowCount()){
$stmt->setFetchMode($pdo::FETCH_ASSOC);//设置结果关联读取方
$row = $stmt->fetch();//获取记录
return $row;
} else {
return false;
}
}
}
视图 App\Views\indexView.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 测试 </title>
</head>
<body>
<pre><?php print_r($view_data); ?><pre>
</body>
</html>