2020-10-29
php写app用的框架整理

php写app用的框架整理

PHP开发app常用的三种框架介绍1、ThinkPHP框架TP框架是一共快速兼容简单的轻量级国产PHP开发框架,使用面向对象的结构和MVC模式进行开发。它可以支持Windows、Linux等服务器,并且支持MySql、Sqlite等多种数据库和PDO扩展。其自身包含底层架构、兼容处理、基类库、数据库访问层、模版引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。适合中小型项目开发。优势:简单易用(Model,Controller,View负责各自的工作),它拥有支持XML标签库技术的编译型模版引擎,支持两种模版标签,动态编译,缓存技术。还支持自定义标签库,具有独特的数据验证和自动填充,MD5数据加密等功能。部署简单只需要一个入口文件,上手快。缺点:模版比较固定,导致思想容易固化。2、Yii框架Yii Framework是一个基于组件、用于大规模web应用开发的高性能PHP开源框架,是目前最具效率的PHP框架之一。适合大型重量型web应用开发。优势:1、纯OOP开发,模型使用方便2、支持命令行工具开发,可以快速的创建一个web应用程序的代码3、具有高度的可重用性和可扩展性4、开发速度快,性能优异且功能丰富5、支持composer包管理工具缺点:model 层考虑较少,文档中中文文档较少。要求php技术精通水平,OOP编程也要很熟练。3、Laravel框架Laravel是一套简洁,优雅的PHP WEB开发框架。集合了PHP比较新的特性,以及各种的设计模式,是一个适合学习的框架,但要求PHP基础扎实熟练。适合大中型项目的开发。优势:1、支持Composer2、框架结构比较清晰,注重代码的模块化(抽象了中间件,任务,服务等)和可扩展性,路由系统快速高效3、支持处理跨站请求伪造,在进行form表单post提交时,必须传入{{ csrf_field() }}4、Laravel 的社区很强大,具有丰富的扩展包及工具5、具有缓存、身份验证、任务自动化、hash加密、事务等功能6、独特的 .env环境文件,方便了系统的配置和不同平台的开发缺点:基于组件式的框架,相对有点臃肿。以上就是php写app用什么框架的详细内容,更多请关注梦主博客其它相关文章!...
2020-10-27
浅谈php常用的7大框架的优缺点

浅谈php常用的7大框架的优缺点

