资讯专栏INFORMATION COLUMN

charm_PHP,一个还有诸多问题的PHP MVC框架

cuieney / 2047人阅读

摘要:原文是在我自己博客中,小伙伴也可以点阅读原文进行跳转查看,还有好听的背景音乐噢介绍一个简单的框架,框架中实现了和层,层使用的组件,实现了一些简单的设计模式,单一入口自动加载。

原文是在我自己博客中,小伙伴也可以点阅读原文进行跳转查看,还有好听的背景音乐噢~

charm_PHP 介绍

一个简单的MVC框架,框架中实现了C和V层,M层使用composer的PHP组件——Medoo,实现了一些简单的设计模式,单一入口、自动加载。

本框架遵循PSR规范,使用命名空间来规范类于类之间的互相合作;

目录
app -> 应用目录
    controller -> 控制器目录
    core       -> 公共、核心文件目录
    views      -> 视图目录
resource  -> 资源目录(js、images、css等)
system
    config       -> 框架配置文件目录
    core       -> 框架核心文件目录
        Charm.php    -> 核心文件
        Common.php   -> 公共方法
        Cofig.php    -> 配置类
        Core.php     -> 核心文件
        Log.php      -> 日志类
        Model.php    -> 数据库类
        Page.php     -> 分页类
        Route.php    -> 路由类
        Security.php -> 验证类
        Session.php  -> session类
    dirves     -> 驱动文件目录
vendor  -> PHP组件
初始化

本地下载项目:git clone https://github.com/charm-v/ch...

打开cmd,在项目下输入 compoer install

运行框架

全局方法 model()

Use: $model =& model();

post($key)

Use: $postData = post(); OR $name = post("name");

get($key)

Use: $getData = get(); OR $name = get("name");

request($key, $type = "get")

Use:

$getName     = request("name", "get");
$posttName   = request("name", "POST");`
$requestName = request("name", "request");`
ajaxReturn($status, $msg = "")

Use:

1、`ajaxReturn(200, "ok"); => {"status":200, "msg":"ok"}`

2、$returnData = [
    "state"   => 400,
    "message" => "error",
    "data"    => []
];
ajaxReturn($returnData); => {"state":400, "error":"ok","data":[]}
view($viewName, $data = [])

Use:

view("home");
view("home", ["content" => "内容"]);
css($cssName, $cssPath = "css", $resource = "resource")

Use:

css("main.css"); 
==> 

css("main.css", "css/home")
==> 
js($jsName, $jsPath = "css", $resource = "resource")

Use:

css("main.js"); 
==> 

......
base_url($uri = "")

Use:

base_url(); 
==> http://charm_PHP.com

base_url("index/getUserList"); 
==> http://charm_PHP.com/index/getUserList
redirect($uri, $flag = false)

Use:

redirect("index/editUserInfo"); 
==> Location: http://charm_PHP.com/index/editUserInfo

redirect("baidu.com"); 
==> Location: http://baidu.com

redirect("https://google.com"); 
==> Location: https://google.com

类使用 Config类
use systemcoreConfig;

// PAGENUM 配置项下标 page配置项文件名
Config::get("PAGE_NUM", "page");
Log类
use systemcoreLog;

// PAGENUM 配置项下标 page配置项文件名
Log::log($data, $fileName);

Page类
use systemcoreConfig;
use systemcorePage;

if(isset($_GET["page"])) {
    $now_page = intval($_GET["page"]) ? intval($_GET["page"]) : 1;
}else {
    $now_page = 1;
}
// 取得配置项每页条数
$pageNum           = Config::get("PAGE_NUM", "page");
// 计算偏移量
$offset            = $pageNum * ($now_page - 1);

$data["count"]     = parent::$model->count(table, $where);
$where["LIMIT"]    = [$offset, $pageNum];

$data["orderData"] = parent::$model->select("table", "*", $where);

