天天看點

原創極簡PHP事件驅動架構,僅一個核心檔案,友善初學者入門!

原創極簡架構

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>

繼續閱讀