|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2011-12-02 21:12 UTC] duke at ejoom dot com
Description:
------------
I want to discuss an improving typehint.
I propose to do typehint behaviour as following:
On the Object instance it will behave as current (emit an error).
At the array int and float it must do equivalence:
function typehint( array $array, string $string, int $int, float $float )
{}
will be equivalent to
function typehint( $array, $string, $int, $float )
{
if (is_array($array) === false) $array = (array) $array;
$string = (string) $string;
$int = (int) $int;
$float = (float) $float;
}
It will do code more readable and compact. For Zend Framework DB it will do easier typing query where escaping is based on type of var,
Isn't logical emit error on mismatching of type on int and string at PHP caused by easing change type against C or C++. So we must use it feature of PHP and do life easier ;).
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 29 08:00:01 2025 UTC |
It can be possible to use the function to delete rows in DB: function delete( array $ids ) { //some code} delete(3); //will work correct as expected. // Or delete(array(3,6));// will work. Or we would be able to use that behaviour: $object->property1 = 1; $object->property2 = 'value'; tipehind($object); //where $object converting into array.Would be also nice if its possible to add an more strict mode for functions. For example -> function test(int $int, string $string, float $float) {} behavior -> function('test', 12, "blaat") {} <-- shouldn't throw ini_set('function_strict', true); function('test', 12, "blaat") {} <-- should throw It should be really strict so if its not an int it is not valid (triple === check). Even if its an int string ("1"). What duke suggest is nice but still breaks if you do an bool (true) in an int, its casts safely to int 1. Should just throw if you put the strict mode on or maybe build some levels of strict mode. It would save me and a lot of other developers all the sanity checks.Hope we got register_typehint($name, \Closure $func) in future really tired of write something like this: function (array $dict) { if (! Lib::is_dict($dict)) throw new \InvalidArgumentException('Argument 1 should be dict'); }