GithubHelp home page GithubHelp logo

phplist's Introduction

Typed list implementation for PHP

Scrutinizer Code Quality Code Coverage

List structure PHP implementation based on Doctrine collections. Supported lists:

  • TypedList (by class name)
  • IntegerList
  • StringList
  • BooleanList
  • FloatList
  • FunctionList
  • CollectionList
  • ArrayList
  • ObjectList
  • ResourceList

Installation

composer require vehsamrak/phplist

Usage

<?php

use Vehsamrak\ListCollection\TypedList;
use Vehsamrak\ListCollection\IntegerList;

$typedList = new TypedList(Foobar::class, [new Foobar(), new Foobar()]);

$foobar = new Foobar();
$typedList->add($foobar);
$typedList->remove($foobar);

$otherType = new OtherType();
$typedList->add($otherType); // will throw InvalidTypeException

$integerList = new IntegerList();
$integerList->add(1);
$integerList->add('not a number'); // will throw InvalidTypeException

// Examples could be found in `tests` directory

// More use cases can be found in Doctrine collections documentation:
// https://www.doctrine-project.org/projects/doctrine-collections/en/latest/index.html

Creation of custom typed lists

You can create your own typed lists simply by extending TypedList.

<?php
use Vehsamrak\ListCollection\TypedList;

class CustomList extends TypedList
{
    public function __construct(array $elements = [])
    {
        parent::__construct(Custom::class, $elements);
    }
}

Testing

First, install development requirements with composer install. Then, tests could be executed with vendor/bin/phpunit tests

phplist's People

Contributors

vehsamrak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.