文档章节

如何选择PHP项目的开发方案?

 宁哥实战课堂
发布于 2017/04/30 17:51
字数 1889
阅读 11
收藏 0

这里不是谈论到底用不用PHP去开发的问题,而是当你遇到一个项目,已经决定了用PHP,然后才来看的问题:用PHP的什么开发方案。

基本上有这么几种方案。各有各的说法,良莠不齐,我就谈谈我对它们利弊的认识,选择的时候也多个参考。

方案1:基于开源系统

如何选择PHP项目的开发方案?

常用的开源系统有:Discuz,PHPWind,PHPMyWind,PHPCMS,DedeCMS,Ecshop系列等。

这种方式是最偷懒的,也是初学者的首选。因为一个初学者或者不学技术的人也能在分分钟之内依葫芦画瓢的搭建出一个系统。

但有技术和没有技术的区别在于后续能不能按需去修改,去扩展功能,去写插件,去深度二次开发......

很多人总认为这种方案是最容易的,但随着项目的不断出现的新需求,这样的方式就暴露出了很大的局限在后面。

比如你用Discuz做了一个论坛,当你想添加一个系统中并没有事先开发的功能时就麻烦了,你很有可能需要开发插件,或者深度二次开发。这就不是初学水平能胜任的,而是要高级水平才能自由的修改它,否则会遇到很多莫名其妙的情况。

因为它就不只是需要添加新模板,甚至需要添加控制器和数据库的底层操作,需要伤筋动骨了。通常麻烦会大到你想撞墙以至于不想干的地步,如果你基础不够,此时你一定会陷入困扰之中。

所以,网上有很多这种方案开发的项目,后续的升级都变得很是困扰,甚至多年都不敢升级。

但不能因此就说这些系统没有意义,至少它给你“入门”了。否则一个新手就连搭建个系统都成问题,也会大大的影响学习的积极性和自信心。

方案2:基于某框架

如何选择PHP项目的开发方案?

这需要一定的PHP功底了。这种层次需要你自己开发控制器,Model,View层,需要自己设计数据库,需要懂面向对象编程思想。所以说需要一定的基础。

框架有:TP框架,Laravel框架,YII框架,CI框架等等。也是各有各的特点。没有最好的,只有更好的。

不要迷信某种框架!

如果你能使用这种方式来开发出项目,说明你有PHP基础,甚至有点水平了。同时比如控制器是你自己开发的,你就可以很方便的去修改某个功能和添加某个功能。

比如给用户添加一个留言的模块,一个微信支付的模块,一个在线视频的模块,就变得很容易。

这种方式的缺陷就是:一开始开发出一个系统就比较麻烦。基础不到位,你可能寸步难行,开发好久,系统都不能正常运营起来。

同时如果某个框架底层实现有问题或者太啰嗦,你不好修改。只有等到作者下一次的升级,或者你更换其他的框架。

所以选择这种方案需要一定的冒险,需要有实力去支撑。

方案3:直接开发项目,但都是用基础知识。

比如全是用PHP的函数去堆叠,一通的include,也没有模板解析引擎,也不做单入口,也没采用MVC,也不使用面向对象。

这种项目虽然最后开发出来了(而且很有可能开发的出来,因为就是搭积木的方式堆出来的),但维护起来麻烦,同时也没移植性可言。

每次开发一个新的项目都一样的工作量,每次也都像脱一层皮。

速度和效率都慢,不值得提倡。

方案4:直接开发项目,同时使用了更高级的知识如MVC的措施,面向对象思想。

这种方式虽然开发出的项目,同时维护起来比上述基础开发要容易。但是同样没有移植性可言。也不值得提倡。

方案5:自定义框架,在自定义框架上开发具体项目。

自己先用面向对象、MVC、单入口等开发个自定义的框架,然后在自己的框架之上开发具体项目。

这样的方式很好,好的地方就是你的底层可以自由的修改,不用等别人来升级什么的。

但是难度比较大。不适合一般的新手。

方案6:自定义框架,在自定义框架上开发通用系统,在通用系统上开发项目。

这样的方式很好,好的地方就是不但你的底层可以自由的修改,同时你的通用项目功能也可以随时升级。

但是难度是最大的,要求你对整个PHP体系有深刻的了解,同时开发过很多的项目,懂得要怎么才能优化系统,才能开发出实用的自定义框架和自适应通用系统。

