框架内容填充-composer加载

一)日志类

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值