Tìm hiều zend framework 2.0 ,xây dựng website thương mại điện tử

Xây dựng website bán sách qua mạng trên nền Zend Framework 2.0 là một đề tài mới mẻ.Việc xây dựng một hệ thống áp dụng công nghệ mới ít nhiều đã ảnh hưởng tới kết quả của đề tài.Tuy nhiên sau khi hoàn tất ,đề tài này cũng thu được nhưng kết quả như sau: Hoàn thành các mô hình hệ thống :Sơ đồ Use case,mô hình dữ liệu và cơ sở dữ liệu để phục vụ cho hệ thống Hoàn thành chức năng xem menu sản phẩm,chi tiết sản phẩm,đăng ký, đăng nhập, giỏ hàng Áp dụng Zend Framework 2 vào công việc xây dựng ứng dụng web,dễ dàng nâng cấp và phát triển.

doc54 trang | Chia sẻ: lylyngoc | Lượt xem: 4742 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Tìm hiều zend framework 2.0 ,xây dựng website thương mại điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN THỰC TẬP CHUYÊN NGHÀNH TÌM HIỀU ZEND FRAMEWORK 2.0 ,XÂY DỰNG WEBSITE THƯƠNG MẠI ĐIỆN TỬ Giáo viên hướng dẫn Ngô Văn Công MỤC LỤC Mục lục 2 Lời mở đầu 5 CHƯƠNG 1.TỔNG QUAN 7 1.1.Đặt vấn đề. 7 1.2.Phương pháp giải quyết 7 1.3 Phạm vi của đề tài 8 1.4.Phương pháp nghiên cứu 8 CHƯƠNG 2:CƠ SỞ LÝ THUYẾT. 9 2.1.Giới thiệu Zend Framework 9 2.1.1.Framework là gì 9 2.1.2.Giới thiệu PHP framework 9 2.1.3.Tại sao chúng ta nên sử dụng PHP framework? 9 2.1.4.Những điểm cần lưu ý khi sử dụng 1 PHP framework ? 10 2.1.5.Các loại PHP framework phổ biến 11 2.2.Giới thiệu mô hình MCV 11 2.2.1.So sánh mô hình MVC với mô hình 3 lớp 13 2.3.Zend Framework 14 2.3.1.Giới thiệu Zend framework 14 2.3.1.1.Zend Framework là gì? 14 2.3.1.2. Zend Framework làm được những gì? 14 2.3.1.3. Ưu khuyết điểm của Zend Framework: 14 2.3.1.4. Quá trình phát triển của Zend Framework: 15 2.3.2. Một số lớp phổ biến trong ZF 17 2.3.3.Mô hình MVC trong Zend Framework 18 2.3.4.Luồng xử lý công việc trong Zend Framework 20 2.3.5.Cách làm việc và xây dựng lớp trên Zend Framework? 21 2.3.6.Cấu trúc thư mục của một project trong ZF (một module): 22 2.3.7Cài đặt ứng dụng đầu tiên với Zend Framework 22 CHƯƠNG 3: CHƯƠNG 3.XÂY DỰNG ỨNG DỤNG WEBSITE BOOK SHOP BÁN HÀNG QUA MẠNG 29 3.1.Đặc tả hệ thống 29 3.1.1 Giới thiệu 29 3.1.2 Mô tả hệ thống. 29 3.1.2.1. Giới thiệu sản phẩm lên website. 29 3.1.2.2. Khách hàng. 29 3.2.Bản đặc tả yêu cầu hệ thống bán sách trực tuyến 30 3.2.1.Mục tiêu 30 3.2.1.2. Đối tượng 30 3.2.1.3.Bảng mô tả chức năng của hệ thống 31 3.2.1.4 Quy trình đặt hàng 32 3.3 Phân tích hệ thống 32 3.3.1 Sơ đồ Use Case 32 3.4.Mô hình quan niệm dữ liệu 35 3.5.Sơ đồ chức năng 35 3.6. Cấu hình ứng dụng 36 3.7.1.Một số phương thức cơ bản trong Zend Framework 36 3.7.1.1.Khởi tạo kết nối database 36 3.7.1.2.Cấu hình template 38 3.71.3.Hiển thị danh mục sản phẩm theo mô hình đa cấp 39 3.8.Hình ảnh Website 42 Kết luận 48 Tai lieu tham khao 49 Nhận xét của Giáo Viên hướng dẫn Nhận xét của Giáo Viên phản biện Lời mở đầu Ở mọi thời đại ,trong mọi xã hội mỗi công việc đều có những đặc điểm riêng mang tính đặc thù (nghiệp vụ) của nó . bởi vậy mà khi  làm bất kỳ một việc gì ngưới ta đều xem xét xem công việc đó thuộc phạm trù nào của xã hội ,  những thông tin những vấn đề gì ảnh hưởng, điều tiết đến nó.do vậy mà người ta  chia ra thành hai lĩnh vực rõ ràng trong đời sống con người : kinh tế ,xã hội. Mỗi một lĩnh vực gồm nhiều lĩnh vực mức dưới tổng hợp lên ví dụ kinh tế có: buôn bán , thương mại ...  đã từ lâu người ta tổ chức nghiên cứu ,đào tạo nguồn nhân lực về từng lĩnh vực khác nhau dựa trên khả năng bẩm sinh sẵn có và sở thích để có điều kiện đi sâu nghiên cứu cũng như thực hiện công việc một cách có hiệu quả , sâu sắc và cũng để tiếp cận với nhiều vấn đề mới trong các lĩnh vực khác nhau .Khả năng chuyên môn nghiệp vụ là một đòi hỏi rất cần thiết cho những người tham gia vào những công việc có liên quan mà không phải cứ người nào khi được đào tạo cũng đủ, nắm vững yêu cầu của công việc chuyên môn. Thực tế cho thấy con người luôn luôn tìm cách giảm thiểu những khó khăn trở ngại làm cho công việc thực hiện được dễ dàng và đòi hỏi chuyên môn nghiệp vụ không cao. Trước đây khi khoa học công nghệ chưa phát triển người ta cũng được nghiên cứu, tìm cách tiếp cận rễ ràng hơn với công việc .Ngày nay khi khoa học nông nghệ phát triển tiên tiến chúng ta càng có điều kiện thuận lợi hơn trong xử lý công việc. Ta xét riêng việc xử lý bán hàng hàng ngày của một công ty nào đó. khi tin học chưa ra đời thì việc bán hàng và những việc liên quan khác đều thực hiện một cách rất khó khăn vất vả đòi hỏi vững chuyên môn nghiệp vụ ,tốn nhân lực, không gian, chi phí cho việc thực hiện. ngày nay tin học phát triển nhu cầu tin học hóa những công việc chuyên môn lặp đi lặp lại là yêu cầu cấp thiết. tin học hóa sẽ mang lại lợi ích to lớn về mọi mặt : nhân công, chi phí tài chính và thậm chí cả trình độ chuyên môn của người thực hiện nó (không đòi hỏi có chuyên môn nghiệp vụ cao) bởi vì nó chỉ là những thao tác trên máy đơn giản. tin học hóa bắt buộc phải có trong thời đại hiện nay đối với từng công ty, những cửa hàng lớn hay thậm chí là cả những cửa hàng vừa và nhỏ.tuy nhiên đầu tư để xây dựng hệ thống phục vụ công việc tính trong khoảng thời gian ngắn là tốn kém nhưng xét về lâu dài thì lợi ích mang lại là rất to lớn ảnh hưởng cả đến vận mệnh của một công ty. xét về phía người xây dựng hệ thống thì đây là vấn đề không thể giải quyết một cách chọn vẹn bằng một chương trình cho mọi hình thức, nó phụ thuộc vào chuyên môn nghiệp vụ, yêu cầu thực tế đặt ra, và vì vậy rất khó nếu không muốn nói là không thể thực hiện được một cách tổng quát vấn đề này. tùy thuộc vào những yêu cầu đặt ra đối với từng hoàn cảnh ta có cách giải quyết khác nhau tạm thời trong khỏang thời gian nhất định đáp ứng được yêu cầu đề ra của hệ thống. Trong khuôn khổ bài thực tập chuyên nghành.Dựa trên mã nguồn trang web Shopping bằng Zend Framework trong khóa học Zend Framework online được viết bằng Zend framework 1.x em đã phát triển thành một dự án của riêng mình viết bằng Zend framework 2.0 Em xin cảm ơn các giáo viên trường Đại học Nha Trang đã giảng dạy những kiến thức đại cương cũng như chuyên nghành.Em xin cảm ơn giáo viên hướng dẫn Ngô Văn Công đã giúp em hoàn thành đề tài này CHƯƠNG 1.TỔNG QUAN 1.1.Đặt vấn đề Kể từ cuối thập niên  80 đầu thập niên 90 công nghệ thông tin phát triển một cách nhanh chóng về phương diện kỹ thuật. điều đó là động lực phát triển các ứng dụng về mặt kinh tế , xã hội , văn hóa và quan trọng hơn là nó có ảnh hưởng lớn về cả mặt chính trị , ổn định an ninh chính trị trên toàn thế giới. sự phát triển mạnh mẽ của công nghệ thông tin có ảnh hưởng rất lớn đến sự phát  triển  của nền kinh tế thế giới nó thâm nhập và có mặt ở mọi mặt của nền kinh tế thế giới. Đặc biệt là việc buôn bán , trao đổi trên mạng. Xét một khía cạnh nhỏ trong nền thương mại đó là công việc bán và phân phối sản phẩm của một công ty hay một cửa hàng có tổ chức quy mô ta thấy ngay được vai trò quan trọng của công nghệ thông tin. nếu như công việc phân phối sản phẩm (bán hàng) của công ty được thực hiện theo phương pháp thủ công có nghĩa là mọi công việc đều được thực hiện bởi con người và trên giấy tờ sổ sách dẫn đến việc tốn kém về mọi mặt : nhân lực, tài chính, trình độ , diện tích, đòi hỏi nhân viên bán hàng phải có trình độ nghiệp vụ điều đó là rất khó khăn. nhưng quan trọng hơn là nó không mang lại hiệu quả trong kinh doanh thậm chí còn xảy ra sự nhầm lẫn trong công việc gây thất thoát trong công ty . Với sự phát triển và ứng dụng mạnh mẽ của tin học thì tin học hóa các quy trình nghiệp vụ nếu có thể mang tính cấp thiết . Quy trình bán hàng của một công ty thuộc hệ thống quản lý kinh doanh của công ty nó giữ một vai trò đặc biệt quan trọng trong hệ thống. việc bán hàng phải được thực hiện một cách nhanh chóng chính xác và phải tổng hợp thông tin bán hàng cập nhật cho toàn bộ hệ thống giúp cho các nghiệp vụ khác trong công việc quản lý kinh doanh của công ty đáp ứng thông tin một cách chính xác kịp thời. Xây dựng hệ thống phải đáp ứng được những yêu cầu của người sử dụng thích hợp với hệ thống quản lý kinh doanh của công ty. hệ thống phải đáp ứng được những yêu cầu chung: xử lý được lượng thông tin lớn một cách chính xác nhanh chóng đáp ứng được yêu cầu , lưu trữ , bảo vệ dữ liệu khoa học thuận lợi và an toàn giúp cho công việc quản lý được đơn giản đảm bảo kết quả cao, thay thế được cho hệ thống đang dùng (có nghĩa là nó đáp ứng được tốt hơn về mặt xử lý dữ liệu , xử lý các yêu cầu tốt hơn , đa dạng hơn , nhanh hơn ...). điều đó là yêu cầu tối thiểu đối với hệ thống đang xây dựng. Yêu cầu đặt ra trong công tác quản lý bán hàng đi đến việc xây dựng hệ thống trợ giúp bán hàng cho công ty sao cho phải đáp ứng được yêu cầu nghiệp vụ , giao diện thân thiện với người sử dụng . mục đích xây dựng hệ thống là làm giảm bớt mức tối đa những khó khăn trong công tác quản lý bán hàng đáp ứng được quy trình xử lý thông tin của hệ thống chính. 1.2.Phương pháp giải quyết Để xây dựng được hệ thống trợ giúp bán hàng qua mạng  với độ chính xác và tính thực tế cao thì yêu cầu cần phải khảo sát thông tin của hệ thống phải chi tiết và chính xác dẫn đến việc phân tích dữ liệu đầu vào , ra được chính xác . Mô phỏng quy trình bán hàng  , lưu trữ các thông tin liên quan , thu thập các mẫu biểu quan trọng .Trên cơ sở những thông tin được thu thập được tiến hành  xây dựng sơ đồ chức năng nghiệp vụ, sơ đồ dòng dữ liệu mức đỉnh, mức dưới đỉnh , xây dựng mô hình thực thể quan hệ và thiết kế một số modul quan trọng (lưu trữ ,tìm kiếm , xử lý thông tin ). Thiết kế một số giao diện quan trọng của hệ thống sao cho vừa mang tính nghiệp vụ vừa phải dễ sử dụng. Lập dự kiến xây dựng cơ sở dữ liệu cho hệ thống phân tích đánh giá được phạm vi lưu trữ, độ an toàn của dữ liệu khi vận hành, điều này ảnh hưởng đến toàn bộ hệ thống kinh doanh của công ty. Kết quả cuối cùng hệ thống phải có tính ưu việt: khả năng xử lý được lượng thông tin lớn , chính xác ,lưu trữ khoa học thuận tiện và an toàn  hơn hẳn hệ thống cũ . hệ thống tạo ra phải hỗ trợ tới mức tối đa trong công việc quản lý bán hàng của công ty. 1.3 Phạm vi của đề tài Về phân tích thiết kế hệ thống:Kết quả thu được của đề tài là mô hình phân tích hệ thống,cơ sở dữ liệu,… có khả năng xây dựng phần cơ sở dữ liệu cho ứng dụng website Bán hàng qua mạng. Về mặt lập trình :Trên cơ sở nghiên cứu và áp dụng Zend Framework 2.0,hoàn thành các nội dung chủ yếu sau : +Hiểu và vận dụng thành công các lớp cở bản của zend framework để xây dựng các module chủ yếu cho hệ thống: Module sản phẩm, module hệ thống trong dự án (dùng để cấu hình các phần mặc định như layout,router,model,…). +Đảm bảo hệ thống vận hành theo đúng cấu trúc của một ứng dụng Zend Framework(Theo mô hình MCV). 1.4.Phương pháp nghiên cứu Nghiên cứu Zend Framework thông qua cộng đồng Zend Việt Nam://www.zend.vn/forum. Nghiên cứu dưới sự chỉ bảo của giáo viên hướng dẫn thực tập chuyên nghành. CHƯƠNG 2:CƠ SỞ LÝ THUYẾT 2.1.Giới thiệu Zend Framework 2.1.1.Framework là gì Framework là một thư viện các lớp đã được xây dựng hoàn chỉnh, là một “bộ khung ” để phát triển các phần mềm ứng dụng. Có thể ví Framework như một tập các “vật liệu” ở từng lĩnh vực cho người lập trình viên, thay vì họ phải mất thời gian để tự thiết kế trước khi dùng. Do vậy, người lập trình viên chỉ việc tìm hiểu và khai thác các vật liệu này rồi tiến hành gắn kết (tức lập trình) để tạo ra sản phẩm. 2.1.2.Giới thiệu PHP framework Như đã biết ,PHP là một ngôn ngữ script rất phổ biến hiện nay bởi lý do:linh hoạt,dễ sử dung,dễ học ,..v…v .Nhưng đôi khi việc viết mã PHP ,hay bất kỳ ngôn ngữ lập trình nào khác,có thể trở nên đơn điệu và lủng củng .Đó là lúc PHP framework có thể giúp bạn. PHP framework làm cho sự phát triển của những ứng dụng web viết bằng ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó,giúp bạn tiết kiệm được thời gian ,tăng sự ổn định cho ứng dụng và giảm thiểu số lần viết lại mã cho lập trình viên. Ngoài ra PHP framework còn giúp những người mới bắt đầu có thể xây dựng các ứng dụng ổn định nhờ việc tương tác chính xác giữa các database ,mã (PHP) và giao diện (HTML) một cách riêng biệt.Điều này cho phép bạn dành nhiều thời gian để tạo ra các ứng dụng web ,hơn là phí thời gian để viết các đoạn mã lặp lại trong một project. 2.1.3.Tại sao chúng ta nên sử dụng PHP framework? Có rất nhiều loại PHP framework sẵn có hiện nay cho bạn lựa chọn, thậm chí bạn có thể tự tạo ra 1 PHP framework cho riêng mình, tuy nhiên, điều này chỉ được khuyến khích dành cho các chuyên gia PHP (PHP expert) , những người đã có kiến thức và hiểu biết vững vàng về framework. Khi bạn cần tìm một loại PHP framework phù hợp nhất với nhu cầu của mình, đừng quên lưu ý về độ phổ biến của nó, ngoài ra ứng dụng web của bạn được phát triển bởi bao nhiêu người cũng là 1 điều nên lưu ý. Một PHP framework càng được phổ biến, tức là nó càng được nhiều người sử dụng và phát triển. Mặt khác, nếu bạn muốn xây dựng ứng dụng cho website của riêng mình, tốt nhất bạn nên chọn 1 PHP framework phù hợp và dễ sử dụng nhất đối với nhu cầu của bạn – không quan trọng nó có được nhiều người sử dụng hay không. Các yếu tố bạn nên lưu ý trước khi muốn tìm kiếm 1 PHP framework để sử dụng bao gồm như sau: dễ sử dụng, phát triển nhanh và hiệu quả, phổ biến giữa các developer, có các tính năng mạnh mẽ, có diễn đàn hỗ trợ. Hầu hết các framework đều có các điểm yếu và thế mạnh khác nhau, ví dụ Zend Framework đã được phổ biến từ version 1.3 và có đầy đủ các tính năng mạnh mẽ, cộng thêm 1 cộng đồng phát triển hỗ trợ extension rộng lớn. Ngược lại, CakePHP lại là 1 loại PHP framework khác, mới ra đời sau này, nhưng lại ít có cộng đồng phát triển hỗ trợ hơn Zend, nhưng nó cũng được nhiều người lựa chọn vì tính thân thiện với người dùng và dễ sử dụng. Như bạn có thể thấy, mỗi loại PHP framework đều có lợi thế riêng của nó, thế nên tốt nhất là bạn nên tìm hiểu kỹ và xài thử để có chọn lựa đúng đắn cho nhu cầu của mình. Ngoài ra bạn có thể nhờ những người đã có kinh nghiệm sử dụng tư vấn thêm cho mình, họ sẽ giúp bạn phân tích các tính năng cần thiết cho nhu cầu của mình và nên sử dụng loại nào. 2.1.4.Những điểm cần lưu ý khi sử dụng 1 PHP framework ? Lỗi là điều không thể tránh khỏi trong việc lập trình, nhưng PHP framework sẽ giúp bạn hạn chế rất nhiều sai sót bằng cách cung cấp các thư viện mã lệnh chuẩn. Viết lại các đoạn mã lặp lại nhiều lần không cần thiết sẽ dễ dẫn đến việc phát sinh lỗi, và PHP framework sẽ loại bỏ vấn đề này giúp bạn. Tuy nhiên, bạn vẫn phải có những chú ý khi sử dụng bất kỳ PHP framework nào. Ví dụ, nếu bạn không phải là 1 chuyên gia lập trình PHP, bạn nên sử dụng 1 loại framework phổ biến, có 1 cộng đồng hộ trợ rộng lớn. Vẫn có rất nhiều loại framework có ít hoặc không có cộng đồng hỗ trợ, và các loại framework này chủ yếu được viết bởi các cá nhân nào đó với kiến thức không chuyên sâu.  Một số lỗi phổ biến khác là do bạn không bảo đảm được cấu hình để xuất phiên bản database và web server tương thích với framework. Ví dụ, Seagull PHP Framework đề xuất cấu hình như sau: +PHP: PHP 4.3.0 is the minimum, later versions work fine, as do versions PHP 5.1.1 and above. Avoid anything in the 5.0.x series +MySQL: MySQL 4.0.x, 4.1.x and 5.0.x are all supported. You can also use 3.23.x. Apache: Seagull works fine with 1.3.x and 2.x series of Apache. Nếu bạn không đáp ứng được các yêu cầu này, thì framework sẽ không thể hoạt động 1 cách hiệu quả được. Thậm chí nếu bạn là 1 chuyên gia PHP, bạn cũng nên xem qua các tài liệu hướng dẫn về cấu hình đề xuất của framework trước khi muốn sử dụng nó. Ngoài ra việc xem hướng dẫn cài đặt của 1 framework sẽ giúp bạn tránh được những lỗi không cần thiết và tiết kiệm được thời gian để đi vào phát triển ứng dụng của mình cho những lần sau. 2.1.5.Các loại PHP framework phổ biến Zend Framework có 1 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ó 1 cộng đồng người dùng tích cưc, Zend được gọi là “Công ty PHP”. Zend là 1 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à bạn 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ó. CakePHP là 1 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 1 nguyên tắc thiết kế với Ruby on Rails, là 1 framework mạnh về khía cạnh rapid development , 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 1 trong nhữngframework phổ biến nhất hiện nay. 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à 1 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ư 1 framework dễ hiểu và dễ sử dụng, 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ẻ , 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 1 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 1 người mới làm quen với framework. Seagull cũng là 1 PHP framework tốt phục vụ cho việc xây dưng website và các GUI. Nó là 1 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 1 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 bạn. Đố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à 1 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 1 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. Ngày nay, có rất nhiều PHP framework được cung cấp, và vì vậy chắc chắn các bạn có thể tìm ra một framework có các tính năng phù hợp với nhu cầu của mình -- hỗ trợ, tốc độ, quy mô và nhiều hơn nữa. Một số PHP framework phổ biến nhất hiện này bao gồm: Zend Framework, CakePHP, Symfony, Codelgniter, và Seagull. 2.2.Giới thiệu mô hình MCV Ý tưởng chung đằng sau cách thức làm việc của 1 PHP framework được kể đến là Model View Controller (MVC). MVC là 1 mô hình (kiến trúc) trong lập trình, cho phép tách biệt các mã nghiệp vụ (business logic) và giao diện (UI) thành các phần riêng biệt, điều này đồng nghĩa với việc ta có thể chỉnh sửa chúng 1 cách riêng lẻ. Trong cụm từ MVC thì: +Model (M) có thể hiểu là phần xử lý các thao tác về nghiệp vụ(business logic). +View được hiểu là phần xử lý lớp giao diện (presentation layer). +Controller làm nhiệm vụ lọc các request đc gọi từ user, có chức năng như 1 route: điều chỉnh, phân luồng các yêu cầu để gọi đúng Model&View thích hợp. Về cơ bản,MVC chia nhỏ quá trình xử lý của 1 ứng dụng, vì thế nên bạn có thể làm việc trên từng thành phần riêng lẻ, trong khi những thành phần khác sẽ không bị ảnh hưởng tới. Thực chất, điều này giúp đỡ bạn lập trình PHP nhanh hơn và ít phức tạp hơn. Mô hình MVC đơn giản Sơ đồ 1 chuỗi MVC đơn giản Sau cùng là 1 cách phức tạp hơn để hiểu về mô hình MVC 2.2.1.So sánh mô hình MVC với mô hình 3 lớp Điểm giống nhau: +Cả hai đều là mô hình kiến trúc áp dụng trong lập trình được tách thành 3 thành phần. +Tách biệt sự phụ thuộc giữa ngôn ngữ lập trình, môi trường phát triển, xử lý logic. +Các thành phần ở mỗi mô hình có nhiều điểm tương đồng như Presentation Layer và View... Điểm khác biệt: +Khác biệt rõ nhất là cách xử lý yêu cầu (workflow) của 2 mô hình.Ở MVC, thành phần Model giữ chức năng của cả lớp Business và Data Access trong mô hình 3 lớp. +Mô hình 3 lớp thường được sử dụng trong lập trình ứng dụng, trong khi đó MVC được ưu chuộng nhiều trong lập trình website vì tính linh hoạt và không bắt buộc các DTO như 3 lớp 2.3.Zend Framework 2.3.1.Giới thiệu Zend framework 2.3.1.1.Zend Framework là gì? Zend Framework 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 theo mô hình MVC. Zend Framework có hỗ trợ làm việc với Tempalate engine kết hợp cùng tầng View 2.3.1.2.Zend Framework làm được những gì? + 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.  2.3.1.3.Ưu khuyết điểm của Zend Framework: ZF là một PHP framework ra đời khá trễ, 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: +ZF được viết theo kiểu OOP 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. +ZF được BA (Business Analysis) rất chuẩn và khi cần mở rộng bạn có thể dùng thể dùng tính chất thừa kế của OOP. Nói chung là chúng ta không phải chỉnh sửa core của ZF. Hầu như các version mới của ZF ko có nhiều thay đổi trong core nên ta có thể dễ dàng update. +ZF 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. VD: Smarty , Pear , FCKEditer , Drupal .. +Cách viết của ZF rất thân thiện và đơn giản. Tích hợp những mới nhất của lập trình web như: JSON - Search - Syndication - Web Services... +ZF được sử dụng trong các dự án lớn và có kế hoạch phát triển dài lâu Khuyết điểm: +Mất nhiều thời gian để tìm hiểu về thư viện của ZF +Một số lớp chưa ổn định, có sự thay đổi, gây khó khăn cho người sử dụng khi cập nhật các phiên bản. 2.3.1.4.Quá trình phát triển của Zend Framework: Các phiên bản đã phát hành: +Zend Framework 1.11, Zend Framework 1.10, Zend Framework 1.9, Zend Framework 1.8, Zend Framework 1.7, Zend Framework 1.6, Zend Framework 1.5, Zend Framework 1.0, Zend Framework 0.9, Zend Framework 0.8, Zend Framework 0.6. + Zend Framework 2.0 Chúng ta điểm lại đôi chút về lịch sử của ZF: •2005 trong cuộc hội thảo PHP. Zend đã đưa ra ý tưởng về bộ framework này • Tháng 3 năm 2006: Phiên bản v0.1 mở đầu: Chẳng có gì nhiều từ bản này ngoài vài lib hỗ trợ code và tính toán nhanh • Tháng 7 năm 2007: Phiên bản v 1.0 chính thức ra đời. Thật tuyệt vời khi đã có mô hình chuẩn hóa M-V-C với khá nhiều partern trong đó • Tháng 3 năm 2008: Phiên bản v1.5 Một bước đột phá trong các thành phần hiển thị Form, Layout, Context. Từ đây chúng ta có multi-layout (multi-template) • Tháng 4 năm 2009: Phiên bản v1.8 Đây đã được coi là một phiên bản ổn định nhất từ trước tới nay. Sự ra đời của: Application, Tool, Nav đã giúp chúng ta dễ dàng sử dụng và hạn chế code đầu vào như trước. • Tháng 10 năm 2010: Phiên bản v1.11: Và chúng ta có thể coi đây là phiên bản gần như là cuối cùng của ZF 1.0. • Vào ngày 25-07-2012. ZF team đã cho công bố về Zend Framework 2.0 phiên bản chính thức Chúng ta đã có gì trong ngày hôm nay? •Một bộ core Zend Framework làm việc ổn định với nhiều thành phần , các component, adapter, plugin được thêm vào. Giúp chúng ta có thể thực hiện mọi dự án từ rất nhỏ đến rất lớn. •Tới giờ ZF trở nên rất phổ biến trong và ngoài giới lập trình PHP •Có cộng đồng hỗ trợ lớn. Vậy đã tốt thế thì còn vấn đề gì tồn động trong ZF 1.x? Theo Rob Allen - Một thành viên của nhóm phát triển ZF và cũng là người viết quyển sách Zend Framework In Action trong cuộc hội thảo ZF 2011 đã đưa ra nhận định: •Khó học đối với bất kỳ một Coder/Developer nào. •Hiệu suất xử lý còn gặp hạn chế. (Lý do? ở dưới) •Quá nhiều các lớp "magic" •Còn nhiều cái không thống nhất trong các thành phần. Cái gì mới trong ZF 2.0? •Có một tài liệu tốt hơn •Gắn kết các hướng dẫn, tutorial lại để giúp người dùng dễ học .Tài liệu tham khảo và hướng dẫn sử dụng chi tiết kèm theo các ví dụ cụ thể. Các địa chỉ API được thống nhất Hỗ trợ các ngôn ngữ khác để mọi người trên toàn cầu có thể đọc bằng bản ngữ. (Bác nào VN pro tiếng anh và có khả năng có thể đăng ký translate tài liệu) Dễ dàng mở rộng •Xóa bỏ Singletons partern. Điều này sẽ giúp việc mở rộng được dễ dàng hơn. •Loại bỏ các hard-coded bị trùng lặp Nâng cấp hiệu suất xử lý •Tăng tốc độ xử lý trên 200% so với ZF1 •Các công cụ giúp deploy cũng như các tùy chọn để dễ dàng xử lý khi chuyển đổi hệ thống từ server này sang server khác Đơn giản hóa •Tập trung vào các thành phần cốt lõi •Code dễ dàng đọc hơn •Có các API phù hợp hơn •Hỗ trợ PHP 5.3 với NameSpace Hiện tại vấn đề Autoload vẫn đang được thảo luận Lựa chọn 1: Có namespace rõ ràng, Không sử dụng include_path.Với lựa chọn này thì người code vẫn code bình thường và thay vì dùng include_path thì chúng ta dùng namespace. Lựa chọn này giúp chúng ta tăng khoảng 40% hiệu suất xử lý. Lựa chọn 2: Sử dụng 1 lớp - ClassMap nó sẽ là bản đồ mapping. Chỉ dẫn cho hệ thống load các file cần thiết thay vì autoload all như hiện nay Với sự lựa chọn này thì người code khi deploy sẽ phải viết file mapping này. Và thật khó xử lý khi có một hệ thống lớn.uy nhiên lựa chọn này cho phép chúng ta tăng khoảng 150% hiệu suất. Chúng ta sẽ có thêm một thành phần mới đó là Plugin Autoload.Nó sẽ giúp chúng ta mapping các Plugin và load tự động khi nào được gọi. Với việc đó nó sẽ giúp chúng ta tăng thêm hiệu suất khoảng trên 50% Hệ thống xử lý lỗi mới. Mô hình MVC . Controller, dispatcher, hook points. View. Model vẫn chưa có gì thay đổi. Với mô hình MVC mở rộng mới này sẽ giúp chúng ta thoải mái trong việc sử dụng view thông qua các hook points.Và tăng hiệu suất thông qua các dispatcher mới. 2.3.2. Một số lớp phổ biến trong ZF •Zend_Db: Dựa trên đối tuợng PDO (PHP Data Objects), cung cấp cách thức giao tiếp với database. •Zend_Controller: giúp lấy các request từ phía Client và thực thi nó bằng các Action. •Zend_View: chính là tầng View trong mô hình MVC, giúp chúng ta hiển thị những kết quả trong xử lý Controller và Models ra bên ngoài. •Zend_Auth: cung cấp một API cho việc chứng thực tài khoản khi đăng nhập vào hệ thống. •Zend_Cache: giúp cho các ứng dụng không phải sử dụng CPU hoặc truy xuất vào database quá nhiều. •Zend_Currency: xử lý tất cả các vấn đề liên quan đến tiền tệ Zend_Date: xử lý tất cả các vấn đề liên quan thời gian. •Zend_Feed: xử lý với Rss và Atom feeds . •Zend_File: cung cấp, hỗ trợ mở rộng việc upload và download của các tập tin. Nó gắn liền với kiểm tra các chức năng của tập tin. •Zend_Filters: lọc dữ liệu trước khi thực hiện một quá trình xử lý nào đó . •Zend_Form: đơn giản hóa việc tạo form và xử lý các ứng dụng trên website. •Zend_Local: là một thư viện trả lời cho câu hỏi làm sao ứng dụng c1o thể sử dụng trên toàn thế giới . •Zend_Pdf: Tạo và xử lý các file PDF . •Zend_Search: là một lớp cung cấp cho chúng ta các phương thức search trên nội dung của các tập tin lưu trữ thông tin.  •Zend_Translate: là giải pháp cho các ứng dụng đa ngôn ngữ . •Zend_Validate: dùng để kiểm tra dữ liệu nhập vào có phù hợp với yêu cầu hay không . •Zend_Acl: giúp chúng ta phân quyền cho ứng dụng chi tiết trên từng action, controller và module. 2.3.3.Mô hình MVC trong Zend Framework : 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. Hình 2.3.2.1: Mô hình MVC trong Zend Framework . 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. Ngoài ra, mô hình MVC trong ZF còn có thể được tổng quát hóa bằng mô hình sau: Hình 2.3.1.2: Mô hình MVC trong Zend Framework 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. 2.3.4.Luồng xử lý công việc trong Zend Framework Hình 2.3.4.1: Quy trình làm việc trong Zend Framework. Giải thích quy trình: •Bước 1: Một yêu cầu được tạo ra và đối tượng Request Object được tạo ra . •Bước 2: routeStartup được nạp . •Bước 3: Router xử lý yêu cầu . •Bước 4: routerShutdown được nạp . •Bước 5: dispatchLoopStartup được nạp . •Bước 6: Qui trình gửi thông tin được bắt đầu . •Bước 7: preDispatch được nạp . •Bước 8: Dispathcher gọi Action Controller . •Bước 9: Action Controller tạo Response Object . •Bước 10: postDispatch được nạp . •Bước 11: Nếu có Action nào được gọi thì quay lại bước 7 . •Bước 12: dispatchLoopShutdown được nạp  . •Bước 13: Response được gửi lại. 2.3.5.Cách làm việc và xây dựng lớp trên Zend Framework? a. 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 library/Zend/Application/Bootstrap/Bootstrapper.php . b. Controller thể hiện trên URL: Tìm tới indexAction trong adminController để thực thi . Tìm tới loginAction trong controller adminController để thực thi . Tìm tới vewsAction trong controller newsController và get id=15 để thực thi. 2.3.6.Cấu trúc thư mục của một project trong ZF (một module): Đối với mỗi project được xây dựng trong ZF đều có cấu trúc thư mục của một project tương tự như sau: 2.3.6.1.Cấu trúc thư mục của một project trong ZF 2.3.7.Cài đặt ứng dụng đầu tiên với Zend Framework. PHP yêu cầu trong hệ thống là từ 5.3.3 trở lên. Để chạy tốt, tôi khuyến cáo sử dụng xampp phiên bản 1.7.4 (tương đương PHP 5.3.5). Đầu tiên, bạn cần chuẩn bị bộ source gốc của Zend Framework 2.0. Bạn có thể truy cập và download theo đường link này: https://github.com/zendframework/ZendSkeletonApplication/zipball/master" . Khi giải nén bạn sẽ thấy cấu trúc như hình bên dưới: Hình 2.3.7.1:Cấu trúc một dự án Zend Framework 2.0 Kế tới, bạn cần download phiên bản zend framework 2.0 tại đây: Sau đó giải nén và copy thư mục library vào thự mục vendor/ZF2 của chúng ta theo cấu hình ở trên. + Thư mục config: Chưa các file config chính cho hệ thống.  + Thư mục data: Dùng để chứa dữ liệu và các file cache nếu chúng ta có dùng cache. + Thư mục vendor: Là thư mục dùng để chứa thư viện zend framework 2.0. Thư viện được chứa theo đường dẫn sau: vendor/ZF2/library/Zend. + Thư mục Module: Là thư mục dùng để chứa các module của ứng dụng. + Thư mục Public: Là thư mục chứa các thông tin như css, js, images. Đồng thời chứa file index.php chính và .htaccess.. Trong thư mục public đã có sẵn thư mục js, css, images và file index.php, .htaccess. Đồng thời trong thư mục config cũng đã có sẵn file tên: application.config.php. Đây là file chứa thông tin cấu hình như khai báo module như khai báo module có trong hệ thống, khai báo thư viện vendor, cache,…. Kế tới chúng ta xem thư mục module có gì. Thư mục module hiện tại sẽ có thư mục Application. Đây là module mặc định của hệ thống. Khi chạy ứng dụng ta sẽ có kết quả như sau: Hình 2.3.7.2:Module mặc định hệ thống Chạy ứng dụng đầu tiên với zend Framework 2.0: Tại thư mục module tạo thư mục Home theo cấu trúc sau: Module/ ------/Home ------------/config ------------/view ----------------- /home -----------------------/home ------------/src -----------------/Home -----------------------/Controller -----------------------/Model -----------------------/Form Như bạn thấy đấy, ở Zend Framework 2.0. Ứng dụng được quản lý bằng một cơ chế module riêng biệt. Cụ thể là module manager. Khi đó, các ứng dụng sẽ được tách riêng biệt. Và chúng ta sẽ cấu hình từng module một chứ không gộp chung cấu hình tất cả module giống với Zend Framework 1.12. Vì thế, ở đây chúng ta phải tập làm quen với kiến trúc mới này. Cụ thể:Một module sẽ bao gồm 3 thư mục chính là config, view, src. •Config: chứa file cấu hình của module. •View: Chưa các file view của module. •Src: Chứa các thành phần controller, model và form của module. Tiếp tục ta tạo file Module.php trong module home. Với nội dung sau:  array(                  __DIR__ . '/autoload_classmap.php',              ),              'Zend\Loader\StandardAutoloader' => array(                  'namespaces' => array(                      __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,                  ),              ),          );      }      public function getConfig()      {          return include __DIR__ . '/config/module.config.php';      }  } Mục đích của file này là để định nghĩa 2 phương thức getAutoloaderConfig() và getConfig().  File module.php này được xem như một module manager. Nó sẽ giúp hệ thống tự động gọi 2 phương thức trên. Ở Phương thức getAutoloaderConfig() chúng ta cấu hình cho cơ chế autoloading hiểu hệ thống khi load dự trên cơ chế NameSpace của PHP 5.3. Phương thức getconfig() cho phép nạp nội dung module.config.php. Đây là file chứa thông tin cấu hình chính của module. Ví dụ như: Khai báo để hệ thống hiểu module, kết nối,… Tạo tiếp file autoload_classmap.php với nội dung: <?php  return array(  ); Nhiệm vụ của file này là trả về một mảng dữ liệu rỗng. Tạo tiếp file module.config.php trong thư mục config của home : Home/config/module.config.php với nội dung:  array(          'invokables' => array(              'Home\Controller\Home' => 'Home\Controller\HomeController',          ),      ),      'view_manager' => array(          'template_path_stack' => array(              'home' => __DIR__ . '/../view',          ),      ),  ); Đây là file cấu hình thông tin chính của chúng ta. Tại đây có 2 phần cần quan tâm là controller và view_manager. Với controller ta chỉ ra các controller tồn tại trong ứng dụng. Với view_manager ta chỉ ra đường dẫn tới view của chúng trong ứng dụng. Tiếp tục trong src/Home/Controller tạo file tên HomeController.php với nội dung:  'Hello Zend Framework 2.0 - By QHOnline.Info',                  );      }  } Tiếp tục, trong thư mục view/home/home tạo file index.phtml với nội dung như sau Sau khi đã tạo view và controller. Ta cần khai báo cho hệ thống module biết về thông tin controller mà chúng ta vừa tạo. Cũng như URL để zend framework hiểu sự tồn tại của chúng. Mở file module.config.php trong thư mục home/config Sửa lại với nội dung sau:  array(          'invokables' => array(              'Home\Controller\Home' => 'Home\Controller\HomeController',          ),      ),            // The following section is new and should be added to your file      'router' => array(          'routes' => array(              'home' => array(                  'type'    => 'segment',                  'options' => array(                      'route'    => '/home[/:action][/:id]',                      'constraints' => array(                          'action' => '[a-zA-Z][a-zA-Z0-9_-]*',                          'id'     => '[0-9]+',                      ),                      'defaults' => array(                          'controller' => 'Home\Controller\Home',                          'action'     => 'index',                      ),                  ),              ),          ),      ),                'view_manager' => array(          'template_path_stack' => array(              'home' => __DIR__ . '/../view',          ),      ),  ); Nếu bạn để ý kỹ sẽ thấy, ta chỉ thêm mỗi đoạn khai báo router vào mà thôi. 'router' => array(          'routes' => array(              'home' => array(                  'type'    => 'segment',                  'options' => array(                      'route'    => '/home[/:action][/:id]',                      'constraints' => array(                          'action' => '[a-zA-Z][a-zA-Z0-9_-]*',                          'id'     => '[0-9]+',                      ),                      'defaults' => array(                          'controller' => 'Home\Controller\Home',                          'action'     => 'index',                      ),                  ),              ),          ),      ),   Zend Framework 2.0 không tự động hiểu như phiên bản 1.12. Mà chúng ta phải thiết lập và cấu hình thì nó mới hiểu được sự tồn tại của các controller khi ta gọi. Sau cùng, ta phải khai báo cho ứng dụng của zend sự tồn tại của module home bằng việc mở file theo đường dẫn: zf2.0/config/application.config.php . Tại đây ta thêm vào dòng sau:  array(          'Application',          'Home'  // Đây là dòng ta thêm vào để khai báo module home.      ),      'module_listener_options' => array(          'config_glob_paths'    => array(              'config/autoload/{,*.}{global,local}.php',          ),          'module_paths' => array(              './module',              './vendor',          ),      ),  ); Sau cùng chạy ứng dụng:  và kết quả sẽ hiển thị như mong đợi. Như vậy, qua ví dụ này đã hiểu được quy trình làm việc cơ bản của zend framework 2.0 . Ghi chú lại vài điểm : •Zend cấu hình theo từng module. • Zend sử dụng router để chạy từng controller. • Zend sử dụng thư mục view bên ngoài để tương tác. • Zend sử dụng yếu tố truyền tham số từ controller sang view có nét tương đồng với codeigniter (truyền tham số dưới dạng mảng và tại view đã qua 1 lần duyệt giá trị). • Zend sử dụng namespace làm nền tảng thể hiện kiến trúc linh động. CHƯƠNG 3: CHƯƠNG 3.XÂY DỰNG ỨNG DỤNG WEBSITE BOOK SHOP BÁN HÀNG QUA MẠNG 3.1.ĐẶC TẢ HỆ THỐNG  3.1.1.Giới thiệu Là hình thức đưa sản phẩm là sách, dịch vụ...kinh doanh của doang nghiệp lên Website thương mại điện tử. Nhằm giúp người tiêu dùng có thể biết một cách chính xác tính năng, nội dung, mẫu mã , giá cả....của sản phẩm đó mà không cần trực tiếp phải đến tận công ty xem. 3.1.2.Mô tả hệ thống 3.1.2.1.Giới thiệu sản phẩm lên website Sản phẩm sẽ được giới thiệu chi tiết trên website gồm thông tin : * Danh mục sản phẩm. * Tên sản phẩm. * Loại sản phẩm. * Giá sản phẩm. * ảnh sản phẩm. * chi tiết sản phẩm. * thời gian bán sản phẩm. 3.1.2.2.Khách hàng. Khác hàng sẽ xem mặt hàng muốn mua trên website và đặt hàng. Khách có thể góp ý cho sản phẩm.. Nếu mua hàng khách hàng cần đăng ký thành viên rồi đặt hàng. Thông tin đơn đặt hàng gồm có: * Email. * Điện thoại. * Tên sản phẩm. * Tên khách hàng. * Địa chỉ lấy hàng. Khi đặt hàng và thanh toán tiền cho đại đại lý,qua tài khoản ngân hàng. Thống kê các sản đã được đặt hàng. Sau khi hết thời gian đặt hàng. Đại lý thống kê số lượng sản phẩm được khách hàng đặt mua, nếu sô lượng đạt mức chuẩn đặt ra, thì đại lý sẽ lấy hàng từ nhà cung cấp về giao cho khách hàng, ngược lại, đại lý hủy đơn đặt hàng của khách hàng. 3.2.Bản đặc tả yêu cầu hệ thống bán sách trực tuyến Sản phẩm: Tên sản phẩm, thông tin chi tiết, Ảnh minh họa,gián bán, giá gốc, đặc điểm,, đơn vị tính,. Khách hàng: Tên khách hàng,email, số điện thoai, địa chỉ. Nhóm sản phẩm: Tên nhóm sản phẩm. Đơn đặt hàng: Số phiếu mua hàng, Email, số điện thoại, tên mặt hàng, số lượng, đơn giá, ngày đặt. Tin tức: Tiêu đề, nội dung, tóm tắt, ảnh minh họa, ngày đăng. Quyền: Tên quyền. Quản trị: Tên quản trị. 3.2.1.Mục tiêu Website bán sách trực tuyến nhằm đưa các quyển sách lên mạng giúp khách hàng có thể tìm kiếm những quyển sách mình muốn,đăng ký mua sách trực tiếp trênmạng.Thông qua website khách hàng có thể tìm thấy những thông tin về các quyển sách theo loại về tên sách,tên tác giả,tên nhà xuất bản,tóm tắt nội dung quyển sách,giá bán…. 3.2.1.2. Đối tượng: Đối tượng của trang web gồm có 2 nhóm chính: Người quản lý website: •Đưa ra danh mục các loại sách, tạo mới, cập nhật,sửa,xóa các loại sách •Đưa thông tin về những quyển sách cụ thể trong từng loại sách: tên sách,tên tác giả, nhàxuất bản, nội dung tóm tắt của quyển sách, giá bán, hình ảnh trang bìa của quyển sách… •Tìm kiếm, tạo mới, cập nhật,sửa, xóa thông tin một quyển sách. •Quản lý việc đăng nhập của những khách hàng. •Quản lý việc đăng ký mua sách của khách hàng. •Thống kê số lượng người truy cập….  Người dùng (khách hàng): a.Thành viên chưa đăng ký: •Tìm kiếm, xem các thông tin của trang web,thông tin của những quyển sách theo từngloại…  b.Thành viên đã đăng ký: •Tìm kiếm, xem các thông tin của trang web,thông tin của những quyển sách theo từng loại… •Đăng ký mua sách. •Thay đổi thông tin cá nhân. 3.2.1.3.Bảng mô tả chức năng của hệ thống:Website bán sách trực tuyến có những module STT TÊN MODULE MÔ TẢ 1 Thiết kế giao diện website -thiết kế trang chủ và các trang trong -Giới thiệu thông tin tiêu biểu ,tin tức ,thông tin quảng cáo ,những quyển sách tiêu biểu 2 Module tin tức -Tin tức mới -Tin khuyến mãi -Các loại thông báo -Tin về những sách cũ -Thêm sửa xóa các bản tin -Lựa chọn hiển thị các bản tin mới,tin nổi bật trên trang chủ 3 Module catalogue -phân loại danh mục sách -liệt kệ từng loại sách theo mục -thông tin quyển sách: tên sách, tên tác giả, tên nhà xuất bản,tóm tắt nội dung chính của quyển sách, giá bán, hình ảnh trang bìa quyển sách… -giỏ hàng để khách hàng đăng ký mua sách trên web -hiển thị sách mới, sách bán chạy nhất,sách khuyến mãi. 4 Module đăng ký đăng nhập -đăng ký trở thành thành viên của website để sử dụng các dịch vụ của website tốt nhất 3.2.1.4.Quy trình đặt hàng Hình 3.2.1.4.1:Quy trình đặt hàng 3.3.Phân tích hệ thống 3.3.1.Sơ đồ Use Case Sơ đồ Use Case tổng thể Hình 3.3.1.1: Sơ đồ Use Case tổng thể Use case cập nhật Hình 3.3.1.2: Use case cập nhật Phân rã Use case cập nhật sản phẩm. Hình 3.3.1.3: Phân rã Use case cập nhật sản phẩm Phân rã Use đặt hàng. Hình 3.3.1.4: Phân rã Use đặt hàng 3.4.Mô hình quan niệm dữ liệu Hình 3.4.1 :Mô hình quan niệm dữ liệu 3.5.Sơ đồ chức năng Hình 3.4.2: Sơ đồ chức năng 3.6.Cấu hình ứng dụng Hình 3.5.1: Cấu hình ứng dụng 3.6.1.Một số phương thức cơ bản trong Zend Framework 3.6.1.1.Khởi tạo kết nối database File: config\application.config.php . <?php return array( 'modules' => array( 'Application', 'Shopping', ), // Khai báo 2 module được load 'module_listener_options' => array( 'config_glob_paths' => array( 'config/autoload/{,*.}{global,local}.php', ), 'module_paths' => array( './module', './vendor', ), ), ); File : config\autoload\global.php <?php /** * Global Configuration Override * * You can use this file for overridding configuration values from modules, etc. * You would place values in here that are agnostic to the environment and not * sensitive to security. * * @NOTE: In practice, this file will typically be INCLUDED in your source * control, so do not include passwords or other sensitive information in this * file. */ return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=shopping;host=localhost', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), ), ); 3.6.1.2.Cấu hình template public\index.php <?php /** * This makes our life easier when dealing with paths. Everything is relative * to the application root now. */ define('PUBLIC_PATH', dirname(__FILE__)); define('TEMPLATE_PATH', PUBLIC_PATH.'/templates'); define('FILES_PATH', PUBLIC_PATH . '/files'); define('TEMPLATE_URL', '/zendstack/public/templates'); //Duong dan den thu muc ung define('APPLICATION_URL','/zendstack'); define('SRCIPTS_URL', APPLICATION_URL . '/public/scripts'); //Duong dan den thu muc /templates define('CAPTCHA_URL', APPLICATION_URL . '/public/captcha'); define('FILES_URL', APPLICATION_URL . '/public/files'); chdir(dirname(__DIR__)); // Setup autoloading include 'init_autoloader.php'; // Run the application! Zend\Mvc\Application::init(include 'config/application.config.php')->run(); 3.6.1.3.Hiển thị danh mục sản phẩm theo mô hình đa cấp module\Shopping\src\Shopping\View\Helper\BlkCategoryMenu.php protected $_db; public function __construct($db) { $this->_db = $db; } public function __invoke($name=null,$val=null) { $view = $this->view; $result = $this->_db->listItem(); $cid = ($view->arrParam['id'])?$view->arrParam['id']:0; $strMenu = $this->createMenu($result,0,$view); require_once ('html/default.php'); } public function createMenu($sourceArr,$parents =0, $viewObj ){ $newMenu = ''; $this->recursiveMenu($sourceArr,$parents = 0,$newMenu,$viewObj); return str_replace('','',$newMenu); } public function recursiveMenu($sourceArr,$parents = 0,&$newMenu, $viewObj){ if(count($sourceArr)>0){ $newMenu .= ''; foreach ($sourceArr as $key => $value){ $liMenu = 'liMenu_' . $value['id']; if($value['parents'] == $parents){ if($value['parents'] == 0){ $newMenu .= '' . $value['name'] . ''; }else{ $link = $viewObj->url('shopping-category',array('action'=>'index', 'id' => $value['id'])); $newMenu .= '' . $value['name'] . ''; } $newParents = $value['id']; unset($sourceArr[$key]); $this->recursiveMenu($sourceArr,$newParents, $newMenu, $viewObj); $newMenu .= ''; } } $newMenu .= ''; } } 3.7.Hình ảnh Website Hình 3.6.1: Trang chủ Hình 3.6.2: Đăng ký Hình 3.6.2:Đăng nhập Hình 3.6.3:Chi tiết sản phẩm Hình 3.6.3:Chi tiết sản phẩm Hình 3.6.4:Giỏ hàng Kết luận Xây dựng website bán sách qua mạng trên nền Zend Framework 2.0 là một đề tài mới mẻ.Việc xây dựng một hệ thống áp dụng công nghệ mới ít nhiều đã ảnh hưởng tới kết quả của đề tài.Tuy nhiên sau khi hoàn tất ,đề tài này cũng thu được nhưng kết quả như sau: Hoàn thành các mô hình hệ thống :Sơ đồ Use case,mô hình dữ liệu và cơ sở dữ liệu để phục vụ cho hệ thống Hoàn thành chức năng xem menu sản phẩm,chi tiết sản phẩm,đăng ký, đăng nhập, giỏ hàng… Áp dụng Zend Framework 2 vào công việc xây dựng ứng dụng web,dễ dàng nâng cấp và phát triển. Bên cạnh đó đề tài còn nhiều mặt hạn chế Giao diện khá đơn giản Các chức năng cho cập nhập ,xóa,sửa sản phẩm cho người quản trị và giỏ hàng chưa hoàn thành Tài liệu tham khảo: Diễn đàn Zend Framework Việt Nam: Zend.vn/forum Luận văn tốt nghiệp đại học “xây dựng hệ thống quản lý sử dụng phòng học trên nền tản Zend Framework “ của Lưu Trường Hải Lân Mã nguồn Shopping bằng Zend Framework do các học viên khóa học online zendvn hoàn thành download tại Diễn đàn ------nếu cần code liên hệ facebook “https://www.facebook.com/nam.nguyenhoai.716”---

Các file đính kèm theo tài liệu này:

  • docthuc_tap_2__117.doc