#21725 [Opn->Ver]: return behaviour differs between include and require

From: Date: Mon, 10 Feb 2003 17:54:39 +0000
Subject: #21725 [Opn->Ver]: return behaviour differs between include and require
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-32660@lists.php.net to get a copy of this message
ID: 21725 Updated by: sniper@php.net Reported By: josh@chatgris.com -Status: Open +Status: Verified Bug Type: Scripting Engine problem Operating System: Linux -PHP Version: 4.3.0 +PHP Version: 4.3.1-dev New Comment: Simple test case: test.php: <?php var_dump(include('foo.php')); var_dump(require('foo.php')); ?> foo.php: <?php return 'foo'; ?> Running test.php outputs: string(3) "foo" UNKNOWN:0 Previous Comments: ------------------------------------------------------------------------ [2003-01-18 07:12:07] josh@chatgris.com when a return is made out of an included file (using include), the value is properly returned. However, using the require statement instead results in values not being preperly returned from a return statement in included code. Example This function currently exists in a class and works. function execQuery( &$sql, $result_status, $file, $line ) { return include( dirname( __FILE__ )."/execQuery.php" ); } This function DOES NOT WORK when I attempt the use the result it is not defined. function execQuery( &$sql, $result_status, $file, $line ) { return require( dirname( __FILE__ )."/execQuery.php" ); } This is the contents of the file it includes <?php $this->validateFileConstants( $file, $line, __FILE__, __LINE__ ); if ( !is_string( $sql ) ) { $this->{$this->log_func} ( "File: $file. Line: $line. \$sql is NOT a string. (%s, %d)",__FILE__, __LINE__ ); } if ( !is_int( $result_status ) ) { $this->{$this->log_func} ( "File: $file. Line: $line. \$sql is NOT a string. (%s, %d)", __FILE__, __LINE__ ); } if ( $this->conn == NULL ) { $this->{$this->log_func} ( "File: $file. Line: $line. \$conn not open. (%s, %d)", __FILE__, __LINE__ ); } if ( pg_result_status( $rs = pg_query ( $this->conn, $sql ) ) !== $result_status ) { /*pg_query returns false, can't use result_error.*/ $this->{$this->log_func} ( "File: $file. Line: $line. Error executing. \"%s\" (%s, %d)" , pg_last_error(), __FILE__, __LINE__ ); } return $rs; ?> This behavious is also inconsistent with tjhe document which reads that the onyl difference if a warning or Fatal Error. Josh. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21725&edit=1

« previous php.bugs (#32660) next »