Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Quản lý package dễ dàng cho CodeIgniter với Sparks

by
Difficulty:IntermediateLength:MediumLanguages:

Vietnamese (Tiếng Việt) translation by Thai An (you can also view the original English article)

Sparks là một hệ thống quản lý package mới dành cho CodeIgniter dùng mở rộng core với sự hỗ trợ cho các spark như đá quý.

Hướng dẫn này xen lẫn tổng quan nhập môn về kiến trúc và cách sử dụng hệ thống spark với việc tạo ra dovecote - một spark đơn giản để quản lý dữ liệu RSS.


Giới thiệu

Các package là các block code có thể tái chế dùng giúp cuộc sống của các nhà phát triển dễ dàng hơn nhiều.

Các nhà phát triển CodeIgniter, từ lâu đã rất quan tâm qua các trình quản lý package như gems và npm, các hệ thống trao quyền cho các cộng đồng tương ứng của họ bằng các công cụ và repo trung tâm dành cho việc phát triển, tái chế và chia sẻ các thành phần ứng dụng hữu ích với nhau. Bây giờ, không cần phải chờ đợi. Nhờ một hệ thống mới - sparks - các nhà phát triển CodeIgniter cuối cùng cũng có thể vui mừng, vì cuối cùng một hệ thống quản lý package đang tăng trưởng cũng là của riêng họ.

Tổng quan

Nếu bạn đã từng làm việc với họ trước đây, chỉ cần nghĩ về các package như là các khối code có thể tái chế có thể khiến các nhà phát triển của Google sống dễ dàng hơn rất nhiều. Có lẽ bạn cần một giao diện cho một bucket lưu trữ trên Amazon Cloud? Hãy bỏ qua những đêm khuya dò đọc tài liệu S3 và chỉ cần chọn spark.

Hệ thống spark bao gồm ba phần:

  1. Repo trung tâm (getparks.org) để lưu trữ và chia sẻ sparks
  2. Một tiện ích để quản lý các spark được cài đặt trong một ứng dụng CodeIgniter
  3. Chính những cái spark

Với mục đích của hướng dẫn này, chúng tôi sẽ giới thiệu hai phần đầu tiên nhưng tập trung vào việc phát triển spark và một số cân nhắc cơ bản trong việc phát triển spark. Nghe hay không? Hãy để chúng tôi chỉ ra cách thực hiện.


Bước 1: Cài đặt Sparks

Chính thức thì spark được dự kiến sẽ được tích hợp vào core của CodeIgniter, có thể ngay bản phát hành 2.1 sắp tới. Nhưng khi nó vẫn chưa phải nằm trong phần cài đặt mặc định, thì bạn vẫn cần phải thiết lập hệ thống theo cách thủ công.

Nếu bạn dùng OSX hoặc Linux hoặc nếu bạn đã cài đặt giao diện dòng lệnh PHP trên Windows, việc cài đặt cũng đơn giản như cài đặt một bản copy mới toanh của CodeIgniter và in phần sau đây trong thư mục cài đặt:

Nếu mọi việc suôn sẻ, bạn sẽ thấy một kết quả như thế này:

Installing the sparks system

Nếu vì một lý do nào đó mà không hiệu quả, hoặc nếu bạn dùng Windows và chưa bổ sung PHP vào đường dẫn lệnh của bạn, bạn cũng có thể cài đặt spark thủ công. Bạn sẽ làm thêm việc nhưng kết quả như nhau:

  1. Bổ sung một thư mục có tên sparks trong thư mục gốc của codeigniter
  2. Thêm class Loader tùy chỉnh vào application/core/MY_Loader.php
  3. (tùy chọn) Tải xuống và extract tiện ích dòng lệnh sparks điện vào thư mục codeigniter của bạn

Cài đặt CodeIgniter của bạn bây giờ sẽ được sửa để hỗ trợ sparks.


Bước 2: Bắt đầu

