Sınıflarla birlikte array_map kullanımı

array_map fonksiyonu, Php’nin pratik dizi işlemleri fonksiyonlarından bir tanesidir. array_map bir dizi içindeki elemanlara tek, tek belirtilen fonksiyonu uygular. Uygulanacak fonksiyon Php‘nin sabit fonksiyonları olabileceği gibi kendi fonksiyonumuzda olabilir. Basit bir örnekle fonksiyonun kullanımına bakalım.

$meyveler = array('elma', 'armut', 'limon', 'karpuz');

$meyveler = array_map('ucwords', $meyveler);

echo '<pre>';

print_r($meyveler);

echo '</pre>';

Kullanıcı tanımlı fonksiyon örneği

function yarisi($meyve)
{
	return substr( $meyve, 0, strlen($meyve) / 2 );
}

$meyveler = array('elma', 'armut', 'limon', 'karpuz');

$meyveler = array_map('yarisi', $meyveler);

echo '<pre>';

print_r($meyveler);

echo '</pre>';

Örneklerde de görüldüğü gibi dizinin her bir elemanına istediğimiz fonksiyonu uyguluyoruz. İlk örnekte ucwords fonksiyonunu kullanarak dizinin her elemanının baş harfinin büyük yazılmasını sağladık. İkinci örnekte ise kendi yazdığımız fonksiyonu kullandık. Bu fonksiyon dizi elemanlarının harflerinin yarısını siliyor ve ilk yarısını döndürüyor.

Sınıf içinde array_map kullanımı

Php’de sınıf içindeki metotlara $this işaretcisiyle erişiriz, $this->yarisi() gibi. Sınıf içinde array_map ile bir metodu çağırırken:

array_map('$this->yarisi', $meyveler)

gibi bir kullanım şeklinde: “Warning: array_map() expects parameter 1 to be a valid callback, function ‘$this->yarisi’ not found or invalid function name” uyarısı alırsınız. Doğru kullanım şekli:

array_map( array($this,'yarisi' ), $meyveler);

Şeklindedir. Şimdi manav isimli basit bir sınıf oluşturalım ve array_map fonksiyonunu sınıf içinde kullanalım.

class manav
{

	private $meyveler = array('elma', 'armut', 'limon', 'karpuz');

	public function yarisi($dizi)
	{
		return substr( $dizi, 0, strlen($dizi) / 2 );
	}

	public function getMeyve()
	{
		return array_map( array($this,'yarisi'), $this->meyveler);
	}

}

$manav = new manav();

echo '<pre>';

print_r($manav->getmeyve());

echo '</pre>';

Sınıf dışında metodla array_map kullanmak

Sınıfımız içinde oluşturduğumuz methodu array_map ile kullanmak için birkaç yöntem mevcuttur.

$meyveler = array('elma', 'armut', 'limon', 'karpuz');

$manav = new manav();

print_r( array_map( array($manav, 'yarisi'), $meyveler ) );

Yukarıdaki örnekte önce nesnemizi oluşturuyoruz. Nesne örneğini geçirdiğimiz $manav değişkenini ve sınıf içindeki fonksiyonumuzun adını array kullanarak fonksiyona parametre olarak geçiriyoruz. Diğer kullanım şekilleri içinde bir örnek verip yazıyı bitirelim.

$meyveler = array('elma', 'armut', 'limon', 'karpuz');

print_r( array_map( array('manav', 'yarisi'), $meyveler ) ); // değişken değil sınıf ismini kullanıyoruz.

/* aşağıdaki kullanım şekli PHP 5.2.3 ve sonrası için geçerlidir */

$meyveler = array('elma', 'armut', 'limon', 'karpuz');

print_r( array_map( 'manav::yarisi', $meyveler ) );

Bu yöntemlerle arrap_map fonksiyonunu sınıflarla beraber rahatlıkla kullanabilirsiniz. Kolay gelsin.

Henüz Yorum Yapan Olmadı

Yorum Yapın