构建自己的PHP框架(MVC)

本文详细介绍了如何通过创建文件夹、使用命名空间、连接数据库及调用视图等步骤来搭建一个简单的MVC框架。

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

 

规划文件夹

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

使用命名空间

新建 controllers/BaseController.php 文件:

<?php

class BaseController { public function __construct() { } }

 

新建 controllers/HomeController.php 文件:

<?php

class 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 文件:

<?php

class HomeController extends BaseController
{

    public function home()
    {
        Articles::first();
    }

}

 

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

composer dump-autoload

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

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


调用视图

修改 HomeController:

<?php

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值