{"id":13411438,"url":"https://github.com/andaniel05/ObjectCollection","last_synced_at":"2025-03-14T17:30:52.605Z","repository":{"id":56947631,"uuid":"69474094","full_name":"andaniel05/ObjectCollection","owner":"andaniel05","description":"Clase PHP que representa una colección de objetos de un mismo tipo.","archived":false,"fork":false,"pushed_at":"2017-01-04T15:46:09.000Z","size":6,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"v1.0","last_synced_at":"2024-11-19T21:36:35.684Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andaniel05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-28T14:54:25.000Z","updated_at":"2020-12-16T17:43:57.000Z","dependencies_parsed_at":"2022-08-21T03:10:25.529Z","dependency_job_id":null,"html_url":"https://github.com/andaniel05/ObjectCollection","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andaniel05%2FObjectCollection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andaniel05%2FObjectCollection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andaniel05%2FObjectCollection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andaniel05%2FObjectCollection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andaniel05","download_url":"https://codeload.github.com/andaniel05/ObjectCollection/tar.gz/refs/heads/v1.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243618633,"owners_count":20320269,"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":[],"created_at":"2024-07-30T20:01:13.670Z","updated_at":"2025-03-14T17:30:52.285Z","avatar_url":"https://github.com/andaniel05.png","language":"PHP","funding_links":[],"categories":["Web Development"],"sub_categories":["PHP"],"readme":"ObjectCollection\n================\n\nRepresenta una colección de objetos de un mismo tipo.\n\n## Funcionamiento interno\n\nInternamente se usa un array nativo para almacenar los elementos. En el constructor de la clase se tiene que especificar el tipo de elementos que se almacenarán. Este tipo de elementos puede ser tanto un nombre de clase como de interfaz. En el momento de insertar elementos se va a chequear que el tipo de ese nuevo elemento se corresponda con el que se especificó en el constructor de la clase, por lo que se garantiza que el array solo contendrá elementos del tipo especificado.\n\n## Requerimientos\n\nPHP 5.3+\n\n## Ejemplos de uso\n\n\nEjemplo1. Operaciones básicas con la clase.\n\n```php\n\u003c?php\n\nuse Andaniel05\\ObjectCollection\\ObjectCollection;\n\nclass Person\n{\n    public $name;\n    public $age;\n\n    public function __construct($name, $age)\n    {\n        $this-\u003ename = $name;\n        $this-\u003eage = $age;\n    }\n}\n\n$andy    = new Person('andy', 27);\n$andria  = new Person('andria', 35);\n$sonia   = new Person('sonia', 52);\n$antonio = new Person('antonio', 54);\n\n$collection = new ObjectCollection('Person');\n\n// Inserción con índices.\n$collection['andy']   = $andy;\n$collection['andria'] = $andria;\n\n// Inserción sin índices (añade al final del array).\n$collection[] = $sonia;\n$collection[] = $antonio;\n\n// Recorridos en forma de array. Hay garantía de que $person será siempre una\n// instancia de la clase Person.\nforeach ($collection as $index =\u003e $person) {\n    echo \"Index: {$key}, Name: {$person-\u003egetName()}, Age: {$person-\u003egetAge()}\\n\";\n}\n\n// Contar elementos.\necho count($collection); // Devuelve 4.\n\n// Obtener elementos.\n$andy1 = $collection['andy'];\n\n// Comprobar existencia de elementos.\necho isset($collection['andy']); // Devuelve TRUE.\n\n// Eliminar elementos.\nunset($collection['andria']);\n\n// Obtener el array de la colección.\n$array = $collection-\u003egetArray();\n\n\n```\n\nEjemplo2. Creación de un tipo de colección personalizada.\n\n```php\n\u003c?php\n\nuse Andaniel05\\ObjectCollection\\ObjectCollection;\n\n/**\n * Tipo de colección personalizada que solo admite instancias de la clase 'Person'.\n */\nclass PersonCollection extends ObjectCollection\n{\n    public function __construct()\n    {\n        parent::__construct('Person');\n    }\n}\n\n// Sobre las instancias de la clase PersonCollection se aplican las mismas\n// operaciones del ejemplo anterior.\n$collection = new PersonCollection;\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandaniel05%2FObjectCollection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandaniel05%2FObjectCollection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandaniel05%2FObjectCollection/lists"}