Sự khác biệt giữa PHPv5.2 và PHPv5.3

Sự khác biệt giữa PHPv5.2 và PHPv5.3

Bài viết này mình sẽ phân biệt sự khác biệt giữa PHPv5.2 và PHPv5.3. Mình bắt đầu nhé!

Ngày 06/01/2011, các nhà nghiên cứu bảo mật cảnh báo 2 lỗ hổng “rất nghiêm trọng” trong ngôn ngữ script PHP, có thể cho phép tin tặc chiếm quyền điểu khiển máy chủ của bên thứ ba và sử dụng trình duyệt web của máy tính nạn nhân để thực thi mã “độc hại”.

Lỗ hổng ảnh hưởng tới PHP từ phiên bản 4.3.9 trở về trước, cũng như từ phiên bản PHP 5.0 RC3 trở về trước. Lỗ hổng được ký hiệu là CVE-2012-0830, do nhà tư vấn bảo mật độc lập Stefan Esser phát hiện. Ông Esser là tác giả của tiện ích mở rộng bảo mật Suhosin cho PHP.

Hiện nay, các nhà quản trị máy chủ web được khuyên nên nâng cấp lên PHP 5.3.10 ngay lập tức, vì phiên bản này đã được cập nhập vá các lỗ hổng trên.

Chính vì lý do trên, sau khi thực hiện nâng cấp máy chủ rất có thể một số website đang dùng PHP phiên bản 5.2 sẽ phát sinh lỗi, nguyên nhân là do PHP v5.2 có một vài sự khác biệt so với PHP v5.3

Sau đây là những sự khác biệt giữa PHPv5.2 và PHPv5.3 mà bạn cần lưu ý điều chỉnh cho website của mình

Các thay đổi về cú pháp

namespace có thể không còn được sử dụng như một bộ định danh nữa.

Lớp closure bây giờ là một lớp dành riêng, nhưng nó vẫn là một bộ định danh hợp lệ.

Thay đổi về các hàm và phương thức

– Trong các phiên bản trước của PHP, các hàm mảng atsort, natcasesort, usort, uasort, uksort, array_flip và array_unique chỉ duy nhất cho phép bạn chuyển các đối tượng thay cho các mảng đối với các tham số. Các hàm sau đó sẽ xử lý các thuộc tính của các đối tượng như các khoá và giá trị mảng. Điều này không còn nữa trong bản PHP v5.3, do đó bạn cần phải bố trí trước tiên các đối tượng sang các mảng. Ví dụ sau chỉ ra cách thay đổi bộ mã của bạn.

– Một số hàm mà trước đây không hỗ trợ về PHP với Windows bây giờ đã được hỗ trợ trong PHP v5.3. Ví dụ hàm getopt() được thiết kế để phân tích cú pháp các tuỳ chọn để gọi một kịch bản lệnh PHP từ dòng lệnh: inet_ntop() và inet_pton(), các hàm mã hoá và giải mã địa chỉ internet, bây giờ cũng làm việc dưới Windows®.

Có một số hàm toán học, như asinh(), acosh(), atanh(), log1p() và expm1(), nay được Windows hỗ trợ.

Các thay đổi về phần mở rộng:

FileInfo: Cung cấp các hàm giúp phát hiện kiểu nội dung và mã hoá của một tệp bằng cách xem xét một vài chuỗi ký tự byte ma thuật trong tệp.

intl: Một trình bao bọc (wrapper) cho thư viện Các thành phần Quốc tế đối với Unicode (ICU), cung cấp các hàm để hỗ trợ unicode và toàn cầu hoá.

mysqlnd: Một trình điều khiển PHP riêng để truy cập cơ sở dữ liệu MySQL mà là một sự thay thế cho bản MySQL trước và phần mở rộng MySQLi làm đòn bẩy cho thư viện leveraged libmysql.

SQLite3: Một thư viện để sử dụng các cơ sở dữ liệu SQLite v3.

ncurses: Mô phỏng về tai ương, sử dụng để hiển thị đầu ra đồ hoạ trên dòng lệnh.

fpdf: Quản lí kiến trúc và dùng các khuôn dạng và dữ liệu về khuôn dạng trong các tài liệu PDF.

dbase: Cung cấp hỗ trợ việc đọc và ghi các tệp tương thích với dbase.

fbsql: Hỗ trợ truy cập cơ sở dữ liệu cho các máy chủ cơ sở dữ liệu Frontbase.

ming: Một thư viện mã nguồn mở cho phép bạn tạo các hoạt hình flash 4.

Các mục không chấp thuận

PHP v5.3 bắt đầu chính thức không chấp thuận các hàm cũ, những cái sẽ không còn sẵn có để dùng nữa trong các phiên bản PHP sau này.

Khi bạn sử dụng các hàm này, sẽ có một lỗi E_DEPRECATED được đưa ra.

– Các hàm sau đây bị loại bỏ đối với bản PHP v5.3:

Các ngắt (declare(ticks=N) và register_tick_function() ), được thiết kế để gọi hàm sau mỗi n câu lệnh được thực hiện bởi bộ phân tích cú pháp trong khối declare(). Chúng bị loại do nhiều ngắt trong hàm của chúng và do đặc tính này không thường được sử dụng.

define_syslog_variables(), khởi tạo tất cả các biến liên quan đến syslog.

Hàm không cần vì các hằng số nó xác định đã là tổng quát. Loại bỏ đơn giản hàm này sẽ là cần thiết.

Các hàm biểu thức chính qui ereg. Bạn rất nên sử dụng các hàm biểu thức chính qui PCRE, do chúng nhanh hơn và ổn định hơn với các biểu thức chính qui được sử dụng trong các ngôn ngữ và ứng dụng khác.

Việc hỗ trợ cho các hàm ereg bị loại nên PHP có thể tiêu chuẩn hoá với bộ biểu thức chính qui.

Tóm lại bản PHP v5.3 có nhiều đặc tính mới và có một số mục đã được dọn dẹp sạch sẽ so với PHP v5.2.


Chia sẻ bài viết

Bình luận