{"id":20678872,"url":"https://github.com/phpgt/typesafegetter","last_synced_at":"2025-12-24T01:36:01.435Z","repository":{"id":43635116,"uuid":"330217652","full_name":"phpgt/TypeSafeGetter","owner":"phpgt","description":"An interface for objects that expose type-safe getter methods.","archived":false,"fork":false,"pushed_at":"2023-04-28T16:09:13.000Z","size":64,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-07T12:08:36.865Z","etag":null,"topics":["data-transfer-object","getter-functions","interface","type-safety"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phpgt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["phpgt"]}},"created_at":"2021-01-16T17:28:10.000Z","updated_at":"2022-07-01T10:18:45.000Z","dependencies_parsed_at":"2025-01-17T15:15:43.253Z","dependency_job_id":"57a2d812-3461-4973-90ed-055d882aa377","html_url":"https://github.com/phpgt/TypeSafeGetter","commit_stats":{"total_commits":20,"total_committers":1,"mean_commits":20.0,"dds":0.0,"last_synced_commit":"7c78d35f35cc6ceba364946091571e1f4ac1f0a4"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpgt%2FTypeSafeGetter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpgt%2FTypeSafeGetter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpgt%2FTypeSafeGetter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpgt%2FTypeSafeGetter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phpgt","download_url":"https://codeload.github.com/phpgt/TypeSafeGetter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242911327,"owners_count":20205474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-transfer-object","getter-functions","interface","type-safety"],"created_at":"2024-11-16T21:22:52.933Z","updated_at":"2025-12-24T01:36:01.384Z","avatar_url":"https://github.com/phpgt.png","language":"PHP","funding_links":["https://github.com/sponsors/phpgt"],"categories":[],"sub_categories":[],"readme":"An interface for objects that expose type-safe getter methods.\n==============================================================\n\nThroughout PHP.Gt repositories, wherever an object represents enclosed data, a consistent interface is used to expose the data in a type-safe manner.\n\n***\n\n\u003ca href=\"https://github.com/PhpGt/TypeSafeGetter/actions\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://badge.status.php.gt/typesafegetter-build.svg\" alt=\"Build status\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://scrutinizer-ci.com/g/PhpGt/TypeSafeGetter\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://badge.status.php.gt/typesafegetter-quality.svg\" alt=\"Code quality\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://app.codecov.io/gh/PhpGt/TypeSafeGetter\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://badge.status.php.gt/typesafegetter-coverage.svg\" alt=\"Code coverage\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/PhpGt/TypeSafeGetter\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://badge.status.php.gt/typesafegetter-version.svg\" alt=\"Current version\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.php.gt/typesafegetter\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://badge.status.php.gt/typesafegetter-docs.svg\" alt=\"PHP.Gt/TypeSafeGetter documentation\" /\u003e\n\u003c/a\u003e\n\nThe following methods are defined by this interface:\n\n+ `get(string $name):mixed` - A non-type-safe getter, used for getting keys that are not of an inbuilt type\n+ `getString(string $name):?string`\n+ `getInt(string $name):?int`\n+ `getFloat(string $name):?float`\n+ `getBool(string $name):?bool`\n+ `getDateTime(string $name):?DateTimeInterface`\n+ `getInstance(string $name, class-string\u003cT\u003e $className):?T`\n\nCommon areas you will see this interface used:\n\n+ Database rows\n+ User input (from the query string or posted form data)\n+ Session and cookie storage\n+ PHP.Gt's [DataObject](https://www.php.gt/dataobject) repository.\n\n`NullableTypeSafeGetter` trait\n------------------------------\n\nA lot of repositories within PHP.Gt that utilise this class were repeating the same getter code, so this trait was introduced to remove the repetition. All getter functions of the interface are implemented, introducing a protected helper function `getNullableType` which removes the repetition of checking null values before casting them. The `getNullableType` function also allows a callback to be passed as the type parameter, allowing more complex nullable types to be constructed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpgt%2Ftypesafegetter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphpgt%2Ftypesafegetter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpgt%2Ftypesafegetter/lists"}