Bir fonksiyona başka bir fonksiyonu parametre olarak vermek (Çağrılabilir - Callable - call_user_func_array fonksiyonu)

bir-fonksiyona-baska-bir-fonksiyonu-parametre-olarak-vermek-cagrilabilir-callable-call-user-func-array-fonksiyonu (büyük resim için tıklayın)

call_user_func_array fonksiyonuna verilen parametreler neticesinde bir fonksiyonun başka bir fonksiyona parametre olarak belirtimi(çağırımı, callable) ile işlem gerçekleştirilebilir. Örneğin;

Cipher isminde sınıf ve bu sınıf içerisinde cipher isminde parametre olarak dizi ve limit parametrelerini alan, geriye string return eden fonksiyon bulunsun.

  • public function cipher(array $baseArr,int $limit=self::LIMIT):string
  • {
    • $secret="";
    • for($i=0;$i<$limit;$i++){
      • $randChar=array_rand($baseArr,1);
      • $secret.=$baseArr[$randChar];
    • }
    • return $secret;
  • }

cipher fonksiyonunda; baseArr parametre dizisi içerisinden limit parametresine kadar döngü ile rastgele 1 adet eleman seçilip değişkene eklenecek ve değişken son olarak return edilecek.

Yine bu sınıf içerisinde looper isminde bir fonksiyon olsun.  Bu fonksiyonda yapmak istediğim şu; cipher fonksiyonunu looper fonksiyonunda verdiğim parametre kadar döngüye al ve her döngüdeki cipher fonksiyonundan return edilen değeri looper fonksiyonunda tanımladığım diziye aktar ve son olarak bu diziyi return et. Kodlayalım !

  • public function looper(int $limit, array $arr):array{
    • $myarr=array();
    • for($i=0;$i<$limit;$i++){
      • array_push($myarr,call_user_func_array(array($this,'cipher'),array($arr)));
    • }
    • return $myarr;
  • }

looper fonksiyonu içerisindeki kilit nokta, call_user_func_array fonksiyonu. Bu fonksiyon ile class içerisindeki fonksiyonu (metod) çağırmak için, ilk array parametresinde; this ile sınıfı işaret edip cipher ile sınıf içerisindeki fonksiyonu belirtiyorum, son array parametresinde ise cipher fonksiyonuna göndereceğim aynı zamanda looper fonksiyonuna parametre olarak gelen değişkeni($arr) veriyorum. Kullanalım !

  • $cip=new Cipher();
  • $arr=$cip->delSpesific($cip->getAll(),array("0","A","a","X","x","[","]","#","!"));
  • print_r($cip->looper(23,$arr));

Cipher sınıfına erişmek için tıklayın.

omurs

Ö S, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Etiketler

Beğeni

Toplam Beğeni Sayısı: 3


Yıllara Göre Gönderiler








LombokLoglamaB2C (Business-to-Consumer)B2B (Business-to-Business)İçerik Yönetim Sistemi - CMS (Content Management System)Pagination (Sayfalama)Sanal Özel Ağ - VPN (Virtual Private Network)Cronjob (Zamanlanmış Görevler)Printer-YazıcıJava'daki İlkel Veri Tipleri ve Alabilecekleri DeğerlerBit & Byte ve Hafıza Boyutlarındaki Ölçüm BirimleriSanallaştırma (Virtualization)DNS KayıtlarıE-Fatura ve E-ArşivYazılım Lisans TürleriAudit (Denetim) Açık Kaynak (Open Source)Monitoring (İzleme)Sitemap & Robots.txtKilometretaşı (Milestone)BSMV (Banka ve Sigorta Muameleleri Vergisi)KKDF (Kaynak Kullanımı Destekleme Fonu)Siber Pazartesi (Cyber Monday)Black Friday (Kara Cuma)Hotlink.htaccessCryptoLockerMalwareTrojanWormDependency (Yazılım Geliştirme Sürecinde Paket Bağımlılığı)Configuration (Yazılım Geliştirme Sürecinde Yapılandırma)Yahoo ve Yahoo'nun Başarısızlık NedenleriArchiving (Yazılım Geliştirme Sürecinde Arşivleme)Görsel Dosya Türleri (Image Types)ReleaseVersioning & Tagging (Versiyonlama ve Etiketleme)BuildJob (Yazılım Geliştirme Sürecinde Görevler)SonarQubeCDATA (Character Data)Alan Adı Uzantıları (Domain Name Extensions)Regresyon Kara Kutu (Black-Box) TestBeyaz Kutu (White-box) TestGri Kutu (Grey-box) TestYazılım Geliştirme Sürecindeki Temel Test TürleriKod gözden geçirme (Code Review)Birim Testi (Unit Testing)Yazılım Sürecinde EntegrasyonJAR & WAREager & Lazy Fetch TypeMaskelemeKPI (Key Performance Indicator)KII (Key Impact Indicator)Projenin JAR Dosyasını Oluştur - JAR PathSunucu için Linux dağıtım SeçimiKonyteynerler (container technologies)Runtime & Compile Time (Çalışma ve Derleme Zamanı)@Anotasyonlar (@Annotations)

php Kategori

Timestamp - Datetime Çevrimi (Convert Timestamp to Datetime)

PHP ini dosyası üzerinde terminal ile değişiklikte bulunmak

self & this