Re: What do we need strict scalar type hints for?

From: Date: Wed, 04 Feb 2015 07:25:06 +0000
Subject: Re: What do we need strict scalar type hints for?
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-81777@lists.php.net to get a copy of this message
The idea of that RFC was an ability to have zero-cost assert(). DbC is a much more bigger feature, it is interesting, but requires significant work. Thanks. Dmitry. On Wed, Feb 4, 2015 at 10:11 AM, François Laupretre <francois@tekwire.net> wrote: > > De : Dmitry Stogov [mailto:dmitry@zend.com] > > Hi Yasuo, > > > > You probably talk about > > https://wiki.php.net/rfc/expectations > > I wasn't the author of idea, I just helped with thoughts and > implantation. > > I think it may be useful for PHP7. > > In accordance with Yasuo's suggestions, couldn't we consider assertions as > part of a future implementation of the wider 'design by contract' concept ? > > DbC could handle : > > - function inputs : 'smart' built-in arguments types (keeping loose > typing), constraints on possible values > - function output : accepted return types/values > - assertions anywhere in the code > > Function input/output validation would be done using built-in 'smart' > types ('string', 'numeric', 'integer', etc), and, optionally, > 'validator' > functions. These could validate any aspect about argument/return type and > value. The key point with DbC (as well as assertions) is that, as there's > no constraint on performance, validation can be very precise and can run in > userland code. > > For function input/output validation, I would extend the phpdoc syntax > (keeping compatibility with existing comments). > > Another suggestion for assertions : if we hide it in comments (something > unusual like '//@@assert(...)'), we probably don't need to define an opcode > and it can be implemented as a standard function. > > The question of whether DbC should replace or just supplement arg/return > typing remains open :). > > What I suggest, if you agree, is that, even if we don't implement the > whole DbC concept now, we could already consider assertions as being part > of it, and rename zend.assertions to zend.dbc, assert.exceptions to > dbc.exceptions, and AssertException to DbcException. > > Regards > > François > > >

« previous php.internals (#81777) next »