thinkphp5 - thinkPHP 資料庫 M() 用的多嗎?

來源:互聯網
上載者:User
關鍵字 thinkphp thinkphp5 php
學完了 thinkPHP C和V 最後看的 操作資料庫,
之前學的PHP內建的PDO,感覺也會用了,
現在thinkPHP 也自己帶了一套 操作資料庫的 類。
我看了看教程,再學習也挺繁瑣哦的。。
各種傳值格式又都得記,本來學了class MySQLi,後來知道都用pdo,又學了pdo,現在又一個M。。。我都快學串了。

我問問這個thinkPHP 的大M 方法,在你們做項目用的多嗎?
比pdo 的方便嗎?

我還學習嗎。。

回複內容:

學完了 thinkPHP C和V 最後看的 操作資料庫,
之前學的PHP內建的PDO,感覺也會用了,
現在thinkPHP 也自己帶了一套 操作資料庫的 類。
我看了看教程,再學習也挺繁瑣哦的。。
各種傳值格式又都得記,本來學了class MySQLi,後來知道都用pdo,又學了pdo,現在又一個M。。。我都快學串了。

我問問這個thinkPHP 的大M 方法,在你們做項目用的多嗎?
比pdo 的方便嗎?

我還學習嗎。。

我沒用過TP,不是很清楚裡面的M是什麼,但是還是能指出:你理解有誤,這是兩件事情。
學PHP的人肯定都要會用PDO或者Mysqli,這根本不存在學習的問題,文檔就在那裡,會用就行,需要花時間學習的是SQL文法。
而M阿D阿這種東西是另外一層封裝,它們通常用來解決以下問題:
1- 寫sql很麻煩(例如欄位清單),越長的sql維護起來也越麻煩
2- 拼湊sql的時候更麻煩
3- 不同的人寫的sql不同,造成表、欄位別名不一致,容易帶來問題
4- sql注入
5- 等等

對於相同功能,PDO方式可能如下:

$db = new PDO();$row = $db->query('SELECT * FROM `users` WHERE `id` = 5')->fetchRow();

使用M的話可能會類似:

$row = M('User')->where(array('id' => 5))->findRow(); //M('User')可能等效於new User,而User是一個繼承與Model的類

簡短的說,各種架構都想了各種方法避免開發人員用直接寫SQL語句的方式訪問資料庫,明白這個原理就行了,不需要特別的學習什麼,需要的時候查手冊就好了,沒必要記住。而且這種東西出了問題一樣是SQL異常,必須掌握SQL文法才能解決問題。

你看了文檔之後就會感覺用起來很方便啊,大哥,架構的意義在哪裡?!不就是讓你少寫代碼嗎!話說tp 3.2.3資料庫驅動用pdo重寫了(完全基於pdo的)

你既然要用Thinkphp架構了肯定首選使用M或者D方法啊!

  • 如果你要執行個體化模型類檔案,就用D

  • 如果不用載入模型類,就用M
    一般情況簡單的CURD都用M。根據實際情況來用。希望對你有協助

thinkphp裡面有兩種模型調用方式,M()和D(),比如操作使用者表:

M('user')->add(array('name' => 'zhangsan'));D('**U**ser')->add(array('name' => 'lisi'));

注意D('User')中user首字母大寫。兩者的區別是,D()可以由你自己撰寫擴充的模型操作,而M()是thinkPHP內建的方法,也就是說D()可實現功能擴充,而M()功能不可擴充,效能上D()也就比M()弱了一些。

你學PHP當然要對pdo和mysqli方法都有所瞭解,但是在具體的項目中,用thinkPHP封裝好的方法去操作就好了。

我用D比較多

幾乎每個項目中都會使用到資料庫,而在ThinkPHP此類架構中,一般是將一張表封裝成一個對象,而在php中,對象的執行個體化是需要new類的,代碼類似於

//類似於這種MysqlTableClass $obj_Table =new MysqlTableClass('db_name','table_name');obj_test=$obj_Table->getOne();

ThinkPHPM函數(這裡我不得不糾正下你的說法了,類中的才叫方法,這個M位於公用函數裡,所以只能叫函數),封裝的就是上面的new操作,返回的直接就是一個對象。

技巧拓展

建議不要使用M方法,因為當你後期需要添加自訂模型的時候,M方法還得一個個的改成D,非常麻煩,而如果你直接使用D方法,則可以避免此類問題。

綜上

直接使用D方法即可,本質上就是一個封裝而已~

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.