Bạn có thể tiết kiệm đáng kể thời gian và công sức bằng cách kết hợp các tệp — Thay vì nhập nhiều lần toàn bộ khối mã, hãy lưu mã đó vào một tệp riêng biệt và đưa vào bất cứ đâu bạn muốn bằng cách sử dụng hướng dẫn
Giả sử có một tệp tiêu đề tiêu chuẩn được gọi là tiêu đề. php như sau
Có thể xung đột sẽ phát sinh nếu bạn bao gồm cùng một tệp (thường là tệp chức năng hoặc tệp lớp) nhiều lần trong mã của bạn bằng cách sử dụng lệnh
Dưới đây là một ví dụ về câu lệnh require_once. Giả sử mã bên dưới nằm trong tệp hello. php
Và nó được bao gồm trong một tập lệnh php khác, chính. php
require 'path/to/file.php';
0Để tránh điều này, có thể sử dụng
require 'path/to/file.php';
8. Ngay cả khi được yêu cầu bao gồm lại tệp, các câu lệnh require 'path/to/file.php';
7 và require 'path/to/file.php';
8 sẽ chỉ bao gồm nó một lần, tôi. e. , nếu tệp được chỉ định đã được đưa vào câu lệnh trước đó, tệp sẽ không được đưa vào lại Trong lĩnh vực khoa học máy tính và công nghệ phần mềm, khả năng sử dụng lại và tính mô đun được coi là những nguyên tắc thiết kế quan trọng cần ghi nhớ khi xây dựng các chương trình phần mềm. Ý tưởng chính đằng sau những nguyên tắc này là viết mã theo cách không tập trung tất cả các hoạt động của nó vào một nơi. Do đó, nên chia mã của bạn thành nhiều phần nguyên tử nhỏ hơn, độc lập, có thể tái sử dụng và thay thế được. Điều này làm cho các dự án dễ dàng gỡ lỗi hơn, giảm dư thừa, tiết kiệm rất nhiều bộ nhớ và tài nguyên, đồng thời cho phép bản địa hóa, do đó cập nhật ổn định hơn
Một ví dụ rất phổ biến về điều này có thể được nhìn thấy trong bất kỳ trang web nào bạn truy cập trên internet. Hầu hết các trang web chia sẻ một cấu trúc trừu tượng rất phổ biến - mỗi trang web có một thanh điều hướng (hoặc tiêu đề), chân trang và một số nội dung giữa hai trang. Các nhà phát triển web thường sử dụng lại các thành phần như đầu trang, chân trang và nhiều thành phần khác trên tất cả các trang của trang web. Điều này có thể được thực hiện bằng cách xác định các thành phần này một lần và sử dụng (nhập/bao gồm) chúng ở mọi nơi và mọi nơi chúng ta muốn.
Ưu điểm của khả năng sử dụng lại và mô đun hóa không chỉ giới hạn ở các thành phần web - chúng ta có thể chia ngăn và sử dụng lại các lớp, hàm và biến bên ngoài một cách hiệu quả
Để có thể triển khai cài đặt mô-đun như vậy, chúng ta cần có thể đưa các tệp/mô-đun bên ngoài vào mã của mình. Các ngôn ngữ lập trình khác nhau sử dụng các cách khác nhau để nhập mô-đun. Trong bài đăng này, chúng ta sẽ xem cách chúng ta có thể nhập tệp bằng ngôn ngữ lập trình web yêu thích của mình, PHP
Chúng ta sẽ học cách sử dụng các hàm bao gồm và yêu cầu của PHP để bao gồm các tệp PHP bên ngoài vào mã của chúng ta. Điều này sẽ cho phép chúng tôi mô đun hóa dự án của mình và sử dụng lại các khối mã PHP hiện có mà không phải sao chép chúng vào tệp chính của chúng tôi. Chúng ta cũng sẽ xem xét hai biến thể của các hàm này - include_once và require_once, đồng thời xem cách chúng có thể giúp chúng ta ngăn ngừa các lỗi có thể xảy ra. Chúng ta sẽ thảo luận về nhiều ví dụ để hiểu rõ hơn về cách sử dụng các hàm này.
Đây là một phác thảo về những gì chúng tôi sẽ trình bày trong bài đăng này để bạn có thể điều hướng hướng dẫn
Bắt đầu nào
Bao gồm và yêu cầu các chức năng trong PHP
Cả hai hàm bao gồm và yêu cầu trong PHP được sử dụng để nhập các tệp/mô-đun bên ngoài vào mã của chúng tôi và đánh giá chúng tại nơi chúng đã được nhập. Điều này được thực hiện bằng cách sao chép nội dung từ tệp bên ngoài vào tệp chính của chúng tôi trong thời gian chạy
Giống như chúng tôi đã thảo luận ở trên, việc có thể đưa các tệp vào mã của chúng tôi cho phép chúng tôi mô đun hóa và tổ chức dự án của mình một cách có hệ thống - để tạo các tệp riêng biệt cho các thành phần riêng biệt trong ứng dụng của chúng tôi và kéo tất cả chúng vào mã của chúng tôi, bất cứ khi nào cần thiết. Điều này cũng có nghĩa là các thành phần được tạo một lần sau đó có thể được sử dụng lại ở bất kỳ đâu trong ứng dụng của chúng ta, giúp việc bảo trì dễ dàng hơn
Chúng ta hãy xem xét cả hai chức năng này chi tiết hơn
Ghi chú. Trong suốt phần còn lại của bài đăng này, tệp bên ngoài đề cập đến tệp sẽ được đưa vào và tệp chính đề cập đến tệp bao gồm tệp cũ
PHP bao gồm
Hàm bao gồm lấy đối số là tên của tệp (chuỗi) được bao gồm. Bạn có thể gọi hàm bằng một trong hai cách -
require 'path/to/file.php';
4hoặc
require 'path/to/file.php';
5Khi chúng tôi nhập một tệp bên ngoài vào mã của mình bằng cách sử dụng chức năng bao gồm, các câu lệnh của tệp bên ngoài được thực thi tại dòng bao gồm được gọi
Bây giờ hãy xem xét một số ví dụ sử dụng chức năng bao gồm
PHP bao gồm các ví dụ
Chúng ta sẽ bắt đầu với một ví dụ khá cơ bản -
ví dụ 1
Tại đây, chúng ta sẽ xem cách mã của tệp bên ngoài được thực thi từ tệp chính của chúng tôi khi đưa vào
Chúng tôi sẽ làm điều này bằng cách tạo một tệp my_file. php và đưa nó vào một chỉ mục. tập tin php
require 'path/to/file.php';
6Bây giờ chúng tôi sẽ đưa tệp này vào chỉ mục của chúng tôi. tập tin php
require 'path/to/file.php';
7ĐẦU RA
Như bạn có thể thấy, mã từ tệp được bao gồm (my_file. php) đã được thực thi tại dòng mà tệp đã được đưa vào
Một điều khác cần lưu ý ở đây là khi bạn bao gồm một tệp bên ngoài trong mã của mình, phạm vi biến của mã chính của bạn (tại dòng gọi hàm bao gồm) được hợp nhất với phạm vi của tệp (bên ngoài) được bao gồm. Do đó, các biến, lớp và hàm có thể truy cập được trong tệp chính (trong đó bao gồm được gọi) cũng có thể truy cập được trong tệp bên ngoài. Điều này cũng đúng ngược lại tôi. e. các biến được khai báo trong tệp bên ngoài cũng có thể truy cập được trong mã chính của bạn
ví dụ 2
Bây giờ chúng ta hãy xem một ví dụ nơi chúng ta có thể truy cập và sửa đổi trạng thái của mã chính từ một tệp bên ngoài khi đưa nó vào
tập tin của tôi. php (tệp bên ngoài mà chúng tôi sẽ đưa vào chỉ mục. php)
require 'path/to/file.php';
8mục lục. php
require 'path/to/file.php';
9ĐẦU RA
Như chúng ta có thể thấy, biến $my_var đã được xác định trong chỉ mục. php có thể được truy cập (và sửa đổi) từ tệp bên ngoài của chúng tôi. Điều này cho thấy cách phạm vi biến của tệp bên ngoài (my_file. php) được kế thừa bởi tệp chính (chỉ mục. php).
ví dụ 3
Bây giờ chúng ta hãy xem xét một ví dụ thực tế, mở rộng hơn để hiểu cách bao gồm có thể giúp chúng ta sử dụng lại các thành phần web trên một trang web.
Nếu chúng tôi tạo một trang web cơ bản, chúng tôi muốn bao gồm một thanh điều hướng có thể tái sử dụng và một thành phần chân trang nhất quán trên tất cả các trang. Hãy tạo một trang web giả với một trang web chỉ mục và một loạt các thành phần (con) khác sẽ đóng vai trò là các phần nhỏ hơn có thể tái sử dụng cho trang web của chúng ta. Sau đó, chúng tôi có thể đưa những thứ này vào trang web chỉ mục của chúng tôi. Hãy xem nó hoạt động như thế nào
Đây là những gì chúng tôi sẽ muốn trang web của chúng tôi trông như thế nào
Trước tiên hãy tạo các thành phần con như vậy - nav. php, nội dung. php và chân trang. php. mục lục. cấu trúc trang web php
điều hướng. php (thanh điều hướng)
include 'path/to/file.php';
0Nội dung. php (nội dung tùy ý)
include 'path/to/file.php';
1cuối trang. php
include 'path/to/file.php';
2Bây giờ các thành phần con của chúng ta đã sẵn sàng, hãy tạo chỉ mục. php và thêm chúng vào nó. Chúng tôi cũng sẽ thêm một số kiểu dáng CSS rất cơ bản cho mục đích trình bày
mục lục. php
include 'path/to/file.php';
3ĐẦU RA
Như bạn có thể thấy, chúng tôi đã thành công trong việc đưa các thành phần con khác nhau vào tệp chính của chúng tôi.
Tương tự, các thành phần dành cho trẻ em này (thanh điều hướng, chân trang và nội dung) có thể được sử dụng lại trong tất cả các trang web khác nhau trên toàn bộ trang web. Do đó, như đã đề cập trước đó, bất kỳ cập nhật tiềm năng nào trong một trong hai thành phần này sẽ chỉ phải được thực hiện ở một nơi, thay vì phải thực hiện các thay đổi trong tất cả các trang web sử dụng các thành phần này
Mức độ tái sử dụng và mô đun hóa này tạo ra các phương pháp mã hóa tốt và giúp các nhà phát triển web dễ dàng hơn nhiều
Bây giờ chúng ta hãy xem chức năng yêu cầu tương tự của PHP
PHP yêu cầu
Hàm require hoạt động giống như hàm include, ngoại trừ một sự khác biệt nhỏ mà chúng ta sẽ thảo luận trong phần tiếp theo
Nó cũng lấy tên của tệp được đưa vào làm đối số -
require 'path/to/file.php';
50hoặc
require 'path/to/file.php';
51Chúng ta hãy xem cách require có thể được sử dụng thông qua một ví dụ.
Ví dụ yêu cầu PHP
Trong ví dụ này, chúng tôi sẽ kế thừa một hàm được khai báo trong tệp bên ngoài vào tệp chính của chúng tôi bằng cách sử dụng yêu cầu và sau đó gọi nó
tập tin của tôi. php
require 'path/to/file.php';
52mục lục. php
require 'path/to/file.php';
53ĐẦU RA
Trong ví dụ trên, chúng ta đã thấy cách chúng ta có thể thực thi một hàm được xác định trong tệp bên ngoài từ tệp chính của mình
Bao gồm vs Yêu cầu
Như bạn có thể thấy, bao gồm và yêu cầu dường như đang hoạt động theo cùng một cách. Có một sự khác biệt quan trọng giữa hai mặc dù
Khi gọi hàm bao gồm, nếu đường dẫn của tệp được bao gồm không hợp lệ, thì nó sẽ phát ra cảnh báo PHP (E_WARNING) và phần còn lại của mã tiếp tục thực thi
Mặt khác, nếu chúng ta gọi hàm được yêu cầu và đường dẫn tệp không hợp lệ được cung cấp, lỗi nghiêm trọng PHP sẽ xuất hiện và mã của bạn kết thúc ngay tại đó. Kết quả là đoạn mã còn lại không được thực thi
Hãy cho chúng tôi xem điều này đang hoạt động thông qua một ví dụ
Đầu tiên, chúng tôi sẽ sử dụng chức năng bao gồm với đường dẫn tệp không chính xác
require 'path/to/file.php';
54ĐẦU RA
Như bạn có thể thấy, khi chúng tôi cố gắng đưa vào một đường dẫn tệp không hợp lệ, mã sẽ đưa ra cảnh báo, nhưng vẫn tiếp tục thực thi các dòng sau đó
Ghi chú. Các cảnh báo/thông báo lỗi có được hiển thị hay không tùy thuộc vào hệ thống của bạn. Vì báo cáo lỗi được bật trên hệ thống của tôi, các thông báo cảnh báo được hiển thị trong đầu ra của tôi. Tuy nhiên, trong hầu hết các trường hợp, báo cáo lỗi bị tắt theo mặc định và trong trường hợp đó, đầu ra của bạn có thể không bao gồm cảnh báo hoặc thông báo lỗi. Trong trường hợp đó, đầu ra của bạn có thể trông như thế này -
Bạn có thể định cấu hình báo cáo lỗi theo cách thủ công từ mã PHP của mình như bên dưới -
require 'path/to/file.php';
55Nếu bạn muốn biết thêm về báo cáo lỗi trong PHP, bạn có thể tham khảo bài đăng của chúng tôi về Cách bật báo cáo lỗi PHP, nơi chúng tôi nói về vấn đề này rất chi tiết.
Quay lại cách sử dụng bao gồm và yêu cầu, bây giờ hãy xem cách hoạt động của hàm to requid khi chúng ta cung cấp một đường dẫn tệp không hợp lệ
Chúng tôi sẽ sử dụng ví dụ tương tự như trên và thay thế chức năng bao gồm yêu cầu
require 'path/to/file.php';
56ĐẦU RA
Như bạn có thể thấy, một thông báo lỗi nghiêm trọng xuất hiện và mã kết thúc tại dòng có câu lệnh yêu cầu - các dòng còn lại không được thực thi
Đây là điểm khác biệt chính giữa cách bao gồm và cách yêu cầu công việc - bao gồm đưa ra cảnh báo nhưng cho phép phần còn lại của mã thực thi trong khi yêu cầu đưa ra lỗi và thoát khỏi mã của bạn ngay lập tức
Bao gồm vs Yêu cầu - Nên sử dụng cái nào?
Vì bao gồm không làm gián đoạn quá trình thực thi, nên nó có vẻ là tùy chọn tốt hơn. Điều này có thể đúng đối với các dự án cá nhân quy mô nhỏ, nơi tiền đặt cọc không quá cao. Tuy nhiên, đối với các hệ thống phần mềm quy mô lớn, sự thật phản trực giác là bạn muốn ứng dụng của mình cảnh báo mạnh mẽ hơn về bất kỳ sự không nhất quán hoặc không chính xác tiềm ẩn nào trong mã của bạn.
Một số lệnh bao gồm/yêu cầu ứng dụng của bạn có thể cực kỳ quan trọng đối với hoạt động bình thường của ứng dụng. Các thông báo cảnh báo không được chú ý (khi sử dụng bao gồm) bị mất trong các tệp nhật ký lớn có thể trở thành một vấn đề lớn hơn nhiều trong tương lai nếu không được tính đến. Bạn thà để mã của mình đột ngột xảy ra lỗi nghiêm trọng một lần hơn là để nó ảnh hưởng đến chức năng của ứng dụng khi nó được phát hành để sản xuất. Điều quan trọng là phải chấp nhận các lỗi và lỗi thoát mã này vì chúng buộc bạn phải nhận thức rõ hơn về các lỗi trong mã của mình và giúp việc gỡ lỗi dễ dàng hơn
Ví dụ, hãy nghĩ đến việc sử dụng nhầm đường dẫn cho tệp cấu hình cơ sở dữ liệu của bạn trong mã. Nếu bạn sử dụng bao gồm, cảnh báo đường dẫn không hợp lệ của bạn có thể không được chú ý và tất cả các hoạt động cơ sở dữ liệu của bạn sẽ bị ảnh hưởng lớn khi ứng dụng của bạn đi vào sản xuất. Bạn cũng có thể không biết lý do của sự cố này vì mã của bạn chạy tốt (không thoát) và có thể các cảnh báo đã bị bỏ qua. Bạn sẽ phải dành khá nhiều thời gian để gỡ lỗi trước khi biết vấn đề là gì và nó đã xảy ra ở đâu.
Do đó, một tuyên bố yêu cầu sẽ là một lựa chọn tốt hơn trong hầu hết các trường hợp như vậy. Ý tưởng cốt lõi là mặc dù lỗi có hại cho người dùng, nhưng chúng rất cần thiết cho các nhà phát triển để chú ý đến những điểm không chính xác trong mã của họ
Ngăn ngừa lỗi. Câu lệnh PHP Bao gồm_Once và Yêu cầu_Once
Khi bạn đang làm việc trên các dự án lớn, có thể đôi khi bạn vô tình đưa cùng một tệp PHP vào mã của mình nhiều lần. Điều này có thể ngay lập tức dẫn đến một lỗi nghiêm trọng nếu tệp bạn tình cờ đưa vào nhiều lần có chứa khai báo hàm hoặc khai báo lớp
Hãy xem một ví dụ để hiểu điều này tốt hơn
Đây là tệp bên ngoài có chức năng mà chúng tôi muốn đưa vào -
require 'path/to/file.php';
57Bây giờ, hãy xem điều gì sẽ xảy ra nếu chúng tôi đưa tệp này vào tệp chính của mình nhiều lần
require 'path/to/file.php';
58ĐẦU RA
Như bạn có thể thấy, một lỗi nghiêm trọng đã xảy ra vì khi chúng tôi đưa tệp vào lần thứ hai, nó sẽ cố khai báo lại một chức năng hiện có, điều này là không thể.
Ngay cả khi tệp được bao gồm không chứa chức năng, việc bao gồm nhiều tệp một lần đôi khi có thể khá kém hiệu quả.
Để giúp chúng tôi giải quyết vấn đề này, PHP cung cấp các hàm include_once và request_once có thể xử lý nhiều lần bao gồm tệp. Khi bạn sử dụng các chức năng này, chúng chỉ bao gồm bất kỳ tệp nào nếu nó chưa được bao gồm trước đó. Do đó, việc đưa vào sẽ chỉ xảy ra một lần, bất kể số lần hàm được gọi
Hãy để chúng tôi thử điều này với một ví dụ-
Chúng ta sẽ cố gắng bao gồm cùng một tệp mà chúng ta đã thấy trong ví dụ trước, nhưng lần này sử dụng hàm include_once
require 'path/to/file.php';
59ĐẦU RA
Như chúng ta có thể thấy, lần này tệp của bạn không được đưa vào lần thứ hai. Chúng tôi biết điều này vì câu lệnh in từ my_file. php chỉ được thực hiện một lần. Do đó, lỗi không xuất hiện và mã của chúng tôi không bị thoát giữa chừng
Các hàm include_once và require_once cũng trả về giá trị boolean tùy thuộc vào việc tệp đã được bao gồm trước đó hay chưa
Sự khác biệt giữa include_once và require_once giống như sự khác biệt giữa bao gồm và yêu cầu. Điều này có nghĩa là include_once sẽ chỉ đưa ra cảnh báo khi có đường dẫn tệp không hợp lệ, trong khi đó require_once sẽ báo lỗi và tạm dừng thực thi mã. Ngoài ra, cả hai chức năng đều hoạt động giống hệt nhau
Tóm tắt khái niệm
Trong bài đăng này, chúng tôi đã bắt đầu bằng cách nói về tầm quan trọng của việc viết mã được mô đun hóa và có thể tái sử dụng. Chúng ta đã học về các hàm include và require trong PHP - về cách chúng cho phép chúng ta nhập các tệp PHP khác vào mã của chúng ta. Chúng ta đã thấy, mặc dù giống nhau, nhưng các chức năng này khác nhau đáng kể về cách chúng hoạt động như thế nào khi một đối số đường dẫn tệp không hợp lệ được cung cấp. Chúng tôi đã thảo luận về sự khác biệt giữa hai loại này và nói về cách sử dụng yêu cầu có thể là một lựa chọn tốt hơn so với bao gồm. Chúng tôi cũng đã xem xét các hàm include_once và require_once - về cách chúng kiểm tra nhiều lần bao gồm tệp và cho phép bạn chỉ bao gồm bất kỳ tệp nào một lần. Trong suốt bài đăng, chúng tôi cũng đã xem xét một loạt các ví dụ để củng cố hiểu biết của chúng tôi về cách các chức năng này có thể được triển khai trên thực tế
Bây giờ bạn đã biết cách bao gồm các tệp trong mã PHP của mình, hãy tiếp tục và thử triển khai điều này trong một dự án cá nhân. Bạn có thể bắt đầu bằng cách tạo một trang web mô-đun cơ bản có các tệp khác nhau cho các thành phần web có thể tái sử dụng khác nhau như chúng tôi đã làm trong một trong các ví dụ ở trên. Sau đó, bạn có thể tạo một loạt các trang web khác nhau bao gồm (hoặc yêu cầu) các thành phần con này. Bạn cũng có thể tạo một tệp lớp tiện ích với một số chức năng mà mỗi trang trên trang web của bạn có thể sử dụng
Giữ sức khỏe, giữ an toàn và tiếp tục học tập. Mã hóa vui vẻ
Bạn có thấy bài viết này hữu ích hay thấy điều gì đó mà bạn không đồng ý hoặc nghĩ rằng cần phải cải thiện không?
Làm cách nào để đưa một tệp vào một lớp trong PHP?
PHP Bao gồm các tệp. Câu lệnh bao gồm (hoặc yêu cầu ) lấy tất cả văn bản/mã/đánh dấu tồn tại trong tệp đã chỉ định và sao chép nó vào tệp sử dụng câu lệnh bao gồm . Bao gồm các tệp rất hữu ích khi bạn muốn bao gồm cùng một PHP, HTML hoặc văn bản trên nhiều trang của một trang web.
Làm cách nào để đưa tệp vào trang PHP?
"PHP cho phép bạn bao gồm tệp để nội dung trang có thể được sử dụng lại nhiều lần. Sẽ rất hữu ích khi bao gồm các tệp khi bạn muốn áp dụng cùng một mã HTML hoặc PHP cho nhiều trang của một trang web. " Có hai cách để bao gồm tệp trong PHP. .
bao gồm 'tên tệp ';
bao gồm ('tên tệp');
Làm cách nào để bao gồm tệp PHP ở dạng HTML?
Tải lên tệp PHP .
Định cấu hình "php. ini" Tập tin. Trước tiên, hãy đảm bảo rằng PHP được định cấu hình để cho phép tải tệp lên. .
Kiểm tra xem tệp đã tồn tại chưa. Bây giờ chúng ta có thể thêm một số hạn chế. .
Kích thước tệp giới hạn. Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload". .
Loại tệp giới hạn. .
Hoàn thành tải lên tệp PHP Script
Làm cách nào để tạo một tệp lớp trong PHP?
Các khía cạnh chính của lớp PHP .
Định nghĩa một lớp với từ khóa “class” theo sau là tên của lớp
Xác định phương thức khởi tạo bằng cách sử dụng “__construct” theo sau là các đối số. Sau đó, đối tượng của lớp có thể được khởi tạo bằng cách sử dụng “Tên lớp mới (đối số_danh sách)”
Xác định các biến lớp. .
Xác định các phương thức sử dụng từ khóa “hàm”