php教程|php手册
php
php教程-php手册
构建自己的PHP框架–搭建基本结构,框架基本结构
保险平台网站源码,wps使用vscode,ubuntu安装ftp,tomcat 内存设置,sqlite utf8,衢州网页设计,数据库怎么加索引,域名如何解析到服务器,bootstrap日期时间插件,手机 前端框架,爬虫直播,php链接,seo简历,语雀尚硅谷springboot,行内块级标签,模板网站 优帮云,网页购物车 代码,教育类模板下载,网站后台登录界面下载,html关闭框架显示新页面,java学生信息管理系统视频,易语言 子程序事件lzw
首先,我们来说一下,为什么要创建自己的框架?
web端导航栏源码,mac上安装vscode,ubuntu 代码比较,tomcat复制项目,安卓sqlite权限问题,爬虫爬取优惠电影票,在js中写php,html页面seo优化,简单公司网站,网页 图片轮播代码,boostrap模板下载lzw
为什么要创建自己的框架呢?如果你跟周围的人讨论,每个人都会告诉你重复发明轮子是一件糟糕的事情,你最好选择一个已有的框架,忘掉“创建自己的框架”这种想法。大部分情况,他们是正确的,但是我想到了几个创建自己的框架的好处:
html5 下载组件源码,ubuntu s键失灵,爬虫知识及技巧,php条件==,seo文案素材lzw
了解更多框架的底层架构
创建一个能满足你特殊需求的框架(但首先要确定你的需求真的是很特别)
因为乐趣而试着写一个框架(为了“学习然后抛弃”的目的)
想利用新的开发技术以及最佳实践重构已经存在的项目
向世界证明自己也是可以写出框架的(……但只需那么一点点付出)
我将一步步的,循序渐进的引导你创建一个框架。每一步你得到的都是一个完全能使用的框架。我们将从一个简单的框架开始,然后一点点的给它加功能。最后,你将能得到一个完整的web框架。
上面的原因是摘来的使用Symfony2的组件创建自己的PHP框架,觉得说的不错就直接拿过来用了。
我们先建立一个目录,然后进入该目录
mkdir simple-frameworkcd simple-framework
然后分别建立放置controller/model/view等的目录
mkdir controllers models views public
public用来存放统一的入口,在里面建立index.php,大部分框架现在都是单一入口。
然后我们需要支持以下composer,我们希望第三方的包都能通过composer来管理。如果你还不知道composer是什么,请查看composer。
在simple-framework文件夹下执行 composer init,然后填写相应内容,生成一个composer.json文件,其内容大概如下:
{ "name": "craryprimitiveman/simple-framework", "description": "A simple php framework", "license": "MIT", "authors": [ { "name": "harrysun", "email": "sunguangjun@" } ], "require": {}}
让后修改以下,结果如下:
{ "name": "craryprimitiveman/simple-framework", "description": "A simple php framework", "license": "MIT", "authors": [ { "name": "harrysun", "email": "sunguangjun@" } ], "require": {}, "autoload": { "psr-4": { "sf\\": "src/", "app\\": "" } }, "repositories": [ {"type": "composer", "url": ""}, {"packagist": false} ]}
其中的autoload是为了支持我们自己项目的文件加载,其中sf下的是framework的code,而app下的是正常业务罗辑的code,其中的repositories是为了解决在国内使用composer下载,下载不下来的问题,如果在国外,或者有VPN做代理,可以直接去掉。
然后执行composer install。
这样基本的目录结构就构建好了。
在入口文件public/index.php中,引入autoload文件,如下:
<?phprequire_once __DIR__ . /../vendor/autoload.php;
然后我们定义我们的url是这样的http://localhost/simple-framework/public/index.php?r=site/test,之后会加相应的nginx或apache的rewrite,是url变简洁好看,但暂时先这样。
这个url访问了SiteController中的actionTest,下面我们来简单实现这个功能。
<?phprequire_once __DIR__ . /../vendor/autoload.php;$router = $_GET[ ];list($controllerName, $actionName) = explode(/, $router);$ucController = ucfirst($controllerName);$controllerName = app\\controllers\\ . $ucController . Controller;$controller = new $controllerName();return call_user_func_array([$controller, action. ucfirst($actionName)];
上面的code未添加任何的错误处理,只是一个简单的功能实现。
然后在controllers文件夹中添加SiteController.php文件,内容如下:
<?phpnamespace app\controllers;class SiteController{ public function actionTest() { echo success!; }}
然后访问之前的url http://localhost/simple-framework/public/index.php?r=site/test,你会看到打印出了success!
然后我们在来写一个actionView方法去渲染一个页面。actionView的代码如下:
public function actionView() { $body = Test body information ; require ../views/site/view.php; }
我们还需要在views下面添加site文件夹,并在site文件夹下创建view.php文件,其内容如下:
最后访问http://localhost/simple-framework/public/index.php?r=site/view,会得到如下页面:
好了,今天就先到这里。项目内容和博客内容也都会放到Github上,欢迎大家提建议。
code:/CraryPrimitiveMan/simple-framework/tree/0.1
blog project:/CraryPrimitiveMan/create-your-own-php-framework