PHP - Không Tàn Cũng Không Phế
Dành cho những bạn không biết thì PHP là một ngôn ngữ lập trình thường được sử dụng để tạo ra website. Tính đến tháng 9 năm 2021 thì có khoảng gần 80% các website trên thế giới sử dụng PHP và nó được coi là ngôn ngữ phổ biến nhất để phát triển website trên thế giới.
# Tại sao mình lại đặt tiêu đề là “PHP - Không Tàn Cũng Không Phế”?
Các bạn ngoài ngành thì mình không rõ thế nào những khá chắc các bạn trong nghề ít nhiều đã từng nghe người ta so sánh về các ngôn ngữ lập trình mà cụ thể hơn là nói về việc không nên học PHP, ngôn ngữ lập trình này này tốt hơn, ngôn ngữ lập trình kia tốt hơn, PHP có hiệu suất không cao, PHP là ngôn ngữ chết... vân vân và mây mây.
Về quan điểm cá nhân thì mỗi người sẽ có một ý kiến riêng, lập trường riêng của mình. Chúng ta không thế bảo ý kiến của họ sai còn ý kiến của mình là đúng được, cá nhân mình viết bài này là để đứng ra thanh minh, bảo vệ cho ngôn ngữ PHP. Cái ngôn ngữ mà mình đang sử dụng hằng ngày và là cần câu cơm của mình.
Phổ biến nhất trong giới PHP thì không thể không kể đến Wordpress. Nó là CMS mã nguồn mở miễn phí và có thể giúp người dùng triển khai website hay blog mà thậm chí không cần phải biết code. Theo một thống kê không rõ nguồn thì 40% Website trên thế giới này được xây dựng bằng Wordpress.
# Trải nghiệm đáng nhớ của tôi với PHP
PHP nổi tiếng hay nói đúng hơn là tai tiếng vì kiểu dữ liệu không rõ ràng của nó. Cái hồi mới tập tành với ngôn ngữ lập trình này khi đang thử việc với vị trí Lập Trình Viên tại công ty cũ (Divine Corp) mình bị vấn đề này vả lên và xuống cho mấy lần vì nó quá ảo ma mà. Sau đây nó mang kỹ thuật một chút nhé, mình có một ví dụ như sau:
<?php $a = 1; $b = '1 chiec iphone'; if ($a == $b) { echo 'true'; } else { echo 'false'; }
Theo bạn thì trong ví dụ trên sẽ trả về kết quả là gì?
Nhìn vào đoạn code trên thì ta sẽ thấy chúng đang so sánh biến $a và $b. Cụ thể hơn thì chúng đang so sánh số “1” và “1 chiec iphone”. Về lý mà nói thì số “1” không thể bằng “1 chiec iphone” nhưng kết quả ở trên là bằng nhau đấy khi bạn chạy với phiên bản PHP 7.4 đổ xuống.
Tại sao lại như vậy?
Bởi vì chúng ta đang so sánh một số nguyên với một chuỗi ký tự. Vì thế PHP sẽ tự chuyển kiểu dữ liệu của chuỗi sang số nguyên. Khi chuyển sang số nguyên thì $b sẽ có giá trị là 1. Vì thế cho nên khi so sánh với hai dấu bằng (==) nó sẽ không so sánh kiểu dữ liệu mà sẽ tự chuyển đổi kiểu và so sánh. Nên kết quả trả về vẫn là true. Bài học rút ra ở đây là nên sử dụng so sánh tuyệt đối === (3 dấu bằng) trong hầu hết các trường hợp và bạn nên chủ động chuyển đổi kiểu dữ liệu (nếu cần) trước khi so sánh chúng.
# Tôi đã khác xưa rồi
Tại thời điểm mình viết bài này thì PHP đã ra đến phiên bản 8.2 rồi. Nhanh và mạnh hơn rất nhiều so với các phiên bản đàn anh đàn chị của nó trước đó. Với những ai lập trình PHP theo hướng đối tượng (OOP) thì nên khai báo kiểu dữ liệu rõ ràng cho thuộc tính, tham số cũng như các phương thức để tránh gặp tình trạng ảo ma canada như ví dụ ở trên mà mình để cập.
Hiện tại khi lập trình với PHP để đơn giản khi cài đặt và tránh gặp các vấn đề như những lỗi bảo mật phổ biến, có các tính năng sẵn có hay sử dụng thì thường người ta hay dùng Framework, có thể kể đến như Laravel, Symfony, CodeIgniter, Slim, Zend Framework,..v..v
# Lời khuyên của mình dành cho các bạn đã, đang và sẽ theo đuổi PHP
# Tôi đã khác xưa rồi
Tại thời điểm mình viết bài này thì PHP đã ra đến phiên bản 8.2 rồi. Nhanh và mạnh hơn rất nhiều so với các phiên bản đàn anh đàn chị của nó trước đó. Với những ai lập trình PHP theo hướng đối tượng (OOP) thì nên khai báo kiểu dữ liệu rõ ràng cho thuộc tính, tham số cũng như các phương thức để tránh gặp tình trạng ảo ma canada như ví dụ ở trên mà mình để cập.
Hiện tại khi lập trình với PHP để đơn giản khi cài đặt và tránh gặp các vấn đề như những lỗi bảo mật phổ biến, có các tính năng sẵn có hay sử dụng thì thường người ta hay dùng Framework, có thể kể đến như Laravel, Symfony, CodeIgniter, Slim, Zend Framework,..v..v
# Lời khuyên của mình dành cho các bạn đã, đang và sẽ theo đuổi PHP
Trước khi bạn có thể tìm hiểu các khía cạnh phức tạp hơn của PHP, thì các bạn nên có kiến thức cơ bản về ngôn ngữ lập trình này. Bắt đầu với các khái niệm căn bản như biến, hàm, mảng, vòng lặp, điều kiện, hằng số, class và object. Tiếp theo đó là tìm hiểu và học các framework phổ biến như Laravel, Symfony, CodeIgniter, Yii, CakePHP và Zend. Các framework này cung cấp các tính năng và thư viện tiện ích giúp bạn phát triển ứng dụng PHP một cách nhanh chóng và hiệu quả hơn. Các bạn cũng có thể đọc mã nguồn của những framework này để học hỏi cách mà họ viết cũng như triển khai code.
Học các công cụ phát triển phần mềm như Git, Composer, PHPUnit, Xdebug, Docker và các IDE phổ biến như VS Code, PhpStorm, NetBeans, Eclipse và Sublime Text. Tìm hiểu về các khái niệm liên quan đến web như HTTP, RESTful API, JSON, AJAX, HTML, CSS, JavaScript là rất quan trọng đối với việc phát triển ứng dụng web sử dụng PHP, tuy là nó có hơi dính dáng đến Front End một chút. Học về cơ sở dữ liệu như MySQL, PostgreSQL và MongoDB,..v..v.. Tìm hiểu cách sử dụng SQL để truy vấn cơ sở dữ liệu và học về các khái niệm như transaction, indexing và normalization..v..v
Thực hành là cách tốt nhất để củng cố kiến thức và phát triển kỹ năng. Hãy tham gia các dự án mã nguồn mở, hoặc tự tạo các dự án thực tế để ứng dụng kiến thức của mình. Với sự phát triển liên tục của công nghệ, hãy luôn cập nhật kiến thức của mình bằng cách đọc sách, blogs, tham gia các khóa học và thảo luận với cộng đồng lập trình viên PHP. Kiến thức thì không bao giờ có thể biết hết được, mong là bản thân mình cũng như các bạn sẽ còn học, học nữa, học mãi để ta của ngày hôm nay sẽ khác với ta của ngày hôm qua. Để càng hiểu biết và càng giỏi hơn nữa trên con đường sự nghiệp của mình.
# Mô tả ngắn gọn về bản thân mình
Giới thiệu qua một chút thì mình hiện đang là Software Engineer, PHP tại Cốc Cốc. Bật mí cho các bạn một bí mật là hiện tại ở Cốc Cốc có hàng chục, thậm chí cả trăm service đang chạy bằng PHP để phục vụ cho hàng triệu user mỗi ngày. Vì thế cho nên không thế nói PHP tàn phế đâu nhé, nếu hệ thống của bạn chậm hoặc chạy không tốt thì là do cách bạn code, triển khai hệ thống không tốt mà thôi. *cười*
Feedback