2014-10-08 22 views
6

Tôi đã biết rằng include_once sẽ trả lại true hoặc false dựa trên việc bao gồm tệp đó. Tôi đã đọc a question on Stackoverflow about using require_once để trả lại giá trị của bạn và in ra.Tại sao tôi không thể nhận được giá trị trả về của hàm require_once trong PHP?

Vấn đề là tôi có một dự án hiện có trong tay và bên trong tệp đó họ trả về một mảng. Tôi muốn nhận được đầu ra của require_once để xem những gì kết quả tôi đã có, nhưng tôi nhận được 1 thay vì array có chứa dữ liệu:

return array('data'=>$result_data,'error'=>null); 

Những gì tôi làm là:

$ret = require_once $this->app->config('eshopBaseDir')."fax/archive.php"; 
print_r($ret); 

Có workaround cho điều này?

+1

Bạn sẽ cần phải chạy thử nghiệm của riêng mình, nhưng trở về từ một yêu cầu là như vậy một biên tính năng này sẽ không làm tôi ngạc nhiên nếu nó không hỗ trợ mảng trả về. Nhưng đừng sợ, chỉ cần gắn mảng trong một biến toàn cầu và lấy nó sau khi yêu cầu. Sự thiếu mô đun của PHP là lợi thế của bạn trong trường hợp này. – alexis

+0

@alexis, nó hoạt động bằng cách sử dụng GLOBAL. tnx – ALH

+0

@JohnConde Điều đó không chính xác – Steve

Trả lời

10

Điều này cho biết rằng tệp đã được đưa vào thời điểm đó.

require_once sẽ trả lại giá trị boolean true nếu tệp đã được bao gồm.

Để kiểm tra xem bạn có thể thay đổi chỉ đơn giản là yêu cầu:

$ret = require $this->app->config('eshopBaseDir')."fax/archive.php"; 
print_r($ret); 

Như một bằng chứng đơn giản:

//test.php 

return array('this'=>'works the first time'); 

//index.php 

$ret = require_once 'test.php'; 
var_dump($ret);//array 
$ret2 = require_once 'test.php'; 
var_dump($ret2);//bool true 
Các vấn đề liên quan