10/10/2018, 09:52

Cùng tìm hiểu về Zend Framework và Zend Studio

Hiện mình đang làm 1 đề tài về web và sử dụng Zend Framework làm nền tảng.
Tuy nhiên do mình là dân amateur - kiến thức về PHP5 (cũng như Apache server,MySQL) có giới hạn nên quá trình tìm hiểu hơi khó khăn.Do đó mình lập thread này mong được giao lưu học hỏi để có thể cùng nhau nắm được một trong những framework mạnh nhất hiện nay: "Zend Framework 1.0".

Mong được các cao thủ về PHP(như bác pcdinh chẳng hạn) và các anh em yêu thích PHP ủng hộ thì thread này mới có chất lượng được.
plhoangan viết 11:53 ngày 10/10/2018
Về mặt môi trường:
Mình dùng bộ Appserv (gồm Apache,PHP và MySQL).
Tải tại đây: AppServ 2.5.8

Về Editor: dùng Zend Studio
Tải tại đây: ZendStudio-5.2.0
Thuốc: http://upviet.com/uploader/files/101...udio5Patch.zip

Về Zend Framework:
Tải ZendFramework-1.0.1
Tải API Guide
Tải Programmer's Reference Guide
plhoangan viết 11:56 ngày 10/10/2018
Đây là bài viết giới thiệu về ZF bằng tiếng Việt: Zend Framework - Hoàn tất một “cuộc cách mạng” ?

Đây là bài viết giới thiệu về ZF của IBM: Understanding the Zend Framework, Part 1: The basics

Bài hướng dẫn rất hay về ZF: Tutorial: Getting Started with the Zend Framework

Tìm hiểu về mô hình MVC (mô hình 3 lớp) trong PHP: Understanding MVC in PHP

Ngoài ra còn có bài viết về coding standard của bác pcdinh: Coding Standards của VN
plhoangan viết 11:57 ngày 10/10/2018
Tham khảo từ bài viết: Tutorial: Getting Started with the Zend Framework

Tải file hướng dẫn tại đây: File PDF

Tải source code tại đây: http://akrabat.com/wp-content/upload...torial-141.zip

Cấu hình:

Giải nén ZF down được vào thư mục nào đó (ví dụ vào C:\AppServ\www\)
Kiếm dòng include_path = ... trong file C:\WINDOWS\php.ini .Thêm vào đường dẫn tới thư viện của ZF (ví dụ là include_path = ".;C:\AppServ\www\ZendFramework-1.0.1\library")
Trong source code có file dbschema.sql trong thư mục application.Dùng phpmyadmin tạo 1 database là zftest và import file này vào.
Đồng thời sửa lại file config.ini(cũng trong thư mục application) sao cho username và password phù hợp.

Sau khi tải về và chạy thử thì tôi gặp thông báo lỗi như sau:Internal Server Error.Đó là do sever ko có khả năng chạy các file .htaccess.Muốn vậy phải bật mod_rewrite lên (uncomment dòng LoadModule rewrite_module modules/mod_rewrite.so trong file http.conf)
Tuy nhiên tôi lại gặp 1 lỗi khác là "Uncaught exception 'Zend_Db_Adapter_Exception' with message 'The PDO extension is required for this adapter but not loaded'". Sau một buổi trời googling trên mạng và suy đoán tôi đã tìm ra cách khắc phục(chắc do chưa có kinh nghiệm nên khắc phục hơi lâu)
Vào file C:\WINDOWS\php.ini tìm kiếm dòng ;extension=php_pdo.dll và thay bằng 2 dòng
extension=php_pdo.dll
extension=php_pdo_mysql.dll
(thêm vào các extension để có thể sử dụng được PDO)
Sau đó lưu lại và restart apache server.

Cuối cùng cũng đã chạy xong được 1 demo của ZF.
plhoangan viết 12:04 ngày 10/10/2018
Bây giờ là làm thử 1 ứng dụng nho nhỏ = ZF.
Đọc kĩ bài sau:http://framework.zend.com/manual/en/...ler.quickstart

Sau đây là source code của mình: QuickStart

Lúc đầu khi chạy thì sẽ bị báo lỗi "Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)'". Cái đó là do đối số truyền vào hàm Zend_Controller_Front::run() bị sai!! Ko hiểu vì sao lại có cái đường dẫn '/path/to/app/controllers' này?? Sữa lại thành '../application/controllers' thì sẽ hết lỗi ngay.

