Jak sprawdzić, czy funkcja return() została wywołana z dołączonego pliku. Problem polega na tym, że include() zwraca 'int 1', nawet jeśli return() nie został wywołany. Oto przykład ...PHP - Jak mogę sprawdzić, czy funkcja return() została wywołana z pliku include()?
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);
Edycja: Jako rozwiązanie tymczasowe, łapie się wyjście z include() (z instrukcji echo/print). Jeśli utworzono jakieś wyjście, ignoruję wartość zwracaną przez include().
Nie ładne, ale zapewnia funkcjonalność potrzebną w mojej aplikacji internetowej/strukturze.
Tak, ale jeśli skrypt jest włączony, funkcja include() zwróci wartość przekazaną do return() w dołączonym pliku LUB "int 1", aby wskazać pomyślne uwzględnienie. Tak więc, gdy include() zwraca "int 1", nie mogę stwierdzić, czy jest to wartość zwracana z dołączonego pliku lub include(). –
Nonsens. Jeśli wiesz, że plik zwraca jego własną wartość, możesz założyć, że wartość jest wartością, którą chcesz zwrócić. Uwzględnij nigdy nie zastąpi twojej wartości zwracanej, aby wysłać 1, że została zakończona. Chodzi o to, że wiesz dokładnie, co robią twoje pliki i jakie wartości z nich wynikają. Jeśli wiesz, że twój plik nic nie zwraca, to wartość powinna zawsze wynosić 1. – animuson
Animuson: Tak, ale nie wiem, co robią inne pliki. Pojawią się również przypadki skrajne, które wyskakują z ramek i będą pita dla każdego, kto będzie debugować. –