// 分页处理
$objPage           = new page($data["count"], $pageNum, $now_page, "?page={page}" . $parameter);
$data["pageNum"]   = $pageNum;

// 生成分页代码
$data["pageList"]  = $objPage->myde_write();



依赖组件

Medoo

var-dumper

whoops

gitHub地址

Charm_PHP

结语

这个小框架,被我一直用作一些小型的外包项目中,暂时还没有发现什么很严重的错误,估计是黑客好心,看到这个项目这么烂不忍心黑?嗯...有时间的话还是很想补充、完善一下这个框架的。
对了,这个小框架的原型是我在慕课网的一节课程中学习到的,自己敲出来后,然后就拿来自己用啦,注明一下课程的地址,想学习的小伙伴可以去学习一下:从零开始打造自己的PHP框架。,嗯,就先介绍到这里啦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26084.html

相关文章

  • 说说PHP框架MVC架构

    摘要:前言在说架构之前,先说说框架吧。在架构中就是这个转接头。当一个新框架诞生后,关注点从学习这个框架,慢慢变成了这个框架是如何设计的,解决什么样的问题。前几年使用过各种框架,小到,大到。 前言 在说 MVC 架构之前,先说说PHP框架吧。很多很多学完PHP语言的人,面对的就是PHP各种各样的框架。什么TP啊、Yii啊、CI啊,还有很流行的laravel啊等等。 他们的大部分都会说自己是基于...

    waltr 评论0 收藏0
  • 一篇文章了解前端框架演变

    摘要:所以我查了很多的材料,希望能从自己的角度上用通俗的语言阐述前端框架的演变。现在,前端页面会有很多复杂的交互逻辑和用户体验,如果还使用之前老的框架,对层的操作就会难以维护,这就是前端框架要不断演变的主要原因。 说实在的,我不觉得MVC,MVVM这些框架有什么难的,直到我想写一篇文章去系统的阐述它们。我遇到了以下几个问题,1.不同的文章说的南辕北辙 2.没有一个清晰的大纲和框架分类。所以我...

    lvzishen 评论0 收藏0
  • 一篇文章了解前端框架演变

    摘要:所以我查了很多的材料,希望能从自己的角度上用通俗的语言阐述前端框架的演变。现在,前端页面会有很多复杂的交互逻辑和用户体验,如果还使用之前老的框架,对层的操作就会难以维护,这就是前端框架要不断演变的主要原因。 说实在的,我不觉得MVC,MVVM这些框架有什么难的,直到我想写一篇文章去系统的阐述它们。我遇到了以下几个问题,1.不同的文章说的南辕北辙 2.没有一个清晰的大纲和框架分类。所以我...

    fizz 评论0 收藏0
  • 一篇文章了解前端框架演变

    摘要:所以我查了很多的材料,希望能从自己的角度上用通俗的语言阐述前端框架的演变。现在,前端页面会有很多复杂的交互逻辑和用户体验,如果还使用之前老的框架,对层的操作就会难以维护,这就是前端框架要不断演变的主要原因。 说实在的,我不觉得MVC,MVVM这些框架有什么难的,直到我想写一篇文章去系统的阐述它们。我遇到了以下几个问题,1.不同的文章说的南辕北辙 2.没有一个清晰的大纲和框架分类。所以我...

    Freelander 评论0 收藏0
  • 一个Android项目搞定所有主流架构-1.项目介绍和基本MVC架构示例

    摘要:单独抽取出来一个项目,详细介绍针对各种常用场景的测试写法。本项目中的示例是基于此项目做了功能和页面上的精简,便于演示不同代码结构。这个项目就是为了帮助解决这个问题的。本项目中,主要关注的重点在于代码的结构框架测试以及可维护性。 DesignResCollection 提供同一个App的不同架构实现,对其进行对比分析,方便大家选取使用 项目启发来自谷歌的同类框架项目 https:/...

    BenCHou 评论0 收藏0

发表评论

0条评论

cuieney

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<