PHP 板


LINE

看板 PHP  RSS
   最近脑海中持续在策画一些小型的专案,因为算是自己的兴趣之作,也多了一些  弹性来参考一些新的框架。目前看起来, CI 在版上仍然多有讨论, CI 也是我个人  接触到的第一个框架;的确,到目前为止的 CI 开发经验都相当不错。我特别喜欢的  是 CI 让我感觉在开发上仍然与一般 PHP 程式没有太大的区别,但 MVC 的一些概念  算是蛮巧妙的把程式逻辑和美工设计等部份区隔开来。这是我从之前把 PHP Code 全  嵌入在 HTML 里的时代一路走过来,感受得最深刻的地方。此外,我个人算是颇喜欢  那种自己刻程式的感觉,对於许多框架利用强大的指令介面直接刻出一个後台这样的  模式我反而是比较觉得无所适从....  CodeIgniter is Dead?    总体来说, CI 的表现对我来说一直都算称职。一些更厉害的版众可能有其他的 看法,譬如说缺少 ORM Tool 或是 CI 是否是真正的 MVC Architecture 等的论述也  一直没断过。但是,对於我一个只是凭兴趣开发点小程式的业余小菜鸟,这些其实也  并没有这麽深刻的感觉。只要是能解决问题、开发顺手的就是个好框架。    最近无意间看到了 Shawn McCool 所写的一篇文章,标题就如黄字那样,有兴趣  的版众可以看一下。此外许多外国的文章也有类似的论述,看起来国外吹起一阵出走  潮;对照起台湾网站 CI 一遍火热的现象感觉也是颇有趣。不过,重点是,所有文章  似乎都指向了同一个对象-- Laravel 。  So ... What is Laravel?    就目前看来,版上似乎还没有相关的讨论,我也没有实际使用开发一个专案过,  但国外网站上一面倒的好评还是让我感到很有兴趣,当个引子,分享给版众,希望能  有一些讨论。    Laravel 是一个新的框架,在 2011 年六月的时候释出第一个版本,至於到目前  的版号则是来到了 3.2+ 。看得出来目前还在紧锣密鼓的更新中,程式码本身还不是  非常的稳定,或许未来还会有一些调整,但速度已经稍微放慢了。可能很快就有最新  版要出来,可以再观查一下。  What does Laravel Provide?    Laravel 跟 CI 有许多颇为类似之处,下面我就目前看过的资料,统整几个我认  为比较特别的部份给版众做个参考。    框架文件      作者自己的部落格提到, CI 成功很大一部份是因为那份精美的文件(虽然    最新的功能文件似乎有点走下坡的感觉)。Laravel 也有一份这样的文件,作者    也有保证未来一定会在文件完善之後才释出最新版本。目前的文件,我觉得算是    提供了一些入门的参考,但实际开发上,可能还是会有一些问题,未来可能还是    要新增多点范例比较好上手。    Eloquent ORM      框架本身就内建了 Eloquent 这个工具,从文件看起来,的确在开发上可以    比 CI 少写一些程式。有时候只需要一个空的模型定义,然後其他相关的函式就    凭空产生了,感觉很神奇。我自己是没用过类似的功能,觉得挺新鲜的。也算是    补齐了 CI 被很多版众弃嫌的一个空洞。    Authentication      框架内建一组会员验证机制,从登入、登出、注册到会员资料表一整套解决    方案。如果需要简单会员系统的开发者这相当有用, CI 也是缺少了一个这样的    解决方案,需要靠第三方程式模组来解决。只是这个机制我看起来感觉很死板,    如果我要以这个机制做出发点,去加上群组或是权限表这类的设计,感觉上不是    很容易可以办到。    Artisan      Laravel 提供了一个命令列程式,我前面也提到我其实不是很喜欢这样的东    西,毕竟有时候太强大的工具反而让自订的空间被限缩了,而且要在开发环境下    装一些套件也不太是我的调调。 Artisan 是 PHP 写的一支程式,用来安装一些    模组还有产生专案的金钥。如果完全不使用其实也可以完全忽略它的存在,但若    能使用的话也是提高了一些便利性,可以少做很多动作。它不能帮你生出什麽很    强大的後台,或许有些人有些失望,但对我来说,还算是洽到好处。它最强大的    功能我想应该是 Migration ;资料库的 Schema 可以定义在一些 PHP 档案里,    多人专案的时候如果有人改动了 Schema ,只要进行 Migrate 的动作,就可以    让 Schema 又是同步的,不会因为删减栏位而让原本的程式出错。    Bundles      初次看文件的时候,发现大部份都是在讲 MVC 、 Routing 还有 Database    的存取这类的东西,在 CI 上大量的元件库看起来是一个也没有。原来 Laravel    是采用一个模组化的概念,让社群去开发对应的 Bundle 来增加功能。目前看来    有许多 CRM 、 Email 、 Authentication 这类的模组;类似的功能有很多不同    的模组可以用,同质性稍微高了一点,搜寻介面也还不是挺好。如果社群做大的    话应该不错,或许有机会提供一些官方模组,动态安装到专案里就不用下载超大    的元件库,增加弹性。只是目前 CI 的元件库还是比较吸引我一些。    Auto Loading      之前写 CI 的程式的时候常常需要 $this->load... 某个 View 、 Model,    这个在 Laravel 里似乎是不需要这个动作,全部都是 static member 的呼叫,    也不需要去维护 autoloading 的档案了。    Restful Controller      这功能跟 Routes 有一点关系,可以用 HTTP Verbs 来分隔程式逻辑,譬如    表单的验证可以把表单网页的逻辑放在一个区块,而 POST 回自己的逻辑部份则    是放在另一个区块,跟一般表单验证用 if 区隔开来的做法有蛮大的不同。  What are the Disadvantages?    上头针对我目前的理解做了一点简单的说明。我觉得这些功能都是蛮好的,但是  版众或许也注意到了,我多少也提出了一些我自己认为的问题,并不是全然正面的。  希望可以跟其他大家在网路上可以找到的一面倒称赞有些区隔;如果真的是我误解,  也期待可以有一些不同的讨论。接下来的部份,我就再提一些以我这个小菜鸟的角度  真的觉得不是很方便的地方跟版众做个分享。    资料夹架构      在官方文件中提到为了安全的考量,核心程式要放在网站根目录外,至於要    对外的部份则是放在一个 public 资料夹里。这部份官方的设计是要去修改虚拟    主机设定,指定一个 Virtual Host 并把 DocumentRoot 指到 public 资料夹。    先不说一些租用主机可能不允许你做这件事,这样一来,每个专案都需要一个子    网域,譬如 aaa.host.com 或 bbb.host.com ,如果你刚好对网域管理又没什麽    权限的话,真得会搞死人,还不如 CI 感觉简单的多。我想对大部份的人来说,    能用 http://host.com/aaa/http://host.com/bbb/ 还是比较直觉简单些。    网址设定      这部份感觉跟上一个问题也是很类似,假设我就是不要设 Virtual Host ,    而是把 laravel 目录解在 /var/www/ 里会怎样呢?假设你的网域是 host.com    好了,打 http://host.com/laravel/ 会是文件不存在,因为你唯一可以对外的    是 public 资料夹,所以网址是 http://host.com/laravel/public 。就是那个    小小的 public 让人心情不太美丽,网路上也有很多人在问怎麽消除 public 这    段网址,解法不外乎是 rewrite 、 symlink 和移动资料夹。symlink 毕竟也是    需要一些命令列权限,移动资料夹会破坏专案架构,都不是很漂亮的解法,偏偏    rewrite 试了网路上写的几组 rule 没一组成功的,令人沮丧。    Routing      Routing 应该是把双面刃,在 CI 里面不需要设定太多,反正放对资料夹你    的程式就可以直接动了。但在 Laravel ,每个 Controllers 都得先注册,不然    不能动。另外也可以针对 POST 、 GET 等不同的动作设不同的 Routing ,功能    实在是很强大。还有一些 filter 可以在 controller 执行前後做些动作,甚至    一些很短的 controller 还建议直接写在 route rule 里。这边实在是令人有点    大开眼界,也呈现一种完全混乱的状态。  Finally ....    我想这些差不多就是我与这个新框架短暂接触过後的心得,目前我也还在持续寻  找一些教学或是相关的文章,希望对它能够有更深入及正确的认识。多少因为看到了  国外一片叫好的声浪,我觉得对这个新的框架也还是有点信心,但也不代表 CI 就是  真的走到了尽头;毕竟前面也讲到了一些问题,我觉得以我一个小菜鸟的角度来看,  对新加入的开发者来说其实并没有真的这麽友善。期待未来可以看到版上有更多相关  的讨论,大家可以一起讨论、学习。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.28.134
1F:推 kusoayan:关於一开始的 CI is dead 可以看看这篇 12/30 17:16
2F:→ kusoayan:http://goo.gl/dAe8W 12/30 17:16
3F:→ kusoayan:看看 Phil 怎麽说XD 12/30 17:17
4F:推 liaosankai:文件真的很重要。像kohana3因为文件不友善而默默无名XD 12/30 18:44
5F:推 glaci:有一套 php mvc framework 感觉也很好用, 叫 yii, 推荐 12/30 19:04
6F:推 taikobo:推热心分享 12/31 19:20
7F:推 PTTLSboy:推! 01/01 02:29
8F:推 Bambe:推~! 01/01 03:00







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP