Ngôn ngữ lập trình PHP:

Một phần của tài liệu Tìm hiểu về điện toán đám mây và xây dựng ứng dựng web theo hướng dịch vụ (Trang 38)

a) Giới thiệu:

PHP ban đầu được viết tắt bởi cụm từ Personal Home Page và được phát triển từ năm 1994 bởi Rasmus Lerdorf. Lúc đầu chỉ là một bộ đặc tả Perl, được sử dụng để lưu dấu vết người dùng trên các trang web. Sau đó, Rasmus Lerdorf đã phát triển PHP như là một máy đặc tả. Vào giữa năm 1997, PHP đã được phát triển nhanh chóng trong sự yêu thích của nhiều người. PHP đã không còn là một dự án cá nhân của Rasmus Lerdorf và đã trở thành một công nghệ web quan trọng. Zeev Suraski và Andi Gutmans đã hoàn thiện việc phân tích cú pháp cho ngôn ngữ để rồi tháng 6 năm 1998, PHP3 đã ra đời (phiên bản này có phần mở rộng là *.php3). Cho đến tận thời điểm đó, PHP chưa một lần được phát triển chính thức, một yêu cầu viết lại bộ đặc tả được đưa ra, ngay sau đó PHP4 ra đời (phiên bản này có phần mở rộng không phải là *.php4 mà là *.php). PHP4 nhanh hơn so với PHP3 rất nhiều. PHP bây giờ được gọi là PHP Hypertext PreProcesor.

38

Trước đây, có rất nhiều trang web được xây dựng bởi ngôn ngữ HTML (HyperText Markup Language). Đây chỉ là những trang web tĩnh, nghĩa là chúng chỉ chứa đựng một nội dung cụ thể với những dòng văn bản đơn thuần, hình ảnh và có thể được sự hộ trợ bởi ngôn ngữ JavaScript hoặc Java Apple. Những trang web như vậy người ta thường goi là client-side. Tuy nhiên, khi mà Internet và Intranet đã được sử dụng cho các ứng dụng cần tới cơ sở dữ liệu. Các trang ứng dụng như vậy được gọi là trang web động, bởi vì nội dung của chúng luôn thay đổi tùy thuộc vào dữ liệu và người sử dụng. PHP là ngôn ngữ làm được điều đó bằng cách chạy chương trình PHP trên máy chủ web server, người dùng có thể tạo ra các ứng dụng có sự tương tác với cơ sở dữ liệu để tạo ra những trang web, đấy được gọi là những trang web động.

Sự khác nhau về cách thức hoạt động của trang web được viết bằng ngôn ngữ HTML và PHP có thể được hình dung như sau:

 Đối với các trang HTML : Khi có yếu cầu kết nối tới một trang web từ

phía người sử dụng, web server sẽ lần lượt đọc yêu cầu từ phía trình duyệt, sau đó tìm trang web trên server và gửi trang web đó trở lại cho trình duyệt (nếu tìm thấy) qua mạng Internet hoặc Intranet.

 Đối với các trang PHP : Khi có yêu cầu kết nối tới một trang PHP, web

server sẽ phân tích và thi hành các đoạn mã PHP để tạo ra trang HTML bằng cách đọc yêu cầu, sau đó tìm trang web trên server, thực hiện các đoạn mã PHP trên trang web đó để sửa đổi nội dung của trang và gửi lại nội dung đó cho trình duyệt.

Tóm lại, sự khác nhau cơ bản giữa HTML là PHP và HTML không được thực hiện trên máy chủ web server, còn các trang *.php viết bằng các đoạn mã PHP sẽ được thực hiện trên máy chủ web server do nó có tính linh động và mềm dẻo hơn.

b) Ưu điểm và nhược điểm của PHP: Ưu điểm:

 PHP hỗ trợ kết nối tới rất nhiều hệ cơ sở dữ liệu khác nhau như: MySQL, Oracle, DBM, Hyperware, Interbase, Sybase,… Ngoài ra PHP còn hỗ trợ kết nối với ODBC thông qua đó có thể kết nối với nhiều ngôn ngữ khác mà ODBC hỗ trợ.

 PHP thực hiện với tốc độ rất nhanh và hiệu quả cao. Một server bình thường có thể đáp ứng được hàng triệu lượt truy cập tới chỉ trong một ngày.

39

 PHP mà một ngôn ngữ rất dễ dùng, dễ học và đơn giản hơn nhiều so với

các loại ngôn ngữ lập trình khác như Perl, Java. Nếu người dùng đã biết ngôn ngữ C thì việc học PHP sẽ càng nhanh chóng và thuận lợi hơn.

 PHP cung cấp một hệ thống thư viện phong phú: Do PHP ngay từ đầu

đã được thiết kế nhằm mục đích xây dựng và phát triển các ứng dụng trên web nên PHP cung cấp rất nhiều hàm xây dựng sẵn, giúp thực hiện các công việc rất dễ dàng.

 PHP có thể sử dụng được trên nhiều hệ điều hành như Unix, Linux và các phiên bản của Windows. Ngoài ra, người dùng còn có thể đem mã PHP này chạy trên các hệ điều hành khác mà không phải sửa lại mã.  PHP là ngôn ngữ mã nguồn mở, chính điều này đã làm cho PHP ngày

càng phát triển và ưa dùng hơn với mọi người.

 PHP có hệ thống CMS miễn phí như joomla, wordpress,… và có nhiều

hệ thống webserver cấu hình đơn giản như XAMP, WAMP,… Nhược điểm:

 Nhiều người dùng đều đồng ý rằng mã nguồn của PHP không bắt mắt và

hiếm có công cụ phát sinh mã.

 PHP chỉ chạy ứng dụng web.

c) Các PHP Framework phổ biến nhất hiện nay:

Trong vài năm qua, PHP đã tiến triển thành một ngôn ngữ được lựa chọn bởi hầu hết các nhà phát triển website, đã có một sự bùng nổ về các PHP framework, dẫn đến các cuộc tranh luận lớn về đề tài: PHP framework nào là tốt nhất, bởi vì thực tế không phải tất cả các framework đều được xây dựng trên khuôn khổ dành cho nhiều người sử dụng. Dưới đây là 5 framework được đánh giá là tốt và phổ biến nhất hiện nay:

 Zend Framework (ZF): có một cộng đồng phát triển rộng lớn và nó tập

trung vào các ứng dụng web theo phong cách 2.0. Vì được phổ biến rộng rãi và có một cộng đồng người dùng tích cưc nên ZF được gọi là “Công ty PHP”. ZF là một trong những framework phổ biến nhất hiện nay. Nó có các tính năng mạnh mẽ, thường được sử dụng cho các công ty lớn và người dùng cần phải có lượng kiến thức khá sâu rộng về PHP để có thể sử dụng được nó.

40

 CakePHP: là một lựa chọn tuyệt vời cho những lập trình viên có kiến thức nâng cao về PHP. Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails, là một framework mạnh về khía cạnh phát triển nhanh chóng , giúp lập trình viên đẩy nhanh quá trình phát triển ứng dụng của họ. Với các hệ thống hỗ trợ, tính đơn giản và môi trường mở cao đã giúp cho CakePHP trở thành một trong những framework phổ biến nhất hiện nay. (adsbygoogle = window.adsbygoogle || []).push({});

 Symfony: được ra đời nhằm mục đích giúp đỡ nâng cao hơn cho những

lập trình viên muốn tạo ra các ứng dụng website doanh nghiệp. Đây là một PHP framework mã nguồn mở với đầy đủ các tính năng cần thiết nhưng nó có vẻ chạy chậm hơn các framework khác.

 Codelgniter: được biết đến như một framework dễ hiểu, dễ sử dụng và

cho hiệu suất cao. Không giống như Symfony, PHP framework này phục vụ mục đích lý tưởng cho việc xây dưng các ứng dụng chia sẻ và lưu trữ. Nó cung cấp các giải pháp đơn giản, và có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ và cung cấp sẵn một danh sách hướng dẫn sử dụng cho người mới bắt đầu. PHP framework này rất phù hợp cho những người mới làm quen với framework.

 Seagull: cũng là một PHP framework tốt phục vụ cho việc xây dưng website. Nó là một framework cực kỳ dễ sử dụng cho cả những người mới mới làm quen với lập trình PHP đến những chuyên gia trong lập trình PHP. Với những người mới làm quen với lập trình PHP, Seagull cung cấp một thư viện các mẫu ứng dụng có thể được tùy chỉnh để phù hợp với nhu cầu của họ. Đối với các chuyên gia PHP, Seagull cung cấp các tùy chọn máy chủ, bao gồm các phương pháp hay nhất, tiêu chuẩn và modular codebase – giúp các lập trình viên xây dựng các ứng dụng web một cách nhanh chóng và dễ dàng. Seagull có một cộng đồng phát triển rộng lớn và nhiều tài liệu hướng dẫn hỗ trợ.

Tóm lại, PHP framework là một giải pháp tuyệt vời cho các lập trình viên phát triển các kỹ năng như: giảm thiểu việc viết lại mã, tăng tốc quá trình phát triển ứng dụng và chuẩn hóa mã lệnh khi xây dựng các ứng dụng web. Không chỉ giúp các bạn cải thiện tốc độ phát triển ứng dụng, nó còn giúp bạn giảm thiểu các lỗ hổng bảo mật một cách triệt để. PHP framework phù hợp cho cả những người mới làm quen hay những bạn đã có kiến thức vững về PHP.

41 2.2.4 Mô hình MVC

a) Định nghĩa:

Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

b) Các thành phần trong mô hình MVC:

Hình 2.7: Mô hình MVC

Trong kiến trúc MVC, hệ thống được chia thành 3 tầng tương ứng đúng với tên gọi của nó gồm: Model, View, Controller. Ở đó nhiệm vụ cụ thể của các tầng được phân chia như sau:

 Model (tầng dữ liệu): Là một đối tượng hoặc một tập hợp các đối tượng

biểu diễn cho phần dữ liệu của chương trình. Nó được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận và lưu dữ liệu là một phần của Model.

 View (tầng giao diện): Là phần giao diện với người dùng, bao gồm việc

thể hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa,… để người dùng có thể thêm, xóa, sửa, tìm kiếm và thực hiện

42

các thao tác khác đối với dữ liệu trong hệ thống. Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models.

 Controller (tầng điều khiển): Là phần điều khiển của ứng dụng, điều hướng các nhiệm vụ (task) đến đúng các phương thức (method) có chức năng xử lý nhiệm vụ đó. Nó chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao tác đối với models và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình.

c) Sơ đồ hoạt động của mô hình MVC:

Sơ đồ dưới đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC:

Hình 2.8: Ví dụ sơ đồ hoạt động của mô hình MVC

User tương tác với View, bằng cách click vào button, user gửi yêu cầu đi. Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở Model. Model nhận thông tin và thực thi các yêu cầu.

Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị lại cho người dùng.

d) Ưu điểm và nhược điểm của mô hình MVC: Ưu điểm:

 Trong trường hợp sử dụng mô hình MVC để phát triển phần mềm: Có tính chuyên nghiệp hóa, có thể chia cho nhiều nhóm được đào tạo nhiều kỹ năng khác nhau, từ thiết kế mỹ thuật cho đến lập trình đến tổ chức cơ sở dữ liệu. Giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp,...

43

 Đối với trường hợp bảo trì: Với các lớp được phân chia theo như đã nói,

thì các thành phần của một hệ thống dễ được thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp hoặc chỉ ảnh hưởng đến lớp ngay gần kề của nó, chứ không phát tán náo loạn trong cả chương trình.

 Khi cần mở rộng ứng dụng: Với các lớp được chia theo ba lớp như đã nói, việc thêm chức năng vào cho từng lớp sẽ dễ dàng hơn là phân chia theo cách khác. (adsbygoogle = window.adsbygoogle || []).push({});

Nhược điểm:

 Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời

gian,…

 Mất khá nhiều thời gian trong việc trung chuyển dữ liệu giữa các tầng. 2.2.5 Zend Framework

a) Khái niệm:

Zend Framework là một trong những framework phổ biến, có sức mạnh rất lớn so với mặt bằng chung các PHP Framework đang có mặt hiện nay và là sản phẩm framework mã nguồn mở được phát triển trên nền PHP 5.0 theo chuẩn hướng đối tượng.

Zend Framwork là framework hoạt động theo mô hình MVC, có hỗ trợ làm việc với Tempalate engine kết hợp cùng tầng View.

b) Phạm vi ứng dụng:

 Tạo ứng dụng web theo mô hình chuẩn MVC.

 Url tiêu chuẩn, ngắn gọn.

 Hỗ trợ phân quyền tới từng Action.

 Có các thành phần thư viên hỗ trợ API của các nhà cung cấp như Google, Yahoo, Flick.

 Quản lý code dễ dàng, liệt kê và lấy các truy vấn history.

 Dễ dàng phát triển thêm các ứng dụng nhúng, sử dụng Plugins.

c) Ưu điểm và nhược điểm:

Zend Framework là một PHP framework ra đời khá trễ, nó tiếp thu những tinh hoa và khắc phục những sai lầm mà các framework trước mắc phải.

Ưu điểm:

 Zend Framework được viết theo kiểu lập trình hướng đối tượng nên nó

thừa hưởng các thế mạnh của kiểu viết này. Các lớp của Zend Framework được BA (Business Analysis) rất chuẩn và khi cần mở rộng

44

người dùng có thể dùng tính chất thừa kế của lập trình hướng đối tượng. Nói chung là chúng ta không phải chỉnh sửa core của Zend Framework.

 Hầu như các phiên bản mới của Zend Framework không có nhiều thay

đổi trong core nên người dùng có thể dễ dàng nâng cấp.

 Zend Framework tích hợp được gần như tất cả các thư viện PHP và các

CMS khác để sử dụng. Ví dụ: Smarty, Pear, FCKEditer, Drupal...

 Cách viết của Zend Framework rất thân thiện và đơn giản. Tích hợp những ứng dụng mới nhất của lập trình web như: JSON, Search, Syndication, Web Services...

 Zend Framework được sử dụng trong các dự án lớn và có kế hoạch phát

triển lâu dài. Nhược điểm:

 Mất nhiều thời gian để tìm hiểu về thư viện của Zend Framework.

 Một số lớp chưa ổn định, có sự thay đổi và gây khó khăn cho người sử (adsbygoogle = window.adsbygoogle || []).push({});

dụng khi cập nhật các phiên bản. d) Quá trình phát triển:

Trải qua giai đoạn hình thành và phát triển, Zend Framework đã có khoảng 15 phiên bản được phát hành và phiên bản mới nhất hiện tại là 2.2.

Các phiên bản đã phát hành: Zend Framework 0.6, Zend Framework 0.8, Zend Framework 0.9, Zend Framework 1.0, Zend Framework 1.10, Zend Framework 1.11, Zend Framework 1.12, Zend Framework 1.5, Zend Framework 1.6, Zend Framework 1.7, Zend Framework 1.8, Zend Framework 1.9, Zend Framework 2.0, Zend Framework 2.1, Zend Framework 2.2.

e) Mô hình MVC trong Zend Framework:

45

Bất cứ một ứng dụng nào được xây dựng theo mô hình MVC nào thì cũng điều phải tuân thủ những nguyên tắc mà mô hình MVC mang lại:

 Model: Cung cấp tập hợp các lớp được trừu tượng hóa sử dụng cho việc

truy xuất dữ liệu. Lớp phục vụ: Zend_DB, Zend_DB_Table.

 View: Định nghĩa các thông tin hiển thị phía người dụng sau khi được xử lý và trả về từ controller. Lớp phục vụ: Zend_View.

 Controller: Kiểm soát dữ liệu vào ra. Xuất thông tin ra tầng View khi được thực thi. Lớp phục vụ: Zend_Controller.

Khi có một request từ người dùng. Controller sẽ tiếp nhận request, phân tích request, sau đó sẽ phân luồng request để gọi đến Model và View tùy vào request mà người dùng đã gửi. Khi người dùng gửi một request từ browser thì nơi đầu tiên tiếp nhận request đó đầu tiên là controller. Tùy vào request, mà controller sẽ phân luồng đến model và view. Tóm lại, một ứng dụng được xây dựng theo mô hình MVC hoạt động tổng quát như sau: Tiếp nhận request từ trình duyệt dưới dạng HTML. Sau đó được biên dịch thông qua Java Servlet → controller tiếp nhận, phân tích request để phân luồng đến model và view. Cuối cùng trả về trình duyệt dưới dạng một response HTML.

f) Cách làm việc và xây dựng lớp: Các lớp được phân cấp theo tên thư mục:

Trên thực tế, Zend Framework dựa vào thư viện để đọc và làm việc trên các lớp một cách rất cụ thể. Bởi đường dẫn chi tiết của chúng đã được thể hiện rõ nét ngay trên tên của chúng.

Ví dụ:

Với class Zend_Db_Table ta có thư mục Zend/Db/Table.php.

Với class Zend_Application_Bootstrap_Bootstrapper ta có thư mục

Một phần của tài liệu Tìm hiểu về điện toán đám mây và xây dựng ứng dựng web theo hướng dịch vụ (Trang 38)