For me personally, I would use strict hints for private/protected methods and 
weak hints for public methods.

Regards
Thomas


Thomas Bley wrote on 15.01.2015 21:16:

> What about doing both weak and strict with two different syntaxes?
> 
> public function __construct(string $name, $age as int, $cuteness as float, 
> bool
> $evil) {
> 
> string $name // strict
> $age as int // weak
> $cuteness as float // weak
> bool $evil // strict
> 
> "as" Syntax is taken from SQL92.
> 
> Regards
> Thomas
> 
> 
> Andrea Faulds wrote on 15.01.2015 20:52:
> 
>> Hi Andrey,
>> 
>>> On 15 Jan 2015, at 19:20, Andrey Andreev <n...@devilix.net> wrote:
>>> 
>>> Consider this badly designed API:
>>> 
>>>    declare(strict_typehints=TRUE);
>>> 
>>>    const MODE_APPEND = 0;
>>>    const MODE_TRUNCATE = 1;
>>>    const MODE_PREPEND = 2;
>>> 
>>>    function write_file(string $path, int $mode, string $data)
>>>    {
>>>        // it's quite obvious
>>>    }
>>> 
>>> Somewhere else, you forget the parameters order ...
>>> 
>>>    declare(strict_typehints=FALSE);
>>> 
>>>    $path = '/important/file.dat';
>>>    $data = '1 year';
>>>    $mode = MODE_APPEND;
>>> 
>>>    write_file($path, $data, $mode);
>>> 
>>> It's a bad example - an awful (and indeed, very much useless) API,
>>> combined with an absent-minded consumer. Yet, it demonstrates how
>>> putting the caller in control *can* cause a disaster.
>> 
>> Sure, weak typing is much poorer than strict typing for error checking. Does
>> that mean the user should be prevented from having the choice?
>> 
>> Are you simply opposed to the idea of weak types in general? 
>> 
>>> What I would suggest is the '(type) $weak' vs 'type $strict' syntax
>>> that was already mentioned.
>>> 
>>> I've said this before, during the previous RFCs discussions - all of
>>> these proposals will fail, because they all suggest using the 'type
>>> $whatever' syntax and that automatically upsets the "other camp",
>>> whichever it is, but especially if the "other camp" is supporters of
>>> strict typing. That's the moment when they become opposition, while
>>> they could've otherwise not care because it's simply not their
>>> "battle". If both are proposed to co-exist in a clean way (instead of
>>> via a switch), I believe that we'll get substantially more positive
>>> opinions from both sides.
>> 
>> Both co-existing doesn’t solve anything, if anything it makes it worse.
>> 
>> People who like weak typing don’t want to have to use APIs with strict type
>> hints. If you’re like Zeev and believe it is fundamentally at odds with PHP,
>> you’ll especially dislike it.
>> 
>> People who like strict typing don’t want to have to use APIs with weak type
>> hints.
>> 
>>> 
>>> And to hell with the "consistency" argument. Since when did PHP become
>>> *that* concerned about purity and high consistency levels?
>> 
>> I don’t care if PHP is concerned about it. I am concerned about the mess
>> caused by having two or three different argument type checking modes being
>> used
>> within the same function.
>> 
>> Marco and S.A.N.:
>> 
>>> 
>>> On 15 Jan 2015, at 19:45, Marcio Almada <marcio.w...@gmail.com> wrote:
>>> 
>>> Hi,
>>> 
>>> I would like to call everyone's attention, specially people
>>> contributing directly to this RFC series, to what S.A.N just said:
>>> 
>>> > Many developers PHP offers dual syntax:
>>> >
>>> > 1. Strict
>>> > function bar(int $num){}
>>> > 
>>> > 2. Lax
>>> > function bar((int) $num){}
>>> >
>>> > Maybe it makes sense to put this option on the ballot if it passes a vote,
>>> > it will be possible to put an end to the discus?
>>> 
>>> 
>>> This idea has been **so recurrent** and yet systematically ignored by RFC
>>> owners. Why? I think that we need to baby step and try to approve coercive
>>> type declarations first and decide upon a possible stricter type check 
>>> later:
>>> 
>>> How a bout a reboot of what ircmax...@php.net already started in
>>> https://wiki.php.net/rfc/parameter_type_casting_hints for v0.3?
>>> 
>>> PS: Please, let's not fall into the mindset of "if v0.2 is not a good idea
>>> then v0.1 instantly becomes more acceptable", we still have time to try some
>>> alternatives.
>> 
>> See what I said above to Andreey.
>> 
>> This RFC doesn’t ignore having two syntaxes. It sets out to avoid the
>> nightmare that two syntaxes would cause.
>> 
>> Thanks.
>> 
>> --
>> Andrea Faulds
>> http://ajf.me/
>> 
>> 
>> 
>> 
>> 
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
> 
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to