Bug #52042 [Bgs]: Error creating MessageFormatter object with nested tags

From: Date: Wed, 16 Jun 2010 07:40:06 +0000
Subject: Bug #52042 [Bgs]: Error creating MessageFormatter object with nested tags
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-151520@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=52042&edit=1 ID: 52042 User updated by: zabruska at tugamail dot pt Reported by: zabruska at tugamail dot pt Summary: Error creating MessageFormatter object with nested tags Status: Bogus Type: Bug Package: *Languages/Translation Operating System: Ubuntu 9.10 PHP Version: 5.3.2 Assigned To: stas New Comment: I can understand if msgfmt_create(...) or MessageFormatter::create(...) return NULL on invalid patterns, but attempting to create any object using "new" should throw an exception. Imagine this: class MyMessageFormatter { function __construct($pattern) { if($this->badPattern($pattern)) { unset($this); return null; } } // ... } The above code makes no sense at all!!! PHP itself will compile the code, but will still give me an object. I insist that returning NULL from a constructor is a BUG, sorry... Previous Comments: ------------------------------------------------------------------------ [2010-06-15 23:53:51] stas@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php ------------------------------------------------------------------------ [2010-06-15 23:53:36] stas@php.net Use quotes to quote { inside the format string, since { is a special char for message formats. Like this: $f1 = new MessageFormatter('en_US', '\'{\'what is wrong {0} with this pattern ???\'}\''); ------------------------------------------------------------------------ [2010-06-11 08:15:19] mike@php.net Constructors definitely should throw an Exception. ------------------------------------------------------------------------ [2010-06-11 01:56:48] zabruska at tugamail dot pt Escaping the tags makes no difference either ------------------------------------------------------------------------ [2010-06-11 01:52:14] zabruska at tugamail dot pt Description: ------------ Calling msgfmt_create(...) or new MessageFormatter(...) with patterns having nested tags will return null. Apparently the same happens with empty patterns, but returning NULL from an object constructor is a SERIOUS bug. Test script: --------------- $f1 = new MessageFormatter('en_US', '{what is wrong {0} with this pattern ???}'); echo 'f1 is ', gettype($f1), PHP_EOL; $f2 = MessageFormatter::create('en_US', '{what is wrong {0} with this pattern ???}'); echo 'f2 is ', gettype($f2), PHP_EOL; $f3 = msgfmt_create('en_US', '{what is wrong {0} with this pattern ???}'); echo 'f3 is ', gettype($f3), PHP_EOL; Expected result: ---------------- f1 is object f2 is object f3 is object Actual result: -------------- f1 is NULL f2 is NULL f3 is NULL ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52042&edit=1

« previous php.bugs (#151520) next »