Использование анонимной функции для переопределения поведения класса, на примере псевдо MVC.
Простой пример использования лямбда функций на php
14.03.2019
<?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>';
});