如何写一个自己的渣渣PHP框架(1)

不然,我也写个教程,我其实也比较菜,但是有比我还菜的,比如你。O(∩_∩)O哈!你看就像我说的吧:

其实我还是建议初学者(特指已经学完PHP基础语法,并且了解一些开源框架MVC,再加上composer的童鞋们)写一个自己的框架。练练手!

额,那我们就开始吧,嗯呢!不着急呢,先听一首文雀的 谁也别管谁 压压惊再说!

今天就到这里了,我先去准备一下。

算了,写到哪里算哪里吧。(你猜这是不是一个好习惯呢)

好,本文最终写作目的只是给大家动力,诱惑大家拿起笔来(不,键盘来),写个框架。毛主席说了,一起阻碍你写框架的主义都是纸老虎,哪怕有人说你重复造轮子,哪怕有人说你写的就是个渣,哪怕有人说你没什么卵用。哪怕有人说你傅文佩,你不是人,你有本事抢男人,你别躲在里面不出声,我知道你在家。

--前言

先再听一首不可撤销的 女孩儿 压压惊!我原来写过一个小框架,渣的一比,是我奇哥教我的,不是我奇哥教的不好,是我菜的不行,后来每天好好学习,天天向上,终于深得要领,发现了composer这个好东西。就像nodejs的npm包管理,就像python里的pip,还像什么语言里的什么什么,我就不得而知了,因为别的我比较不会..

我们先来搞明白一个简单小框架的运行流程,index.php -> 定义基础常量 -> 引入配置文件 -> 自动加载(重点)-> 路由解析(重点)-> MVC 大概类似的就是这样一个流程,然后加上composer,或者你需要的各种类库,一个轻量级,基础级的框架就诞生了,你可以取个简单响亮的名字。

比如我天马行空认认真真想的 momoma 是不是很有几分姿色。(原来是叫 Yin ,后来改名了.)

哈哈
哈哈

--开始

搭建你的本地服务器。

先从index.php入口文件来写吧。
新建一个目录,比如 /data/momoma ,然后新建一个index.php文件,ok 入口文件建好了,简直是好的开始就是成功的一半啊。

然后新建一个composer.json (如果不了解composer的童鞋可以看 ↑ 先去自行了解)

{
  "name": "php/momoma",
  "description": "php/Momoma The PHP Framework",
  "version": "1.0.0-beta",
  "keywords": ["php","php framework"],
  "require": {
    "php": ">=5.6.28",
    "filp/whoops":"*",
    "hassankhan/config":"0.10.0"
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.phpcomposer.com"
    }
  }
}

composer.josn的其他参数大家自己了解一下,这里我只说require和repositories。

  1. require 的key值就是你需要告诉composer你的项目需要哪些包,value是对应包的版本号。比如我上面的,项目需要 php 并且版本应该大于等于 5.6.28 ,需要 "filp/whoops" 当前的最高版本(*号表示没有版本限制,默认当前最高版本),"hassankhan/config" 的 0.10.0 版本。目前就需要这些,这些包都是可以通过 Packagist.org 搜索获取。(这些包的作用后续告诉大家)。
  2. repositories 我看过一篇帖子,说这样写的话,貌似是换成国内的源,更新下载包的时候速度会比较快一些。

然后 命令行模式去目录下执行 composer install 目录中会多出一个 vendor 目录和 composer.lock 文件,composer安装(停顿一下)包有两种方法,我每次在require增加新的包,就直接执行 composer update 就OK了。虽然我可能说的比较混乱,但是这不是今天的重点,你先去google、百度,回头再说composer。嗯,就这么愉快的决定了。

在index.php里引入自动加载文件

// Autoload 自动载入
require 'vendor/autoload.php';

ps:现在说说上面的那个两个包。

  • "filp/whoops"

官网链接:"filp/whoops" 里详细介绍,并且有运用方法。虽然是英文但是你可以用翻译呀。大概就是,这个包是一个PHP错误处理的包。帮你再调试web程序的时候,描述代码执行过程,准确定位错误的原因及代码的位置。

我们怎么用?

在index.php文件里写

// Whoops
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();

然后我们故意制造一个错误:(用2除以0)

echo 2/0;

访问一下你的 index.php 是不是出现了报错信息:


image
image
  • "hassankhan/config"

官网链接:"hassankhan/config"里有详细介绍,是一款轻量级配置文件加载器,支持PHP,INI,XML,JSON和YAML文件。

我们怎么用?

在根目录先新建一个 config 目录,/data/momoma/config 下新建 conf.php (或者conf.josn 不是说过了,"hassankhan/config"支持php,josn等等文件)

在conf.php里写:(conf.json直接写json就可以了)

return [
    "debug"=> true  // 是否开启调试模式
];

回到index.php,定义项目根目录常量 MOMOMA_PATH,

define("MOMOMA_PATH", dirname(__FILE__)); //项目根目录

// Config
$conf = new \Noodlehaus\Config(MOMOMA_PATH. '/config/conf.php');
echo $conf->get('debug');
//echo $conf['debug'];

访问你的index.php有没有输出 1 不就是你的 debug的值 true 吗!

如果这样,有了这个两个包,加个if判断,你看,你这不就可以通过配置文件来配置框架是否开启debug调试模式了。简直是厉害啦哇/(ㄒoㄒ)/~~

写的好累呀,听一首刺猬乐队的 24小时摇滚聚会 放松一下也不足为奇呐。

你还等什么?不然开写吧...(哪怕没有我你长点心吧)

文章来源:郭贰小姐的博客 - opqnext.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容