PHP code example of hansel23 / generic-lists

1. Go to this page and download the library: Download hansel23/generic-lists library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

hansel23 / generic-lists example snippets

  
		$list = new List( YourClass::class );
		$list->add( new YourClass() );
    
  
		class AddressList extends GenericList  
		{
			public function __construct()  
			{  
				parent::__construct( Address::class ); 
			}  
		}
    
  
	class AddressSorter implements SortsLists  
	{
		protected $sortDirection;

		/**
		 * @param int $sortDirection
		 */
		public function __construct( $sortDirection = SORT_ASC )
		{
			$this->sortDirection = $sortDirection;
		}
	
		/**
		 * @param $object1
		 * @param $object2
		 *
		 * @return int
		 */
		public function compare( $address1, $address2 )
		{
			/**
			 * @var Address $address1
			 * @var Address $address2
			 */
			if( $address1->getCity() == $address2->getCity() )
			{
				if( $address1->getStreet() == $address2->getStreet() )
				{
					return 0;
				}	
				else
				{
					$result = strcmp( $address1->getStreet(), $address2->getStreet() );
				} 
			}
			else
			{
				$result = strcmp( $address1->getCity(), $address2->getCity() );
			}

			if( $this->sortDirection === SORT_DESC )
			{
				return - ( $result );
			}
	
			return $result;
		}
	}
    

	class AnnoyingHandler
	{		
		public function sortAddresses( AddressList $addresses )
		{
			$addressSorter = new AddressSorter( SORT_DESC );
			$addresses->sortBy( $addressSorter );			
		}
	}
    

	class BeginningStreetNameFilter implements FindsItems
	{
		private $beginningStreetName;

		public function __construct( $beginningStreetName )
		{
			if( !is_string( $beginningStreetName ) )
			{
				throw new Exception( 'Street name must be a string' );
			}
			
			$this->beginningStreetName = $beginningStreetName;
		}

		public function isValid( $address )
		{
			return ( preg_match( sprintf( '!^%s!', $this->beginningStreetName ), $address->getStreet() ) );
		}
	}
    

	$beginningStreetNameFilter 	= new BeginningStreetNameFilter( 'Arlington' );

	$firstAddressFound 			= $addresses->find( $beginningStreetNameFilter );
	$lastAddressFound 			= $addresses->findLast( $beginningStreetNameFilter );
	$foundAddresses				= $addresses->findAll( $beginningStreetNameFilter );