原創極簡架構
core.php 架構核心檔案僅此一個檔案,檔案内容如下
<?php
//PHP極簡事件驅動架構
//這是用一個核心檔案core.php實作的極簡事件驅動架構
//這不是MVC架構 這是一個簡單的事件驅動架構 可用于初學者入門 開發微型小項目練手使用
$CONFIG = include __DIR__ . '/config.php';
$currentFile = $_SERVER['PHP_SELF'];
$__filename__ = basename($currentFile, '.php');
//過濾函數過濾單引号\'
function filterArray($array)
{
if (!is_array($array)) {
return addslashes($array);
}
$filteredArray = array();
foreach ($array as $key => $value) {
$filteredArray[$key] = filterArray($value);
}
return $filteredArray;
}
class Request
{
//post送出過濾單引号
function httpPost($var)
{
return filterArray($_POST[$var] ?? null);
}
//get參數過濾單引号
function httpGet($var)
{
return filterArray($_GET[$var] ?? null);
}
//request過濾單引号
function httpRequest($var)
{
return filterArray($_REQUEST[$var] ?? null);
}
};
function config($name){
global $CONFIG;
return $CONFIG[$name]??null;
}
$request=new Request();
include __DIR__ . '/init.php';
$response = [];
$page_class = $__filename__ . 'Page';
if (class_exists($page_class)) {
$action = ($_REQUEST['action'] ?? 'index') . 'Action';
$__obj = new $page_class();
if (method_exists($__obj, $action)) {
$response = $__obj->$action($request);
if ($response === true) {
exit();
}
}
}
if (is_array($response)) {
extract($response);
}
========================================
config.php 配置檔案,用于配置資料庫,可以其他需要的各種配置,檔案内容如下
<?php
return [
'db_host' => '127.0.0.1', // 資料庫主機
'db_port' => 3306, //資料庫端口
'db_user' => 'root', // 資料庫使用者名
'db_pass' => '',//資料庫密碼
'db_name' => 'test_project', // 資料庫名稱
'db_pconnect' => 0, // 是否使用持久連接配接
'db_charset' => 'utf8', // 資料庫連接配接字元集
'db_prefix' => 'pre_', // 資料表字首
];
========================================
init.php 用于初始化功能編寫,檔案内容如下
<?php
//初始化功能 比如資料庫連接配接實作
========================================
index.php 一個測試首頁檔案
<?php
include __DIR__.'/core.php';
//頁面類名稱是頁面名稱加paeg 如;index.php 頁面類就是indexPage
class indexPage
{
/**
* 頁面預設加載方法
*
* @param Request $request
* @return void
*/
public function indexAction(Request $request)
{
return ['a' => 'hello', 'b' => 'world'];
}
/**
* url為?action=post将自動執行目前方法
*
* @param Request $request
* @return void
*/
public function submitAction(Request $request)
{
echo "你送出的内容是:";
echo $request->httpPost('username');
echo ' ';
echo $request->httpPost('password');
echo '!';
return true;
}
/**
* url為?action=cancel将自動執行目前方法
*
* @param Request $request
* @return void
*/
public function cancelAction(Request $request)
{
echo "你取消了,取消了送出";
return true;
}
}
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP極簡事件驅動架構</title>
</head>
<body>
<form action="" method="post">
<input name="username" type="text" value="<?= $a ?>">
<input name="password" type="text" value="<?= $b ?>">
<button formaction="?action=submit">确定</button>
<button formaction="?action=cancel">取消</button>
</form>
</body>
</html>