IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 使用Composer搭建PHP框架(三控制器) -> 正文阅读

[PHP知识库]使用Composer搭建PHP框架(三控制器)

到目前,我们已经为框架添加了路由的简单控制,接下来实现一下路由和控制器之间的映射控制。

构建控制器

在根目录下创建app/controllers/目录,并创建控制器文件Demo.php
在这里插入图片描述

<?php
namespace controllers;

class Demo {
    public function index()
    {
        echo 'Demo home';
    }
    public function page()
    {
        echo 'Demo page';
    }
    public function view($id)
    {
        echo $id;
    }
}

添加路由

Macaw::get('index', 'controllers\Demo@index');
Macaw::get('indexView/(:num)', 'controllers\Demo@view');

为了能够定位到app/controllers/Demo.php中的类,我们需要创建类的自动加载,创建类的自动加载有两种方式,推荐使用第二种。
方式一
修改composer.json

{
    "require": {
        "monolog/monolog": "^2.3",
        "noahbuscher/macaw": "dev-master"
    },
    "autoload": {
        "classmap":[
            "app/controllers"
        ]  
    }
}

执行命令

$ composer dump-autoload

执行成功后会在vendor/composer/目录下创建autoload_classmap.php

return array(
    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
    'controllers\\Demo' => $baseDir . '/app/controllers/Demo.php',
);

方式二
因为方法一在每添加一个控制器文件时就需要执行composer dump-autoload,这样就会很麻烦,采用方式二则只需要执行一次composer命令即可。
修改composer.json

{
    "require": {
        "monolog/monolog": "^2.3",
        "noahbuscher/macaw": "dev-master"
    },
    "autoload": {
        "psr-4": {
            "controllers\\":"app/controllers/"
        }  
    }
}

执行命令

$ composer dump-autoload

成功后会在vendor/composer/目录下创建autoload_psr4.php文件,在文件中添加controllers的映射

return array(
    'controllers\\' => array($baseDir . '/app/controllers'),
    'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
    'NoahBuscher\\Macaw\\' => array($vendorDir . '/noahbuscher/macaw'),
    'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
);

测试

在app/ccontrollers目录下新建测试控制器Test.php

<?php
namespace controllers;

class Test {
    
    public function index(){
        echo 'test class!';
    }
}

添加路由后浏览器访问正常展示

Macaw::get('testIndex', 'controllers\Test@index');

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:07:16  更:2021-08-05 17:08:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 1:56:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码