PHP: Classe per convertire qualsiasi numero

17 Apr 2019 | M.A.D.R.

Piccola classe per convertire qualsiasi numero in lettere.

Avete mai pensato di convertire un numero, magari nelle vostre fatture, in lettere per non avere problemi? Bene oggi parliamo (più che altro implementiamo) un piccolo wrapper su una classe esistente, così da facilitare il processo di conversione.

Partiamo con lo scaricarci Number_Words, installiamola nella nostra directory libs (o dove vi piace di più), e partiamo subito con il codice da implementare.

La nostra classe non avrà altro che una serie di metodi atti ad effettuare operazione automatiche al posto nostro, automatizzando il processo di conversione.

class Convert_toString {

	/**
	 * Path lingua
	 * @var string
	 */
	private $main_locate='it/IT';
	/**
	 * Estensione della classe per estendere Words
	 * @var string
	 */
	private $class_name='it_IT';
	/**
	 * Nome della classe automatica
	 * @var string
	 */
	private $class='';

	/**
	 * Numero intero da convertire
	 * @var int
	 */
	public $number=0;
	/**
	 * Risultato finale
	 * @var string
	 */
	public $converted='';
	/**
	 * Instanza della classa creata
	 * @var
	 */
	private $convert;

	public function __construct($opions=[]) {
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words/Exception.php');
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words.php');
		//include_once('Numbers_Words-master/Numbers/Words/Locale/it/IT.php');
		$this->create_include($opions);
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words/Locale/'.$this->main_locate.'.php');
		$this->create_new_instance();
		return $this;
	}

A questo punto non resta altro che implementare i metodi necessari:

/**
	 * Metodo per il processamento della main_locate e la creazione del nome della Classe
	 * @param $options
	 */
	private function create_include($options){
		
	}
	/**
	 * Metodo per la creazione della nuova istanza della classe Word
	 */
	public function create_new_instance(){
		
	}
	/**
	 * Metodo per la conversione del numero
	 * @param integer $int Intero/Float da convertire
	 * @param float $float Eseguire la conversione decimale
	 *
	 * @return $this
	 */
	public  function ConvertInteger($int,$float=FALSE){
		
	}

A questo punto abbiamo creato il nostro piccolo wrapperino per convertire qualsiasi numero in intero.

class Convert_toString {

	/**
	 * Path lingua
	 * @var string
	 */
	private $main_locate='it/IT';
	/**
	 * Estensione della classe per estendere Words
	 * @var string
	 */
	private $class_name='it_IT';
	/**
	 * Nome della classe automatica
	 * @var string
	 */
	private $class='';

	/**
	 * Numero intero da convertire
	 * @var int
	 */
	public $number=0;
	/**
	 * Risultato finale
	 * @var string
	 */
	public $converted='';
	/**
	 * Instanza della classa creata
	 * @var
	 */
	private $convert;
	public function __construct($opions=[]) {
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words/Exception.php');
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words.php');
		//include_once('Numbers_Words-master/Numbers/Words/Locale/it/IT.php');
		$this->create_include($opions);
		include_once(APPROOT.'/Numbers_Words-master/Numbers/Words/Locale/'.$this->main_locate.'.php');
		$this->create_new_instance();
		return $this;
	}
	/**
	 * Metodo per il processamento della main_locate e la creazione del nome della Classe
	 * @param $options
	 */
	private function create_include($options){
		if(!empty($options)){
			foreach ($options as $k=>$v){
				$this->$k=$v;
			}
		}
		$this->class_name=str_replace('/','_',$this->main_locate);
		$this->class='Numbers_Words_Locale_'.$this->class_name;
	}
	/**
	 * Metodo per la creazione della nuova istanza della classe Word
	 */
	public function create_new_instance(){
		if(class_exists($this->class)) {
			$this->convert=call_user_func_array(array(
				new ReflectionClass($this->class), 'newInstance'),
				[]);
		}
	}
	/**
	 * Metodo per la conversione del numero
	 * @param integer $int Intero/Float da convertire
	 * @param float $float Eseguire la conversione decimale
	 *
	 * @return $this
	 */
	public  function ConvertInteger($int,$float=FALSE){
		$this->number=$int;
		if($float){
			$explode=explode('.',$this->number);
			print_r($int);
			$this->converted=$this->convert->toWords($explode[0]);
			$this->converted.=','.$this->convert->toWords($explode[1]);
		}else{
			$this->converted=$this->convert->toWords($this->number);
		}
		return $this;
	}
}

Soluzioni complete per ogni esigenza