Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:34432 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 71428 invoked by uid 1010); 4 Jan 2008 18:02:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 71397 invoked from network); 4 Jan 2008 18:02:24 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 4 Jan 2008 18:02:24 -0000 Authentication-Results: pb1.pair.com smtp.mail=robert@interjinn.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=robert@interjinn.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain interjinn.com from 66.11.173.122 cause and error) X-PHP-List-Original-Sender: robert@interjinn.com X-Host-Fingerprint: 66.11.173.122 unknown Received: from [66.11.173.122] ([66.11.173.122:52134] helo=blobule.interjinn.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BE/83-63281-BA47E774 for ; Fri, 04 Jan 2008 13:02:20 -0500 Received: by blobule.interjinn.com (Postfix, from userid 2000) id 749B85AD4B9; Fri, 4 Jan 2008 13:02:14 -0500 (EST) To: Sam Barrow Cc: Pierre , Marcus Boerger , Gregory Beaver , Alain Williams , internals Mailing List In-Reply-To: <1199469097.15292.162.camel@sbarrow-desktop> References: <477DB7BF.10201@chiaraquartet.net> <20080104105558.GC7861@mint.phcomp.co.uk> <477E5649.2080104@chiaraquartet.net> <1463438959.20080104182050@marcus-boerger.de> <1199468241.6629.53.camel@blobule> <1199468484.15292.156.camel@sbarrow-desktop> <1199468908.6629.58.camel@blobule> <1199469097.15292.162.camel@sbarrow-desktop> Content-Type: text/plain Content-Transfer-Encoding: 7bit Organization: InterJinn Date: Fri, 04 Jan 2008 13:02:13 -0500 Message-ID: <1199469734.6629.73.camel@blobule> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Subject: Re: [PHP-DEV] type hinting From: robert@interjinn.com (Robert Cummings) On Fri, 2008-01-04 at 12:51 -0500, Sam Barrow wrote: > On Fri, 2008-01-04 at 12:48 -0500, Robert Cummings wrote: > > On Fri, 2008-01-04 at 12:41 -0500, Sam Barrow wrote: > > > On Fri, 2008-01-04 at 12:37 -0500, Robert Cummings wrote: > > > > On Fri, 2008-01-04 at 18:23 +0100, Pierre wrote: > > > > > On Jan 4, 2008 6:20 PM, Marcus Boerger wrote: > > > > > > Hello Pierre, > > > > > > > > > > > > we never accepted this as a pro argument. Infact we often saw the > > > > > > necessaity to highlight something is optional to vote against it. We do this > > > > > > for a reason. That is we only want to support mainstream features. > > > > > > > > > > My point of view is that this feature should be a mainstream feature. > > > > > To make it optional was to lower the issues for those who don't care > > > > > about argument strictness. We did not give them this choice for the OO > > > > > strictness. > > > > > > > > IMHO, optionally inclusion of type hinting for functions/methods can > > > > only be a boon to code quality and readability. IMHO when a type hint is > > > > provided and a parameter doesn't match the type hint then I think a > > > > fatal error should occur. This forces the user of the function that has > > > > type hinting to ensure their data is of the correct type. This prevents > > > > accidental wrong data conversion. However, I see the other side of the > > > > coin too where automatic type conversion could be desirable also. > > > > Perhaps a mixed solution would be viable? > > > > > > > > > > I don't think conversion would make sense here, as PHP will > > > automatically convert the variable before you use it anyway. Hinting > > > will prevent mistakes, conversion will just try to ignore them, which is > > > what PHP does already. > > > > I think that depends on what I do with the variable. PHP doesn't know > > how I intend to use it, and if I know I want an int and I don't want to > > test for browserland garbage in my variable everytime the function is > > called, then an automatic type conversion to int for my function can > > make perfect sense. Yes, I could force the developer using my function > > to cast the parameter as an int, but I'm certain conversion in the > > engine without a userland cast is faster, and it makes it more > > convenient to the consumer of my function since they can still treat it > > like a classic function. > > Yes, but whatever you do with it (echo, store in db, etc.) PHP will > perform its default conversion routine for the variable type. You have a > point though, this is something that I've actually been debating for > some time: > > function a(int $a, cast int $b) { > > } > > $a must be an int > $b will be cast to an int Yes, that makes more sense since it brings things in line with the current semantics for array/object type hinting. > I just think this is getting a little bit too complicated. Many people > on here are resistant enough to scalar type hinting because they say > it's confusing, they'll definitely be even more resistant to something > like this. It's funny sometimes the complaints about too complicated. I mean, if people don't want to use a "complicated feature" then they shouldn't. I don't think cutting the legs out from developers who want to use said features is the solution. I mean we're all programmers around here... is it really that complicated? Required paraneter types, automatic parameter casting, and ad-hoc paramets types? :) Cheers, Rob. -- ........................................................... SwarmBuy.com - http://www.swarmbuy.com Leveraging the buying power of the masses! ...........................................................