一直以来,phper讨论最多的就是php各种框架的优缺点,网上的资料也是比较零散,现把几款主流的框架收集汇总一下,其中本人只是用过Yii2、Laravel、Yaf、Thinkphp这四种框架,因此大部分对各种框架的评价皆来自与网上资料,如果问题,请在评论中指出,共同进步一、ThinkPHPThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。 ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。优点1.借助成熟的Java思想2.易于上手,有丰富的中文文档;学习成本低,社区活跃度高3.框架的兼容性较强,PHP4和PHP5完全兼容、完全支持UTF8等。4.适合用于中小项目的开发5.从thinkphp3.2.2引入composer包管理工具缺点1.对Ajax的支持不是很好;2.目录结构混乱,相比其他框架目录结构要差一点;3.上手容易,但是深入学习较难。二、YiiYii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。优点1.纯OOP2.用于大规模Web应用3.模型使用方便4.开发速度快,运行速度也快。性能优异且功能丰富5.使用命令行工具。6.支持composer包管理工具缺点:1.对Model层的指导和考虑较少2.文档实例较少3.英文太多4.要求PHP技术精通,OOP编程要熟练!5.View并不是理想view,理想中的view可能只是html代码,不会涉及PHP代码。三、laravel优点1.laravel的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD 和BDD2.支持composer包管理工具3.集合了php 比较新的特性,以及各种各样的设计模式,Ioc 容器,依赖注入等。缺点1.基于组件式的框架,所以比较臃肿四、CodeIgniter优点:1.Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几 行代码就可以进行输出。可谓是“大道至简”的典范。2.配置简单,全部的配置使用PHP脚本来配置,执行效率高;3.具有基本的路由功能,能够进行一定程度的路由;4.具有初步的Layout功能,能够制作一定程度的界面外观;5.数据库层封装的不错,具有基本的MVC功能.6.快速简洁,代码不多,执行性能高,7.框架简单,容易上手,学习成本低,文档详细;8.自带了很多简单好用的library,框架适合小型应用.缺点:1.本身的实现不太理想。2.内部结构过于混乱,虽然简单易用,但缺乏扩展能力。3.把Model层简单的理解为数据库操作.4.框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.评价:总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不 错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的library 也还不错,简洁高效。五、Zend Framework优点:1.大量应用了PHP5中面向对象的新特征:接口、异常、抽象类、SPL等等。这些东西的应用让Zend Framework具有高度的模块化和灵活性2.严格遵循“针对接口编程”和“单一对象职责”等原则3.官方出品,自带了非常多的library,框架本身使用了很多设计模式来编写,架构上很优雅,执行效率中等4.MVC设计,比较简洁5.具有路由功能,配置文件比较强大(能够处理XML和php INI)6.能够直观的支持除数据库操作之外的Model层(比 CodeIgniter 和 CakePHP 强),并且能够很轻易的使用Loader功能加载其他新增加的Class7.Cache功能很强大,从前端Cache到后端Cache都支持,后端Cache支持Memcache、APC、SQLite、文件等等方式8.数据库操作功能很强大,支持各种驱动(适配器)9.文档很全,在国内社区很成熟缺点:1.MVC功能完成比较弱,View层简单实现(跟没实现一样),无法很强大的控制前端页面.2.没有自动化脚本,创建一个应用,包括入口文件,全部必须自己手工构建,入门成本高3.对于简单和小型的项目来说,反而因为在框架中应用了大量面向对象设计,对开发者提出了更高的要求,间接增加了项目的开发成本评价:作为官方出品的框架,Zend Framework的野心是可以预见的,想把其他框架挤走,同时封装很多强大的类库,能够提供一站式的框架服务,并且他们的开发团队很强大,完全足够有能力开发很强大的产品出来,所以基本可以确定的是Zend Framework前途无量,如果花费更多的时间去完善框架。同样的,Zend Framework架构本身也是比较优雅的,说明Zend官方是有很多高手的,设计理念上比较先进,虽然有一些功能实现的不够完善,比如View层,自动化脚本等等,这些都有赖于未来的升级六、CakePHP优点:1.最类似于RoR的框架,包括设计方式,数据库操作的Active Record方式2.设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错3.数据库层的 hasOne, hasMany功能很强大,对于复杂业务处理比较合适4.路由功能,配置功能难度适中5.自动构建脚手架(scaffold)很强大,适合中型应用6.基本实现过了MVC每一层7.具有自动操作命令行脚本功能8.文档比较全,学习成本中等缺点:1.CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力2.cache功能略显薄弱3.配置功能稍嫌弱4.不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点.评价:总体来说CakePHP框架代表了PHP框架很重要的一个时代和代表,并且目前发挥着很重要的作用,不少自己写的框架都模仿了CakePHP的方式,是个里程碑式的产品;CakePHP透露着RoR的敏捷开发方式和把数据库操作认为是唯一Model的设计思想,作为开发快速应用和原型是绝好的工具;同样,用来做Web2.0网站的开发框架,也是值得选择的七、Symfony优点:1.完整实现了MVC三层2.封装了所有东西,包括 $POST,$GET 数据,异常处理,调试功能,数据检测3.包含强大的缓存功能4.自动加载Class,能够很随意的定义各种自己的class5.强大的语言支持6.具有很强大的view层操作,能够零碎的包含单个多个文件7.非常强大的配置功能,使用xml配置能够控制所有框架和程序运行行为8.包含强大的多层级项目和应用管理:Project --> Application --> Module --> Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout9.非常强大的命令行操作功能,包括建立项目、建立应用、建立模块、刷新缓存等等10.Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作的时候,不会出现问题,在Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码.缺点:1.最大的问题也在于使用了太多风格迥异的开源项目来组合成框架2.由于Mojavi和Propel本身都相当复杂,因此Symfony的结构非常复杂,难以理解和学习3. 缓存功能无法控制,每次开发调试总是缓存,需要执行 symfony cc,symfony rc来清除和重建缓存4.效率不是很高,特别是解析模板和读取配置文件的过程,花费时间不少5.学习成本很高,并且国内没有成熟的社区和中文文档评价:Symfony绝对是企业级的框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。相应的如果使用Symfony的应该都是比较复杂的互联网项目,那么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造model层总评:以上数款框架,各有特色,而且都是开源项目,不过框架针对的项目不一样,一般来说:1.小型项目:CodeIngiter2.中型项目:CakePHP、Zend Framework、Laravel、Thinkphp3.大型重量级项目:Yii、Symfony、Laravel以上划分也不绝对,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无法确定你是否会随着需求的变化进行改变到此这篇关于浅谈php常用的7大框架的优缺点的文章就介绍到这了,更多相关php常用框架内容请搜索梦主博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持梦主博客!...
2020-10-27
浅谈PHP之ThinkPHP框架使用详解

