Re: Why does `setcookie` send header before throwing `Error` exception?

From: Date: Sun, 04 Apr 2021 23:51:12 +0000
Subject: Re: Why does `setcookie` send header before throwing `Error` exception?
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-327537@lists.php.net to get a copy of this message
> On Apr 4, 2021, at 4:39 PM, JEFFRY KILLEN <jekillen@prodigy.net> wrote: > > > >> On Apr 4, 2021, at 3:07 PM, Jair López <jair_lopez4321@hotmail.com> wrote: >> >> Sorry for the typos in my previous message. I stand corrected, it is >> >>> setcookie('name', 'value', 1, new Foo()); >> >> instead of >> >>> setcookie('name', 'value', 1, => new Foo()); >> >> and here is the fixed test file: >> --TEST-- >> setcookie() sends header before throwing Error exception >> --FILE-- >> <?php >> ob_start(); >> >> class Foo{ >> } >> >> try { >> setcookie('name', 'value', array( >> 'expires' => 1, >> 'path' => new Foo() >> )); >> } catch (\Error $e) { >> echo $e->getMessage() . "\n"; >> } >> >> var_dump(headers_list()); >> echo "Done\n"; >> ?> >> --EXPECTHEADERS-- >> >> --EXPECTF-- >> Object of class Foo could not be converted to string >> array(1) { >> [0]=> >> string(23) "X-Powered-By: PHP/8.0.3" >> } >> Done > > > Hello; > This may not make the difference but the line: >> 'path' => new Foo() > ‘path’=>needs a string, so how is ‘new foo()’ > returning a string? > > Could it be sending the header and then choking > because ‘path’ doesn’t have a valid value assignment? As a matter of fact, as you have the class def it looks like calling new foo() from within the class def would make it recursively trying to set the cookie. JK

« previous php.general (#327537) next »