其實(shí)并不抵觸學(xué)習(xí)新東西和一些“高大上”的概念,但我一直以來最關(guān)心的只有一點(diǎn):我的項(xiàng)目中能不能用到,這東西有什么用,好處是什么,代價是什么?網(wǎng)上很多都說面向?qū)ο蟮臄?shù)據(jù)庫操作方式可以將Model層直接解耦,不需要關(guān)心它是怎么實(shí)現(xiàn)的,而且可以使用OOP的方式,如getXXX()來獲取記錄的某個字段值。其實(shí)我一直想做一個游記的網(wǎng)站(類似百度旅游/馬蜂窩),目錄結(jié)構(gòu)也在http://segmentfault.com/q/1010000002890348提出了,中途也因?yàn)榭催^很多IoC的文章很是頭疼,發(fā)現(xiàn)礙于項(xiàng)目規(guī)模很難體現(xiàn)出它的優(yōu)勢,反而是加重負(fù)擔(dān)為了設(shè)計而設(shè)計。分層已經(jīng)使得action盡量精簡,而且Model也可以做到不錯的復(fù)用。1、實(shí)在不知道為什么越來越多使用ORM呢?是因?yàn)槊嫦驅(qū)ο缶幊痰男枰ㄌ\統(tǒng)了)?還是說我的查詢結(jié)果對象可以緩存?如果網(wǎng)站訪問量大了,是不是把查詢結(jié)果以對象形式緩存才是最終的解決辦法?基于KV的noSQL是不是也可以替代?那數(shù)據(jù)庫自身的緩存呢?2、其實(shí)解耦真不是最關(guān)心的問題(自認(rèn)為還沒達(dá)到要解耦的地步,上面的分層帶來的復(fù)用性已經(jīng)蠻不錯了),ORM的builder看著也是醉了,不如直接Model里寫SQL語句來的痛快,將來換數(shù)據(jù)庫直接重寫(不擔(dān)心這個問題,不差這個時間),感覺性能和復(fù)用一直有點(diǎn)點(diǎn)的相悖,那拋開復(fù)用性和解耦的需求,如果要用ORM是不是就是因?yàn)閷ο缶彺娴氖找妫?、還有之前公司大哥說不要用join,直接嵌套查詢,我說那不是假設(shè)文章頁15篇文章上面有作者信息,我就要跑15趟post表,中途再跑15趟user表?他說查詢結(jié)果可以緩存,不太明白這個緩存是數(shù)據(jù)庫級別的還是Model對象級別的?不一一評論了,謝謝大家的回答!
PHP 數(shù)據(jù)庫 ORM 實(shí)現(xiàn)的必要性
胡子哥哥
2019-04-10 20:49:25