Hướng dẫn cannot redeclare function php - không thể khai báo lại hàm php

Simpily Bạn đã khai báo một hàm hai lần .. Ví dụ:

Global.Fun.php


Index.php


Thông báo, tôi đã khai báo cùng một hàm hai lần, một trong trang global.fun.php của tôi và một lần nữa trong trang index.php ..

Nếu bạn nghi ngờ rằng một hàm hiện đang được đặt:

if [function_exists['Do_Something']]{
   echo "Function Exists"; 
}else{
   echo "Function Not Found, This name Can be used!";
}

Đây là một hướng dẫn ngắn về cách xử lý lỗi PHP sau:

Lỗi nghiêm trọng: Không thể tái lập tên chức năng [được khai báo trước đây trong /path/to/file.php:3] in /path/to/other-file.php trên dòng 9function name [previously declared in /path/to/file.php:3] in /path/to/other-file.php on line 9function name [previously declared in /path/to/file.php:3] in /path/to/other-file.php on line 9

Lỗi nghiêm trọng ở trên sẽ xuất hiện nếu mã của bạn chứa hai hoặc nhiều hàm PHP có cùng tên. Không giống như các ngôn ngữ lập trình khác như Java và C ++, PHP không hỗ trợ quá tải phương thức. Thay vào đó, bạn phải sử dụng tham số chức năng mặc định / tùy chọn.not support Method Overloading. Instead, you must use default / optional function parameters.not support Method Overloading. Instead, you must use default / optional function parameters.

Hàm đầu tiên được xác định ở đâu?

Nếu bạn đọc kỹ, bạn sẽ có thể thấy vấn đề là gì. Trong ví dụ trên, tên hàm trong câu hỏi đã được khai báo trước đây trên dòng 3 trong File.php. Điều này dẫn đến một lỗi nghiêm trọng khi chúng tôi cố gắng tạo một chức năng khác với cùng tên cùng tên trên dòng 9 trong file.php khác

Hãy xem ví dụ sau:

function test[]{
    //do something
}

function test[]{
    //do something else
}

Nếu bạn cố gắng chạy đoạn mã ở trên, một lỗi nghiêm trọng sẽ bị ném và kịch bản sẽ bị giết. Điều này là do tôi đã tạo hai chức năng riêng biệt với kiểm tra tên.test.test.

Ok, vậy làm cách nào để khắc phục lỗi này?

Việc sửa chữa phụ thuộc vào ứng dụng PHP của bạn và những gì bạn đang cố gắng đạt được.

Đổi tên chức năng khác thành một thứ khác.

Nếu bạn không cần một hàm gọi là kiểm tra, thì bạn có thể đổi tên hàm thứ hai thành một thứ khác.

Trong trường hợp trên, chúng tôi có thể làm như sau:

function test[]{
    //do something
}

function myTest[]{
    //do something
}

Như bạn có thể thấy, tôi chỉ cần đổi tên chức năng thử nghiệm thứ hai thành MyTest.test function to myTest.test function to myTest.

Kiểm tra nếu tên chức năng đã được sử dụng.

Nếu bạn thấy mình trong một tình huống mà tên hàm có thể hoặc không tồn tại, thì bạn có thể kiểm tra xem tên của hàm có được xác định không.

Một ví dụ về phương pháp này được gán cho vấn đề mà chúng tôi đã gặp ở trên:

function test[]{
    //do something
}

if[!function_exists['test']]{
    function test[]{
        //do something
    }
}

Trong đoạn mã ở trên, tôi đã sử dụng hàm function_exists để kiểm tra xem kiểm tra có tồn tại dưới dạng hàm không. Bởi vì nó tồn tại trong ví dụ trên, hàm thứ hai không bao giờ được tạo.test already exists as a function. Because it does exist in the example above, the second function is never created.test already exists as a function. Because it does exist in the example above, the second function is never created.

Lưu ý rằng các phương thức / chức năng của lớp PHP cũng phải tuân thủ theo cùng một quy tắc:

/**
 * Class called Test.
 */
class Test{

    //Function 1
    public function test[]{
        //do something
    }

    //Function 2
    protected function test[]{
        //do something
    }

}

$test = new Test[];

Nếu bạn chạy mã ở trên, nó sẽ dẫn đến lỗi sau:

Lỗi gây tử vong: Không thể kiểm tra lại :: test [] in /path/to/file.php trên dòng 14

Điều này là do một lớp PHP không thể có hai chức năng có cùng tên. Lưu ý rằng tôi đã sử dụng công khai trên hàm đầu tiên và được bảo vệ trên hàm thứ hai vì tôi muốn chứng minh khả năng hiển thị của phương pháp không quan trọng như thế nào trong trường hợp này.

Hy vọng, bạn tìm thấy hướng dẫn này để có nhiều thông tin!

Diễn đàn.modx.com đang sử dụng một dịch vụ bảo mật để bảo vệ chống lại các cuộc tấn công trực tuyến.Quá trình này là tự động.Bạn sẽ được chuyển hướng sau khi xác nhận hoàn tất. is using a security service for protection against online attacks. This process is automatic. You will be redirected once the validation is complete. is using a security service for protection against online attacks. This process is automatic. You will be redirected once the validation is complete.

ID tham chiếuĐịa chỉ IPNgày và giờ
57C0907C957E27334198BBF6F58B6870 161.117.238.201 25/10/2022 10:19 AM UTC

Được bảo vệ bởi Stackpath

  • Xin chào, cảm ơn vì một plugin tuyệt vời!

    Vì vậy, tôi đã sử dụng các đoạn trích để lấy dữ liệu từ API eBay để bao gồm các mục trên các trang WordPress của tôi.

    Tôi đã bao gồm một đoạn trích trên một trang, đã làm việc hoàn hảo.

    Trang thứ hai, không quá nhiều.Nhận lỗi 500 máy chủ khi tôi lưu trang.Nó về cơ bản là cùng một đoạn trích nhưng chỉ sử dụng một truy vấn khác cho API eBay.Đây là thông báo lỗi của tôi:

    [STDERR] PHP Fatal error: Cannot redeclare CurrencyFormat[] [previously declared in /home/public_html/wp-content/plugins/insert-php/includes/shortcodes/shortcode-php.php[52] : eval[]'d code:28] in /home/public_html/wp-content/plugins/insert-php/includes/shortcodes/shortcode-php.php[52] : eval[]'d code on line 28

    Tôi đoán rằng chức năng ‘Tiền tệ mà tôi có đang mâu thuẫn với mô hình khác?Tôi đã thử xóa chức năng đó nhưng nhận được cùng một lỗi.Bất kỳ lời khuyên?

  • Bài Viết Liên Quan

    Chủ Đề