Research Phalcon Framework(debugs and migration) and install HKT project
Phần một: Giới thiệu sơ lược về Framework Phalcon Một số ưu điểm nổi trội của Phalcon: Phalcon PHP là một Full-stack Framework hỗ trợ mọi thứ bạn cần như: ORM, query language, template engine, micro application front controller... cùng với sự phong phú về các ví dụ mẫu và tài liệu hướng dẫn rõ ...
Phần một: Giới thiệu sơ lược về Framework Phalcon
-
Một số ưu điểm nổi trội của Phalcon: Phalcon PHP là một Full-stack Framework hỗ trợ mọi thứ bạn cần như: ORM, query language, template engine, micro application front controller... cùng với sự phong phú về các ví dụ mẫu và tài liệu hướng dẫn rõ ràng giúp bạn tiếp cận và học tập nó một cách nhanh chóng và thuận tiện. Phalcon là một framework PHP mới ra đời trong vòng vài năm trở lại đây nhưng đã chứng tỏ những khả năng vượt trội của nó. Chỉ tính riêng trong năm 2013 Phalcon đã vượt qua những framework kỳ cựu như Zend, Yii, Symphony.. để trở thành framework có thị phần lớn chỉ sau Laravel. Bên cạnh đó Phalcon có một số ưu điểm nổi trội như là: Thứ nhất, Phalcon có tốc độ nhanh nhất và chiếm ít tài nguyên nhất trong số các PHP framework nổi bật hiện nay. Khả năng đó có được là nhờ Phalcon có cách tiếp cận khác biệt so với những framework còn lại, thay vì phải kèm theo một bộ source php đồ sộ để rồi phải biên dịch lại mỗi lần chạy, Phalcon viết toàn bộ mã nguồn bằng C - một native language loại nhất về tốc độ - sau đó biên dịch thành PHP Extension. Nghĩa là mỗi lần chạy thì Phalcon đã có sẵn trong bộ nhớ cho chúng ta sử dụng nên không cần phải biên dịch lại nữa. Thứ hai, Phalcon có kiến trúc, thư viện hỗ trợ, Concept của Phalcon rất tuyệt vời. Hiện tại trên trang chủ http://phalconphp.com của phalcon cũng viết khá rõ về cấu trúc của nó.
-
Cấu trúc một project của phalcon: app/ app/config/ app/controllers/ app/library/ app/models/ app/plugins/ app/views/ public/ public/bootstrap/ public/css/ public/js/ schemas/
-
Database Migrations
Một phần khá hay trong đó là Database Migrations trong phalcon: Migrations là một cách khá thuận tiện để làm thay đổi cấu trúc cũng như tổ chức của DB trong phalcon. Một chú ý nho nhỏ đó là muốn dùng migration trong Phalcon Developer tools thì bạn cần phải dùng Framework từ version 0.5.0 trở lên và ít nhất là PHP 5.3.11 đã được cài đặt Trong môi trường phát triển chúng ta cần phải cập nhật những thay đổi in môi trường products, một số thay đổi có thể là dữ liệu của các bảng như thêm trường mới, bảng mới hay là xóa bỏ trường cũ đi, ... Một migration sẽ tạo ra một tập các class để mô tả cấu trúc DB của bạn tại thời điểm đó. Các class này có thể được sử dụng để đồng bộ hóa cấu trúc giản đồ trên cơ sở dữ liệu từ xa thiết lập cơ sở dữ liệu của bạn đã sẵn sàng để làm việc với những thay đổi mới trong ứng dụng của bạn. Phalcon Developer Tools cung cấp scripts để quản lý việc migrations (generation, running and rollback). Các tùy chọn có thể dùng cho việc tạo migration là:
Mỗi một migration có một version định nghĩa cho tính chất kết hợp với nó. Số của version đó cho phép chúng ta định danh nếu migration là mới hơn hoặc cũ hơn so với DB của chúng ta. Versions cũng sẽ inform thứ tự thực thi một migration. Khi migration được tạo ra, các chỉ dẫn sẽ hiển thị trên giao diện điều khiển để mô tả các bước khác nhau của migration đó và inform cả thời gian thực thi nó. Mặc định là Phalcon Developer Tools dùng thư mục app/migrations để dump migration file, thế nhưng bạn cũng có thể thay đổi setting đường dẫn file khi tạo generation script. Mỗi một table sẽ có các class tương ứng được tạo trong các file riêng trong thư mục tham chiếu đến version của nó.
- Debugging Application
- Catching Exceptions Trong toàn bộ project ta có thể dùng block như sau để bắt những trường hợp ngoại lệ như sau
Tất cả các exception được tạo ra bởi PHP được dựa trên các Exception class, và phải có ít nhất các thành phần như sau:
Thông tin exception của Phalcon cũng tương tự như exception class trong PHP:
Phần hai: Ứng dụng để phát triển trang web hkt.thangtd.com
- Cài đặt trên máy ubuntu:
- Cài đặt PHP5.5 Ubuntu: Cài đặt qua apt-get sudo apt-get install python-software-properties sudo add-apt-repository ppa:ondrej/php5 sudo apt-get update sudo apt-get install php5-common php5-mysqlnd php5-xmlrpc php5-curl php5-gd php5-cli php5-fpm php-pear php5-dev php5-imap php5-mcrypt
Check php version: php -v => 5.5 là OK
- Cài đặt phalcon git clone git://github.com/phalcon/cphalcon.git cd cphalcon/build Trường hợp build mà báo lỗi không thể build được thì ta cài đặt thêm thư viện như sau: sudo apt-get install libpcre3-dev
sudo ./install
Add phalcon extension vào file php.ini: extension=phalcon.so
Restart webserver
-
Install phalcon devtools https://github.com/phalcon/phalcon-devtools (Nên sử dụng composer)
-
Fork project về acc của mình, rồi clone về máy. Đặt tạo remote origin => repo của mình (để push code), remote upstream => repo chính (để pull code)
-
Chmod cache folder, tạo database theo như hướng dẫn ở https://github.com/wataridori/hkt
-
Deploy quyết định cho mình một cái domain, kiểu như testthangtd.com Add vào file host 127.0.0.1 hkt.lucct.com
Tạo một thư mục là /www (ngay sau đường dẫn gốc /), change mod 777 Trong đó tạo một symbolic link đến thư mục hkt, kiểu như ln -s /home/lucct/hkt hkt.lucct.com)
Và bước cuối cùng, quan trọng nhất, Config Apache copy đoạn sau vào cuối file apache và restart
<VirtualHost *:80> RewriteEngine On RewriteMap lowercase int:tolower RewriteCond /www/{lowercase:%{SERVER_NAME}} -d RewriteRule ^/(.*) /www/{lowercase:%{SERVER_NAME}}/1 [L] <Directory /> Require all granted Options FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Chú ý, cũng ở file config apache, search xem ở phần DirectoryIndex xem có index.php chưa, nếu chưa có thì thêm vào kiểu như sau: DirectoryIndex index.html index.php
Ngoài ra, cài đặt phần cơ sở dữ liệu như sau: Cache folder
Change mode the folder app/cache
chmod 777 app/cache Image Upload folder
Change mode the folder public/img/upload for uploading images
chmod 777 public/img/upload Database
CREATE USER 'hkt'@'localhost' IDENTIFIED BY 'hkt'; CREATE DATABASE hyakkaten CHARACTER SET utf8; GRANT ALL ON hyakkaten.* to hkt@localhost; FLUSH PRIVILEGES; Change the username, password, and database name with the information configed in app/config/config.php Then, run the sql files in schemas folder.
Sau khi cài đặt xong ta có một số hình ảnh như sau:
Hình 1: Màn hình đăng nhập
Hình 2: Màn hình danh sách các mặt hàng của chủ shop
Hình 3: Màn hình danh sách những người đặt hàng