<!-- hacker guri brzera <3 -->
<!doctype HTML>
<html lang="pt-BR">
	<head>
		<meta charset="utf-8"/>
		<meta name="viewport" content="width=device-width, user-scalable=no"/>
		<link rel="stylesheet" href="../../../style/style.css" media='all'>
		<link rel="stylesheet" href="../../../style/texto.css" media='all'>
		<title>PHP Funcional? Map, filter e reduce, conheça</title>
		<link rel="shortcut icon" href="../../../img/icn.png" type="image/x-png"/>
		<script async src="../../../js/principal.js"></script>
        <meta property="og:title" content="PHP funcional? Map, Filter e Reduce | conheça" />
        <meta property="og:site_name" content="RootThings" />
        <meta property="og:url" content="https://rootthings.org/artigos/PHP/PHP funcional - Map, Filter e Reduce | conheça/" />
        <meta property="og:image" content="L-php.jpeg" />
      	      	<meta property="og:description" 
  			content="Eaí, ainda não ouviu falar em paradigmação funcional? já? e eaí, já imaginou a potência do PHP7 com paradigmação funcional? veja como muda absurdamente a questão da velocidade, claridade do código e principalmente a segurança... conheça de outra forma o que você já conhecia, map, filter e reduce💙." />
	</head>
	<body>
		{{cabecalho}}
		<section class="corpo">
			
			<div id="links"><br/>
				<a href="../../..">Home</a><br/>
				<a href="../../">Artigos</a><br/>
				
			</div>
			<nav id="linksbg">
			</nav>
			<div id="conteudo">
				<h1 id="redes">PHP Funcional? Map, filter e reduce, conheça!</h1>
				<figure>
					<img src="L-php.jpeg"/>
					<figcaption>PHP7 - FUNCIONAL</figcaption>
				</figure>
				<p>
					Na atualidade vemos a maioria dos devs procurando praticidade ao programar, e isso é uma ótima coisa 😏, e aqui vim trazer 						uma das varias e varias funcionalidades do php.
				</p>
				<p>
					Sem mais enrolações vamos aos códigos.
				</p>
				<p>
						O seguinte, temos um array com os seguintes parâmetros:
				</p>
				<figure>	
					<script src="https://gist.github.com/Jul10l1r4/5b71a09dabcf574db174f2d366b10f71.js"></script>
					<figcaption>Se lembre você pode usar o json_decode caso seja preciso em situações de api ou algo similar.</figcaption>
				</figure>
				<p>
					Os parâmetros aí são:Idade, nome.
				</p>
				<p>
					Agora, vamos fazer o seguinte, queremos o resultado, de toda array, para fazer isso temos que? que?…
				</p>
				<p>
					Fazer um foreach… sim parece a ideia mais certa, e ainda, bem lógica, veja o exemplo a baixo:
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/1b2491e88966e09767ea8b651ead8ff9.js"></script>
					<figcaption>Repetindo a mesma array mostrada mais encima.</figcaption>
				</figure>
				<p>
					Realmente o foreach é a melhor alternativa e até mais usada atualmente, no caso acima, se eu quisesse apenas pegar um nome 						eu deveria fazer:
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/f63071ed682fc2f7af38823a6e11e722.js"></script>
					<figcaption>Mudando apenas a minha variável chamada $ValorQueVaiCorrer.</figcaption>
				</figure>
				<hr>
				<p>
					Ok mas, como fazer isso de uma forma funcional, e um pouco mais prática? Aqui fii.
				</p>
				<h2>
					Map
				</h2>
				<p>
					Primeiro, para receber os dados vamos usar o recurso para mapear, e vamos mapear um array então é array_map, simples, olhe 						o código:
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/82fc50256b589271522f90e523609935.js"></script>
					<figcaption>A única coisa estranha em que eu encontrei é o motivo de passar a função passa() usando aspas, porém isso 						ocorre pelo motivo de array_map ser uma função que passa dois parâmetros e passa() é uma string em o map ja sabe que por 							ser primeiro, é uma função então no próprio código que faz o array_map já cria um tratamento como se fosse uma função.		
					</figure>
				</figure>
				<p>
					Pronto! esse código tem sua forma de processamento puramente funcional, vemos que todo o processamento dele é apenas uma 						parte, o que facilita bastante no momento de encontrar um possível erro. E se quisermos que ele apenas retorne os nomes 					então faremos:
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/9660f5a0876fd047066635fe3a37481d.js"></script>
					<figcaption>apenas decidi escolher tal área do array que passará pela minha função.</figcaption>
				</figure>
				<h2>Filter</h2>
				<p>Mas certamente você mesmo já deve ter sentido a necessidade de entregar apenas valores que sejam conforme você queira, 					então vou mostrar algo, pois:
				</p>
				<blockquote>Um exemplo fala mais que 1000 palavras.</blockquote>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/0587c27105fa273474632cfe12a0ff52.js"></script>
					<figcaption>Aprecie o exemplo de array_filter()</figcaption>
				</figure>
				<h2>Reduce</h2>
				<p>
					Note, o exemplo ele exibiu apenas os resultados e no valor da array o resultado do nome que comece com as iniciais 						“Marco”, isso só é muito importante, o valor padrão que o id do array cria é útil para marcação onde pode ser até mesmo 					um banco de dados.
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/eff17cb350811a8241cf20c1a2db1890.js"></script>
					<figcaption>Exemplo1 de uso do array_reduce()</figcaption>
				</figure>
				<p>
					O resultado desse array é 99(que é a soma de todos os valores de idade) e diz que ‘idade’ não foi definido, isso só 					acontece por erro de semântica mesmo. Mas seria melhor criar fazer com que ele selecionasse apenas os valores de ‘idade’ 						sem que ocorra esse erro, então faremos assim:
				</p>
				<figure>
					<script src="https://gist.github.com/Jul10l1r4/146a27dd87600230c3d011cb9ce10265.js"></script>
					<figcaption>
				</figure>Eu mudei o nome das variáveis para facilitar.</figcaption>
				<p>Criei uma função responsável por mapear, usando o arra_map</p>
				<figure>
					<img src="serio.jpeg"/>
					<figcaption>Disponível em geradormemes.com</figcaption>
				</figure>
				<p>
					Assim faz com que o meu código fique mais funcional, ele mapeia e decide retornar apenas os valores da array intituladas 						como ‘idade’, e o meu reduce no caso pus para somar, mas ele pode fazer qualquer outra coisa além da soma <span style="font-family:'Segoe UI Emoji'">✊</span>.
				</p>
				<p>
					Então era apenas uma pequena demostração da utilização super importante desses recursos no php, isso faz com que seus 					códigos façam manipulações de json com uma facilidade enorme, e ajuda a desenvolver de uma forma bem mais declarativa e o 					mais importante, a performasse dessas ferramentas são desacerbadamente rápidas, Ja me fizeram bastante pergunta tanto em 						php no paradigma funcional quanto essas funções que iniciaram de verdade no php5 espero que te ajude a quebrar o galho, e 					vamos lá com php no paradigma funcional ❤.
				</p>
				
				</div>
			
					
			</section>
			<footer id="rodape"><!-- pronto -->
		{{rodape}}
			</footer>
	
	</body>
</html>
