[閒聊] 新手學 PHP 不要從 Laravel 開始

作者: GALINE (天真可愛CQD)   2017-07-03 13:44:23
這是前天晚上在 LaravelConf 跟人聊到的,不熟寫程式的人應該怎麼學 PHP 網站開發
重新整理一下貼上來
這年頭的高大上 PHP 網站開發其實要掌握的技能相當多
- 會用 composer
- 搞懂 MVC
- 搞懂 autoloading,或至少知道 autoloading
- 有能力寫物件導向程式
- 要會資料庫
- 要會 html/css/js[B
- 要搞定 web server
- 最重要的,會寫 PHP
這些項目每一個對於白紙等級的新手來說都是一堵高牆
尤其是,整份 PHP 現代工程都是疊在 OOP 上面,這並不是大部分新手三個月就能掌握的東西
如果直接叫白紙新手從 Laravel framework 開始,那等於是把小學生丟去打天下第一武道會
就算形式學起來了,那也只是不明就裡
從這個角度來說,我認為那些古代 PHP 寫法可能更適合純粹新手上手
在學習 OOP 之前,先讓他學會
<h1>你好,<?=$_GET['name']?></h1>
從這邊開始,漸漸長出一堆麵條一般交疊的 html 跟 php 之後
再讓他看到邏輯跟 html 可以分開
<?php
$name = isset($_GET['name']) ? $_GET['name'] : "無名氏";
// 三百行邏輯
?>
<h1>你好,<?=$name?></h1>
<!
作者: bibo9901 (function(){})()   2017-07-03 14:15:00
PHP語言本身就一堆問題, 愈修愈爛而已
作者: GALINE (天真可愛CQD)   2017-07-03 14:54:00
也沒糟到那麼不堪用...
作者: newton2009 (好瘦唷QQ)   2017-07-03 15:58:00
不管黑貓、白貓,能抓到老鼠的就是好貓。
作者: crossdunk (推噓自如)   2017-07-03 16:17:00
有一堆問題嗎,用起來感覺還好Laravel本來就是PHP有一定程度才會開始學的吧
作者: swallowcc (guest)   2017-07-03 16:36:00
不只是Laravel吧, framework都是, 剛開始還是native吧
作者: y2468101216 (芸)   2017-07-03 16:52:00
php有一件一定要用extension才能做的事情,異步處理。
作者: GALINE (天真可愛CQD)   2017-07-03 17:56:00
其實不是不行,php可以fork...但確實很難用.........
作者: lambo (Lambo)   2017-07-03 20:48:00
我覺得php的好處就是網頁很便利阿, python網頁都MVC...
作者: fri13 (思考跳tone記性差)   2017-07-03 21:20:00
看得懂簽名檔應該有一定年紀了 你好我是坐你對面的泳褲XD
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-07-04 11:01:00
一樓寫一下一堆是哪一堆 至少要寫500字 謝謝Laravel的確複雜到不適合當教學工具適合production用的東東不一定適合教學
作者: newversion (海納百川)   2017-07-04 11:58:00
FB: 我們用爛語言,也能稱霸那麼久 XD
作者: tkdmaf (皮皮快跑)   2017-07-04 12:20:00
總是有一些人,自己技術爛,掌握不好東西……就怪人家問題多多……結果根本就自己問題多多。
作者: rickysu (Ricky)   2017-07-04 13:47:00
其實PHP在這幾年有相當大的變革,從語法到VM本身如果真的要說爛,應該沒有人會說 JS 是個好語言。
作者: tkdmaf (皮皮快跑)   2017-07-04 13:49:00
其實namespace和class並沒有那麼難懂……但我比較常看到不懂的人說他難……
作者: rickysu (Ricky)   2017-07-04 13:49:00
可是JS卻是個不能忽略掉的東西阿。
作者: tkdmaf (皮皮快跑)   2017-07-04 13:50:00
以前有遇過,叫人不要寫class的傢伙是因為自己不會如果把class直接列入必學基礎呢?像學java那樣……不光說java,其他的物件導向語言似乎沒人在吵要寫不要這種問題了……我們乾脆就直接想成class是必經門檻就好了
作者: GALINE (天真可愛CQD)   2017-07-04 13:57:00
如果「同時」學html跟server設定,我覺得那份量相當多所以我後面認為直接把PHP獨立成一個項目學python也要學module,就用類似的步伐來學吧只是因為語言不是原生支援PSR4所以痛苦指數會增加...
作者: rickysu (Ricky)   2017-07-04 13:58:00
class還是得搭配design pattern否則寫出來的東西很容易淪為包了class的function。以前曾經看過一堆static function的class還不如直接寫 global function 算了還可以少打幾個class
作者: tkdmaf (皮皮快跑)   2017-07-04 14:00:00
ricky講的沒錯,只是若要論循序漸進,class應該列在基本
作者: GALINE (天真可愛CQD)   2017-07-04 14:03:00
另外我覺得以個人開發「老寫法」其實沒有想像中的差但是需要自己非常遵守很多容易被打破的紀律不過多人開發除非是很有默契的強者不然會很容易亂...
作者: tkdmaf (皮皮快跑)   2017-07-04 14:05:00
所以啊,有現成的經驗和規範也有書了,不學那些要自幹經驗
作者: GALINE (天真可愛CQD)   2017-07-04 14:05:00
這方面來說使用PSR不只是工程問題,也是政治問題
作者: tkdmaf (皮皮快跑)   2017-07-04 14:06:00
的話就自然相對累人。撞牆法則也不是每個人都像我駕輕就熟
作者: GALINE (天真可愛CQD)   2017-07-04 14:06:00
同事或主管訂的規範會被靠北,那「官方」規範總行了吧
作者: tkdmaf (皮皮快跑)   2017-07-04 14:08:00
所以啊,既然官方有規範的那class和namespace要不要學?要嘛……大家都學好,大家都守規範,大家都輕鬆。不然來個新人,跟你這個沒學過那個不會規範不懂你不累死?
作者: rickysu (Ricky)   2017-07-04 14:16:00
如果大家都是遵照PSR4的autoload,後續維護整合就很簡單可是如果有人硬是要自己 include 然後 include path又不知寫在哪,其他配合的人就會相當痛苦。尤其是許多"老寫法"通常隱含著side effect,include 後東西就很神奇的跑出來, include 第二次,就很神奇的爛了充斥著一堆untestable code。套句現代術語只要是無法測試的 code 他就應該要被重構。
作者: gname ((′口‵)↗︴<><...<><)   2017-07-04 15:06:00
老寫法對於新而言是好的,讓他們可以感受什麼叫作因需求而演進,然而就會冒出一群叫你直接學framework,又快又方便
作者: GALINE (天真可愛CQD)   2017-07-04 17:19:00
Yeah,所以說個人開發,cli tool 七八百行我覺得極限了
作者: agda (氣定神閒)   2017-07-04 19:52:00
推最後一句
作者: xdraculax (首席怪叔叔)   2017-07-05 10:09:00
PHP 陣列跟字串的函式參數都不統一,總是要看提示
作者: nfsong (圖書館我來了)   2017-07-15 23:13:00
作者: JohnRoyer (Zero 日落)   2017-08-29 10:09:00
like
作者: see7di (see7di)   2017-08-29 19:20:00
沒有意義的爭論,有這個時間不如多學幾種語言,做項目時多增加幾種可選項

Links booklink

Contact Us: admin [ a t ] ucptt.com