浅谈PHP之ThinkPHP框架使用详解

Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板、V为视图、C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应。下载及配置官网(http://www.thinkphp.cn/)下载ThinkPHP5.0,将解压文件放在网站目录下的ATP5子目录下默认主页:http://localhost:8099/ATP5/public/index.php如果要隐藏index.php且服务器为Apache则需要将public\.htaccess下内容替换为:<IfModule mod_rewrite.c>Options +FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]</IfModule>版本要求php版本大于等于5.4访问规则http://localhost:8099/ATP5/public /模块/控制器/方法其中http://localhost:8099/ATP5/public /为thinkphp的公共入口,模块的区分可以实现如管理员和用户的不同入口。命名规则模块名:全部小写控制器名:首字母大写方法名:全部小写注意:URL输入时不区分大小写,框架会自动根据标志转换,可在config里设置(url_convert' => false)如果控制器名为驼峰式命名(如HelloWorld)访问时地址栏应用下划线处理(如 hello_world)新建入口App复制一份application,然后在public/index.php中修改对应的入口名字建立MVC目录命名规则:模板(model):首字母大写视图(view):全部小写控制器(controller):首字母大写显示错误信息和调试打开应用的目录里的config.php文件配置:app_debug 值为true则显示调试信息show_error_msg 值为ture 则显示错误信息CSS和JS及图片的地址引用在视图目录下想要引用到一些资源文件,如css,js,图片等,是不支持使用把相关文件放到view目录下的,应该把资源文件放在public目录下,然后在App中的config.php里的view_ replace_str下添加资源文件的目录宏定义// 视图输出字符串内容替换 'view_replace_str' => [ '__DSTYLE__'=>"/atp/public/static/library", '__DIMG__'=>"/atp/public/img", ],使用:如果修改后在开发者工具发现数据使用依然是上一次更改的地址,说明有缓存在作怪,可以到 runtime\temp 目录下清除 <img src="__DIMG__/banner7.png"> <link rel="stylesheet" href="__DSTYLE__/donglayui/layui/css/layui.css" rel="external nofollow" media="all">简单的值匹配视图代码:<!doctype html> <h1>--{$name1}--</h1> <h2>--{$name2}--</h2>控制器代码:<?phpnamespace app\index\controller;//导入必要模块use think\Controller;class Xiao extends Controller{ public function xiao2(){ $valuex1="匹配值1"; $valuex2="匹配值2"; //匹配,变量赋值 $this->assign("name1",$valuex1); $this->assign("name2",$valuex2); //渲染输出 //返回视图 fetch实参为空表示找函数同名的html,实参可以传递其它视图名称 return $this->fetch(); }}数组值的匹配视图中获取{$ff.1}控制器$valuex2=array("0","1","1");$this->assign("ff",$valuex2);return $this->fetch(); Volist的使用该方法是thinkphp中很有趣的方法,其可以实现在视图文件中进行数组的循环遍历,最常会使用其进行数据库表格的遍历显示。视图中的代码:<table border="1"> <!--表格头--> <thead> <tr> <th>id</th> <th>用户名</th> <th>昵称</th> <th>备注</th> </tr> </thead> <!--表格内容--> <tbody> <!--循环遍历--> {volist name="listallh" id="vo"} <tr> <td>{$vo.id}</td> <td>{$vo.user}</td> <td>{$vo.name}</td> <td>{$vo.oo}</td> </tr> {/volist} </tbody></table>控制器代码:$listall=array(); $listall[]=array("id"=>1,"user"=>"dong1","name"=>"dongxiaodong1","oo"=>"无"); $listall[]=array("id"=>2,"user"=>"dong2","name"=>"dongxiaodong2","oo"=>"无"); $listall[]=array("id"=>3,"user"=>"dong3","name"=>"dongxiaodong3","oo"=>"无"); $listall[]=array("id"=>4,"user"=>"dong4","name"=>"dongxiaodong4","oo"=>"无"); $this->assign('listallh',$listall); return $this->fetch();公共界面如果多个页面需要使用到同一个HTML代码块,可以将代码块放到外面,其它界面直接通过引用即可在view目录下创建自定义文件名字的文件夹(public_view),里面创建自定义文件名的HTML文件(menu.html),在需要的地方直接通过【{include file="public_view/menu"}】引入即可创建公共文件HTML内容<h2>东小东内容匹配页</h2>在其它页面中使用<h2>东小东</h2>{include file="public_view/menu"}显示效果到此这篇关于浅谈PHP之ThinkPHP框架使用详解的文章就介绍到这了,更多相关PHP ThinkPHP框架内容请搜索梦主博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持梦主博客!...
2020-10-21
个人的云服务器正确的部署方法!

个人的云服务器正确的部署方法!

1.私人云服务器部署统计工具Matomo 做过网站的小伙伴对谷歌或百度统计工具想必不陌生,通过统计工具我们可以清楚知道自己网站访客的数量,来源的主力页面等。 百度统计固然好用,不过也不能把命运完全交托在别人手中嘛!  统计工具Matomo 2.私人云服务器部署聊天系统 对于开源聊天系统来说,笔者最推荐的是RocketChat,主要因为其使用十分方便并且功能极其丰富。 Rocket.Chat使用Meteor框架做的开源消息应用。是领先的免费开源团队聊天Slack的替代品,功能强大,它支持群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频聊天,截图等等,还支持实时翻译,实现用户之间的自动实时消息转换。使用Rocket.Chat可以完全控制交流通信。  部署聊天系统 3.私人云服务器部署网盘系统 现在度娘网盘越来越贵,而且爆出来用户私有链接被分享,隐私文件泄露等事件。为了减少对其依赖,我们如何自己搭建私人网盘呢?本次我们从头到尾搭建一次,小白也能轻松学会哦!  网盘系统 4.私人服务器架设内网穿透 家中设备想要外网访问?在现阶段我们没有公网IP的年代,NAT横行。藏在其后的设备想要被互联网的其它设备找到无疑难上加难,不过总有机制的小伙伴想要突破这种封锁。于是各种内网穿透设备应运而生,本次我们对市面上各种内网穿透设备的进行一个综合的评价!  内网穿透 总结: 本文讲解了常见私人云服务器应用的知识,您可以免费领取,并且按照教程可以搭建各种有意思的小应用,希望对您有所帮助。...
微信二维码