PHP Sadness

Implementing all the right methods (array) still doesn't work in array functions

Some array functions, like array_key_exists, simply don't work when used on a class which implements all the right interfaces to behave as an array.

$ php -r 'class X implements ArrayAccess {
  function offsetGet($key){}
  function offsetSet($key,$value){}
  function offsetExists($key){return true;}
  function offsetUnset($key){}
  }
  $x = new X();
  var_dump(array_key_exists("a", $x));'
bool(false)

Significance: Missing Features

Language features make developers' lives easier. Often, language features are not complex for the language designers to implement (barring unnecessary complications in the internals), but can save developers hours of time. Missing language features are disrespectful to developers and encourage dirty hacks, "clever" solutions, and kludgy workarounds to achieve the desired functionality.