|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #52042 Error creating MessageFormatter object with nested tags
Submitted: 2010-06-11 01:52 UTC Modified: 2015-06-16 11:36 UTC
From: zabruska at tugamail dot pt Assigned: stas (profile)
Status: Closed Package: *Languages/Translation
PHP Version: 5.3.2 OS: Ubuntu 9.10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: zabruska at tugamail dot pt
New email:
PHP Version: OS:


 [2010-06-11 01:52 UTC] zabruska at tugamail dot pt
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


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2010-06-11 01:56 UTC] zabruska at tugamail dot pt
Escaping the tags makes no difference either
 [2010-06-11 08:15 UTC]
-Status: Open +Status: Assigned -Assigned To: +Assigned To: stas
 [2010-06-11 08:15 UTC]
Constructors definitely should throw an Exception.
 [2010-06-15 23:53 UTC]
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-15 23:53 UTC]
-Status: Assigned +Status: Bogus
 [2010-06-15 23:53 UTC]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at and the instructions on how to report
a bug at

 [2010-06-16 09:40 UTC] zabruska at tugamail dot pt
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)) {
      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...
 [2015-06-16 11:36 UTC]
-Status: Not a bug +Status: Closed
 [2015-06-16 11:36 UTC]
This is fixed in PHP 7.
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Tue Sep 26 03:01:25 2023 UTC