Require_once trong PHP là gì?

Nếu bạn đang sử dụng tính năng bao gồm cho những thứ không bắt buộc 100% thì tính năng bao gồm sẽ vẫn hoạt động và yêu cầu sẽ phát nổ

Nếu bạn đưa vào nội dung nào đó mà bạn cho là tùy chọn, nhưng một số phần khác trong tập lệnh của bạn lại sử dụng nội dung đó, thì tập lệnh của bạn sẽ bùng nổ ở đó và có thể bạn sẽ không biết tại sao

Đây không phải là một cách hay để viết chương trình

Mặt khác, không có sự khác biệt giữa hai

chỉnh sửa

Trong cách sử dụng thông thường, việc bạn chọn sử dụng

	 
9 hay
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 không quan trọng, 95% thời gian

Như vậy, bạn nên bám vào

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 [hoặc
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2], để biết khi nào bạn thiếu tệp bạn cần

Các lỗi đến từ việc bao gồm các tệp bên trong các tệp được bao gồm, bên trong các tệp được bao gồm, khi thiếu một tệp đính kèm ở trên cùng, thực sự khó theo dõi

Một số người thích

	 
9 hơn vì họ muốn sử dụng "tính năng" đó.
Douglas Crockford là một chuyên gia về JavaScript/Java/C++, chứ không phải PHP, nhưng anh ấy gợi ý rằng nên tránh các tính năng trông giống như lỗi hoặc tác dụng phụ không thể phân biệt được với lỗi để giúp bạn tỉnh táo.

