is_string()

[email protected] (Derick Rethans)
Newsgroups php.i18n
Message-ID <Pine.LNX.4.62.0603150949210.3459@localhost>
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 ) );
	?>

	derick@tequila:/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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.