Câu chuyện trước khi PHP có composer
Bài viết được sự cho phép của tác giả Phạm Bình
Chào các bạn,
Ngày nay khi làm việc với các PHP framework như laravel, hay với các dự án sử dụng nodejs, chúng ta thường tích hợp thư viện bên thứ 3 thông qua composer, npm hoặc yarn. Nhưng bạn có bao giờ từng hỏi “chuyện gì xảy ra trước khi thế giới này có composer, npm hay yarn” không?
Nhiều bạn developer “đời mới” từ lúc học lập trình đã được làm quen với khải niệm “trình quản lý gói”, nhưng mình thì kém may mắn hơn vậy, cái thời mà mình học PHP thì composer còn chưa ra đời (composer ra đời năm 2012, còn mình thì bắt đầu học năm 2009 – 2010 gì đó). Với tư cách một “người cũ”, hôm nay mình sẽ kể cho bạn nghe chuyện gì xảy ra trước khi thế giới có trình quản lý gói composer nhé.
npm thì ra đời cùng lúc với nodejs, sau đó thì có yarn. Do vậy chỉ có composer là ra đời khá muộn so với PHP, nên trong bài viết này mình sẽ chỉ đề cập tới composer thôi nhé.
Lưu ý: Bài viết này sẽ không đem đến cho bạn kiến thức về một công nghệ mới mẻ nào cả, thay vào đó chủ yếu là mình đi kể khổ.
Giải thích một chút thì composer là trình quản lý các thư viện bên thứ ba của PHP, tương tự như npm của nodejs.
I. DOWNLOAD BẰNG TAY EVERYTHING
Vì chưa có công cụ quản lý gói, nên việc tích hợp thư viện bên thứ ba được thực hiện bằng cách:
- Bước 1: Lên trang chủ của thư viện, chọn phiên bản phù hợp và download về máy tính.
- Bước 2: Copy toàn bộ thư viện vào trong source code của dự án.
- Bước 3: Chỗ nào sử dụng thì
include
file của thư viện vào.
Cũng phải kể thêm, thời đó PHP chưa có khái niệm namespace
nên “gọi 1 file vào 1 file” chủ yếu đều sử dụng include()
.
Một thư viện “huyền thoại” mà gần như dự án nào cũng tích hợp ở thời đó đó là smarty – một thư viện dạng template engine cho PHP. Mình vẫn nhớ thời đó để tích hợp được smarty là cả một thành công lớn, thường chỉ dành cho người “có kinh nghiệm”, còn các newbie thì thôi, dùng php thuần mà làm template cho nhanh.
Một số thư viện khác nữa mà mình nhớ phải thường xuyên download đó là: pclzip, PHPExcel.
II. CẬP NHẬT LÀ MỘT CƠN ÁC MỘNG
Việc tích hợp thư viện được thực hiện bằng cách download, nên việc cập nhật các phiên bản mới của những thư viện này cũng khó khăn hơn, hay thậm chí còn được coi là cơn ác mộng đối các dự án tích hợp nhiều thư viện bên thứ ba.
Để cập nhật các phiên bản mới, buộc bạn phải kiểm tra thường xuyên trên trang chủ của từng thư viện. Nếu có phiên bản mới, bạn phải thực hiện lại thao tác “tải về, tích hợp, vv…”.
Chính vì cái sự rườm rà này, nên việc cập nhật phiên bản mới thường không được diễn ra thường xuyên, còn được coi là một công việc “xa xỉ” đối với nhiều dự án.
Xem thêm các việc làm php hấp dẫn tại TopDev
III. CODE THUẦN VẪN CÒN ĐƯỢC SỬ DỤNG NHIỀU
Ngày nay mọi người làm web thì tới 69,96% là làm bằng framework hoặc CMS. Nhưng ngày xưa, khi mà việc tích hợp thư viện của người khác quá lằng nhằng thì các developer lại lựa chọn cách “tự code” nhiều hơn.
Trước kia, mình thấy có nhiều blog hướng dẫn cách làm phân trang bài viết, cách chặn lỗi sql injection, cách gửi mail bằng PHP, cách làm đăng ký/đăng nhập,… Nhưng ngày nay, nhưng thao tác này mặc định giao phó cho tầng framework hoặc thư viện bên thứ ba.
Việc tích hợp thư viện bên thứ 3 có phần làm chúng triển khai dự án nhanh hơn, nhưng cũng làm chúng ta thụ động hơn.
IV. CODEIGNITER LÀ MỘT FRAMEWORK HUYỀN THOẠI
Ngày xưa khi nhắc tới một PHP framework thì người ta sẽ nhắc tới Codeigniter đầu tiên.
Bạn cứ tưởng tượng, ngày nay (2019) người ta nhắc tới Laravel như thế nào thì những năm 20012 – 2013 Codeigniter được nhắc đến như vậy.
Codeigniter (CI) nổi nên do nó cung cấp mô hình MVC rất rõ ràng, nhiều helpers, thư viện mạnh mẽ. CI ra đời giải quyết rất nhiều bài toán mà các web developer trước kia gặp phải như: phân trang, validate dữ liệu, xử lý ảnh, captcha, database query builder,… Mà đặc biệt nhất làm nên tên tuổi của CI bấy giờ là toàn bộ các thư viện, helpers đều được tích hợp sẵn trong hệ thống của CI, nghĩa là bạn gần như không cần phải sử dụng thêm bất kỳ một thư viện bên thứ ba nào cả. Nếu bạn cần update thư viện, cái duy nhất bạn cần update chính là Codeigniter.
Tuy nhiên càng về sau thì CI càng được ít người quan tâm. Một phần lý do là composer ra đời, thế mạnh của CI không còn được đánh giá cao nữa. Ngược lại, nó còn trở thành điểm yếu do CI phải bảo trì một lượng lớn các thư viện nên việc update phiên bản mới có vẻ chậm chạp hơn các framework khác.
Ngày nay CI ít được lựa chọn để start một dự án mới, đa phần các công việc liên quan tới CI ngày nay đều là bảo trì dự án từ ngày xưa.
Update thêm: Mình vừa truy cập vào trang chủ của codeigniter thì vẫn thấy nó gợi ý cài đặt bằng cách tải xuống file .zip, cách tích hợp huyền thoại.
V. TỔNG KẾT
Đọc tới đây, mình đoán các bạn sẽ có 1 trong 3 suy nghĩ sau:
- Cảm thấy tiếc nuối khi bỏ qua một giai đoạn phát triển của công nghệ.
- Cảm thấy may mắn khi được sinh ra trong thời công nghệ “tiên tiến hơn”.
- Hoặc nếu bạn cũng từng làm việc cùng thời với mình, thì chắc sẽ cảm thấy đồng cảm.
Ngoái lại mới thấy, công nghệ thay đổi nhiều quá, không biết mình còn đủ sức đến bao giờ để tiếp tục theo đuổi đam mê đây.
Bài “kể chuyện xưa” trên được viết dựa trên kinh nghiệm mình từng trải qua, hy vọng sẽ giúp bạn có thêm cái nhìn về công nghệ cách đây 9 năm.
Hẹn gặp lại các bạn trong những bài viết lần sau.
Bài viết gốc được đăng tải tại phambinh.net
Có thể bạn quan tâm:
- Composition là cái chi chi
- Trước khi trở thành master về design, phải giỏi về cơ bản đã!
- Composer là gì? Quản lý các thư viện bằng composer
Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS