Kiểm tra khử mã hóa PHP
Một trong những điều thú vị về việc lưu thể hiện của một lớp là tuần tự hóa. Đối với những người không biết đây là cái quái gì, khái niệm này rất đơn giản. bạn có thể biểu diễn một thể hiện của một lớp dưới dạng một chuỗi, vì vậy bạn có thể lưu trữ ở bất kỳ đâu, sau đó khôi phục thể hiện từ cùng một chuỗi đó Show Điều này được thực hiện tự động trong PHP khi bạn sử dụng các phương thức $car = new Car(new OilEngine());FileHandler::set('class.txt', serialize($car));$sameCar = unserialize(FileHandler::get('class.txt')); Điều này rất hữu ích để lưu trữ các phiên bản để truy xuất sau này, chẳng hạn như tệp bên trong, cơ sở dữ liệu, trong bộ nhớ lưu trữ (như redis hoặc memcached) hoặc bất kỳ thứ gì chấp nhận văn bản Ví dụ: lưu một thể hiện của lớp Người dùng cùng với các thuộc tính của nó vào một Phiên, vì vậy sau khi điều này được truy xuất trong yêu cầu tiếp theo, chúng ta có thể khôi phục cùng một thể hiện Người dùng mà không cần phải lấy nó ra khỏi Cơ sở dữ liệu. Này, nó chỉ là một ví dụ Cách cũ để xử lý tuần tự hóaTrước PHP 5. 1, cách duy nhất để xử lý việc tuần tự hóa các lớp là sử dụng các phương thức $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());0 và $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());1 Cái đầu tiên phải trả về một mảng các thuộc tính phải được tuần tự hóa, cùng với việc “làm sạch” sâu khác, trước khi chuyển thể hiện sang quy trình tuần tự hóa mặc định của PHP. Cái còn lại sẽ được gọi sau khi lớp được hủy kích hoạt, điều này sẽ cho phép bạn sửa đổi phiên bản hiện tại để khôi phục những gì đã bị mất Giản dị? . Ngoài ra, có một số lưu ý khi sử dụng tuần tự hóa mặc định
Như bạn có thể thấy, chúng có vẻ phản tác dụng và khó hiểu, nhưng kể từ PHP 5. 1 thì không cần phải tính đến chúng nữa vì có một cách tốt hơn nhiều để xử lý tuần tự hóa Chào mừng có thể tuần tự hóaPHP có một giao diện tiện dụng được gọi là Serializable. Điều này chứa hai phương pháp bạn phải đặt, được gọi là $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());2 và $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());3, và chúng thay thế các lệnh gọi cũ mà không vi phạm khả năng tương thích ngược Chúng khá dễ hiểu, nhưng trong mọi trường hợp, đây là ý chính
Phương pháp $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());3 thoạt nhìn rất khó hiểu, nhưng không chùn bước. Như tài liệu đã nói, phương thức này hoạt động như một “hàm tạo”, nghĩa là lớp sẽ được khởi tạo bỏ qua phương thức $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());1. Nếu bạn cần một số phụ thuộc được đặt trong $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());2, phương thức khử mã hóa sẽ phải tìm kiếm chúng theo cách thủ công hoặc (tốt nhất là) đặt chúng khi quá trình tuần tự hóa hoàn tất $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels()); Để thiết lập các phụ thuộc, một cách hay là sử dụng setters trên thể hiện của lớp đã được khử cực tiểu bằng cách sử dụng sự trợ giúp của $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());4 của $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());3 và $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());6 của $car = unserialize(FileHandler::get('class.txt'));$car->setWheels(new Wheels());5, nếu bạn cần thứ gì đó nâng cao hơn và theo mô-đun Nhưng chúng ta đang tiến lên phía trước. Hãy tuần tự hóa một cái gì đó Sê-ri hóa và tùy chỉnh Ô tôBạn sẽ không tải về một chiếc xe hơi? . Nhìn lướt qua lớp “Xe hơi” này và bạn sẽ lưu ý rằng nó cần một Công cụ, chúng tôi cung cấp PHP 7. 4-style để đặt màu và nó đã đặt sẵn các phương thức tuần tự hóa Khi tuần tự hóa, nó sẽ thực hiện dưới dạng JSON. Trong chuỗi đó, chúng tôi sẽ đặt tên lớp Engine, nếu Engine đang bật và màu Khi nó unerializes, chúng ta sẽ giải mã chuỗi JSON. Chúng tôi sẽ tạo một công cụ mới từ tên lớp đã cho, đặt màu và khởi động công cụ nếu nó đã được khởi động Hãy kiểm tra nó trong hành động Và Voila. Không cần phải làm những điều kỳ lạ trong mã của bạn để lưu một thể hiện của lớp. Chết tiệt, bạn thậm chí có thể lưu chúng vào một thanh USB và khử chúng trong một máy tính khác. Công nghệ
|