博客列表 >常用compose命令和小框架实战

常用compose命令和小框架实战

emy
emy原创
2020年06月06日 15:24:33710浏览

一、composer命令行演示

composer init

QQ截图20200603081403.jpg

composer -V

QQ截图20200603081535.jpg

composer update

QQ截图20200603081945.jpg

二、小框架实战
1-目录结构:
app:MVC框架成员,控制器、模型、视图;
config:放置配置文件,当前只有一个数据库配置;
core:核心类库,外部依赖的组件等都在这里处理;
public:外部访问目录;
vendor:composer安装的组件都存放在此。

2- 代码:

1)安装Composer

2)安装catfan/medoo
QQ截图20200606145032.jpg

3)安装league/plates
QQ截图20200606145328.jpg

4)更新文件后一定在命令行更新:Composer dump 进行更新

5)安装完毕以后开始写控制器代码MVC
a-控制器:

<?php
    // 命名空间: 包名称
    namespace controllers;
    // 控制器里面创建一个类
    class StaffsController
    {
        //模型属性
        public $model;
        //视图属性
        public $view;
        //模型的 构造方法
        public function __construct($model, $view)
        {
            $this->model = $model;
            $this->view = $view;
        }
        // 视图的方法
        public function display()
        {
            //在本控制器文件中加载视图文件
            include 'app/views/staffs/list.php';
        }
        // 查询数据库
        public function select()
        {
            //这里调用$this->model 会调用到核心文件 核心文件填写数据库的信息,核心文件继承catfan/medoo 使用的catfan/medoo里面的数据库方法
            $staffs = $this->model->select('goods',['id','name','price','number'],
                ['id[>=]'=>5, 'LIMIT'=>10]);
            return $this->view->render('staffs/list', ['staffs' => $staffs]);
        }
    }

b-模型代码:

<?php
    namespace models;
    use core\Model;
    //继承核心模型 也就是套壳的模型,套壳的模型继承下载的模型和视图方法
    class StaffsModel extends Model
    {
        public function __construct()
        {
            parent::__construct();
        }
    }

c-视图代码:

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>商品表格</title>
        <style>
        body {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        table {
            border-collapse: collapse;
            border: 1px solid;
            width: 50%;
            text-align: center;
        }
        th,
        td {
            border: 1px solid;
            padding: 5px;
        }
        tr:first-child {
            background-color: #f79baf;
        }
        </style>
    </head>
    <body>
        <h3>商品表格</h3>
        <table>
        <tr>
                <th>id</th>
                <th>商品名</th>
                <th>价格</th>
                <th>数量</th>
                <th>管理</th>
            </tr>
        <?php foreach ($staffs as $staff): ?>
            <tr>
                <td><?= $this->e($staff['id']) ?></td>
                <td><?= $this->e($staff['name']) ?></td>
                <td><?= $this->e($staff['price']) ?></td>
                <td><?= $this->e($staff['number']) ?></td>
                <td><button>编辑</button><button>删除</button></td>
            </tr>
        <?php endforeach ?>
        </table>
    </body>
    </html>

6)core核心文件,套壳文件代码,继承第三方组件库

a-模型文件:

<?php
    namespace core;
    use Medoo\Medoo;
    // 公共模型 核心,套壳的文件,下载的模型和视图让它继承,再让真正的视图和模型继承它
    class Model extends Medoo
    {
        //构造方法 这里的方法参考catfan/medoo官方
        public function __construct()
        {
            $options = [
                'database_type' => 'mysql',
                'database_name' => 'aaa',
                'server' => 'localhost',
                'username' => 'aaa',
                'password' => '123456',
            ];
            parent::__construct($options);
        }
        public function init()
        {
        }
    }

 b-视图文件:

<?php
    namespace core;
    use League\Plates\Engine;
    // 公共视图 核心,套壳的文件,下载的模型和视图让它继承,再让真正的视图和模型继承它
    class View extends Engine
    {
        private $templates;
        //传的参数代表模板路径
        public function __construct($path)
        {
            $this->templates = parent::__construct($path);
        }
    }

7)首页代码 index.php

<?php
    //自动文件加载器
    require 'vendor/autoload.php';
    use controllers\StaffsController;
    use models\StaffsModel;
    use core\View;
    // 模型处理 得到模型里面内容 模型继承核心 核心继承下载的模型
    $model = new StaffsModel();
    // var_dump($model);
    // echo '<hr>';
    // 视图 得到视图里面的内容 也就是商品表
    $view = new View('app/views');
    // var_dump($view);
    // echo '<hr>';
    // 查询 new控制器 传参模型和视图
    $controller = new StaffsController($model, $view);
    // var_dump($controller);
    // 直接打印里面的select方法
    echo $controller->select();

三、总结:参考了其它同学写的流程和照着去做,基本了解创建框架流程,但最后效果出不来,报错。原因还要查明中。这次作业花的时间最多,composer这几节课要听十次以上,估计才能懂。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议