一)日誌類
my_frame/core/lib/log.php 核心文件之日誌文件
<?php
namespace core\lib;
class log{
static $class;#用於存儲類
/**
* 加載存儲方式
* 1.確定日誌的存儲方式
* 2.寫日誌
*/
static public function init(){
//確定存儲方式
$drive = conf::get('DRIVE','log');#驅動
$class = '\core\lib\drive\log\\'.$drive;#類的名稱
self::$class = new $class;
}
static public function log($name,$file='log'){
self::$class->log($name,$file);
}
}
my_frame/core/lib/drive/log/file.php 日誌文件之文件日誌
存儲文件日誌
<?php
namespace core\lib\drive\log;
use core\lib\conf;
class file{
public $path;#日誌存儲位置
public function __construct()
{
$conf = conf::get('OPTION','log');
$this->path = $conf['PATH'];
}
public function log($message){
/**
* 1.確定文件存儲位置是否存在
* 新建目錄
* 2.寫入日誌
*/
if (!is_dir($this->path.date('Ym'))){
mkdir($this->path.date('Ym'),'0777',true);
}
$file = file_put_contents($this->path.date('Ym').'/'.date('d').'.log',
date('Y-m-d H:i:s').json_encode($message).PHP_EOL,FILE_APPEND);
return $file;
}
}
my_frame/core/config/log.php 日誌配置文件
<?php
return array(
'DRIVE' => 'file',
'OPTION' => array(
'PATH'=>LSS.'/log/'
),
);
二)composer加載
2.1.安裝composer
(參考https://pkg.phpcomposer.com/#how-to-install-composer)
1)先確認php –v是否能正常輸出版本號
2)打開命令行並依次執行下列命令安裝最新版本的 Composer
命令1(下載安裝腳本):php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
命令2(執行安裝過程):php composer-setup.php
命令3(刪除安裝腳本):php -r "unlink('composer-setup.php');"
最後重新打開一個命令行窗口試一試執行 composer --version 看看是否正確輸出版本號。
提示:不要忘了經常執行 composer selfupdate
以保持 Composer 一直是最新版本哦!
2.2寫composer.json文件
my_frame/composer.json(注意,註釋部分在運行時要去掉,否則報錯)
{
"name":"LSS PHP",//框架名稱
"description":"PHP Framework",//簡單描述
"type":"Framework",
"keywords":[
"PHP","PHP Framework"
],
//重要部分,框架需要引入的插件
"require":{
"php":" >= 5.3.0",//php版本要求
"filp/whoops":"*",//錯誤展示類
"symfony/var-dumper":"*",//dump輸出
"catfan/medoo":"*",//medoo數據庫
"twig/twig":"*"//twig模板引擎
},
//中文網站
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
2.3錯誤展示類的使用whoops
my_frame/index.php入口文件,如紅色字體代碼所示
<?php
/**
* 入口文件
* 1.定義全局常量(define)
* 2.加載函數庫
* 3.啓動框架
*/
define('LSS',dirname(__FILE__));#當前框架所在的根目錄
define('CORE',LSS.'/core');#框架核心文件所在目錄
define('APP',LSS.'/app');#項目文件所處目錄
define('MODULE','app');#項目文件所處目錄
define('DEBUG',true);#是否開始調試模式
require 'vendor/autoload.php';#引入vendor/autoload.php文件
if (DEBUG){
//錯誤類的展現形式
$whoops =new \Whoops\Run();
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
$whoops->register();
ini_set('display_error','On');#爲一個配置選項設置值
}else{
ini_set('display_error','Off');
}
include CORE.'/common/function.php';#加載函數庫
include CORE.'/lss.php';#核心文件
spl_autoload_register('\core\lss::load');#類不存在的時候將會觸發該方法,即類的自動加載
\core\lss::run();
三)medoo數據庫類
3.1 my_frame/core/lib/model.php 核心文件之模型文件
<?php
namespace core\lib;
class model extends \Medoo\Medoo#引入medoo
{
public function __construct()
{
$option = conf::all('database');
parent::__construct($option);
}
}
3.2 my_frame/core/config/database.php 數據庫配置文件
<?php
return array(
'database_type' => 'mysql',
'database_name' => 'tieba',
'server' => 'localhost',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8'
);
3.3數據庫的增刪改查
my_frame/app/controller/index.php 控制器文件
<?php
namespace app\controller;
use app\model\indexmodel;
use core\lib\model;
class index extends \core\lss {
public function index(){
//參考https://medoo.lvtao.net/1.2/doc.insert.php官方文檔
#select($table, $join, $columns, $where)
$model = new indexmodel();
$res = $model->sel();
dump($res);
}
}
my_frame/app/model/indexmodel.php 模型文件
<?php
namespace app\model;
use core\lib\model;
class indexmodel extends model{
public function sel(){
$list = $this->select('user','*');
return $list;
}
}
四)twig模板引擎
my_frame/core/lss.php 核心文件
/**
* 顯示視圖
* @param $file
*/
public function display($file){
/*$file = APP.'/views/'.$file;
if (is_file($file)){
extract($this->assign);#從數組中將變量導入到當前的符號表
include $file;
}*/
$file = APP.'/views/'.$file;
if (is_file($file)){
#參考https://www.kancloud.cn/yunye/twig-cn/159459
\Twig_Autoloader::register();
$loader = new \Twig_Loader_Filesystem(APP.'/views');
$twig = new \Twig_Environment($loader, array(
'cache' => LSS.'/log/twig',
'debug' =>DEBUG
));
$template = $twig->loadTemplate('index.html');
$template->display($this->assign ? $this->assign:null);
}
}
my_frame/app/controller/index.php 控制器文件
<?php
namespace app\controller;
class index extends \core\lss {
public function index(){
$data = '視圖文d件';
$title = '';
$this->assign('title',$title);
$this->assign('data',$data);
$this->display('index.html');
}
}
my_frame/app/views/index.html 視圖文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{data}}</title>
</head>
<body>
{{ data }}
</body>
</html>
整個框架實戰https://blog.csdn.net/angryshan/article/details/86288938