Làm cách nào để biết liệu hàm return() có được gọi từ bên trong tệp được bao gồm hay không. Vấn đề là include() trả về 'int 1', ngay cả khi return() không được gọi. Dưới đây là một ví dụ ...PHP - Làm thế nào tôi có thể kiểm tra xem return() có được gọi từ tệp include() 'd không?
included_file_1.php
<?php
return 1;
included_file_2.php
<?php
echo 'no return here, meep';
main.php
<?php
$ret = include('included_file_1.php');
// This file DID return a value, int 1, but include() returns this value even if return() wasn't called in the included file.
if ($ret === 1)
{
echo 'file did not return anything';
}
var_dump($ret);
$ret = include('included_file_2.php');
// The included file DID NOT return a value, but include() returns 'int 1'
if ($ret === 1)
{
echo 'file did not return anything';
}
var_dump($ret);
Chỉnh sửa: Là một giải pháp tạm thời, tôi đang thu được đầu ra từ include() (từ các câu lệnh echo/print). Nếu bất kỳ đầu ra nào được tạo ra, tôi bỏ qua giá trị trả về từ include().
Không đẹp, nhưng nó cung cấp chức năng tôi cần trong ứng dụng/khung web của tôi.
Có, nhưng nếu tập lệnh được bao gồm, hãy bao gồm() sẽ trả về giá trị được chuyển đến trả về() trong tệp được bao gồm HOẶC 'int 1' để cho biết bao gồm thành công. Vì vậy, khi include() trả về 'int 1', tôi không thể biết đó là giá trị trả về từ tệp được bao gồm hay include(). –
Vô nghĩa. Nếu bạn BIẾT rằng tệp trả về giá trị của riêng nó thì bạn có thể giả định rằng giá trị là giá trị bạn muốn nó trả về. Bao gồm sẽ không bao giờ ghi đè giá trị trả về của bạn để gửi 1 mà nó đã hoàn thành. Đây là về bạn biết chính xác những gì các tập tin của bạn làm và những giá trị đi ra khỏi chúng. Nếu bạn biết tập tin của bạn không trả lại bất cứ điều gì, sau đó giá trị luôn luôn là 1. – animuson
Animuson: Có, nhưng tôi không biết những gì các tập tin của người khác đang làm. Cũng sẽ có trường hợp cạnh mà popup sẽ phá vỡ khuôn khổ, và sẽ là một pita cho bất cứ ai khác để gỡ lỗi. –