Bug #71518 [Opn]: Return type hinting for resources

From: Date: Wed, 03 Feb 2016 22:57:27 +0000
Subject: Bug #71518 [Opn]: Return type hinting for resources
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-199037@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71518&edit=1 ID: 71518 User updated by: almamu at almamu dot com Reported by: almamu at almamu dot com Summary: Return type hinting for resources Status: Open Type: Bug Package: Variables related Operating System: Ubuntu 12.04 PHP Version: 7.0.2 Block user comment: N Private report: N New Comment: Whopsie, wrote a fast example and made a mistake on one of the var names. The last line of the example should be: echo htmlentities(curl_exec($res)); Although, this does not change the current result of the code as it stops at the $res declaration Previous Comments: ------------------------------------------------------------------------ [2016-02-03 22:55:39] almamu at almamu dot com Description: ------------ The return type hinting is not working as expected, in this case I want to return a "resource" (such as the ones returned by curl functions, mysql functions, etc) but PHP thinks I must return an instance of an (non-existant) "resource" class, which breaks the purpose of the return type hinting in this function, the documentation on this lacks some specific information for some php types (like mixed, object and resource), so I may be making a mistake here (and probably too much assumptions). Test script: --------------- <?php declare(strict_types=1); function prepareCURLResource(string $url) : resource { $curl = curl_init($url); curl_setopt($curl, CURLOPT_COOKIEFILE, "/tmp"); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); return $curl; } $res = prepareCURLResource("http://localhost"); echo htmlentities(curl_exec($curl)); Expected result: ---------------- The source code of the given URL (http://localhost) in this case. Actual result: -------------- [Wed Feb 03 22:46:42 2016] [warn] [client 192.168.100.2] mod_fcgid: stderr: PHP Fatal error: Uncaught TypeError: Return value of prepareCURLResource() must be an instance of resource, resource returned in /var/www/test.php:12 [Wed Feb 03 22:46:42 2016] [warn] [client 192.168.100.2] mod_fcgid: stderr: Stack trace: [Wed Feb 03 22:46:42 2016] [warn] [client 192.168.100.2] mod_fcgid: stderr: #0 /var/www/test.php(15): prepareCURLResource('http://localhost') [Wed Feb 03 22:46:42 2016] [warn] [client 192.168.100.2] mod_fcgid: stderr: #1 {main} [Wed Feb 03 22:46:42 2016] [warn] [client 192.168.100.2] mod_fcgid: stderr: thrown in /var/www/test.php on line 12 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=71518&edit=1

« previous php.bugs (#199037) next »