Edit report at https://bugs.php.net/bug.php?id=61244&edit=1

 ID:                 61244
 Updated by:         cataphr...@php.net
 Reported by:        jinmoku at hotmail dot com
 Summary:            Translitrator __construct should be like create
-Status:             Open
+Status:             Wont fix
 Type:               Bug
 Package:            I18N and L10N related
 Operating System:   Windows 7
 PHP Version:        5.4.0
 Block user comment: N
 Private report:     N

 New Comment:

The reason for not exposing a public constructor is that this gives a little 
more latitude for building, in the future, a proper inheritance interface.

Factory methods are more versatile than constructors because they can return 
different class types. In the future, we may want to expose subclasses of 
Transliterator. Let's say that the transliterator 'NFD' has, in ICU, a specific 
C++ type (class) with more methods. With a factory method we can return a PHP 
class that exposes these additional C++ methods, while with a constructor we 
couldn't.


Previous Comments:
------------------------------------------------------------------------
[2012-03-02 14:02:36] jinmoku at hotmail dot com

Description:
------------
Translitrator __construct should be like create


Test script:
---------------
$trans = new Transliterator('NFD; [:Nonspacing Mark:] Remove; NFC');
echo $trans->transliterate('hé');

Expected result:
----------------
he

Actual result:
--------------
Fatal error: Call to private Transliterator::__construct() from invalid context 
in D:\www\test\index.php on line 4


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61244&edit=1

Reply via email to