Laravel 4 ใช้รูปแบบ stattic method แบบเทียมนะครับ อิอิ
อะไรคือ static class
static method ใน php คือการที่เราเรียกใช้งาน method ใน class นั้นโดยตรงเลยไม่ต้องไปสร้างเป็นวัตถุขึ้นมาใหม่
ทำไม static class ถึงไม่ดี
หนึ่งในเหตุผลหลายข้อคือทำให้ยากต่อการทำ unit test เพราะเมื่อเริ่มการเทสเราจะไปเปลี่ยนค่าระหว่างการทำงานไม่ได้เลย
แล้วทำไมการทำ static class ใน laravel ถึง work
laravel มีวิธีการหลบเลียงปัญหาโดยการใช้ facade design pattern เข้ามาช่วย ซึ่งเราจะเห็นตรงที่ app.php
ทุกครั้งที่เราเรียก
View::make('hello') มันจะวิ่งไปที่
Illuminate\Support\Facades\View เมื่อดูใน ไฟล์จะเจอ
class View extends Facade {
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'view'; }
}
เห็นชื่อคลาสก็รู้กันเลยว่าไม่ใช้ static เลยคลาส view สืบทอดมาจากคลาส facade อีกทีความลับอยู่ที่ class facade กับฟังก์ชันที่ชื่อว่า __callstatic มันจะทำการเรียกคลาส Ioc ซึ่งจะใน Ioc มีการเก็บคลาสตัวจริงไว้เเล้ว จึงทำให้เราสามารถเขียนใหม่เป็น
$app->make('view')->make('hello')
สิ่งที่ยกเครื่องใหม่คือระบบการจัดการส่วนเสริมเดิมในรุ่น 3 ใช้ bundle เปลี่ยนเป็น package แล้วใช้ composer เข้ามาเป็นตัวจัดการไฟล์และเวอร์ชันของไลบราลี่หลักเลยตั้งแต่เริ่มต้นที่เราดาวน์โหลดตัวเฟรมเวิร์คมา ก็ต้องติดตั้ง composer ก่อนแล้วจึงเรียกใช้ คำสั่ง composer install ดาวน์โหลดโฟลเดอร์ vendor ซึ่งบรรจุไฟล์หลักของระบบซึ่งถือว่ามีขนาดและจำนวนไฟล์เยอะมากลงมา ทำให้สิ่งที่เห็นเลยคือ
ข้อเสีย
- การมีขนาดไฟล์ที่ถือว่าเยอะกว่าเฟรมเวิร์คอื่น ทำให้เป็นข้อเสียแน่นอน
- การพึ่งพาคอมมานไลน์มากเกินไป เวลาไปทำงานกับเครื่องของลูกค้า ซึ่งเราไม่มีสิทธิไปเรียกคอมมานไลน์แน่นอน แล้วจะทำยังไง
- การทำ restful แบบเก่าเข้าใจง่ายมากเปลี่ยนมาเป็นแบบใหม่เข้าใจยากกว่าเดิม ซึ่งตอนเป็นรุ่น 3 ทำให้ผมเห็นแล้วเข้าใจหลักการได้ภายในกี่นาที
- สิ่งที่ควรจะเพิ่มแต่ไม่มีเพิ่มเลยคือฟังก์ชันที่ช่วยจัดการหน้าเว็บ ธีมก็ไม่มี ต่างกับ cakephp ที่มี helper , Yii ที่มี widget แต่ไปเพิ่มฟังก์ชัน Queued,Remider password
ข้อดี
- การนำสิ่งที่ดีอยู่แล้วอย่างเช่น Symfony มาพัฒนาต่อทำให้สามารถพัฒนาสิ่งใหม่ๆ ได้อย่างรวดเร็ว
- การใช้ composer ก็สามารถทำให้การจัดการส่วนขยายหรือไฟล์ต่าง ทำได้ง่ายมากขึ้น เมื่อมีการปรับเปลียนที่ส่วนกลางเราก็ใช้คำสั่ง composer update ก็ได้ไฟล์เวอร์ชันล่าสุดมา
- การใช้ commandline จัดการก็ทำให่เราพัฒนาโปรแกรมได้เร็วมากขึ้น
สิ่งที่เพิ่มเข้ามา
|
รายละเอียดแบบคร่าวๆ
|
Composer
|
ใช้จัดการไฟล์ Libraries,extension
|
doctrine
| |
flip
|
เป็นชุดฟังก์ชันที่ช่วยให้ error แสดงข้อมูล
มากขึ้น |
ircmaxell
|
เป็นชุดฟังก์ชันช่วยจัดการรหัส
|
monolog
|
เป็นตัวสร้างและส่งประวัติการทำงานของเว็บ
สามารถเลือกทางส่งได้หลายทาง |
nesbot
|
เป็นฟังก์ชันจัดการเวลาโดยสร้างฟังก์ชันคำนวนเวลา
ไว้หลากหลายมาก |
nikic
|
เป็นชุดฟังก์ชันที่ใช้ในการจัดไฟล์ php ออกเป็นโครงสร้าง
ต้นไม้ทำให้ง่ายต่อการวิเคราะห์ |
patchwork
|
เป็นชุดฟังก์ชันที่ช่วยจัดการตัวอักษรใน utf8
|
predis
|
เป็นชุดฟังก์ชันที่ใช้จัดการเก็บข้อมูลในรูปแบบ key value
|
psr
|
เป็นฟังก์ชันจัดการเก็บประวัติการทำงานของเว็บ
|
swiftmailer
|
เป็นชุดฟังก์ชันช่วยบริหารจัดการอีเมล์
|
Symfony
|
laravel ดึงคลาสพื้นฐานมาทังหมด 13 คลาสซึ่งนำเอาไปสร้าง
เป็นคลาสของ Laravel เอง |
ยังเหลืออีก 27 component แล้วก็มีเรื่องให้พูดอีกเยอะครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น