5 điều tôi không thích ở PHP

5 điều tôi không thích ở PHP

LARAVEL bạn đã viết đúng?
Giới thiệu về Nginx Cache cho các website sử dụng WordPress
【Back to basics】Lưu password của user như thế nào?

PHP là ngôn ngữ đến thời điểm này có thể coi là được sử dụng phổ biến nhất cho các website. Những ai đã từng làm việc với PHP thì sẽ thấy một số điểm khá đáng ghét như chúng ta không thể chạy những script viết cho WordPress hay Magento trên những Framework khác. Hay thậm chí là giữa các Framework hay CMS khác với nhau.

Nhưng không phải ghét PHP thì chúng ta sẽ chuyển sang một ngôn ngữ khác, lâu dần chúng ta đã quá quen với những việc đó và PHP vẫn là một trong các ngôn ngữ lập trình server đáng sử dụng nhất hiện nay. Sau đây là 5 điều mà theo tôi là khá đáng ghét ở PHP

1. Đau đầu trong việc code xen kẽ giữa các ngôn ngữ.

Khi bạn sử dụng PHP thì thách thức lớn nhất là bạn phải viết các đoạn mã HTML trong cùng một đoạn lệnh PHP. Việc kết hợp chúng với nhau là một ưu điểm lớn, nhưng nếu quá lạm dụng chúng thì nó thực sự sẽ khiến bạn đau đầu.
Khi nhìn một vào một đoạn code trong file PHP thì trông chúng có vẻ rất bình thường. Nhưng khoan, bạn sẽ tự hỏi rằng sao trong đó lại có những thẻ HTML? Điều này giống như việc bạn đang viết trên 2 tệp tin chạy trên 2 tầng khác nhau rồi kết hợp chúng lại với nhau. Như thế nó chỉ khiến cho mọi thứ loạn lên mà thôi.

2. Mê cung HTML.

Việc kết hợp ngôn ngữ đánh dấu trình duyệt và xử lí máy chủ là một sai lầm. Cũng giống như các ngôn ngữ OOP khác, PHP cũng có mô hình MVC, Model để xử lí dữ liệu, kiểm soát bố cục bởi View và bộ điều khiển logic nằm ở Controller.  Việc tuân thử mô hình này sẽ giúp mọi thứ trở lên ngăn nắp và trật tự hơn một chút. Bạn có thể tuân thủ đúng mô hình này nhưng PHP vốn sinh ra được thiết kế với mục đích kết hợp cùng HTML và bạn bắt đầu tự hỏi : “Tại sao tôi lại cần sử dụng MVC trong khi đó mình có thể làm nhanh hơn thế mà?”

3. Phong cách cá nhân ở khắp mọi nơi.

Có khi nào bạn tự hỏi khi nào thì nên sử dụng dấu (_) gạch dưới không? Phương thức base64_encode sử dụng dấu gạch dưới, nhưng urlencode thì không. Tên php_uname có dấu gạch dưới, nhưng phpversion thì không.

Trong khi tên phương thức strcmp và strcasecmp thì rất dễ phân biệt, nhưng tôi thường nhầm lẫn giữa strpos và stripos với nhau. Thế nên liệu bạn có thể nhớ nổi hết các phương thức có và không có chữ “i” đó không? Và còn vô số các phương thức khác mà liệu khi dùng bạn có nhớ được tên chính xác của nó hay dùng Google thần chưởng? (Tôi thường nhớ bằng cách dùng Google thần chưởng. Còn bạn thì sao? :D)

4. Sorting hell.

Các chức năng sắp xếp nào thực sự cần thiết? Ví dụ như Java thì có một số chức năng sắp xếp cơ bản và đơn giản. Và nếu bạn thực sự cần một thuật toán khác bạn có thể tự thêm vào, nhưng hầu hết mọi người thường chỉ sử dụng đến các tính năng cơ bản.

Trong khi đó với PHP thì nó có một dãy dài các tính năng sắp xếp như: sort, usort, uksort, array_sort (lưu ý rằng chỉ có một số sử dụng dấu “_” gạch dưới)….. Và bạn đã sẵn sàng học và ghi nhớ danh sách của nó chưa?

5. Không gian tên bị phá vỡ.

Nếu bạn muốn tạo ra chức năng của riêng bạn. Trước tiên bạn phải biết xem mình đang sử dụng PHP 5.3 hoặc phiên bản mới hơn không? Bời vì từ PHP 5.3 trở đi thì namespace chính thức được thêm vào. Nếu không chắc chắn thì phương thức của bạn sẽ trùng với một phương thức nào đó có sẵn. Lý do là trước đó thì mọi phương thức là global còn nếu bạn đang dùng PHP 5.3 ++ và muốn sử dụng namespace thì bạn hãy nên làm quen dần với dấu “\” (một trong các dấu tôi thấy xấu nhất khi sử dụng :D).

Có nhiều người không thích PHP nhưng nó vẫn được sử dụng rộng rãi là do PHP là Opensource dễ dàng tìm hiểu và sử dụng cho những người mới. Cấu  trúc code của PHP cũng khá thoải mái không có nhiều ràng buộc như Java hay C. PHP hiện nay có rất nhiều CMS hay Framework để lập trình viên dễ dàng sử dụng. Tôi đã từng trải nghiệm qua các project của các dự án đã có sẵn source và tôi cảm thấy rằng các project này ngày càng phình to ra và càng ngày càng khó kiểm soát. Nhưng không phải PHP không bao giờ được sử dụng cho các dự án lớn.  Nếu bạn là một người lập trình có kinh nghiệm bạn hoàn toàn có thể sử dụng chúng vào các dự án lớn một cách hiệu quả (như Facebook được tạo ra bằng PHP).

Vì vậy theo quan điểm của tôi thì PHP là hữu ích để bạn bắt đầu. Nhưng song song việc học các ngôn ngữ lập trình bạn nên tìm hiểu các thuật toán,  các Design Patterns, các cấu trúc trong lập trình….  để trở thành một lập trình viên giỏi.

COMMENTS