Skip to content

Latest commit

 

History

History
39 lines (25 loc) · 1.24 KB

object_types.md

File metadata and controls

39 lines (25 loc) · 1.24 KB

Object types

object, stdClass, Foo, Bar\Baz etc. are examples of object types. These types are also valid types in PHP.

Object properties

Psalm supports specifying the properties of an object and their expected types, e.g.:

/** @param object{foo: string} $obj */
function takesObject(object $obj) : string {
    return $obj->foo;
}

takesObject((object) ["foo" => "hello"]);

Optional properties can be denoted by a trailing ?, e.g.:

/** @param object{optional?: string} */

Generic object types

Psalm supports using generic object types like ArrayObject<int, string>. Any generic object should be typehinted with appropriate @template tags.

Generators

Generator types support up to four parameters, e.g. Generator<int, string, mixed, void>:

  1. TKey, the type of the yield key - default: mixed
  2. TValue, the type of the yield value - default: mixed
  3. TSend, the type of the send() method's parameter - default: mixed
  4. TReturn, the return type of the getReturn() method - default: mixed

Generator<int> is a shorthand for Generator<mixed, int, mixed, mixed>.

Generator<int, string> is a shorthand for Generator<int, string, mixed, mixed>.