Laravel 10'da Number Sınıfı

370

Laravel'in 10. versiyonunda gelen yeniliklerden birisi de Helpers kütüphanesine eklediği Number metodları oldu. Sayılarla sıklıkla haşır neşir olanlar için güzel eklemeler olduğunu söyleyeyim ve dilim döndüğünce de bunları anlatayım. Normalde bu fonksiyonları tek tek elle yazabilirdik. Ama madem framework'ün için eklendi, o zaman neden kullanmayalım ki?

Number::abbreviate()

Sayıların kısa hallerini için bu metodu kullanabiliriz. Bu şekilde daha okunaklı göstergeleri ekrana basmak mümkün olabiliyor. Örnek kullanım için YouTube'un abone sayılarını gösterebiliriz.

use Illuminate\Support\Number;
 
$number = Number::abbreviate(1000);
 
// 1K
 
$number = Number::abbreviate(489939);
 
// 490K
 
$number = Number::abbreviate(1230000, precision: 2);
 
// 1.23M

Number::format()

Bu metodla, verilen sayıları bölgesel formatlara uygun bir şekilde alabiliyoruz. Binlik ve ondalık ayraçlar ülkeden ülkeye fark edebiliyor.

Ondalık işareti olarak noktayı kullanan ülkeler: Avustralya, Botsvana, Çin, Kosta Rika, Dominik Cumhuriyeti, El Salvador, Guatemala, Honduras, Hongkong, Hindistan, İrlanda, İsrail, Japonya, Kanada (İngilizce konuşan bölgeler), Kuzey ve Güney Kore, Lihtenştayn (sadece parasal sayılarda), Malezya, Meksika, Nikaragua, Nijerya, Yeni Zelanda, Pakistan, Panama, Filipinler, İsviçre (sadece parasal sayılarda), Singapur, Tayvan, Tayland, Birleşik Krallık, ABD.

Ondalık işareti olarak noktayı kullanan ülkeler: Avustralya, Botsvana, Çin, Kosta Rika, Dominik Cumhuriyeti, El Salvador, Guatemala, Honduras, Hongkong, Hindistan, İrlanda, İsrail, Japonya, Kanada (İngilizce konuşan bölgeler), Kuzey ve Güney Kore, Lihtenştayn (sadece parasal sayılarda), Malezya, Meksika, Nikaragua, Nijerya, Yeni Zelanda, Pakistan, Panama, Filipinler, İsviçre (sadece parasal sayılarda), Singapur, Tayvan, Tayland, Birleşik Krallık, ABD.

Bunları tek tek ezberlemek mantıklı olmadığı için çalıştığınız uluslararası projelerde bu metod daha kullanışlı olabiliyor. ISO3166'ya göre bölge/ülke kısaltmalarını bu linkten bulabilirsiniz.

use Illuminate\Support\Number;
 
$number = Number::format(100000);
 
// 100,000
 
$number = Number::format(100000, precision: 2);
 
// 100,000.00
 
$number = Number::format(100000.123, maxPrecision: 2);
 
// 100,000.12
 
$number = Number::format(100000, locale: 'de');
 
// 100.000

Number::percentage()

Sayıların yine bölgelere göre yüzdelik gösterimlerini bu metod ile kullanabilirsiniz. Ondalık hane ve bölgelere göre gösterim yine bu metodta da geçerli.

use Illuminate\Support\Number;
 
$percentage = Number::percentage(10);
 
// 10%
 
$percentage = Number::percentage(10, precision: 2);
 
// 10.00%
 
$percentage = Number::percentage(10.123, maxPrecision: 2);
 
// 10.12%
 
$percentage = Number::percentage(10, precision: 2, locale: 'de');
 
// 10,00%

Number::currency()

Bu metodla para birimlerine ilişkin bölge bazlı gösterim yapılabilir. Parayla, muhasebeyle, e-ticaretle ilgilenenler için oldukça faydalı olabilir.

use Illuminate\Support\Number;
 
$currency = Number::currency(1000);
 
// $1,000
 
$currency = Number::currency(1000, in: 'EUR');
 
// €1,000
 
$currency = Number::currency(1000, in: 'EUR', locale: 'de');
 
// 1.000 €

Number::fileSize()

Dosyaların byte cinsinden büyüklüklerini almak için bu metodu kullanabilirsiniz. Upload işlemleri sırasında dosya büyüklüğüne limit koymak için işleri hızlandırabilir.

use Illuminate\Support\Number;
 
$size = Number::fileSize(1024);
 
// 1 KB
 
$size = Number::fileSize(1024 * 1024);
 
// 1 MB
 
$size = Number::fileSize(1024, precision: 2);
 
// 1.00 KB

Number::forHumans()

Son olarak bu metodumuzda da okunabilir formatta sayıların çıktılarını alabiliyoruz. 

use Illuminate\Support\Number;
 
$number = Number::forHumans(1000);
 
// 1 thousand
 
$number = Number::forHumans(489939);
 
// 490 thousand
 
$number = Number::forHumans(1230000, precision: 2);
 
// 1.23 million