Việc sử dụng lớp pdo trong php là gì?
Mặc dù không có quá nhiều lý do để tạo một trình bao bọc (vì PDO đã là một trình bao bọc), nhưng vẫn có một số vấn đề có thể gây lỗi cho lập trình viên Show Vấn đề #1, dài dòng
Tuy nhiên, trong thực tế, việc thực thi nhiều lần hiếm khi được sử dụng, trong khi hầu hết các câu lệnh chuẩn bị sẵn chỉ được sử dụng để thực hiện truy vấn một lần. Kết quả là, đối với mỗi truy vấn đơn lẻ, chúng tôi buộc phải viết đi viết lại cùng một quy trình lặp đi lặp lại
Sẽ tốt hơn nếu 8 trả về câu lệnh, cho phép xâu chuỗi phương thức gọn gàng
Nhưng than ôi - 8 đang trả về một giá trị booleanDù bằng cách nào, ngay cả cách tiếp cận như vậy cũng sẽ không cần thiết trong hầu hết thời gian, vì chúng ta không cần các cuộc gọi chuẩn bị và thực hiện riêng biệt Để giải quyết sự bất tiện này, sẽ là một ý kiến hay nếu có một chức năng tương tự như Postgres' 0 để đóng gói thủ tục chuẩn bị/thực thi và trả về câu lệnhMột chức năng PDO đơn giảnGiải pháp đơn giản nhất là tạo một hàm chấp nhận một đối tượng PDO, một truy vấn SQL và một mảng tùy chọn với các tham số cho exec() và trả về một đối tượng 1
Nó sẽ phục vụ nếu mã của bạn chủ yếu là thủ tục. Do bạn có thể xâu chuỗi bất kỳ phương thức 1 nào trực tiếp vào lệnh gọi của hàm này, hầu hết các truy vấn sẽ chỉ trở thành một lớp lót
Một lớp PDO đơn giảnTuy nhiên, bước tiếp theo sẽ là tạo một lớp chứa tất cả mã kết nối PDO, cũng như hàm hữu ích 3. Lưu ý rằng vì mục đích sử dụng, lớp này chỉ có thể được sử dụng với cơ sở dữ liệu mysql
Bây giờ lớp này có thể được bao gồm trong tất cả các lớp khác dưới dạng tham số hàm tạo trong tất cả các lớp khác yêu cầu tương tác cơ sở dữ liệu. Lưu ý rằng biến PDO được đặt ở chế độ công khai. Đó là bởi vì chúng tôi sẽ cần truy cập chức năng PDO đầy đủ thông qua biến này Để sử dụng lớp này, trước tiên hãy tạo một thể hiện, như thế này
và sau đó được sử dụng giống như chức năng nhưng thay vì khá vụng về 4, chúng ta có thể viết nó thành 5
Mở rộng PDOMột cách khác để truy cập chức năng PDO đầy đủ là mở rộng đối tượng của chúng ta từ PDO Hãy mở rộng PDO và thêm một phương thức mới có tên là 3 (vì tôi thích đặt tên ngắn hơn cho các hàm thường được gọi). Ngoài ra, để thuận tiện, chúng ta có thể thêm các tùy chọn kết nối cần thiết nhất vào hàm tạo
và bây giờ chúng tôi đã có một lớp MyPDO mới hoạt động như PDO cũ theo bất kỳ cách nào tiết kiệm cho việc bổ sung một phương thức mới cho phép chúng tôi chạy một truy vấn đã chuẩn bị trong một cuộc gọi
Ngoài ra, chúng tôi chỉ bao gồm các tùy chọn cấu hình hữu ích nhất theo mặc định, mặc dù chúng có thể bị ghi đè Vấn đề #2, tính khả dụngMột vấn đề khác là tính khả dụng của phiên bản PDO. Cũng giống như bất kỳ biến nào khác, nó bị ràng buộc với phạm vi của nó và theo mặc định không có sẵn trong bất kỳ hàm hoặc phương thức nào của lớp. Có thể có cách tiếp cận để giải quyết vấn đề này. Hãy xem xét một số trong số họ Cách OOP thực sựĐể đơn giản, Dependency injection là viết tắt của việc chuyển tất cả các dịch vụ cần thiết thông qua hàm tạo của lớp Vì vậy, nếu mã của bạn là hướng đối tượng, thì bạn có thể sử dụng giải pháp lớp MyPDO ở trên, chuyển thể hiện của nó xung quanh bằng cách sử dụng hàm tạo của các lớp khác
Và sau đó sử dụng nó theo cách này 0Lưu ý rằng phương pháp này sẽ hoạt động miễn là tất cả các lớp của bạn được khởi tạo thủ công. Trong trường hợp một số lớp được khởi tạo động, bạn sẽ cần một Bộ chứa tiêm phụ thuộc, nó sẽ lưu trữ một thể hiện duy nhất của lớp kết nối cơ sở dữ liệu và đưa nó vào tất cả các lớp đã tạo nếu chúng cần Giải pháp tĩnh cho Mã hướng đối tượngNhưng trong một mã được tổ chức kém, thật khó để vượt qua phiên bản cơ sở dữ liệu theo cách này. Đối với điều này, có một sự đánh đổi giữa cách đúng đắn và một kẻ độc thân cùn. một lớp có thể trả về thể hiện của nó thông qua một hàm tĩnh 1Vì vậy, bây giờ chúng ta có thể thay đổi lớp 7 theo cách này 2Nó sẽ kém linh hoạt hơn trong trường hợp bạn sẽ cần các nhà cung cấp cơ sở dữ liệu khác nhau cho các phiên bản Người dùng khác nhau nhưng ít nhất nó đang sử dụng biến lớp 8 tập trungSingleton cùn, cho mã thủ tục của bạnNếu bạn đến đây chỉ để tìm kiếm sự thay thế cho hàm mysql_query cũ tốt sẽ được sử dụng trong mã tất cả thủ tục của mình, bạn có thể sử dụng mẫu Singleton bị coi thường 3chỉ cần đặt mã này vào tệp có tên, chẳng hạn như, 9, đặt nó ở đâu đó trong trang web của bạn và đừng quên đưa nó vào bất cứ nơi nào bạn cần cơ sở dữ liệuví dụCác ví dụ dưới đây chứng minh việc sử dụng phương pháp đơn lẻ ở trên. Mã đã sẵn sàng để sử dụng. Bạn có thể sao chép và dán mã bên dưới và chạy nó như bình thường. Chỉ cần đừng quên tạo một 'cơ sở dữ liệu. php' từ chương trên Lợi ích của PDO là gì?Chỉ polydioxanone hoặc PDO được làm từ protein và mỏng hơn sợi tóc. Theo nghiên cứu y học, chúng giúp thư giãn cơ và gân . Phản ứng của hệ thống miễn dịch đối với cơ thể nước ngoài giúp cải thiện lưu lượng máu đến khu vực này, kích thích sản xuất collagen mới trong da của bạn.
Tại sao nên sử dụng PDO thay vì MySQLi?PDO sẽ hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau, trong khi MySQLi sẽ chỉ hoạt động với cơ sở dữ liệu MySQL . Vì vậy, nếu bạn phải chuyển dự án của mình sang sử dụng cơ sở dữ liệu khác, PDO sẽ giúp quá trình này trở nên dễ dàng. Bạn chỉ phải thay đổi chuỗi kết nối và một vài truy vấn. |