Fork me on GitHub

Funções


Motivação


Características

1 <?php
2 function nomeDaFuncao() { }
 1 <?php
 2 function printList($string, $count = 5)
 3 
 4 function newTo5(&$number = 2)
 5 
 6 $a = func_get_args();
 7 
 8 int func_num_args(void)
 9 
10 mixed func_get_arg ( int $arg_num )

Retorno por referência

http://php.net/manual/pt_BR/language.references.return.php

1 <?php
2 function &nomeDaFuncao() { }

Funções Anônimas, closures

http://php.net/manual/pt_BR/functions.anonymous.php

Permitem a criação de funções sem nome específico. Elas são úteis principalmente como valores de parâmetros callback, mas elas tem muitos outros usos.

As closures também podem ser usadas como valores de variáveis; o PHP converte automaticamente essas expressões em instâncias da classe interna Closure.

1 <?php
2 $cumprimentar = function($nome)
3 {
4     printf("Olá %s\r\n", $nome);
5 };
6 
7 $cumprimentar('Mundo');
8 $cumprimentar('PHP');
9 ?>

É possível usar as funções func_num_args(), func_get_arg() e func_get_args() de dentro de uma closure.

A classe final predefinida Closure foi introduzida no PHP 5.3.0. Ela é usada para a implementação interna das funções anônimas. A classe tem um construtor que proíbe a criação manual do objeto (disparando um E_RECOVERABLE_ERROR) e o método __invoke via chamada mágica.

Também podem herdar variáveis do escopo pai.

 1 <?php
 2 $callback =
 3             function ($quantidade, $produto) use ($imposto, &$total)
 4             {
 5                 $precoPorItem = constant(__CLASS__ . "::PRECO_" .
 6                     strtoupper($produto));
 7                 $total += ($precoPorItem * $quantidade) * ($imposto + 1.0);
 8             };
 9 
10         array_walk($this->produtos, $callback);
blog comments powered by Disqus