I have to agree that strong typing is not a good fit with PHP.  It really
limits the flexibility of the language that is, at least to me, one it its
strongest appeals.  Often, strong typing can be overly restrictive, and free
typing, when combined with good comments and documentation which should go
alongside any piece of code, allows much easier development in my
experience.

However, I do have one complaint about PHP that seems to have a tendency to
bite me far too often, and that is the lack of variable declaration.  While
I do not think the type of the variable should be required, requiring the
user to specify which variable names are going to be used I think would be
useful.  The reason why I believe this is important is in debugging.  I have
been caught many times misspelling a variable name slightly (ie -> ei), and
since PHP does no variable name checking, sometimes it takes a while to
discover the error.  If each variable name had to be declared prior to use,
it would eliminate this problem by warning the user each time an undeclared
name was used.

The syntax could be very simple using constructs that already exist in the
langauge.  The name would be defined by using the var command somewhere in
code prior to the variable being used (as in classes... but here again, the
class elements are not limited to those defined).  The declaration would
reserve only the name of the variable, so the actual type would continue to
be free form.  Arrays could continue to be created as they are now since
only the name of the variable would be checked (you could still have
potential problems in associative arrays).  Global PHP variables (ie
$GLOBALS) would not need to be declared (they would be declared
automatically).

example:

function sum_array( $input_array )
{
    var $index;
    var $sum = 0;

    for( $index = 0; $index < count( $input_array ); $index++ )
        $sum += $input_array[ $index ];

    return $sum;
}

Potentially, the $index variable could also be declared within the for loop
by adding a var before the first index as well.  To keep things simple and
in line with the current variable scope rules, the scope of the name would
be global for the function in which it was defined.

I do not know all of the logistics behind the parsing and compilation
processes in the PHP engine, but I believe this could be done without too
much overhead.  It could be an optional feature (controlled from the php.ini
file) that could be turned off when released to production to save on
performance.  If this value was defaulted to "off" in the release, it would
also allow people to upgrade existing  code to the new version without
having to worry about instantly changing their code to the new paradigm.

I do not believe that this would sacrifice very much freedom in the
language, and it would certainly make debugging and maintainence easier on
the developer.  Also, by having all of the variables declared at the top of
the functions, it could help commenting by describing the variable name as
it is being declared, and it would encourage a better coding style.

Does anyone else have any thoughts on this?


Matthew Aznoe
[EMAIL PROTECTED]

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to