Ở châu Âu thời trung cổ, mỗi ngôi nhà trang viên bao gồm một nhà nhỏ cho chim bồ câu làm tổ được gọi là chuồng bồ câu. Vì chúng tôi sẽ xây dựng một spark bao gồm cả tweet và feed, nên tên này đủ phù hợp. Nhưng nó cũng đáp ứng yêu cầu duy nhất về việc đặt tên: được đưa vào repo tại GetSparks.org,

Tên dự án GetSparks phải là duy nhất

Phác thảo Spark

Trước khi chúng tôi có thể viết code, chúng tôi sẽ cần bố trí một dự án. Trong thư mục sparks trong thư mục gốc của bản cài đặt CodeIgniter của bạn (hãy tạo ra nó, nếu nó không tồn tại), hãy thêm một thư mục mới để giữ spark:

Công ước ra lệnh rằng các spark được tổ chức theo phiên bản, vì vậy chúng tôi sẽ cần một thư mục con để giữ draft đầu tiên. 0.0.1 là khởi đầu tốt.

Thư mục này là nơi tất cả các hành động sẽ diễn ra. Khi phần còn lại của hướng dẫn đề cập đến "thư mục spark" của chúng tôi, đây là nó.

File spark.info

Tới giờ vẫn chưa có gì, nhưng chúng tôi đã sẵn sàng để bắt đầu đưa nội dung vào. Phần đầu tiên trong spark - và vể mặt kỹ thuật file duy nhất được yêu cầu bởi tiện ích spark là spark.info. Tạo một file mới có tên spark.info trong thư mục spark của bạn và bổ sung vào như sau:

Các field này đại diện cho tất cả thông tin mà tiện ích spark cần quản lý phiên bản và phần phụ thuộc của tất cả các spark trong bản cài đặt CodeIgniter này. Tiện ích sẽ tìm kiếm 5 điều, nhưng chỉ có 3 điều đầu tiên được yêu cầu:

  • name - id duy nhất của spark
  • version - phiên bản hiện tại
  • compatibility - phiên bản CodeIgniter tối thiểu
  • dependencies - (không bắt buộc) các spark khác được yêu cầu bởi spark này
  • tags - (không bắt buộc) các thẻ này mô tả spark này

Ngay cả khi bạn tự lập kế hoạch sử dụng tiện ích spark, thì nó vẫn tốt khi bao gồm file spark.info với bất kỳ spark nào mà bạn dự định phân phối. Một trong những lợi thế thực sự của việc quản lý spark theo cách này là thay vì dán chúng trực tiếp vào thư mục sparks, là trình quản lý spark có thể sử dụng tính tương thích, phần phụ thuộc và thông tin phiên bản trong mỗi spark để đảm bảo hoạt động tốt với cài đặt CodeIgniter hiện tại. Cũng có một lợi ích khác, như chúng ta sẽ thấy trong giây lát: các spark được cài đặt bên ngoài tiện ích của trình quản lý phải cài đặt các phần phụ thuộc của nó theo cách thủ công.

Tổ chức Spark

Với file thông tin đã viết ra, giờ là lúc để cho spark cấu trúc. Tạo 4 thư mục mới trong thư mục spark:

  • config
  • helpers
  • libraries
  • views

Nếu bạn từng làm việc với CodeIgniter, đây có thể là những cái tên quen thuộc. Class loader của CodeIgniter xem các spark như các package, có nghĩa là nội dung của các thư mục này được kiểm tra cho bất kỳ thành phần ứng dụng nào có thể được tìm thấy trong thư mục /application. Hiện tại, điều này áp dụng cho 5 loại tài nguyên:

  • configs
  • helpers
  • libraries
  • models
  • views

Bước 3: Viết Spark

Trước khi chúng tôi bắt đầu code, hãy dành thời gian để đảm bảo rằng thư mục spark của bạn chứa tất cả các mảnh ghép cần thiết.

Installing the sparks system

Mọi thứ theo thứ tự phải không? Hãy tiến hành.

Tạo một file trong thư mục vừa được tạo ra config và đặt tên là dovecote.php. Chúng tôi sẽ lưu trữ một vài chọn lựa cơ bản ở đây để nói với spark nơi tìm dữ liệu RSS:

Không có gì nhiều, chúng tôi đã định nghĩa username của twitter (@getsparks) để lấy các tweet từ đó, cung cấp endpoint của API cho timeline API của Twitter và bổ sung một URL để tìm kiếm các câu chuyện RSS.

Bây giờ spark biết dữ liệu có thể được tìm thấy ở đâu, đã đến lúc lấy một số feed. Để làm điều này, chúng tôi sẽ cần phải tạo một thư viện. Gọi là dovecote.php. Và lưu nó trong thư mục libraries:

Thư viện này cung cấp các hàm helper để truy xuất các tùy chọn từ file cấu hình của chúng tôi và xuất bản một RSS feed, nhưng mảnh ghép quan trọng là hàm retrieve(). Hàm này lấy dữ liệu RSS từ các nhà cung cấp được mô tả trong file cấu hình dovecote trong một vài bước:

  • Đầu tiên, địa chỉ của nguồn cấp dữ liệu RSS Twitter được tạo ra. Cấu hình phác thảo một username (twitter) và endpoint (twitterURL); Bây giờ, cả hai được kết hợp bằng cách sử dụng sprintf.
  • Tiếp theo, dữ liệu RSS trong mỗi feed được truy xuất bằng hàm loadURL từ thư viện atomizer. Hàm này trả về đối tượng "AtomizerFeed" đề xuất một số hàm hữu ích để thao tác dữ liệu RSS.
  • Cuối cùng, hoạt động convolve của AtomizerFeed, được sử dụng để kết hợp hai mục feed vào một feed duy nhất được trả về.
  • Tại thời điểm này, chúng tôi gần như đã sẵn sàng để kích hoạt dovecote trong một ứng dụng trực tiếp. Chúng tôi chỉ cần kiểm tra để đảm bảo rằng ứng dụng của chúng tôi bao gồm tất cả các phần phụ thuộc dovecote, và chính spark sẽ tải về chính xác.


    Bước 4: Các phần phụ thuộc

    Khi chúng tôi viết spark.info, hãy nhớ lại dòng mà chúng tôi đã mô tả các phần phụ thuộc dovecote của:

Điều này có nghĩa là dovecote phụ thuộc vào một Spark khác: Atomizer để hoạt động. Khi spark được cam kết với repo getparks.org, trình quản lý tiện ích người sẽ tự động tải xuống các phần phụ thuộc. Mặc dù chúng tôi vẫn phát triển ở cục bộ, tuy nhiên, chúng tôi sẽ cần phải tự làm điều này.

Nếu bạn sử dụng trình quản lý các spark, bạn có thể cài đặt Atomizer bằng cách điều hướng đến thư mục CodeIgniter của bạn và gọi hàm install trình quản lý:

Lưu ý: Nếu bạn sử dụng Windows trên Windows, bạn sẽ cần phải gọi php tools\spark install -v0.0.2.

Nếu bạn không sử dụng trình quản lý, hoặc nếu quá trình cài đặt đã hoàn thành thành công, bạn có thể tải xuống Atomizer từ Github và giải nén vào thư mục sparks của ứng dụng của bạn bên cạnh thư mục chứa dovecote.


Bước 5: Autoloading

Trước khi dovecote sẵn sàng cho các phần khác của ứng dụng, chúng tôi sẽ cần đảm bảo rằng nó sẽ tả về chính xác. Trở lại thư mục config trong thư mục spark của bạn và dán code sau vào một file mới có tên autoload.php.

Bất cứ khi nào CodeIgniter tải về spark, nó cũng sẽ cố gắng tải tất cả các tài nguyên được liệt kê trong autoload.php. Điều này cho phép các tác giả spark định nghĩa các tài nguyên mà người dùng nên có quyền truy cập ngay lập tức bất cứ khi nào họ tải spark. Vì thư viện dovecote được chỉ định ở đây, ví dụ, chúng tôi sẽ có quyền truy xuất ngay vào hàm retrieve ngay khi spark được tải.

Điều đáng nói là các tài nguyên được mô tả trong autoload.php không cần nằm trong thư mục spark. Miễn là chúng được đặt ở đâu đó trong đường dẫn tìm kiếm CodeIgniter, ứng dụng sẽ có thể tìm thấy chúng. Chú ý atomizer đang được tải về trong ví dụ trên; sẽ rất tốt khi liệt kê một phần phụ thuộc của spark nhưng không thể tải chúng!

Lưu file autoload và để cho nạp tất cả. Trong controller welcome trong ứng dụng chính của bạn (/application/controllers/welcome.php), hãy bổ sung vào như sau:

Hãy xem qua:

  1. Chúng tôi yêu cầu CodeIgniter nạp dovecote, biết rằng tất cả các tài nguyên được yêu cầu trong config/autoload.php cũng sẽ được nạp
  2. Hàm retrieve của dovecote từ được sử dụng để lấy các bản copy của RSS feed được mô tả trong config/dovecote.php
  3. Timeline kết hợp được tạo bởi retrieve được cung cấp dưới dạng RSS feed bằng cách sử dụng hàm publish của dovecote.

Hãy xem thực hành

Duyệt welcome/dovecote trong trình duyệt của bạn và bạn sẽ được chào đón với một RSS feed ghi lại các tweet và bài viết mà dovecote đã thu thập.


Bước 6: Xây dựng trên nền Spark

Hãy khiến dovecote hữu ích hơn một chút. Đầu tiên, chúng tôi sẽ tạo một mẫu view cơ bản để hiển thị tiêu đề của mỗi bài viết trong timeline:

Tiếp theo, chúng tôi sẽ giúp các view có thể truy xuất bằng cách cung cấp hàm helper mà các phần khác của ứng dụng có thể sử dụng để hiển thị timeline trong HTML.

Hàm dovecote_timeline và view cùng tên của nó hiện có thể được sử dụng để hiển thị timeline ở bất cứ đâu trong ứng dụng của chúng tôi. Nhưng để phù hợp với triết lý CodeIgniter only-what-you-need (chỉ những gì bạn cần), chúng tôi sẽ không khiến nó sẵn sàng thông qua autoload.php. Thay vào đó, chúng tôi sẽ cần phải nạp helper thủ công bất cứ khi nào cần thiết. Trở lại controller welcome trong ứng dụng của bạn, và cập nhật chức năng dovecote để tạo phiên bản HTML của feed:

Refresh trình duyệt của bạn và bây giờ bạn sẽ thấy một danh sách tất cả các mục trong timeline của dovecote.

An HTML version of the dovecote timeline

Tổng kết

Xin chúc mừng! Bạn bây giờ sở hữu của một spark rất đơn giản, nhưng có rất nhiều điều có thể được hoàn tất. Trước sử dụng dovecote, bạn có thể cân nhắc việc viết các hàm bổ sung. Các chi tiết tùy thuộc vào bạn, nhưng một số tính năng hữu ích có thể bao gồm:

  • caching của những phản hồi từ API
  • views khiến các dữ liệu lấy về đẹp hơn
  • data persistence để lưu các mục của timeline cũ hơn (trước tiên hãy kiểm tra giấy phép của feed!)

Hướng dẫn này đề xuất những phác thảo rõ ràng nhất về điều có thể được thực hiện với spark và giới thiệu những lợi thế mà spark có thể đề xuất trong việc giảm thiểu sự lặp lại và tăng tốc độ phát triển.

Bạn đang làm việc trên một spark của riêng mình? Có vấn đề xảy ra sao? Hãy chia sẻ một chút trong bình luận dưới đây và cảm ơn bạn nhiều vì đã đọc bài viết!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.