为了更好的学习php,想写个自己的框架,各位前辈有什么可以指点一下的吗?

2012-04-27 21:59:56 +08:00
 ety001
自己学习PHP有段时间了,并且可以用speedphp这样的框架写一些网站出来,并且读过一些框架之类的代码,不过对于框架里的有些东西不是很理解,因此想自己尝试着写一个简单的框架,以此来更好的了解php,不知道各位前辈有什么指教和建议?
5722 次点击
所在节点    PHP
24 条回复
kojp
2012-04-27 22:43:24 +08:00
是个好想法。。。。一直在看kohana跟国内的thinkphp
amoydavid
2012-04-27 22:59:40 +08:00
造一个轮子的确对PHP会有更多的认识。然后会有一些全局观。
LevanLifan
2012-04-28 00:16:47 +08:00
仿着rails写一个吧,虽然已经有类似的了,但是不够牛逼。
xinkiang
2012-04-28 00:28:48 +08:00
建议学习设计模式,框架除了共用的代码就是一些设计模式在里面了。
ety001
2012-04-28 01:37:31 +08:00
@xinkiang 说到代码共用,我一直挺头疼这个的,觉得很多时候都是预料不到的,应该是我经验太少的缘故,不知前辈有何前车之鉴?
ety001
2012-04-28 01:38:09 +08:00
@LevanLifan 个人感觉这个建议对我来说跨度有点大。。。
ety001
2012-04-28 01:39:33 +08:00
@kojp 我一直想用thinkphp,但是每次都是让他的繁琐的文档给阻挡了,他不像speedphp那样,有个非常简洁的快速入门教程。也或者说是speedphp先入为主了,我有点排斥thinkphp,唉。。
alex_ilex
2012-04-28 05:07:10 +08:00
重新写个或者重写现成的框架让其更适合自己使用.
coosir
2012-06-05 21:51:30 +08:00
@ety001 感觉thinkphp的文档做得挺好的
sampeng
2012-06-05 22:04:16 +08:00
别写框架。。没意义。。。。。。理由嘛。。。你工作用不到,做出来就是个好看的轮子。。
tioover
2012-06-06 13:12:09 +08:00
@sampeng 造轮子是一个很棒的事情
AlloVince
2012-06-06 13:38:55 +08:00
我一直认为自己写框架的前提是深入的用过1-2个框架,并且用现有框架做过中规模以上的项目,否则就是闭门造车
nigelvon
2012-06-06 13:59:29 +08:00
开始学就写框架?
除非你在其他语言领域已经有很深的理解,否则肯定是悲剧。
hitsmaxft
2012-06-06 14:18:18 +08:00
我自己毕业设计的内容就是写个php框架.简单谈谈自己的感想
我之前2年都是用cakephp进行开发, 没有仔细用过其它框架.
因此我的入手方式, 先看了Yii的基础实现, 再回头仔细研读cakephp2.0的源代码.
期间也看过一些简单框架. 最后, 搭建了一个自己的简陋框架, 自己写组件管理和MVC组件, (http管理, 事件机制, 路由管理)使用了cakephp的 用一个简单的port对象翻译相关的配置对象, model架空, 用着redbean; 视图助手用了Yii的一部分.
最后当然, 理论上是能用, 但是离靠谱还是很远..

这里还是提醒下楼主,反问几个问题,

1. 为什么写框架? 既然是开始学, 那么第一目的是学习语言特性.那么首先, 不熟悉PHP的面向对象和代码复用手段,以及内存处理方式, 怎么用php的角度写框架? 这就是注定了这个框架是悲剧的, 最终如果水平不足以驾驭框架的设计, 是写不出合理的框架.
2. 怎么写框架? PHP语言灵活, 而且杂七杂八的语言特性还有向下兼容的历史问题, 还得挑一个合适的版本.
3. 什么样的框架? MVC or 轻量型? 理解*设计模式*还有框架*用户*的需求是关键. 引入事件驱动,behavior扩展的方式, 核心组件的工作方式. 这些都需要很多时间和经验.

最终结论.请仔细研读一个好的框架源码, 弄清楚模块管理,对象继承, 路由机制等等. 写个小型框架满足下自己目前的需求.

个人推荐, Cakephp2.x, 如果觉得组件和行为部分太杂可以先看1.x的.
微型框架也可以看看, 代码短, 主要功能也就是import和route两个重点, 作为精华也够了..
我自己懒得继续写下去了,想立马交差,利用中间层复用了其它框架的组件.
hitsmaxft
2012-06-06 14:22:10 +08:00
第二点写薄弱了, 大家凑合看吧.
突然发现回复越长, 余额扣得越多. 穷人伤不起吧
chloerei
2012-06-06 14:34:51 +08:00
我觉得好的框架是从实用中抽取出来的,Rails 就是这样。
ety001
2012-06-06 15:13:07 +08:00
@hitsmaxft 14楼给力了,你的问题我会好好思考下的~其实我想写框架的动机主要还是想从头到尾顺一下,看看在php中还有多少是自己不会的,然后利用自己写框架的机会去模仿一些成熟的框架中的思想再写一遍,以求能够学到些有用的东西。
ety001
2012-06-06 15:18:26 +08:00
@coosir 我个人感觉thinkphp的文档写的很细致,但是缺少一种快速入门的部分。
hit9
2012-06-08 02:01:33 +08:00
@hitsmaxft 最简单的框架是什么?就是完成一个分发请求的功能~说实话,PHP框架一直无法解决的一个问题,也可能是无法解决的吧:开发效率和执行效率的矛盾关系. 做一个PHP框架有了易用性,但势必会丢失执行的效率.只要是PHP框架,都会在性能上打折扣.写一个框架,设计模式,缓存处理.等等等等,,好多.. 我还是坚持自己的"简单"原则,我不肯放弃执行效率.所以..我正在用扩展来实现自己的小框架...
saturn
2012-06-08 02:15:02 +08:00
史上最强悍最简单的框架:

<?php

// "Talk is cheap. Show me the code." - Linus Torvalds!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33893

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX