Share
Trang chủ / Tất cả hướng dẫn / Không phân loại / Tiết kiệm thời gian code với funct

Tiết kiệm thời gian code với funct

Đã bao giờ bạn cảm thấy phí phạm thời gian vì phải ngồi hiện thực lại một hàm nào đó mà bạn thường xuyên dùng đi dùng lại trong những project khác nhau ? Còn với mình, mình đã xây dựng thành một thư viện Util riêng, nhưng tất nhiên là nó không public rồi. Để bù lại cho các bạn, hôm nay mình sẽ giới thiệu đến các bạn một thư viện util vô cùng hữu dụng, nó chứa rất nhiều phương thức mà có lẽ bạn sẽ gặp hằng ngày. Tất cả đều được hiện thực sẵn và tối ưu cho bạn sử dụng ngay. Và nó là :

funct
A PHP library with commonly used code blocks for faster development

Thư viện Funct

Funct là tập hợp những phương thức thường gặp nhất và được gôm thành năm nhóm, Tương ứng với các nhóm này, chúng ta có 4 sub-namespace, riêng General thì được đặt ở root-namespace.:

  1. Collection
  2. Invoke
  3. Object
  4. Strings
  5. General.

Trong bài viết này mình sẽ chỉ giới thiệu cơ bản về cách sử dụng, cài đặt nó thôi, mình không thể cập nhật thông tin về thư viện này nhanh chóng và chính xác bằng nơi nó được sinh ra, Vì vậy về sau này, các bạn cần phải theo dõi thông tin từ trang repo của project này trên github :

Lợi ích

Lợi ích của nó thì quá rõ ràng, bạn sẽ tiết kiệm được rất nhiều thời gian phát triển ứng dụng của bạn, vì giờ bạn không cần phải nhớ, phải viết lại những đoạn code thường dùng. cũng giảm thiểu rủi ro bị bug trong các đoạn code này. Muốn sửa đổi, tối ưu nó cũng đơn giản hơn rất nhiều. Ví dụ như bạn muốn tìm một phần tử trong array. Thường thì sẽ viết như sau :

foreach ($collection as $key => $item) {
	$diff = array_diff_assoc($value, $item);
	if (count($diff) < 1) {
		return $item;
	}
}

Nhưng giờ đây 5 dòng con trên đã được tích hợp trong thư viện, bạn sẽ chỉ cần :

Collection\findWhere()

Không chỉ là nhanh chóng, bằng cách dùng hàm với tên xác định, bạn sẽ chẳng cần phải comment vào code rằng :

//Find element
foreach ($collection as $key => $item) {
	$diff = array_diff_assoc($value, $item);
	if (count($diff) < 1) {
		return $item;
	}
}

Phương thức mà bạn đang sử dụng, được xây dựng bởi những người có nhiều kinh nghiệm và được nhiều người khác trên thế giới contribute vào vì vậy có thể rằng nó sẽ được tối ưu, Tất nhiên là không phải tất cả rồi.

Nhưng cũng chính vì yếu tố tiện lợi và được nhiều người contribute này mà bạn phải để mắt tới những gì được hiện thực trong các phương thức, bởi vì nếu bạn không biết được thực sự cái gì đang diễn ra bên trong phương thức, liệu có vòng lặp hay không, thì bạn sẽ không đánh gia được cost của phương thức đó và bạn sẽ làm cho ứng dụng của bạn nặng nề mà bạn thì không biết do đâu. Ví dụ như bạn không nhìn code của phương thức findWhere, nên bạn không biết nó có một vòng lặp bên trong, thế là bạn vô tư dùng nó ở trong nhiều vòng lặp khác, hậu quả dẫn tới là ứng dụng rất chậm chạp.

Yêu cầu

Để sử dụng được thư viện này, phiên bản PHP phải từ 5.5 trở lên. Hiện nay đa số shared host đều hỗ trợ những phiên bản php ổn định và mới nhất. Nên có lẽ bạn không phải nghĩ ngợi về vấn đề này. Chỉ là nếu bạn viết plugin hoặc theme cho WordPress và muốn hỗ trợ phiên bản php như WordPress ( php 5.3 ) thì bạn không có cách nào để sử dụng thư viện này mà không phải edit nó.

Cách cài đặt

Đây là một thư viện sử dụng trong composer. Bạn cần cài composer trước, nếu chưa biết cài composer hãy đọc bài sau :

Giờ mở command line tại thư mục project của bạn và chạy lệnh sau :

$ composer require funct/funct

Lời kết

Dùng phải linh hoạt, không phải lúc nào bạn cũng nên sử dụng Funct. Cái gì cũng có giá của nó và việc tiết kiệm thời gia development của bạn đôi khi cũng có những cái giá nhất định. Và đôi khi cái giá đó quá cao. Vì dụ như hàm findWhere ở trên, trong trường hợp sau đây, nếu bạn sử dụng nó thì giá sẽ khá là cao :

//Find element
foreach ($collection as $key => $item) {
	$foundItem = Collection\findWhere($collection,["id"=>12]);
	if($foundItem){
		//do some thing
	}
}

Trong đoạn code ở trên, thực chất chúng ta có hai vòng lặp for lồng vào nhau. Trong khi chúng ta hoàn toàn có thể làm lại như sau :

//Find element
foreach ($collection as $key => $item) {
	if($item->id == 12){
		//do some thing
	}
}

Dù thực tế thì ít ai lại làm như thế này, nhưng đó là một ví dụ cho thấy rằng : trong trường hợp mà bạn muốn thao tác với kết quả tìm kiếm ngay, thì bạn không cần phải phí phạm một vòng lặp như vậy. Bạn phải hiểu mình đang làm gì, và bản chất của phương thức đó là gì.