I seem to remember strong typing being brought up before, and I also seem to
remember it being shot down.
The consensus seemed to be if you want a strongly-typed language, use Java.
Or C. Or C++. Or something other than PHP that has strong data typing.
Have things changed since then?
J
Ilker Cetinkaya wrote:
> i'd like to discuss with you a growing problem regarding php applications.
>
> i see the features taken into account for ze2 have been made regarding the
> needs of advanced php developers who design complete applications with php
> instead of just dumping out some dynamic content.
>
> php is ease of use because you don't have to care about important language
> needs like types.
> that makes following code possible
>
> $a = "hello u ";
> $b = 2;
> echo $a.$b;
>
> imho that is a good feature for coding simple things fast "from brain to
> keys".
> however in a more complicated and larger context, as in frameworks and
> libraries for example,
> this leads the coder to produce more code to get the things bugfree.
>
> consider a function inserting a row into a table with id and name:
>
> function ins($id, $name) {
> if (is_numeric($id) && is_string($name)) {
> // do insert
> return true;
> }
> return false;
> }
>
> through loose typing a value of $id = "1 " (note whitespace) is possible
> and insert would fail.
> no problem, extending condition to is_numeric(trim($id)) does it.
> anyways, a value of $name=444 causes failing this condition too, although
> it should be dyncasted into a string.
>
> instead consider this:
>
> bool function ins(int $id, string name) {
> //do insert
> return true;
> }
>
> and everything is right.
>
> what i want to point out is the loose vs. strong type issue - certainly
> discussed prior this post.
>
> i'd like to propose the introduction of an explicit command for ze2 to
> resolve this issue.
> as known of vb for example, explicit forces coder to explicitly declare
> variables.
> this would require to be "explicit" as a language directive or option.
>
> example:
>
> #!php --explicit (or something similar, perhaps a php.ini entry)
>
> mixed $mixed = "hello";
> string $str = "string";
> int $num = 5;
> bool $ok = false;
> array $ar;
> float $rate;
>
> bool function ins(int $id, string $name);
>
> class test {
> private bool $done; //private
> var string $name; //public;
> private object $o;
>
> string print() {
> return $name;
> }
> }
>
> object $o = new test();
> echo $o->print();
>
>
> i don't have any clue about implications regarding parsing and handling
> such explicit behaviour,
> especially considering type juggling, but juggling could be disabled when
> explicit is turned on.
>
> is there a chance to realize this ? and moreover, is this a desired,
> planned feature ?
> i'd welcome this....
>
> just my 2c;
>
> ilker
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php