public function sort($key, $asc = true)
	{
		return $this->sortByCallback(function($a, $b) use ($key, $asc)
		{
			if (!isset($a->$key) || !isset($b->$key))
			{
				if (!isset($a->$key))
				{
					return ($asc) ? -1 :  1;
				}

				if (!isset($b->$key))
				{
					return ($asc) ?  1 : -1;
				}

				return 0;
			}

			if ($asc)
			{
				return strnatcmp($a->$key, $b->$key);
			}
			else
			{
				return strnatcmp($b->$key, $a->$key);
			}
		});
	}
public function sort($key, $asc = true)
	{
		return $this->sortByCallback(function($a, $b) use ($key, $asc)
		{
			if (!isset($a->$key) || !isset($b->$key))
			{
				if (!isset($a->$key))
				{
					return ($asc) ? -1 :  1;
				}

				if (!isset($b->$key))
				{
					return ($asc) ?  1 : -1;
				}

				return 0;
			}

			if ($asc)
			{
				return strnatcmp($a->$key, $b->$key);
			}
			else
			{
				return strnatcmp($b->$key, $a->$key);
			}
		});
	}
public function sort ( $ key , $ asc = true ) { return $ this -> sortByCallback ( function ( $ a , $ b ) use ( $ key , $ asc ) { if ( ! isset ( $ a -> $ key ) || ! isset ( $ b -> $ key ) ) { if ( ! isset ( $ a -> $ key ) ) { return ( $ asc ) ? - 1 : 1 ; } if ( ! isset ( $ b -> $ key ) ) { return ( $ asc ) ? 1 : - 1 ; } return 0 ; } if ( $ asc ) { return strnatcmp ( $ a -> $ key , $ b -> $ key ) ; } else { return strnatcmp ( $ b -> $ key , $ a -> $ key ) ; } } ) ; }
Sorts items by a given field and direction

@param   string  $key  The key to sort by
@param   string  $asc  Whether or not to sort asc or descending
@return  static
Sorts items by a given field and direction