On 5/26/2016 1:41 PM, Lester Caine wrote:
>>   var_dump(property_exists($g, 'x'));  // true
> 
> or array_key_exists('x', $g) in our consistent style but as has been
> pointed out we do not have a simple 'exists' ...
> $g->exists('x') ?
> along with $g->isinit('x')
> 

I like the exists() idea. :) But we might not need it.

On 5/26/2016 1:41 PM, Lester Caine wrote:
>>   var_dump($g->x);                     // null + E_NOTICE Uninitialized
>>   var_dump(is_null($g->x));            // true + E_NOTICE Uninitialized
>>   var_dump($g->x == null);             // true + E_NOTICE Uninitialized
>>   var_dump($g->x === null);            // true + E_NOTICE Uninitialized
> 
> Unless null IS the required initial value? Why should we have to
> initialize a nullable typed property explicitly?
> 

You don't have to unless null *is* the required initial value.

You are only punished with an E_NOTICE if you try to access a property
that was never initialized with anything. This would be 100% consistent
with old PHP behavior.

  $x;
  var_dump($x); // null + E_NOTICE Undefined

  $y = null;
  var_dump($y); // null

  class O {
    public $x;
    public $y = null;
  }
  $o = new O;

  var_dump($o->x); // null + E_NOTICE Undefined / Uninitialized

  var_dump($o->y); // null

Only the E_NOTICE for $o->x would be new.

On 5/26/2016 1:41 PM, Lester Caine wrote:
> I'm still stuck in the simple model of things where 'x' is expandable so
> we have the simple generic variable of old (PHP4 days) which now has
> additional attributes such as accessibility (public etc) and a few
> special cases of type filtering but is lacking a tidy way of adding the
> more useful filtering attributes such as constraints and yes typing.
> 
> properties and associative arrays are simply managed list of these
> simple variables so why do we need different functions to access them.
> Within a class isset($x) should mirror isset($this->x) and exists($x)
> makes sense along with other 'object' related functions, but is there no
> way to get back to a lot simpler consistent handling of variables ...
> and a more constructive way to add flexible type constraints.
> 

With this proposal we would not go anywhere else. We would make it more
consistent and allow the typed properties RFC to continue. Unless I
missed something in the discussion or got something wrong again. Please
correct me!

-- 
Richard "Fleshgrinder" Fussenegger

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to