Hello!
The past few days I've been trying to get some of our code to run on PHP
6 with unicode semantics turned on to be able to provide some
benchmarking. Ofcourse I found some BC breaking behavior, where the
following one is bringing the largest WTF factor:
<?php
$str = "hautamaekki";
var_dump( is_string( $str ) );
?>
[EMAIL PROTECTED]:/tmp$ php-6.0dev /tmp/string-test.php
bool(false)
(The reason for this is that is_string() now returns true for *binary*
strings only). I prepared a patch [1] which reverts is_string() back to
the "expected" behavior. This patch is also in line with the notes from
the PDM [2]. Andrei argued that is_string() and (string) should work on
binary strings and is_unicode() and (unicode) for "real" strings.
However I think it is a much better idea to use is_binary()/(binary) and
is_string()/(string) instead as this will not break so much code. To
illustrate this with another example that I encountered in PHPUnit2 when
trying to get our code running:
In Framework/TestSuite.php there is the following code (shortened):
public function __construct($theClass = '', $name = '') {
$argumentsValid = FALSE;
if (is_object($theClass) &&
$theClass instanceof ReflectionClass) {
$argumentsValid = TRUE;
}
else if (is_string($theClass) && $theClass !== '' &&
class_exists($theClass)) {
Which is f.e. called with (ezcTestSuite inherits the PHPUnit2 TestSuit
class):
public static function suite()
{
return new ezcTestSuite( "ezcConsoleToolsInputTest" );
}
This does not work anymore with PHP 6 as the string is now suddenly no
string anymore... highlight confusing I would say.
Can we please use is_binary()/(binary) for binary string types and
is_string()/(string) for real strings as per PDM notes?
regards,
Derick
[1] http://files.derickrethans.nl/patches/uc-is_string-2006-03-15.diff.txt
[2] http://www.php.net/~derick/meeting-notes.html#different-string-types
--
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org
--
PHP Unicode & I18N Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php