Простой пример использования лямбда функций на php

14.03.2019

Использование анонимной функции для переопределения поведения класса, на примере псевдо MVC.

 
<?php

  class soMVC
  {

    /**
    * Proto Model:GetData
    * 
    * @return array
    */
    protected function _Model_GetData() 
    {
      return range(1, 20);
    }

    /**
    * Proto View:GetReander
    * 
    * @param array $aData
    * 
    * @return string
    */
    protected function _View_Reander($aData) 
    {
      $sRet = '';
      foreach($aData as $sText)
      {
        $sRet .= '<div>'.$sText.'</div>';
      }
      return $sRet;
    }

    /**
    * Main
    * 
    * @param callback $function
    * 
    * @return string
    */
    public function dispatch($function = NULL) 
    {
      $aData = $this->_Model_GetInfo();
      if ($function)
      {
        return $function($aData);
      }
      else
      {
        return $this->_View_Reander($aData, $function);
      }
    }
  }


  $oMVC = new soMVC();
  echo $oMVC->dispatch(function($aData){
    $sRet = '<ul>';
    foreach($aData as $sText)
    {
      $sRet .= '<li>'.$sText.'</li>';
    }
    return $sRet.'</ul>';
  });


Категории: PHP, -Памятка-
Яндекс.Метрика