完整项目地址:https://github.com/Evai/Aier

规划文件夹

新建 MFFC/app 文件夹,在 app 中创建 controllers、models、views 三个文件夹,开始正式开始踏上 MVC 的征程。

使用命名空间

新建 controllers/BaseController.php 文件:

<?php

class BaseController
{public function __construct(){}
}

新建 controllers/HomeController.php 文件:

<?phpclass HomeController extends BaseController
{public function home(){echo 'home';}}

增加一条路由: Macaw::get('/home', 'HomeController@home');,打开浏览器直接访问 http://127.0.0.1:80/,出现以下提示:

Fatal error: Class 'HomeController' not found in /Library/WebServer/Documents/wwwroot/MFFC/vendor/codingbean/macaw/Macaw.php on line 93

为什么没找到 HomeController 类?因为我们没有让他自动加载,修改 composer.json 为:

{"require": {"codingbean/macaw": "dev-master"},"autoload": {"classmap": ["app/controllers","app/models"]}
}

运行 composer dump-autoload,稍等片刻,刷新,你将看到以下内容:

恭喜你,命名空间使用成功!

连接数据库

新建 models/Article.php 文件,内容为(数据库密码和数据库名称请自行更改):

class Articles
{public static function first(){$servername = "localhost";$username = "root";$password = "admin123";// 创建连接$conn = mysqli_connect($servername, $username, $password);// 检测连接if (!$conn) {die("Connection failed: " . mysqli_connect_error());}$conn->set_charset('utf8');$conn->select_db('articles');$result = $conn->query("SELECT * FROM article limit 1");if ($row = $result->fetch_assoc()) {var_dump($row);}$conn->close();}
}

修改 controllers/HomeController.php 文件:

<?phpclass HomeController extends BaseController
{public function home(){Articles::first();}}

刷新,这时候会得到 Article 类未找到的信息,因为我们没有更新自动加载配置:

composer dump-autoload

然后,刷新!你将看到结果。

恭喜你!MVC 中的 M 和 C 都已经实现!接下来我们开始调用 V (视图)。


调用视图

修改 HomeController:

<?phpclass HomeController extends BaseController
{public function home(){require dirname(__FILE__).'/../views/home.php';}
}

转载于:https://www.cnblogs.com/evai/p/6211574.html

构建自己的PHP框架(MVC)相关推荐

  1. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

  2. 如何构建Android MVVM 应用框架

    本文转载自[http://tech.meituan.com/android_mvvm.htmlhmsr=toutiao.io&utm_medium=toutiao.io&utm_sou ...

  3. spring框架mvc框架_Spring的MVC测试框架入门–第1部分

    spring框架mvc框架 最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spri ...

  4. macaw php,用 Composer构建自己的 PHP 框架之构建路由

    上一篇中我们已经建立了一个空的 Composer 项目,本篇将讲述如何构建路由. 久负盛名的 CodeIgniter 框架是很多人的 PHP 开发入门框架,同样也是我开始学习如何从头构建一个网站的框架 ...

  5. composer mysql_利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM

    利用 Composer 一步一步构建自己的 PHP 框架(四)--使用 ORM 2014-10-16 / 阅读数:65457 / 分类: PHP 回顾 经过前三篇文章 基础准备 . 构建路由 和 设计 ...

  6. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)......

    手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 原文: 手把手0基础项目实战(一)--教你搭建一套可自动化构 ...

  7. Vue.js构建用户界面的渐进式框架(前端学习笔记1.0)

    文章目录 前言 一.Vue是什么? 二.前端核心分析 1.1.概述 1.2.前端三要素 1.3.结构层(HTML) 1.4.表现层(CSS) 1.5.行为层(JavaScript) 二.前端发展史 2 ...

  8. 构建Java并发模型框架

    2002 年 2 月 22 日 Java的多线程特性为构建高性能的应用提供了极大的方便,但是也带来了不少的麻烦.线程间同步.数据一致性等烦琐的问题需要细心的考虑,一不小心就会出现一些微妙的,难以调试的 ...

  9. spring框架mvc框架_Spring MVC测试框架入门–第2部分

    spring框架mvc框架 这个迷你系列的第一个博客介绍了Spring MVC测试框架,并演示了其在单元测试Spring MVC Controller类中作为控制器而不是POJO进行单元测试的用途. ...

  10. spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring

    spring框架mvc框架 Spring Framework is one of the most widely used Java EE Frameworks. It's an open sourc ...

最新文章

  1. 二分查找对应的二叉树的成功和失败ASL
  2. 闲话WPF之十五(WPF的数据处理 [2])
  3. WebServer 软件原理简介
  4. [译文]Domain Driven Design Reference(三)—— 模型驱动设计的构建模块
  5. IOS中的XML解析方式
  6. PythonOCC 3D图形库学习—创建立方体模型
  7. 华为P30 Pro现身安兔兔:未开性能模式跑分超28万
  8. 开源中国 4 周年, 三个平台客户端全面开源
  9. 个人信用报告“数字解读”与妙用
  10. KDD2021 | 推荐系统中利用深度哈希方法学习类别特征表示
  11. java B2B2C Springboot仿淘宝电子商城系统(六)springboot整合mybatis
  12. 求每个月最后一天mysql函数_计算指定年月的最后一天的自定义MYSQL函数_MySQL
  13. python中文占几个字节_中文在python中占几个字节
  14. 博弈论(五)——#10247. 「一本通 6.7 练习 4」S-Nim
  15. 【程序员如何买基金 序】基金学习地图
  16. instagram 和不联网
  17. 树型选择器/Browsing HDFS筛选文件类型
  18. 用来用去,Python脚本打包 exe还是这款工具最棒
  19. python从入门到入土表情包-Python自动生成表情包,python在手,从此斗图无敌手
  20. 什么是微信不死域名 微信不死域名的原理是什么

热门文章

  1. cmake设置了CMAKE_MODULE_PATH,include找不到文件
  2. lesson 4 Show Messages in Messagebox
  3. mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法
  4. upload组件 获得焦点_HTML Input FileUpload autofocus用法及代码示例
  5. 非极大值抑制_OpenCV非极大值抑制bug
  6. java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?
  7. Android中Bitmap和Drawable 总结
  8. 设置Activity进入退出动画
  9. 2、买卖股票的最佳时机 II
  10. 比特币收购足球队,区块链准备登上绿茵场