Ngoài ra cũng có thể thay hàm run() trên = 3 dòng code sau:
$front = Zend_Controller_Front::getInstance();
// Set the default controller directory:
$front->setControllerDirectory('../application/controllers');
$front->dispatch();
Muốn biết vì sao thì đọc cái này:
http://framework.zend.com/manual/en/...ler.front.html

Để hiểu rõ thêm về ví dụ vừa rồi,nên tham khảo thêm về kiến trúc của ZF: http://framework.zend.com/manual/en/...er.basics.html
conan1212 viết 12:01 ngày 10/10/2018
Cả 2 cái đều có lỗi, vậy thì khi sử dụng Zend Framework để code cho khách hàng thì sao trời (, họ đâu có phải là dân IT đâu mà xóa với sửa
plhoangan viết 12:03 ngày 10/10/2018
@Conan1212: Mình chưa hiểu ý của conan? ZF chỉ là 1 thư viện nguồn mở.Muốn dùng nó thì đương nhiên mình phải có chỉnh sửa chút ít cho phù hợp với yêu cầu của mình.
Mình chưa bao giờ làm với khách hàng thật sự nên mình ko rành lắm(dân amateur mà lị!!). Nhưng theo mình nghĩ thì chuyện deploy là do mình chịu trách nhiệm (ko lẽ bắt khách hàng phải tự deploy?)

Cám ơn đã góp ý kiến!!
conmalele viết 11:55 ngày 10/10/2018
Được gửi bởi conan1212
Cả 2 cái đều có lỗi, vậy thì khi sử dụng Zend Framework để code cho khách hàng thì sao trời (, họ đâu có phải là dân IT đâu mà xóa với sửa
Vậy thì đừng dùng cả bộ, lấy những cái cần thiết để làm thôi.
doangia viết 12:02 ngày 10/10/2018
Tớ mới xài đến Zend_feed , Zend_db 1 tí thôi , chưa xài "xương sống" của nó là controller vì chưa rành MVC ... Tạm thời cứ tập tành bằng những thứ dựng sẵn của nó đã
plhoangan viết 12:03 ngày 10/10/2018
ZS là 1 PHP editor cực mạnh (bản thương mại mà lị!!).Đặc biệt nó hỗ trợ chức năng Code Completion rất tốt.
Trước tiên là phải cài ZS.Tải từ link của các bài post đầu tiên.Trong lúc cài nhớ chọn hỗ trợ PHP5.

Sau khi cài xong,chúng ta tạo thử 1 project
Project-->New Project... --> Đặt Name là zf_tutorial rùi Next --> Add path (chỉ đến folder zf_tutorial-141) rùi Finish!!

Chạy thử (Ctrl + F5) thì gặp lỗi "..failed to open stream.." .Đó là do ZS ko thể tìm ra đường dẫn của ZF(hoặc ZF kèm theo bộ ZS ko đầy đủ).Khắc phục bằng cách tìm đến file cấu hình php mà ZS sử dụng: Thưmụcàiđặt\ZendStudio-5.5.0\bin\php5\php.ini hoặc chạy lệnh phpinfo (mở bất cứ tài liệu mới nào rùi gõ vào <?phpinfo();?> ) sẽ thấy đường dẫn trong phần "Configuration File (php.ini) Path".Sau đó mở file lên và tìm dòng include_path và thay bằng đường dẫn đến library của ZF (ví dụ include_path = E:\AppServ\www\ZendFramework-1.0.1\library;.).
Khắc phục được lỗi trên chạy lại thì gặp lỗi "...'The mysql driver is not currently installed'..." ,đó là do file cấu hình ko load đủ các extension.Ta lại sửa file php.ini theo dạng như sau:
extension_dir=E:\AppServ\php5\ext

extension=php_dbase.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_sockets.dll

extension=php_pdo.dll
extension=php_pdo_mysql.dll

extension=php_curl.dll
extension=php_mysql.dll
extension=php_mysqli.dll

extension=php_pgsql.dll
extension=php_soap.dll
extension=php_sqlite.dll

Đoạn trên là load hết tất cả các extension giống như file cấu hình php.ini của Appserv.

Nhớ là extension=php_pdo.dll phải trước extension=php_pdo_mysql.dll nếu ko sẽ vẫn bị lỗi trên (tôi cũng chưa hiểu tại sao???).
Chạy lại lần nữa thì thấy ZS đã có thể "hiểu" ZF.Có điều hình như ZS ko hiển thị style được!??
Bài liên quan
0