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 );