Vì sao cakephp vẫn được sử dugj

Vì sao cakephp vẫn được sử dugj

Framework được biết đến như một xu hướng phát triển, các hệ thống công nghệ hiện đại giúp việc phức tạp trở nên đơn giản hóa. Tuy nhiên, có nhiều loại Framework khác nhau và sử dụng cho các ứng dụng phần mềm khác nhau. Và để hiểu rõ hơn Framework là gì, cũng như các tính năng nó mang lại hãy cùng Bizfly Cloud  tìm hiểu qua bài viết dưới đấy nhé!

Tìm hiểu framework là gì?

Framework là gì? Framework là bộ "khung sườn" được cấu tạo thành các đoạn code có sẵn, hay nói cách khác nó là tập hợp các thư viện lập trình hoặc các API nhằm hỗ trợ một cách tối ưu. Giúp cho các lập trình ứng dụng, lập trình web trở nên nhanh chóng và dễ dàng hơn.

Những lợi ích khi sử dụng framework

Dễ nhận thấy, bất kỳ website nào cũng có cần có phần quản lý người dùng như đăng ký, đăng nhập, tích hợp mạng xã hội, kết nối cơ sở dữ liệu… Vì vậy, lợi ích lớn nhất khi sử dụng Framework là nó đã xây dựng sẵn được hệ thống với các tính năng chung này. Từ đó, đem tới một loạt các lợi ích như:

       - Giúp lập trình viên tiết kiệm được thời gian, năng lượng khi phát triển các ứng dụng..

       - Sử dụng framework giảm thiểu tối đa thời gian và công sức phát triển ứng dụng.

       - Phần mềm cho phép ứng dụng kế thừa một cấu trúc được chuẩn hóa, đảm bảo trong vận hành và bảo trì sau này được thuận tiện và dễ dàng hơn.

Hy vọng với việc tìm hiểu lợi ích khi sử dụng framework, bạn cũng đã phần nào hiểu rõ khái niệm framework là gì.

Vì sao cakephp vẫn được sử dugj

Các dạng framework phục vụ cho lập trình

Nếu phân chia theo nền tảng phát triển, Framework gồm hai dạng cơ bản như sau:

Framework phát triển website

Website Framework là phần mềm phổ biến được sử dụng để phát triển và sắp xếp các ứng dụng web, các dịch vụ và các loại tài nguyên của trang web. Thông thường, Web Framework phổ biến có kiến trúc Model-View-Controller.

Framework phát triển trên nền tảng mobile

Với sự đa dạng ngày càng gia tăng của thiết bị di động, thì có một số Framework phát triển trên nền tảng mobile như:

      - React Native

      - Flutter

      - Xamarin

      - Phonegap

Ưu nhược điểm của Framework

Để hiểu rõ hơn khái niệm Framework là gì thì ưu nhược điểm của nó cũng là khía cạnh cần được phân tích.

Ưu điểm:

       - Là một phần mềm thông minh với các tính năng có sẵn, có thể đưa vào sử dụng được ngay.

       - Giúp người lập trình tiết kiệm được nhiều thời gian, công sức khi phát triển các ứng dụng.

       - Hỗ trợ phím tắt và tái sử dụng lại mã code.

       - Chủ động chỉnh sửa những gì mà Framework cung cấp đồng thời kế thừa các tính năng đã được tiêu chuẩn hóa cho sản phẩm.

Bên cạnh những ưu điểm thì Framework vẫn còn tồn tại một số nhược điểm:

       - Muốn hiểu và sử dụng Framework một cách hiệu quả và thông minh bạn cần phải có kiến thức bài bản về nó. Vì vậy, để khai thác tối đa và hiệu quả nó bạn cần phải đầu tư thời gian và công sức khá nhiều.

       - Cần tuân thủ các quy định khi lập code.

       - Framework sẽ có kích thước rất lớn, thông thường phần mềm của bạn mặc dù chưa có nội dung gì cả nhưng kích thước của nó chiếm tới vài trăm MB code.

       - Không thích hợp khi sử dụng các ứng dụng, phần mềm nhỏ.

Vì sao cakephp vẫn được sử dugj

Một số framework phổ biến lập trình viên sử dụng

Ruby on Rails

Là phần mềm mã nguồn mở miễn phí được phát triển bởi David Heinemeier Hansson. Ruby là ngôn ngữ lập trình, sử dụng Ruby on Rails các lập trình viên có thể phát triển nhiều loại ứng dụng khác nhau.

Ưu điểm:

      - Ngôn ngữ Ruby dễ học, hệ thống hoàn chỉnh các định nghĩa hàm sâu sắc và thông minh

      - Rails dùng ít code hơn các framework khác, tốc độ tạo ra những Prototype nhanh chóng nhưng tại tốn ít chi phí bảo trì.

      - Hiểu được Rails, bạn sẽ dễ dàng hiểu được các Framework hiện đại khác của PHP, Python,..

Spring

Là một Java Platform mã nguồn mở, một giải pháp gọn nhẹ dành cho Java Enterprise. Với phần mềm này các nhà phát triển có thể tạo ra các mã có hiệu suất cao, dễ kiểm thử và có thể sử dụng lại được. Các tính năng core của Spring Framework có thể được sử dụng trong việc phát triển bất kỳ ứng dụng hoặc xây dựng các ứng dụng web trên nền tảng Java EE.

Ưu điểm:

      - Đơn giản hóa công việc phát triển thông qua việc sử dụng các đối tượng Java đơn giản hay còn được gọi là POJO (Plain Old Java Object).

      - Nới lỏng ràng buộc giữa các thành phần thông qua việc sử dụng Dependency Injection và viết các interface.

      - Tiếp cận lập trình khai báo bằng cách sử dụng các quy tắc và các khía cạnh chung.

      - Giảm thiểu các mã nghi thức và soạn sẵn thông qua việc sử dụng các khuôn mẫu và các khía cạnh.

      - Spring Framework thường được sử dụng khi phát triển hệ thống quy mô lớn.

CakePHP

Là một Web Framework được tạo ra với mục đích cung cấp một phần mềm tốt nhất cho người sử dụng PHP ở mọi cấp độ. Đều có thể phát triển nhanh chóng, mạnh mẽ và linh hoạt. Bên cạnh đó, đây còn là một Web Framework đơn giản, việc xây dựng môi trường cũng tương đối dễ dàng.

Ưu điểm: CakePHP có một showcase thực sự đáng chú ý, nó tạo sức mạnh cho các trang web của các thương hiệu lớn như: BMW, Hyundai và Express. Đây là một công cụ tuyệt vời cho việc tạo ra các ứng dụng web cần cấp độ bảo mật cao.

Hiểu được framework là gì và phân biệt được ưu nhược điểm của nó giúp cho việc sử dụng các ứng dụng của bạn trở nên dễ dàng hơn. 

Hy vọng những thông tin mà Bizfly Cloud mang đến sẽ giúp bạn có những tham khảo trong việc thiết lập các sản phẩm một cách tối ưu và nhanh chóng nhất. Nếu còn thắc mắc thì hãy liên hệ ngay với chúng tôi theo số hotline 1900636465 để được tư vấn và hỗ trợ nhé!.

Trong phần đầu tiên này bao gồm:

  • Giới thiệu sơ lượt về cakephp.
  • Cấu trúc Cakephp framwork.
  • Quy tắc cần nắm bắt.
  • Hướng dẫn cài đặt & config một số module cho 1 vài webserver.

GIỚI THIỆU VỀ CAKEPHP

– Thông tin chung: Cakephp là 1 framwork thuần PHP. Nó xây dựng sẳn cấu trúc cũng như các thư viện cho người lập trình dễ dàng coding, nâng cấp project theo mô hình M-V-C đồng thời tiết kiệm thời gian và tránh việc trùng lặp code quá nhiều. Đặt biệt đây là framwork mở miễn phí được cộng đồng đánh giá cao.

– Tính năng ưu việt có trong Cakephp Framwork:

• Tương thích PHP4 và PHP5 • Xây dựng theo mô hình MVC • Đa ngôn ngữ • Sinh code tự động dựa trên database. • Lưu tạm – Caching (ảnh hưởng lớn đến toàn bộ project) • Phân quyền (ACL) • Kiểm tra ràng buộc dữ liệu thông qua model • Xây dựng nhiều thư viện hỗ trợ cho View (dc gọi Helper) như: Ajax, HTML Form, Javascript… • Xây dựng nhiều thư viện hỗ trợ cho Controller (dc gọi Component): Email, Security, Session, Cookies, Request Handling • Dễ dàng viết thêm thư viện hỗ trợ, liên kết với ứng dụng khác thông qua vendors (thích nhất cái này) • Đa giao diện (Hơi khó khăng trong việc phân chia layout) • Hỗ trợ nhiều hệ quản trị CSDL • Kiểm tra dữ liệu(bắt lỗi trên form) thông qua model. Tuy nhiên ít dc sử dụng sao khi sử dụng sẽ hiểu • Cho phép toạn link thân thiện (giấu link chính ><)

• Dễ dàng cofig trong database cũng như core của framwork.

CẤU TRÚC CAKEPHP

1. CẤU TRÚC THƯ MỤC

Sau khi tải và giải nén CakePHP, bạn có thể thấy các files và thư mục sau :
app: là nơi chứa mã nguồn ứng dụng của bạn (phần này quang trọng)
cake: là nơi chứa mã nguồn của CakePHP. Bạn không nên chỉnh sửa các files trong thư mục này nếu bạn không hiểu rõ về chúng
vendors: chứa ứng dụng của bên thứ 3, phục vụ cho ứng dụng của bạn
plugins: chứa các thành phần mở rộng dùng cho ứng dụng

Ghi chú :
Config Chứa file cấu hình hệ thống
Controllers Chứa các controller và component
Locale Chứa file ngôn ngữ , phục vụ cho ứng dụng đa ngôn ngữ
Molels Chứa file Model và behavor, datasource
Plugins Chứa các gói mở rộng
TmpThư mục tạm của ứng dụng
Vendors Chứa ứng dụng của bên thứ 3
Views Chứa các file giao diện
Webroot Chứa tài liệu (hình ảnh,file..), file CSS , file javascript…

2. CẤU TRÚC MODEL

Vì sao cakephp vẫn được sử dugj

Cũng như các PHP framework khác, CakePHP hoạt động theo mô hình MVC. Mô hình MVC trong CakePHP chia ứng dụng ra ba phần chính: Model, View và Controller, việc phân tách ứng dụng rõ ràng như vậy sẽ giúp bạn tách bạch các phần xử lý riêng biệt cho website của bạn, nó giúp cho code của bạn trong sáng hơn, dễ lập trình, dễ quản lý, chỉnh sửa, nâng cấp. Trong đó:

–          Model: mô tả dữ liệu của ứng dụng. Trên Model ta có thể thiết lập các ràng buộc dữ liệu, quan hệ giữa các bảng. Model giao tiếp với database, bạn sẽ viết các query cũng như các xử lý logic  ở đây.

–          View: đảm nhận việc hiển thị thông tin đã được xử lý gới đến từ Controller, View còn được hiểu nôm na là nơi chứa các file html của bạn để hiển thị cho nguời xem.

–          Controller: xử lý và điều hướng các yêu cầu của client, Controller nơi bạn trực tiếp viết các xử lý lấy các request từ url và form để thao tác trực tiếp với Model, sau đó dùng View để hiển thị ra

Ta có mô hình cơ bản như sau:

Vì sao cakephp vẫn được sử dugj

Mô Hình MVC

Cách thức hoạt động:

  •     Đầu tiên client sử dụng web browser để gởi yêu cầu đến ứng dụng bằng cách gõ hoặc click vào một đường link liên kết có dạng sau:

http://{Domain}.com/{Application}/{Controller}/{Action}/{Parameter 1, etc.}

  •     Bộ phận điều vận Dispatcher (là một thành phần của CakePHP) sẽ kiểm tra phần tử để xác định controller nào sẽ thực thi  và gởi yêu cầu tới controller tương ứng
  •     Khi yêu cầu được gởi đến Controller, nó sẽ làm một vài thao tác luận lí cần thiết, có thể nó sẽ xử lý ngay tại Controller hoặc sử dụng Model tương ứng để truy xuất dữ liệu. Dữ liệu ở đây có thể là các record trong table của một database, hoặc một dạng khác.
  •     Sau khi lấy được dữ liệu, Controller sẽ đưa dữ liệu này ra View và View này có nhiệm vụ chuẩn bị đưa dữ liệu đầu ra. View có thể chuẩn bị dữ liệu ở dạng HTML, PDF, tài liệu XML hoặc một đối tượng JSON, cuối cùng là view sẽ được hiển thị trên trình duyệt.

CÁC QUY TẮC TRONG CAKEPHP

Ở mỗi phiên bản khác nhau của Cakephp sẽ có mở rộng thêm quy tắc mới nên trong bài này chỉ nói về quy tắc trong cakephp 2.x

Cách đặt tên file, tên lớp

– Tên file sử dụng chữ thường, dùng dấu “_” để phân cách các từ – Tên lớp dùng CamelCased (viết hoa chữ cái đầu tiên của từ)

Ví dụ : ta có tên lớp là MyClass-> file class tương ứng :my_class.php


Dưới đây là các ví dụ về cách đặt tên file cho mỗi dạng lớp khác nhau mà bạn thường sử dụng trong ứng dụng CakePHP :

Các qui ước về Model và CSDL

– Tên các lớp model được đặt ở dạng số ít và việc viết hoa thường tuân theo CamelCased
Ví dụ: Person, BigPerson và ReallyBigPerson.

– CakePHP không hỗ trợ khóa chính gồm nhiều cột. Nếu bạn muốn thao tác trực tiếp kết nối (join) các bảng, hãy truy vấn trực tiếp hoặc thêm một khóa chính thay cho khóa nhiều cột.

Ví dụ:

  CREATE TABLE posts_tags (

  id INT(10) NOT NULL AUTO_INCREMENT,

  post_id INT(10) NOT NULL,

– Lẽ ra trong table post_tags, bình thường thì 2 cột post_id và tag_id ta có thể cho nó làm khóa chính nhưng CakePHP không chấp nhận điều này.

– Tên bảng tương ứng với các model của CakePHP ở dạng số nhiều và sử dụng gạch dưới (_) tên bảng tương ứng với các model ở trên là people, big_people, và really_big_people.

– Tuy nhiên, bạn vẫn có thể đặt tên bảng khác đi và cho CakePHP biết điều này thông qua biến$useTable trong model (các bài viết tiếp theo sẽ có ví dụ).

– Bạn có thể dùng thư viện Inflector có sẵn trong CakePHP để kiểm tra dạng số ít/số nhiều của các từ.

– Các khóa ngoại trong các quan hệ hasMany, belongsTo, hasOne có tên mặc định là số ít của tên bảng kèm theo _id ở cuối cùng.

Ví dụ với quan hệ NewsCategory có nhiều News, bảng news sẽ có khóa ngoại đến bảngnews_categories là news_category_id.

– Các bảng liên kết được sử dụng trong quan hệ hasAnhBelongsToMany(viết tắt là HABTM – quan hệ nhiều nhiều) được đặt tên bằng cách kết nối các tên model theo thứ tự abc, vì vậy tên đúng sẽ là apples_zebras chứ không phải là zebras_apples.

– Do đó, ta phải thêm một khóa khác có tên là id

– Khóa chính mặc định trong CakePHP là cột id, kiểu int, tự tăng. Tuy nhiên, bạn cũng có thể định nghĩa lại khóa chính cho bảng thông qua biến $primaryKey trong model.

– Thay cho việc sử dụng kiểu int, auto-increment làm khóa chính, bạn có thể sự dụngchar(36)hoặcbinary(36), khi đó CakePHP sẽ tự động tạo ra UUIDs để làm khóa khi ta thêm mới một record. UUID là một chuỗi gồm 32 byte, tương ứng với 36 ký tự.

Ví dụ :550e8400-e29b-41d4-a716-446655440000

Qui ước về Controller :

– Tên lớp của controller đặt theo dạng số nhiều,

– Tuân theo CamelCased và cuối tên phải có chữ “Controller”.Ví dụ: ta có Controller tênProductsthì có class Controller như sau :

              Class ProductsController extends AppController{

– Khi một phương thức trong Controller được đặt tên bắt đầu với với dấu “_”ở phía trước, bạn sẽ không thể truy xuất nó từ bên ngoài mà chỉ có thể truy xuất trong controller đó (cái này gọi là private).

Ví dụ:

          Class ProductsControllers extends AppController{

Kết quả hiển thị như sau:

index() : public function
_get_product() : private function

Ví dụ :

Ta có controller NewsController với 2 function: – View_all()

– View_detail()

Thì ta phải có 2 file tương ứng : – View_all.ctp

– View_detail.ctp

Đặt trong thư mục app/view/news

– Mặc định, nếu trong controller NewsController có methodview(), khi gọi actionviewtrên trình duyệt (http://localhost/news/view) thì Controller sẽ tìm file view.ctp trong app/views/news/view.ctp

– Tuy nhiên, bạn có thể gọi một file view khác không phải là view.ctp bằng lệnh

  $this->render('ten_view');

Ví dụ về mặc định :

  Class NewsController extends AppController{

-Truy cập :http://localhost/news/view->load file :view.ctptrong thư mục app/views/news/

Ví dụ về load 1 file view khác :

  Class NewsController extends AppController{

        $this->render(“view_demo”);

– Truy cập :http://localhost/news/view-> load file :view_demo.ctp trong thư mụcapp/views/news/

Yêu cầu hệ thống :

  • Hệ điều hành Windown hoặc Linux
  • Hệ quản trị CSDL MySQL

Chuẩn bị cài đặt :
Tải phiên bản CakePHP mới nhất.

– Giải nén, cho vào thư mục của web server
– Trong ví dụ này thư mục webser góc của tôi là :C://xampp/htdocs
– Vậy ta có cấu trúc như sau :C://xampp/htdocs/cakephp

Cài đặt CakePHP thành công :
– Chmod thư mục app/tmpthành0777(nếu trên host, còn localhost thì khỏi cần)
– Mở file app/config/core.php:
Thay đổi giá trị của dòng Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi2010‘ );
Thay đổi giá trị của dòng Configure::write(‘Security.cipherSeed’, ‘768593096574535424967496836452011‘);

Vì sao cakephp vẫn được sử dugj

– Tạo csdl với tên:cake_test
– Mở file app/config/database.php, điền như sau: