September 29, 2014

Tôi & PHP Frameworks




Sau một khoảng thời gian làm việc với PHP, trải qua 1 số dự án lớn nhỏ, và cũng gặt hái được một số thành tích đối với mảng PHP này. Đặc biệt thì 6/2014 mình đã đạt được chứng chỉ của Zend về PHP, đây có lẽ là điều mình tự hào nhất khi nhắc với ai đó về khả năng PHP của mình. Bài viết này nhằm mục đích "kể lể" một số framework PHP mà mình đã từng làm, và những góc nhìn cá nhân dành cho Framework đó. Đây chỉ là quan điểm cá nhân, các bạn nên xem với tinh thần tham khảo là chính, đừng bắt bẻ soi mói quá ^^

1. Zend Framework (1 và 2)

Với mình, có lẽ đây là framework ưa thích và tốt nhất cho những dự án lớn. Mình biết đến Zend Framework khi tham gia làm việc tại FPT Online. Với kiến trúc chặt chẽ, những component hữu ích, Zend Framework là một công cụ hữu ích, đầy đủ cho việc phát triển ứng dụng tầm lớn. Chắc hẳn sẽ không thể tránh khỏi câu hỏi: "Zend nó chậm và nặng nề, lại khó học, dùng làm gì cho mất thời gian". Mình chỉ có thể nói rằng đúng là Zend có phần chậm nhưng nó là một gã khổng lồ, nó sẽ đi xa.
Với ZF2, thì được đi theo hướng kiến trúc Multi Modules, giúp cho việc phát triển ứng dụng web nhanh và có thể share công việc rất tốt. Cũng chính cơ chế này, nên Zend đã rất khuyến khích coder phát triển module, và họ cũng dựng ra một trang cho cộng đồng xây dựng module. Trong đây có rất nhiều module hữu ích, đã được test cẩn thận giúp cho quá trình phát triển ứng dụng nhanh và tốt hơn.

Riêng bản thân mình cũng có viết một module theo định hướng tăng tốc cho Zend Framework, mọi người có thể xem tại đây: Zend2 - Cache Route
Trong blog này cũng có 1 số tutorial cho Zend Framework 2.

2. Phalcon

Đến với Phalcon khi mình gia nhập vào TIKI, ban đầu mình vẫn dùng ZF2 để xây dựng lại platform e-commerce cho team. Tuy nhiên, sau đó thì mình chuyển sang dùng Phalcon để thỏa lòng bác sếp ^^ (Chứ thật ra thì tình yêu dành cho ZF2 không hề thay đổi). 
Phalcon là một Framework nhanh, cực nhanh vì nó không là PHP mà là code C. Nó nhanh cũng là điều rất bình thường. Tuy nhiên, khi xài nó thì mình gặp không ít khó khăn từ cấu trúc của nó, thế là mình quyết định build một module riêng nhằm hỗ trợ việc code tốt hơn. Module này mình có dịp trình bày tại TechCamp Saigon 2014.
Nếu so giữa Phalcon và ZF2 thì điểm mạnh Phalcon là tốc độ, ngoài ra nó ko thể tận dụng sức mạnh của tập thể được. Vì nó không có một nơi như Zend Modules, để mọi người tái sử dụng code của nhau mà không mất công code lại.
Mặt khác nữa, mình không thể debug step by step được khi dính vào code Phalcon, vì nó là PHP Extension, code bằng C. Và khi bạn muốn biết chỗ đó code như thế nào, bạn phải biết code C. Với Phalcon 2.0 thì được thay từ C sang Zephir, nhưng nói chung cũng không là PHP ^^.

Mình cũng có vài project open cho Phalcon
  1. Phalcon Skeleton - Dùng là khung xương cho Phalcon Ext Module
  2. Phalcon Ext Module
  3. Phalcon Ext Toolbar - Dùng làm toolbar profiler cho Phalcon Ext Module. Để dùng nó, bạn chịu khó chuyển qua branch develop vì nó đang được phát triển ^^
Phalcon Ext Toolbar

3. Silex

Cuối cùng với mình đó là Silex Micro Framework. Đây là một framework nhỏ gọn, và rất đơn giản. Nó là người em của Symfony 2, vì cùng cha sinh ra. Cái này có thể gọi là, tuy nhỏ mà có võ. Với sự hậu thuẫn từ thằng anh to lớn Symfony 2, nó thừa hưởng khá nhiều đồ chơi ngon như Template Engine Twig. Và theo quan điểm cá nhân, dùng chú này xây 1 webservice RESTful thì không có gì để mà chê. Và mình cũng đang dùng chú này làm RESTful API cho 1 project start-up gần đây. Ngoài ra, khi đến với Silex, bạn sẽ dễ dàng tiếp cận (vì nó nhỏ), dễ dàng ứng dụng (vì nó nhỏ ^^), dễ dàng học code PHP từ đây (vì nó nhỏ :D)


4. Kết

Mình thì chỉ chơi có bấy nhiêu đây, và bài viết cũng chỉ mang tính cá nhân, nhằm chia sẻ cùng mọi người góc nhìn của mình. Xài cái nào là tùy vào mọi người, và phát triển ra sao là tùy ứng dụng. Chúc mọi người vui vẻ mà code

No comments:

Post a Comment