这种方式不但具有方便的维护性,同时具有很好的可移植性。同时你可以根据需要随时升级底层和通用系统层,让它为你的所有项目做最好的服务。

值得提倡,但你如果不先脱几层皮,你是做不到的这种方案的。

开发的项目注意事项:

如何选择PHP项目的开发方案?

1:项目升级不要随意跟风,也不要动不动就升级,除非有硬性需求;

一些基础不够的人,自然没有全面的认识。看到有新的语法了,就想马上去用。总感觉既然有新的了,那就要用新的,这才合理,而不顾他自己的项目的情况,升级麻烦与否,技术力量跟得上与否,开发时间大概要多少。

建议这些人自己去做一下再说。因为很多技术负责人是那种只会说而不会写的技术部管家...盲目的瞎指挥会让你的技术团队饱受摧残,很多的时候都费力不讨好。

2:不要乱更换开发方案,除非你能把控的了;

比如:今天用Discuz开发了,但是发现一个能开发不了了,明天就换用PHPCMS,遇到了问题又更换为TP开发,再更换为Laravel去开发。至于为什么要更换那种新的开发方案,也说不出个所以然,只是看网上别人说好就去改......古代剑道高手,基本上都是手中无剑,哪怕用的是一根棍子也能打败那种手持宝岛的不学无术之徒。所以,自己用的好,才是真的好。更换一个新的方案,除非你能把控的了。

3:在开发之前,选择好开发方案尤为重要。否则很可能走不下去,或者从头再来。浪费在不停的选择上......

© 著作权归作者所有

粉丝 5
博文 72
码字总数 77184
作品 0
长沙
其他
私信 提问
从前端到后台,开发一个完整功能的小程序

《微信小程序开发入门》专栏前面的文章主要介绍了小程序前端的开发,对于一个较复杂和完整功能的小程序都是需要后台的支撑的,比如数据的获取和存储、逻辑的处理等。 后台的开发,可以选择P...

anda0109
2017/06/15
0
0
我的技术栈

从事互联网开发这么多年,也接触了非常多的工具。是时候汇总一下了。 1.Linux技术栈 1.1.Centos Linux是一个伟大的操作系统。现在很多网站基本上都是在使用Linux的操作系统。作为一名互联网开...

江边望海
2016/11/14
59
0
深圳-推荐个合适的工作

从大学以来一直在创业,但是发现自己很多方面还不够成熟。现在想找个合适的工作开始自己新的生活,麻烦有的哥们推荐个啦,先谢了。 目前希望在深圳工作,公司大小无所谓,能一起做一件有趣事...

狮子的魂
2014/02/12
4.1K
53
阿里云众包 - ODPS PHP SDK【PHP】

[背景] ODPS 是阿里云的大数据平台,需要实现PHP SDK 关于赏金的分配方案: 赏金只会发放选择最合适的一个方案。如果组队的方案为最佳,为了保证组队的人在获取奖金方面的安全性,我们会通过...

阿里开源
2015/12/22
30
6
PHP工程师面临的成长瓶颈[转]

作为开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢? PHP工...

逸舟
2011/03/27
1K
14

没有更多内容

加载失败,请刷新页面

加载更多

阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?

轻松筹首创了“大病救助”模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题。而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数...

阿里云云栖社区
13分钟前
3
0
Confluence 6 在升级过程中查看合并日志

为了监控升级的过程,你应该查看 application log 日志中的输出。 通常日志经常将会显示多个日志实例,这个实例是定义在日志的 INFO 级别的,通常格式如下: WikiToXhtmlMigrationThread-n -...

honeymoose
13分钟前
1
0
git diff 文件对比

git diff filepath 工作区与暂存区比较 git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较 git diff --staged 或 --cached filepath 暂存区与HEAD比较 git diff branchName filepa......

李佳顺
13分钟前
1
0
spring mvc 定制化配置

spring mvc 自定义配置 1.实现某些接口,然后让上面的类加载进去. class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean......

最爱肉肉
16分钟前
1
0
OSG_采样像机的内容如果不显示到窗口上

cameraLight->setRenderTargetImplementation(Camera::FRAME_BUFFER_OBJECT);// 这句使内容不渲染到屏幕上cameraLight->setRenderOrder(Camera::PRE_RENDER); 1.setRenderTargetImplement......

洛克人杰洛
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部