On 5/26/16, 12:48 PM, "Fleshgrinder" <p...@fleshgrinder.com> wrote:

>> 
>> Under another 5th option, the problem you state does not arise. Disallow
>> "public int $x;". Under this option you may declare $x with type int and
>> an initial value or you may declare $x without type but you may not
>> declare $x with type (nullable or not) and undefined initial value.
>> 
>> Tom
>> 
>
>This would be a valid approach too, yes. I personally would be against
>it because I do not want to initialize all my properties.
>
>  class A {
>
>    private int $x;
>
>    public function getX() {
>      if (empty($this->x)) {
>        $this->x = 42;
>      }
>      return $this->x;
>    }
>
>  }
>
>This would not yield an E_NOTICE because both isset() and empty() never
>do. This allows the attentive programmers to keep up there coding
>practices without the necessity to assign meaningless values everywhere.
>
>  class A {
>
>    /** -1 is invalid */
>    public int $x = -1;
>
>    /** 'INVALID' is invalid but empty string is allowed */
>    public string $s = 'INVALID';
>
>    /** Null byte is invalid but anything else is valid */
>    public string $welcome_to_the_c_world = '\0';
>
>  }

If you want that kind of thing, you can do it the old PHP way like this

class A {
    private ?int $x = null;
    ...


Tom



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

Reply via email to