Hướng dẫn php db connection best practices - kết nối php db thực hành tốt nhất
Tôi muốn hỏi liệu thực tiễn tốt có thể có một phiên bản duy nhất của kết nối cơ sở dữ liệu hay khai báo mới mỗi lần khi chúng tôi cần? Tôi có hai thiết kế này được hiển thị dưới đây: Show
Đây là lớp cơ sở dữ liệu:
Phương pháp 1: Tiêm phụ thuộc
Vì vậy, tôi sẽ làm điều này khi tôi muốn sử dụng các lớp:
Hay các cách khác? Phương pháp 2:
Và khi tôi muốn sử dụng nó, tôi sẽ:
Phương pháp nào thích hợp hơn hoặc tốt hơn? Cung cấp một lời giải thích nếu có thể. đọc thêmHướng dẫn sử dụng PHP: Các toán tử so sánhStack Overflow: is_null () vs === Loại bỏ dấu Accent (Diacritics) Hầu hết các hướng dẫn web sẽ đề xuất sử dụng chức năng PHP 40 để loại bỏ các điều khoản. Tuy nhiên, 40 thường gặp rắc rối với đầu vào UTF-8 và đôi khi sẽ tạo ra các lỗi đáng ngạc nhiên.Trở lại đầu trang Kiểm tra xem giá trị là null hay saiSử dụng toán tử 24 để kiểm tra các giá trị sai của NULL và Boolean.Mặc dù vậy, nó là ngôn ngữ phổ biến nhất trên web hiện nay. Do lịch sử lâu dài của nó, bạn sẽ tìm thấy rất nhiều hướng dẫn về cách thực hiện những việc cơ bản như băm mật khẩu và truy cập cơ sở dữ liệu. Vấn đề là trong số năm hướng dẫn, bạn có cơ hội tốt để tìm năm cách hoàn toàn khác nhau để làm một cái gì đó. Cách nào là cách của người Viking? Có cách nào khác có lỗi tinh tế hoặc gotchas không? Nó rất khó để tìm hiểu, và bạn sẽ nảy ra trên internet để cố gắng xác định câu trả lời đúng. Đó cũng là một trong những lý do tại sao các lập trình viên PHP mới thường xuyên bị đổ lỗi cho mã xấu xí, lỗi thời hoặc không an toàn. Họ có thể giúp nó nếu kết quả đầu tiên của Google là một bài báo bốn năm dạy một phương pháp năm tuổi! Tài liệu này cố gắng giải quyết điều đó. Đó là một nỗ lực để biên dịch một tập hợp các hướng dẫn cơ bản cho những gì có thể được coi là thực tiễn tốt nhất cho các vấn đề và nhiệm vụ phổ biến và khó hiểu trong PHP. Nếu một nhiệm vụ cấp thấp có nhiều cách tiếp cận và khó hiểu trong PHP, thì nó thuộc về đây. Cái này là gìĐó là một hướng dẫn cho thấy hướng đi tốt nhất để thực hiện khi đối mặt với một trong những nhiệm vụ cấp thấp phổ biến mà lập trình viên PHP có thể gặp phải không rõ ràng vì có nhiều lựa chọn mà PHP có thể cung cấp. Ví dụ: Kết nối với cơ sở dữ liệu là một nhiệm vụ phổ biến với một lượng lớn các giải pháp có thể trong PHP, không phải tất cả chúng đều tốt, do đó, nó được đưa vào tài liệu này. Nó có một loạt các giải pháp ngắn, giới thiệu. Các ví dụ sẽ giúp bạn đứng dậy và chạy trong một môi trường cơ bản, và bạn nên thực hiện nghiên cứu của riêng mình để đưa chúng vào một cái gì đó hữu ích cho bạn. Nó chỉ ra những gì chúng tôi coi là công nghệ của PHP. Tuy nhiên, điều này có nghĩa là nếu bạn sử dụng phiên bản PHP cũ hơn, một số tính năng cần thiết để loại bỏ các giải pháp này có thể không có sẵn cho bạn. Đây là một tài liệu sống mà tôi sẽ làm hết sức mình để cập nhật khi PHP tiếp tục phát triển. Những gì đây không phải làTài liệu này không phải là một hướng dẫn PHP. Bạn nên tìm hiểu những điều cơ bản và cú pháp của ngôn ngữ ở nơi khác. Nó không phải là một hướng dẫn cho các vấn đề ứng dụng web phổ biến như lưu trữ cookie, bộ nhớ đệm, phong cách mã hóa, tài liệu, v.v. Nó không phải là một hướng dẫn bảo mật. Mặc dù nó chạm đến một số vấn đề liên quan đến bảo mật, nhưng bạn đã dự kiến sẽ thực hiện nghiên cứu của riêng mình khi bảo mật các ứng dụng PHP của bạn. Cụ thể, bạn nên xem xét cẩn thận bất kỳ giải pháp nào được đề xuất ở đây trước khi thực hiện nó. Mã của bạn, và bản sao và dán của bạn, là lỗi của riêng bạn. Nó không phải là một người ủng hộ một phong cách, mẫu hoặc khung mã hóa nhất định. Nó không phải là một người ủng hộ cho một cách nhất định để thực hiện các nhiệm vụ cấp cao như đăng ký người dùng, hệ thống đăng nhập, v.v. Nó không phải là một giải pháp tất cả và cuối cùng, cũng không phải là giải pháp duy nhất. Một số phương pháp được mô tả dưới đây có thể không phải là thứ tốt nhất cho tình huống cụ thể của bạn và có rất nhiều cách khác nhau để đạt được cùng một kết thúc. Cụ thể, các ứng dụng web tải cao có thể được hưởng lợi từ các giải pháp bí truyền hơn cho một số vấn đề này. Trở lại đầu trang Chúng ta đang sử dụng phiên bản PHP nào?Php 7.2.10-0ubuntu 0.18.04.1, được cài đặt trên Ubuntu 18.04 LTS.PHP là con rùa 100 tuổi của thế giới web. Vỏ của nó được ghi với một lịch sử phong phú, phức tạp và ngớ ngẩn. Trong một môi trường lưu trữ chung, cấu hình của nó có thể hạn chế những gì bạn có thể làm. Để giữ lại một phế liệu của sự tỉnh táo, chúng tôi sẽ tập trung vào chỉ một phiên bản của PHP: PHP 7.2.10-0ubuntu0.18.04.1. Đây là phiên bản của PHP bạn sẽ nhận được nếu bạn cài đặt nó bằng APT-Get trên máy chủ Ubuntu 18.04 LTS. Nói cách khác, nó có mặc định lành mạnh được sử dụng bởi nhiều người.PHP 7.2.10-0ubuntu0.18.04.1. This is the version of PHP you’ll get if you install it using apt-get on an Ubuntu 18.04 LTS server. In other words, it’s the sane default used by many. Bạn có thể thấy rằng một số giải pháp này hoạt động trên các phiên bản PHP khác nhau hoặc cũ hơn. Nếu đó là trường hợp, thì bạn sẽ nghiên cứu ý nghĩa của các lỗi tinh tế hoặc các vấn đề bảo mật trong các phiên bản cũ này. Trở lại đầu trang Chúng ta đang sử dụng phiên bản PHP nào?Php 7.2.10-0ubuntu 0.18.04.1, được cài đặt trên Ubuntu 18.04 LTS.PHP là con rùa 100 tuổi của thế giới web. Vỏ của nó được ghi với một lịch sử phong phú, phức tạp và ngớ ngẩn. Trong một môi trường lưu trữ chung, cấu hình của nó có thể hạn chế những gì bạn có thể làm. Để giữ lại một phế liệu của sự tỉnh táo, chúng tôi sẽ tập trung vào chỉ một phiên bản của PHP: PHP 7.2.10-0ubuntu0.18.04.1. Đây là phiên bản của PHP bạn sẽ nhận được nếu bạn cài đặt nó bằng APT-Get trên máy chủ Ubuntu 18.04 LTS. Nói cách khác, nó có mặc định lành mạnh được sử dụng bởi nhiều người. Bạn có thể thấy rằng một số giải pháp này hoạt động trên các phiên bản PHP khác nhau hoặc cũ hơn. Nếu đó là trường hợp, thì bạn sẽ nghiên cứu ý nghĩa của các lỗi tinh tế hoặc các vấn đề bảo mật trong các phiên bản cũ này.Lưu trữ mật khẩuSử dụng các hàm băm mật khẩu tích hợp với băm và so sánh mật khẩu.
đọc thêm
Trở lại đầu trang Kết nối và truy vấn cơ sở dữ liệu MySQLSử dụng PDO và chức năng tuyên bố đã chuẩn bị của nó.Có nhiều cách để kết nối với cơ sở dữ liệu MySQL trong PHP. PDO (Đối tượng dữ liệu PHP) là mới nhất và mạnh mẽ nhất trong số chúng. PDO có giao diện nhất quán trên nhiều loại cơ sở dữ liệu khác nhau, sử dụng phương pháp hướng đối tượng và hỗ trợ nhiều tính năng được cung cấp bởi cơ sở dữ liệu mới hơn. Bạn nên sử dụng các chức năng tuyên bố đã chuẩn bị PDO để giúp ngăn ngừa các cuộc tấn công tiêm SQL. Sử dụng chức năng Thí dụ________số 8Gotchas
đọc thêm
Trở lại đầu trang Kết nối và truy vấn cơ sở dữ liệu MySQLSử dụng PDO và chức năng tuyên bố đã chuẩn bị của nó.Có nhiều cách để kết nối với cơ sở dữ liệu MySQL trong PHP. PDO (Đối tượng dữ liệu PHP) là mới nhất và mạnh mẽ nhất trong số chúng. PDO có giao diện nhất quán trên nhiều loại cơ sở dữ liệu khác nhau, sử dụng phương pháp hướng đối tượng và hỗ trợ nhiều tính năng được cung cấp bởi cơ sở dữ liệu mới hơn. Bạn nên sử dụng các chức năng tuyên bố đã chuẩn bị PDO để giúp ngăn ngừa các cuộc tấn công tiêm SQL. Sử dụng chức năng Thí dụ ________số 8 Gotchas
đọc thêm
Trở lại đầu trang Kết nối và truy vấn cơ sở dữ liệu MySQLSử dụng PDO và chức năng tuyên bố đã chuẩn bị của nó.Có nhiều cách để kết nối với cơ sở dữ liệu MySQL trong PHP. PDO (Đối tượng dữ liệu PHP) là mới nhất và mạnh mẽ nhất trong số chúng. PDO có giao diện nhất quán trên nhiều loại cơ sở dữ liệu khác nhau, sử dụng phương pháp hướng đối tượng và hỗ trợ nhiều tính năng được cung cấp bởi cơ sở dữ liệu mới hơn. Bạn nên sử dụng các chức năng tuyên bố đã chuẩn bị PDO để giúp ngăn ngừa các cuộc tấn công tiêm SQL. Sử dụng chức năng Thí dụ________số 8đọc thêm
Trở lại đầu trang Kết nối và truy vấn cơ sở dữ liệu MySQLSử dụng PDO và chức năng tuyên bố đã chuẩn bị của nó.Có nhiều cách để kết nối với cơ sở dữ liệu MySQL trong PHP. PDO (Đối tượng dữ liệu PHP) là mới nhất và mạnh mẽ nhất trong số chúng. PDO có giao diện nhất quán trên nhiều loại cơ sở dữ liệu khác nhau, sử dụng phương pháp hướng đối tượng và hỗ trợ nhiều tính năng được cung cấp bởi cơ sở dữ liệu mới hơn. Bởi vì các chuỗi được trích dẫn kép được đánh giá tại thời điểm chạy, lý thuyết là việc sử dụng các chuỗi được trình duyệt một lần sẽ cải thiện hiệu suất vì PHP won đã phải đánh giá từng chuỗi. Mặc dù điều này có thể đúng ở một quy mô nhất định, nhưng đối với ứng dụng thực tế trung bình, sự khác biệt rất nhỏ đến nỗi nó không thực sự quan trọng. Vì vậy, đối với một ứng dụng trung bình, nó không quan trọng những gì bạn chọn. Đối với các ứng dụng cực kỳ tải, nó có thể quan trọng một chút. Đưa ra lựa chọn tùy thuộc vào những gì ứng dụng của bạn cần, nhưng bất cứ điều gì bạn chọn, hãy nhất quán. đọc thêm
Trở lại đầu trang db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 so với db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 2Sử dụng db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 trừ khi khả năng đọc, hằng số lớp hoặc tối ưu hóa vi mô là mối quan tâm.Theo truyền thống trong PHP, bạn sẽ xác định các hằng số bằng cách sử dụng hàm 1. Nhưng tại một số điểm PHP đã đạt được khả năng cũng khai báo các hằng số với từ khóa 2. Bạn nên sử dụng cái nào khi xác định hằng số của bạn?Câu trả lời nằm ở sự khác biệt nhỏ giữa hai phương pháp.
Thí dụ 7Bởi vì 1 cuối cùng là linh hoạt hơn, nó là một trong những bạn nên sử dụng để tránh đau đầu trừ khi bạn đặc biệt yêu cầu các hằng số lớp. Sử dụng 2 thường dẫn đến mã dễ đọc hơn, nhưng với chi phí linh hoạt.Bất cứ ai bạn sử dụng, hãy nhất quán! đọc thêm
Trở lại đầu trang db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 so với db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 2Sử dụng db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 trừ khi khả năng đọc, hằng số lớp hoặc tối ưu hóa vi mô là mối quan tâm.Theo truyền thống trong PHP, bạn sẽ xác định các hằng số bằng cách sử dụng hàm 1. Nhưng tại một số điểm PHP đã đạt được khả năng cũng khai báo các hằng số với từ khóa 2. Bạn nên sử dụng cái nào khi xác định hằng số của bạn?Câu trả lời nằm ở sự khác biệt nhỏ giữa hai phương pháp. đọc thêm
Trở lại đầu trang db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 so với db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 2Sử dụng db = new Database(); } //Some update and insert below here } class Employee { private $db; public function __construct() { $this->db = new Database(); } //Some update and insert below here } ?> 1 trừ khi khả năng đọc, hằng số lớp hoặc tối ưu hóa vi mô là mối quan tâm.Theo truyền thống trong PHP, bạn sẽ xác định các hằng số bằng cách sử dụng hàm 1. Nhưng tại một số điểm PHP đã đạt được khả năng cũng khai báo các hằng số với từ khóa 2. Bạn nên sử dụng cái nào khi xác định hằng số của bạn?Câu trả lời nằm ở sự khác biệt nhỏ giữa hai phương pháp. 1 định nghĩa các hằng số tại thời điểm chạy, trong khi 2 định nghĩa các hằng số tại thời điểm biên dịch. Điều này mang lại cho 2 một cạnh tốc độ rất nhẹ, nhưng không đáng lo ngại nào trừ khi bạn xây dựng phần mềm quy mô lớn. 1 đặt các hằng số trong phạm vi toàn cầu, mặc dù bạn có thể bao gồm các không gian tên trong tên liên tục của bạn. Điều đó có nghĩa là bạn có thể sử dụng 1 để xác định các hằng số lớp.
db = new Database();
}
//Some update and insert below here
}
class Employee {
private $db;
public function __construct() {
$this->db = new Database();
}
//Some update and insert below here
}
?>
db = new Database();
}
//Some update and insert below here
}
class Employee {
private $db;
public function __construct() {
$this->db = new Database();
}
//Some update and insert below here
}
?>
db = new Database();
}
//Some update and insert below here
}
class Employee {
private $db;
public function __construct() {
$this->db = new Database();
}
//Some update and insert below here
}
?>
|