打造属于直接的php框架

35 篇文章 2 订阅

打造属于直接的php框架:

第一步创建目录:

Admin 项目目录
Index.php 入口文件
App程序入口 Action © Model (M) View (V)
Config 配置文件
Log 框架日志目录
Resource 资源目录(img、 css、 js等)
在这里插入图片描述
目录结构
index.php代码展示

<?php
header("Content-type:text/html;charset=utf-8"); //设置框架编码
ini_set("date.timezone","Asia/Shanghai");//设置 时间区域
const APP_PATH = __DIR__ . '/';//定义我们的项 目路径常量
const Lib = '../PHPmm/';//定义我们的框架目录常量
const Resource = APP_PATH . 'Resource';//定义 我们的项目资源目录常量

ini_set('display_errors',1);//是否抛出错误
/**
 display_errors介绍:错误回显,一般常用语开发 模式,但是很多应用在正式环境中也忘记了关闭 此选项。错误回显可以暴露出非常多的敏感信息, 为攻击者下一步攻击提供便利。推荐关闭此选项。 display_errors = On 开启状原南,若出现错误, 则报错,出现错误提示 dispaly_errors = Off 关闭 状态下,若出现错误,则提示:服务器错误。但 是不会出现错误提示**/
require  Lib.'PHPmm.php';
//运行框架行为
  $app =new  PHPmm();
  $app->run();
  $app =null;

PHPmm/PHPmm.php代码展示

class PHPmm
{
    //框架运行方法
    public function   run()
    {
        echo  11;
    }
}

创建php自动加载类:

前景了解
在编写面向对象(O0P)程序时,很多开发者为 每个类新建一个 PHP 文件。这会带来一个烦恼: 每个脚本的开头,都需要包含(include)一个长 长的列表(每个类都有个文件)。在 PHP 5中, 已经不再需要这了。splautoload_register() 函 数可以注册任意数量的自动加载器,当使用尚未 被定义的类 (class)和接口(interface)时自动 去加载。通过注册自动加载器,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

参考:php自动加载类使用

框架控制器编写Controller:

目录结构
在这里插入图片描述
PHPmm.php代码展示

<?php


class PHPmm
{
    //框架运行方法
    public function run()
    {
        spl_autoload_register(array($this, 'load'));
        $url = $_SERVER['REQUEST_URI'];
        $_arr = explode('/', $url);
        $action = ucfirst($_arr[1]) . 'Action';
        if ($url == '/') {
            $action = 'IndexAction';
        }
        $actionObj = new  $action();
        $objClass = isset($_arr[2]) ? $_arr[2] : 'index';
        $actionObj->$objClass();
    }

    private function load($className)
    {
        if ($className == 'Action') {
            require Lib . '/core/' . $className . '.php';
        }
        if (strpos($className, 'Action') != false) {
            $_str = str_replace('Action', '', $className);
            require_once APP_PATH . 'App/Action/' . $_str . 'Action.php';
        }

    }
}

.htaccess的代码展示

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On   #开启rewriteEngine

  #!-d的意思是不是目录或目录不存在
  RewriteCond %{REQUEST_FILENAME} !-d

  #!-f的意思是不是文件或文件不存在
  RewriteCond %{REQUEST_FILENAME} !-f

  #转给index.php处理
  #^(.*)$-匹配所有的路径映射到入口文件 index.php/$1($1为变量1)
  #[QSA]-表示保留参数如get传值?xxx==xx...;
  #[PT]-再把这个URL交给Apache处理;
  #[L]-这是最后一个匹配项,不再往下匹配
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

  #增加如下内容
  SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
</IfModule>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值