00001 <?php 00002 /*************************************************************************** 00003 * Copyright (C) 2007 by Denis M. Gabaidulin * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Lesser General Public License as * 00007 * published by the Free Software Foundation; either version 3 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 ***************************************************************************/ 00011 00017 final class CropFilter implements Filtrator 00018 { 00019 private $start = 0; 00020 private $length = 0; 00021 00025 public static function create() 00026 { 00027 return new self; 00028 } 00029 00033 public function setStart($start) 00034 { 00035 Assert::isPositiveInteger($start); 00036 00037 $this->start = $start; 00038 00039 return $this; 00040 } 00041 00045 public function setLength($length) 00046 { 00047 Assert::isPositiveInteger($length); 00048 00049 $this->length = $length; 00050 00051 return $this; 00052 } 00053 00054 public function apply($value) 00055 { 00056 return 00057 $this->length 00058 ? mb_strcut($value, $this->start, $this->length) 00059 : mb_strcut($value, $this->start); 00060 } 00061 } 00062 ?>