Hướng dẫn before function in php - trước hàm trong php

Một hàm có thể được xác định bằng cách sử dụng cú pháp như sau:

Ví dụ #1 Mã giả để chứng minh việc sử dụng chức năng

<?php
function foo($arg_1$arg_2/* ..., */ $arg_n)
{
    echo 
"Example function.\n";
    return 
$retval;
}
?>

Bất kỳ mã PHP hợp lệ nào cũng có thể xuất hiện bên trong một hàm, ngay cả các hàm và định nghĩa lớp khác.

Tên chức năng tuân theo các quy tắc giống như các nhãn khác trong PHP. Một tên hàm hợp lệ bắt đầu bằng một chữ cái hoặc dấu gạch dưới, theo sau là bất kỳ số lượng chữ cái, số hoặc dấu gạch dưới. Như một biểu hiện chính quy, nó sẽ được thể hiện như vậy: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$.

Các chức năng không cần phải được xác định trước khi chúng được tham chiếu, ngoại trừ khi một hàm được xác định có điều kiện như trong hai ví dụ dưới đây.

Khi một hàm được xác định theo cách có điều kiện như hai ví dụ được hiển thị. Định nghĩa của nó phải được xử lý trước khi được gọi.

Ví dụ #2 Chức năng có điều kiện

<?php

$makefoo

true;/* We can't call foo() from here 
   since it doesn't exist yet,
   but we can call bar() */
bar();

if (

$makefoo) {
  function 
foo()
  {
    echo 
"I don't exist until program execution reaches me.\n";
  }
}
/* Now we can safely call foo()
   since $makefoo evaluated to true */
if ($makefoofoo();

function

bar() 
{
  echo 
"I exist immediately upon program start.\n";
}
?>

Ví dụ #3 Chức năng trong các chức năng

<?php
function foo() 
{
  function 
bar() 
  {
    echo 
"I don't exist until foo() is called.\n";
  }
}
/* We can't call bar() yet
   since it doesn't exist. */
foo();/* Now we can call bar(),
   foo()'s processing has
   made it accessible. */
bar();?>

Tất cả các chức năng và các lớp trong PHP đều có phạm vi toàn cầu - chúng có thể được gọi bên ngoài một hàm ngay cả khi chúng được xác định bên trong và ngược lại.

PHP không hỗ trợ quá tải chức năng, cũng không thể xác định hoặc xác định lại các chức năng được khai báo trước đó.

Lưu ý: Tên chức năng không nhạy cảm với các ký tự ASCII A đến Z, mặc dù nó thường là hình thức tốt để gọi các hàm khi chúng xuất hiện trong tuyên bố của chúng.: Function names are case-insensitive for the ASCII characters A to Z, though it is usually good form to call functions as they appear in their declaration.

Cả hai số lượng đối số và đối số mặc định đều được hỗ trợ trong các chức năng. Xem thêm các tài liệu tham khảo chức năng cho func_num_args (), func_get_arg () và func_get_args () để biết thêm thông tin.func_num_args(), func_get_arg(), and func_get_args() for more information.

Có thể gọi các hàm đệ quy trong PHP.

Ví dụ #4 Chức năng đệ quy

<?php
function recursion($a)
{
    if (
$a 20) {
        echo 
"$a\n";
        
recursion($a 1);
    }
}
?>

Lưu ý: Các cuộc gọi/phương thức đệ quy với hơn 100-200 mức đệ quy có thể đập vỡ ngăn xếp và gây ra sự kết thúc của tập lệnh hiện tại. Đặc biệt, đệ quy vô hạn được coi là một lỗi lập trình.: Recursive function/method calls with over 100-200 recursion levels can smash the stack and cause a termination of the current script. Especially, infinite recursion is considered a programming error.