日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

吐槽下 php 幾個框架,都是實際項目中用過的,歡迎有使用經(jīng)驗人的噴

 quasiceo 2016-06-24

吐槽下 php 幾個框架,都是實際項目中用過的,歡迎有使用經(jīng)驗人的噴


  •  3
     

  •   sheldondai · 2014-08-20 18:07:25 +08:00 · 6690 次點擊
    這是一個創(chuàng)建于 673 天前的主題,其中的信息可能已經(jīng)有所發(fā)展或是發(fā)生改變。
    首先說下輕量經(jīng)的框架
    thinkphp和ci是我使用的過的兩個輕量級框架,但這兩個框架缺點都很明顯,就是簡陋,
    這兩個框架的bug都很多,我自己都碰到不少。tp是我剛畢業(yè)時用的,用了兩年,也和tp的作者一起工作過,算是深度用戶了。
    1.tp和ci的開發(fā)和測試估計都沒有在nginx下測試過,我在nginx跑,ci的路由有bug。
    2.ci還有個明顯的設計問題,而且竟然存在了很久,那就是在 index.php里面,當是production環(huán)境就
    會關閉錯誤信息error_reporting(-1);這個錯誤一直存在了很久,最近才被fixed,真是奇怪這么顯明的問題,竟然存在這么久。
    3.tp和ci都只能做小項目,對多人合作方面,測試方面都考慮的很少。
    4.開發(fā)過還遇到過若干小bug,這里就列舉了,有些問題記不太清了。
    5.這兩個框架的中文文檔都做的是一級棒。

    再說說yii框架吧,yii框架最讓我叫覺的我就想就是它的gii吧,分分鐘做出個簡單的后面管理demo,
    不過我吐槽的就是這個,gii生成的代碼使用的是widget,這個widget把view層和數(shù)據(jù)層緊緊的包裹在一起,不只是前端開發(fā)人員修改困難,就是后端開發(fā)也要查半天文檔了才能修改。
    當時發(fā)現(xiàn)好不容易修改好一個,下一個看似簡單的需求,又得查半天文檔才能修改好。

    舉個例子。列表頁面一般都是zii.widgets.grid.CGridView這個widget,當你對生成的代碼暗自高興的時間,一個需求來了,列表中的某一列的label需要動態(tài)顯示。但是你看代碼,zii的label是死的,不能寫php代碼,為了這個需要我只能改了框架里的CGridView,yii里面的代碼大量使用了eval,所以在view層寫代碼會很難維護。類似這種
    'url' => 'Yii::app()->createUrl("topic/create", array("id"=>$data->id,"type"=>1, "rtype"=>0))',代碼會大量充斥在view層。當在大量細小的需要過來時,我現(xiàn)在當初使用gii省下的時間都被gii收回去了,
    最后只能回歸傳統(tǒng)的foreach 出列表頁。
    yii還有問題就是代碼風格混亂,有的地方縮進8個字符,有的4個, yii2在這方面已經(jīng)改正了。


    我心中的理想的開發(fā)大中型項目的框架是這樣的
    1. 代碼風格在PSR-2以上。
    2. 框架本身是低耦合的,并且用框架寫的業(yè)務代碼也是代耦合的。
    3. 在console下也正常運行。
    4. 友好的支持php_unit,要友好的支持php_unit,上面的2,3是必須的,框架本身也有做單元測試。
    5. 一些基本的功能模塊以bundle或module的形式提供。
    47 回復  |  直到 2014-09-06 11:09:48 +08:00

        1
    trimleo   2014-08-20 18:11:57 +08:00   ? 3
    一大波laravel粉絲即將趕來。。
    歡迎關注~ 立志于打造積極向上的 PHP & Laravel 開發(fā)者社區(qū).

        2
    atan   2014-08-20 18:12:09 +08:00
    試試laravel吧,上手后還是很爽的

        3
    sheldondai   2014-08-20 18:16:18 +08:00
    laravel粉這多,由于公司原因,一直沒用過,不過看到larave用了很多sf2的組件,laravel應該是在sf2做的減法 吧

        4
    regmach   2014-08-20 18:25:22 +08:00
    ci上手太快,沒了
    yii的前端控制和lz所說差不多,crud還是難維護,relations在簡單sql語句下很快,復雜sql語句下很多人對于還是準手寫

        5
    lijinma   2014-08-20 18:27:16 +08:00
    laravel 可以試試,

    其實只要是用 Composer 來管理的框架,整體來說都還是比較低耦合,而且有 phpunit test。

    推薦你嘗試下:

    Slim Micro Framework,這種簡單的框架你可以看看噢。

    全部都是用 composer 來搭建,私有的使用包使用 Composer satis

        6
    sheldondai   2014-08-20 18:32:24 +08:00
    @lijinma sy2有用過沒,看了下,它的第三方bundle很多,可以下很多工作量。

        7
    sheldondai   2014-08-20 18:36:28 +08:00
    @regmach 國內(nèi)用yii的真多,我是真沒體會到y(tǒng)iii的真諦

        8
    wangdaimishu   2014-08-20 18:46:27 +08:00
    Yii 的 GridView 有其兩面性吧,缺點就像你說的,跟前端配合的時候不方便,雖然這個組件的可定制性超強,不過始終不如傳統(tǒng)那種在里面一點一點混寫 html + php 來的直觀。

    但是真正用熟以后你就會發(fā)現(xiàn)這貨好強,個人感覺是 Yii 的殺手锏組件之一,以至于用習慣了的某一天發(fā)現(xiàn)自己不會處理排序了(跟他搭配用的 Sort 組件專門干這事)。

    我現(xiàn)在看框架都會先看看提不提供類似的組件,不提供的一般都不用,沒有類似的組件開發(fā)后臺功能真心沒效率。

        9
    wangdaimishu   2014-08-20 18:48:46 +08:00
    @sheldondai 必須推薦 Yii2啊,Yii2的 GridView 組件更強了(主要得益于 php5.4以后的匿名函數(shù)功能)

        10
    denghongcai   2014-08-20 19:14:18 +08:00   ? 2
    CI的路由有BUG這就黑的太奇怪了吧,明明是你NGINX的Rewrite沒配好

        11
    whuhacker   2014-08-20 19:53:14 +08:00
    Yii 的代碼縮進啥時候有 4 字符 8 字符的問題?不一直都是用 tab 的么。。
    我覺得 Yii 的好處在于靈活,簡單的小項目用 Gridview 等組件分分鐘搞定,復雜的也可以自己做定制。

    Yii2 就更好了,project template 都分 Basic 和 Advanced

        12
    master   2014-08-20 19:57:32 +08:00 via iPhone
    怎么沒人提Yaf

        13
    wangdaimishu   2014-08-20 20:01:07 +08:00   ? 1
    @master Yaf 這種就不要拿出來說了,這貨就是個用 C 寫的 VC 調(diào)度器。
    拼性能,phalcon不比他差,但是人家功能甩他好幾條街。

        14
    kfll   2014-08-20 20:05:21 +08:00 via Android
    又看到說自己用 nginx 跑 php 的了

        15
    barbery   2014-08-20 20:07:00 +08:00
    phalcon啊,親。。。phpunit跑測試完全木壓力,命令行下跑也是杠杠滴

        16
    lazyphp   2014-08-20 20:27:40 +08:00
    樓主吐槽這么多,為什么不自己寫一個呢?

        17
    angeloce   2014-08-20 20:39:26 +08:00
    沒人說說thinkphp呢, 國產(chǎn)里確實不錯的框架, 但是缺點也確實多了點, 風格不統(tǒng)一的配置, 孱弱的中間件和模版.....

        18
    aWangami   2014-08-20 20:46:37 +08:00
    新人搭個話~
    目前才入手TP不久,發(fā)現(xiàn)這貨會屏蔽掉php的原始錯誤信息,還有有時候一層一層的庫內(nèi)調(diào)用堆棧其實對調(diào)試幫助不太(個人覺得噢),不知道是不是我調(diào)試模式?jīng)]有配置好..發(fā)現(xiàn)如果對它不是太了解的話,類似C語言少了分號卻報一些比較莫名的錯誤,摸不到頭腦。其實調(diào)試模式可以做得更好..
    其他方面的話,目前還在探索中

        19
    regmach   2014-08-20 20:51:46 +08:00
    @sheldondai Yii好上手啊,思路清晰也基本夠用
    @wangdaimishu Yii的后端定制能力很不錯(廢話,原本就是PHP框架啊).widget的前端定制還是感覺有點麻煩---個人之見,其他的也基本沒用過---邏輯復雜是還是要手寫好多的

        20
    aWangami   2014-08-20 20:55:10 +08:00
    對了,還吐槽一句,TP是不是不支持mysql的datetime和timestamp,我看OneThink都是用int字段類型來表示的..

        21
    wdlth   2014-08-20 20:58:17 +08:00
    CI的路由怎么會在Nginx有問題?要么是Rewrite設置不對,要么是FastCGI的PATH_INFO分離設置不對。
    生產(chǎn)環(huán)境屏蔽報錯很正常,不然可能會泄露信息。

    試了試HHVM對各框架的支持度還不錯,不過調(diào)試就比較麻煩。

        22
    GTim   2014-08-20 20:58:36 +08:00
    在我眼中,tp已經(jīng)是一個復雜的框架了.

    我用php這么久,一開始覺得zf很好,然后覺得yii很好,然后覺得tp很好,最后,我只追求一個結構了

        23
    sheldondai   2014-08-20 21:05:50 +08:00
    @master 用的不多的沒敢提

        24
    sheldondai   2014-08-20 21:09:38 +08:00   ? 1
    @wdlth 生產(chǎn)環(huán)境需要做的是display_error=false,而不是關閉error_reporting.

        25
    baocaixiong   2014-08-20 21:11:22 +08:00
    主要感覺yii的Gridview基本相當于重學了一個yii語言了。

        26
    maddot   2014-08-20 21:14:29 +08:00
    "zii的label是死的,不能寫php代碼"。

    對這個有疑問
    樓主是指每一列的列名嗎?“zii的label是死的”指的是zii不對“header"進行eval?顯然對于列名這是不必要的,因為列名不需要用每一行的值來確定,也就是它的動態(tài)化與一行的數(shù)據(jù)是沒關系的。

        27
    sheldondai   2014-08-20 21:15:53 +08:00
    @barbery phalcon性能優(yōu)秀而且設計上也很贊,不過要是框架本身有bug的話,對我這種對php擴展開發(fā)不怎么熟悉的人算是黑盒了。

        28
    sheldondai   2014-08-20 21:30:34 +08:00
    @maddot 不是說的header。你可以看zii/widgets/grid/CButtonColumn.php里面的renderButton方法。

        29
    wdlth   2014-08-20 21:32:38 +08:00
    @sheldondai 問題是php.ini不是所有的環(huán)境都能改的,比如虛擬主機,有的地方也限制ini_set。

        30
    maddot   2014-08-20 21:42:17 +08:00
    @sheldondai

    可以的吧,不需要不去修改框架代碼,看了一下代碼,默認的button的LABEL是寫死了的,但是還是可以覆蓋的

    foreach(array('view','update','delete') as $id)
    {
    $button=array(
    'label'=>$this->{$id.'ButtonLabel'},
    'url'=>$this->{$id.'ButtonUrl'},
    'imageUrl'=>$this->{$id.'ButtonImageUrl'},
    'options'=>$this->{$id.'ButtonOptions'},
    );
    if(isset($this->buttons[$id]))
    $this->buttons[$id]=array_merge($button,$this->buttons[$id]);
    else
    $this->buttons[$id]=$button;
    }

        31
    maddot   2014-08-20 21:51:54 +08:00
    不好意思,看得不夠仔細,你是指button的LABEL不能EVAL,但是具有相同行為的Button需要不同的LABEL的需求還是比較個性化的,所以要求你自己去繼承框架代碼來實現(xiàn),沒有什么好批評的吧,YII的一大優(yōu)點是他的組件機制讓你能方便改變框架的各種功能行為

        32
    mahone3297   2014-08-20 22:11:06 +08:00
    lz說的問題,確實存在。
    我這邊用symfony,你說的問題,我看過symfony相關的文檔,symfony提供的解決方案是,可以overwrite。
    我認為symfony和yii應該還是比較類似的,laravel應該也差不多。

        33
    codingpp   2014-08-20 22:33:35 +08:00
    laravel大法好,退yii保平安

        34
    jarlyyn   2014-08-20 23:45:48 +08:00
    覺得yii最好用的是緩存和url rewrite.
    gii做過兩個項目后就不用了。

        35
    konakona   2014-08-21 04:27:30 +08:00 via Android
    @trimleo 關注。

        36
    jianghu52   2014-08-21 09:07:47 +08:00
    在我這種只會用cakephp+smarty的人來說,你們說的東西都太高端了。

        37
    ksc010   2014-08-21 09:17:25 +08:00
    用tp幾個月 了 不爽的就是它的模版系統(tǒng)

        38
    lizhijun   2014-08-21 09:31:38 +08:00
    不得不說CI的中文文檔和社區(qū)支持很給力

        39
    Rabbit52   2014-08-21 11:42:14 +08:00
    laravel 的性能還是有點捉急,symfony2 的曲線太陡,Phalcon 如上有黑盒的趕腳~

        40
    ren2881971   2014-08-22 08:34:01 +08:00
    tp和ci 都簡單用過。 覺得ci不錯~ 野生phper路過。。

        41
    summer_charlie   2014-08-22 21:27:38 +08:00
    樓主可以使用 Laravel , 開發(fā)從此如此愉快, 打下廣告 -> http:///

        42
    Actrace   2014-08-23 09:08:08 +08:00
    PHP本質(zhì)上已經(jīng)是很優(yōu)秀的框架了,不知道在這上面再套一個框架有啥意義。
    頂多,就是按照個人需求把一些常用業(yè)務打包起來復用以提升類似需求的開發(fā)速度,除此之外我想不出還有其他可以優(yōu)化的地方。
    反倒是現(xiàn)有的框架,把太多細節(jié)封裝起來,但是又只能應對固定的需求,實際上是批量拉低了PHP程序員的技術水平,拖延了成長時間。
    有一些活,該了解的細節(jié)還是要了解的,就算在日常工作中有辦法忽略那些細節(jié)用于提升效率,但是至少你在茶余飯后跟朋友們聊天的時候可以拿出些東西來侃侃~

        43
    vigoss   2014-08-23 10:35:55 +08:00 via iPhone
    @Actrace 我不知道為什么用了框架了就不了解細節(jié)了。不想了解細節(jié)不用框架也不會了解。技術的提升和你用什么框架沒關系。不用框架寫帶碼,你難道連數(shù)據(jù)庫都不封裝一下?

        44
    justplaymore   2014-09-04 15:13:00 +08:00
    symfony2
    composer

        45
    TangMonk   2014-09-04 21:06:15 +08:00
    @sheldondai 最近在研究drupal8, 隨便研究了下sy2, 但是感覺好復雜的樣子,搞不懂。。官網(wǎng)的tutorial看了之后也是一頭霧水。。。

        46
    shanqiu   2014-09-06 00:57:19 +08:00
    怎么沒人提kohana,yii基礎上發(fā)展出來的框架,感覺這個非常靈活,比tp、ci好用,沒yii那么龐大,但是性能不是問題。
    我現(xiàn)在寫項目都是用kohana+bootstrap

        47
    crabRunning   2014-09-06 11:09:48 +08:00 via Android
    屌炸天的initphp,不服來辯

      本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多