Blogger Information
Blog 31
fans 0
comment 0
visits 30280
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常用compose命令和小框架实战
emy
Original
717 people have browsed it

一、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这几节课要听十次以上,估计才能懂。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:第一次接触命令行是这样的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post