Xin lưu ý bạn, nếu toàn bộ dự án của bạn hoàn toàn dựa trên lớp [hoặc chức năng] và hoàn toàn theo mô-đun, thì bạn không nên sử dụng nhiều để bao gồm, ngoài việc đặt lại các giá trị trên đối tượng cấu hình khi khởi tạo ứng dụng [bao gồm cả quản trị viên-

Như bạn có thể đoán, có nhiều cách khác để làm điều này

Và đây chỉ là những gợi ý, nhưng những gợi ý đến từ những người thông minh hơn tôi, với hàng chục năm kinh nghiệm trong hàng chục ngôn ngữ. THAM KHẢO. Sự khác biệt giữa "bao gồm" và "yêu cầu" trong php

Câu lệnh request_once[] tự thay thế bằng tệp đã chỉ định, giống như cách #include của bộ tiền xử lý C hoạt động và về mặt đó thì tương tự như câu lệnh require[]. Sự khác biệt chính là trong chuỗi bao gồm, việc sử dụng require_once[] sẽ đảm bảo rằng mã chỉ được thêm vào tập lệnh của bạn một lần và tránh xung đột với các giá trị biến hoặc tên hàm có thể xảy ra

Ví dụ: nếu bạn tạo 2 tệp bao gồm sau utils. inc và crazyib. tập đoàn

Ví dụ 11-2. đồ dùng. tập đoàn

	 

Ví dụ 11-3. ngu xuẩn. tập đoàn

	 

Và sau đó bạn viết một đoạn script cause_error_require. php

Ví dụ 11-4. nguyên nhân_lỗi_require. php

	 

Khi bạn thử chạy cái sau, kết quả ouptut sẽ là [sử dụng PHP 4. 01pl2]

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 

Bằng cách sửa đổi crazyib. inc và nguyên nhân_errror_require. php để sử dụng require_once[] thay vì require[] và đổi tên cái cuối cùng thànhvoid_error_require_once. php, chúng tôi có

Ví dụ 11-5. ngu xuẩn. inc [cố định]

...
require_once["utils.inc"];
function showVar[$var] {
...
	 

Ví dụ 11-6. tránh_error_require_once. php

...
require_once["foolib.inc"];
require_once["utils.inc"];
$foo = array["1",array["complex","quaternion"]];
...
	 

Và khi chạy cái sau, đầu ra sẽ là [sử dụng PHP 4. 0. 1pl2]

GLOBALS ARE NICE
this is requiring globals.inc again which is also
required in foolib.inc
Running goodTea: Oolong tea tastes good!
Printing foo:
Array
[
    [0] => 1
    [1] => Array
        [
            [0] => complex
            [1] => quaternion
        ]

]
	 

Cũng lưu ý rằng, tương tự như hành vi của #include của bộ tiền xử lý C, câu lệnh này hoạt động tại "thời điểm biên dịch", e. g. khi tập lệnh được phân tích cú pháp và trước khi tập lệnh được thực thi và không được sử dụng cho các phần của tập lệnh cần được chèn động trong quá trình thực thi tập lệnh. Bạn nên sử dụng include_once[] hoặc include[] cho mục đích đó

Để biết thêm ví dụ về cách sử dụng require_once[] và include_once[], hãy xem mã PEAR có trong bản phân phối mã nguồn PHP mới nhất

Xem thêm. yêu cầu [], bao gồm [], bao gồm_once [], get_required_files [], get_included_files [], readfile [] và ảo []

Bạn có thể sẽ bắt gặp cả

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 và
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 trong các tập lệnh PHP. Hai từ khóa này gần giống nhau nhưng có điểm khác biệt chính phân biệt chúng

Khi bạn sử dụng

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0, PHP sẽ bao gồm tệp được chỉ định mỗi khi nó được gọi. Để so sánh,
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 sẽ bao gồm tệp được chỉ định một lần và bỏ qua tệp nếu nó được đề cập lại trong cùng một tập lệnh

Nếu tập lệnh không bắt buộc để tập lệnh chạy, bạn nên cân nhắc sử dụng bao gồm hoặc bao gồm_once để thay thế. Sử dụng bao gồm sẽ chỉ đưa ra cảnh báo nếu tệp được yêu cầu không tồn tại. Nếu bạn cần script bị lỗi nếu file không tồn tại thì

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 hoặc
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 là sự lựa chọn hoàn hảo

Các tệp được yêu cầu dựa trên đường dẫn được chỉ định trong câu lệnh. Nếu không có đường dẫn, nó sẽ thử sử dụng

  • Apple
  • Banana
  • Orange
4 được chỉ định trong tệp cấu hình PHP. Cuối cùng, PHP sẽ kiểm tra thư mục của tập lệnh và thư mục làm việc hiện tại là lần thử cuối cùng. Nếu PHP không thể tìm thấy tệp ở các vị trí trên, nó sẽ bị lỗi và báo lỗi

Đối với 

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 hoặc 
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2, PHP sẽ gây ra lỗi nghiêm trọng nếu tệp được chỉ định không tồn tại. Lỗi nghiêm trọng sẽ dừng thực thi tập lệnh ngăn không cho mã tiến triển. Do đó, việc sử dụng yêu cầu là hoàn hảo nếu bạn bao gồm các tệp cần thiết để thực thi tập lệnh

Nơi bạn sử dụng câu lệnh yêu cầu sẽ xác định phạm vi biến. Ví dụ: sử dụng yêu cầu bên trong một hàm sẽ có các biến của tệp chỉ khả dụng trong hàm

Khi nào sử dụng yêu cầu

Bạn sẽ muốn sử dụng

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 bất cứ khi nào bạn có thể cần bao gồm một tập lệnh nhiều lần trong toàn bộ mã của mình. Ví dụ: có thể có trường hợp bạn cần các biến hoặc đầu ra cụ thể ở những nơi khác nhau

Nếu bạn muốn tránh các sự cố trùng lặp và không muốn bao gồm tệp nhiều lần, bạn có thể sử dụng. Câu lệnh

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 sẽ đảm bảo rằng tệp chỉ được bao gồm một lần trong cùng một tập lệnh

Ví dụ dưới đây của chúng tôi sẽ cho bạn thấy cách yêu cầu hoạt động khi bạn sử dụng nó ở hai nơi khác nhau

Tệp bên dưới có tên là

  • Apple
  • Banana
  • Orange
9 và yêu cầu một tệp khác có tên là

    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0

	 
0

Dưới đây là nội dung của tệp


    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0 cần thiết để mã ở trên chạy. Tệp

    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0 phải nằm trong cùng thư mục với tệp
  • Apple
  • Banana
  • Orange
9

  • Apple
  • Banana
  • Orange

Khi bạn chạy tệp

  • Apple
  • Banana
  • Orange
9, bạn sẽ nhận được đầu ra giống hệt như ví dụ của chúng tôi bên dưới. Bạn có thể thấy rằng tệp

    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0 của chúng tôi xuất ra hai lần


    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange

Khi nào nên sử dụng require_once

Khi bạn sử dụng

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2, PHP sẽ chỉ bao gồm tệp được yêu cầu một lần trong toàn bộ tập lệnh. Do đó, việc sử dụng require_once cực kỳ quan trọng nếu bạn muốn tránh các sự cố trùng lặp, gán lại biến ngẫu nhiên, xác định lại hàm, v.v.

Bạn nên sử dụng

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 khi không cần đưa nội dung của tệp vào nhiều lần. Nó cũng hữu ích nếu bạn đang làm việc trên một tập lệnh và không chắc liệu tệp đã được đưa vào hay chưa và bạn không muốn nó được đưa vào hai lần.

Mã bên dưới dành cho tệp

  • Apple
  • Banana
  • Orange
9 của chúng tôi, nơi chúng tôi sử dụng
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 hai lần để bao gồm tệp

    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0. Ví dụ này sẽ chứng minh cách hoạt động của
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 khi được sử dụng trong cùng một tập lệnh

	 
0

Dưới đây là tệp


    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0 của chúng tôi và nằm trong cùng thư mục với tệp
  • Apple
  • Banana
  • Orange
9

  • Apple
  • Banana
  • Orange

Đầu ra của tệp

  • Apple
  • Banana
  • Orange
9 sẽ tạo ra một cái gì đó tương tự như ví dụ của chúng tôi bên dưới. Như bạn có thể thấy,
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 thứ hai không xuất tệp

    
        

My first require.

  • Apple
  • Banana
  • Orange

My Second require.

  • Apple
  • Banana
  • Orange
0 của chúng tôi vì chúng tôi đã đưa nó vào trước đó

	 
6

Sử dụng Yêu cầu với Tệp bị Thiếu

Khi bạn sử dụng yêu cầu với một tệp không tồn tại, nó sẽ dẫn đến lỗi nghiêm trọng. Trong ví dụ của chúng tôi bên dưới, chúng tôi có một thiết lập tương tự như các ví dụ trên nhưng viết sai chính tả tệp đầu tiên của chúng tôi

	 
7

Ví dụ của chúng tôi dưới đây cho thấy PHP đã gây ra một lỗi nghiêm trọng và ngăn không cho tập lệnh thực thi thêm. Bạn có thể sử dụng đầu ra này để chẩn đoán thêm vấn đề nếu cần

	 
8

Sự kết luận

Tôi hy vọng bây giờ bạn đã biết khi nào nên sử dụng

GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
0 hoặc
GLOBALS ARE NICE
GLOBALS ARE NICE

Fatal error:  Cannot redeclare causeerror[] in utils.inc on line 5
	 
2 trong mã PHP của mình. Cả hai đều cực kỳ tiện dụng để bao gồm các tệp quan trọng trong tập lệnh của bạn. Tôi cũng khuyên bạn nên xem bao gồm hoặc bao gồm nếu bạn muốn bao gồm các tệp không cần thiết cho tập lệnh của mình

Chúng tôi luôn bổ sung thêm các hướng dẫn về PHP, vì vậy hãy nhớ xem chúng nếu bạn muốn tìm hiểu thêm về mã hóa trong PHP

Nếu bạn nghĩ rằng chúng tôi có thể cải thiện hướng dẫn này, vui lòng để lại nhận xét ở cuối trang này

Sự khác biệt giữa yêu cầu và yêu cầu_một lần trong PHP là gì?

Sự khác biệt cơ bản giữa yêu cầu và yêu cầu_once là yêu cầu_once sẽ kiểm tra xem tệp đã được bao gồm hay chưa nếu nó đã được bao gồm thì nó sẽ không bao gồm tệp trong khi chức năng yêu cầu sẽ bao gồm tệp bất kể tệp đã được bao gồm hay chưa

Đâu là sự khác biệt giữa include_once[] và require_once[]?

Sự khác biệt duy nhất giữa hai là yêu cầu và chị em của nó yêu cầu_once đưa ra lỗi nghiêm trọng nếu không tìm thấy tệp, trong khi bao gồm và bao gồm chỉ hiển thị cảnh báo và tiếp tục tải phần còn lại của trang

Bao gồm và yêu cầu trong PHP là gì?

bao gồm [] Vs yêu cầu [] . Đồng thời, câu lệnh require[] tạo ra lỗi nghiêm trọng và chấm dứt tập lệnh

Sự khác biệt giữa bao gồm và bao gồm trong PHP là gì?

bao gồm một lần ¶ . Như tên gợi ý, tệp sẽ được đưa vào chỉ một lần

Chủ Đề