Как выглядит функция в php. Основы PHP — Функции PHP
Метод POST позволяет передать информацию, которая была введена пользователем в веб-форму, заключенную в теги
В данном случае создается форма, которая отсылает код к обработчику формы методом POST. Для инициализации функции в данном примере используется скрытое текстовое поле, которое и передает информацию дальнейшей ее обработки. Чтобы запустить нужную функцию, нужно будет установить факт нажатия пользователем кнопки. Если кнопка была нажата, описанная ранее функция будет запущена:
if (isset($_POST[‘function_start’]) == ‘go’) {
example(); }
?>
Данный код проверяет присутствие в скрипте переданных из формы данных посредством функции isset(). При наличии данных, введенных в скрытую форму, начинается выполнение объявленной ранее функции.
Передача информации методом GET может происходить без использования данных формы через введенный адрес. Аналогичным образом в начале скрипта объявляется нужная функция при помощи оператора function. После этого для передачи информации, например, можно создать ссылку HTML вида вместо
И т.п. Вам необходимо реализовать свою функцию-обертку для того, чтобы приведенные выше конструкции могли работать с переменными функциями.
Пример #1 Работа с функциями посредством переменных
function
foo
() {
echo
"В foo()
\n"
;
}
function
bar
($arg
=
""
)
{
echo
"В bar(); аргумент был "
$arg
".
\n"
;
}
// Функция-обертка для echo
function
echoit
($string
)
{
echo
$string
;
}
$func
=
"foo"
;
$func
();
// Вызывает функцию foo()
$func
=
"bar"
;
$func
("test"
);
// Вызывает функцию bar()
$func
=
"echoit"
;
$func
("test"
);
// Вызывает функцию echoit()
?>
Вы также можете вызвать методы объекта используя возможности PHP для работы с переменными функциями.
Пример #2 Обращение к методам класса посредством переменных
class
Foo
{
function
Variable
()
{
$name
=
"Bar"
;
$this
->
$name
();
// Вызываем метод Bar()
}
Function
Bar
()
{
echo
"Это Bar"
;
}
}
$foo
= new
Foo
();
$funcname
=
"Variable"
;
$foo
->
$funcname
();
// Обращаемся к $foo->Variable()
?>
При вызове статических методов вызов функции "сильнее", чем оператор доступа к статическому свойству:
Пример #3 Пример вызова переменного метода со статическим свойством
class
Foo
{
static
$variable
=
"статическое свойство"
;
static function
Variable
()
{
echo
"Вызов метода Variable"
;
}
}
echo
Foo
::
$variable
;
// Это выведет "статическое свойство". Переменная $variable будет разрешена в нужной области видимости.
$variable
=
"Variable"
;
Foo
::
$variable
();
// Это вызовет $foo->Variable(), прочитав $variable из этой области видимости.
?>
С версии PHP 5.4.0, можно вызывать callable -функцию, помещенную в переменную.
Пример #4 Сallable-фукнции
class
Foo
{
static function
bar
()
{
echo
"bar\n"
;
}
function
baz
()
{
echo
"baz\n"
;
}
}
$func
= array("Foo"
,
"bar"
);
$func
();
// выведет "bar"
$func
= array(new
Foo
,
"baz"
);
$func
();
// выведет "baz"
$func
=
"Foo::bar"
;
$func
();
// выведет "bar" в PHP 7.0.0 и выше; в предыдущих версиях это приведет к фатальной ошибке
?>
Смотрите также is_callable() , call_user_func() , Переменные переменные и function_exists() .
Список изменений
8 years ago
$ wget
$ grep -l "\$\.\.\." php-chunked-xhtml/function.*.html
List of functions that accept variable arguments.
array_diff_assoc
()
array_diff_key
()
array_diff_uassoc
()
array()
array_intersect_ukey
()
array_map
()
array_merge
()
array_merge_recursive
()
array_multisort
()
array_push
()
array_replace
()
array_replace_recursive
()
array_unshift
()
call_user_func
()
call_user_method
()
compact
()
dba_open
()
dba_popen
()
echo()
forward_static_call
()
fprintf
()
fscanf
()
httprequestpool_construct
()
ibase_execute
()
ibase_set_event_handler
()
ibase_wait_event
()
isset()
list()
maxdb_stmt_bind_param
()
maxdb_stmt_bind_result
()
mb_convert_variables
()
newt_checkbox_tree_add_item
()
newt_grid_h_close_stacked
()
newt_grid_h_stacked
()
newt_grid_v_close_stacked
()
newt_grid_v_stacked
()
newt_win_choice
()
newt_win_entries
()
newt_win_menu
()
newt_win_message
()
newt_win_ternary
()
pack
()
printf
()
register_shutdown_function
()
register_tick_function
()
session_register
()
setlocale
()
sprintf
()
sscanf
()
unset()
var_dump
()
w32api_deftype
()
w32api_init_dtype
()
w32api_invoke_function
()
wddx_add_vars
()
wddx_serialize_vars
()
?>
3 years ago
A small, but helpful note. If you are trying to call a static function from a different namespace, you must use the fully qualified namespace, even if they have the same top level namespace(s). For example if you have the following class to call:
namespace
Project
\
TestClass
;
class
Test
{
static function
funcToCall
() {
return
"test"
;
}
}
?>
You must call it as:
namespace
Project
\
OtherTestClass
;
class
OtherTest
{
$func
=
"\Project\TestClass::funcToCall"
;
$func
();
}
}
?>
and not:
class
OtherTest
{
static function
callOtherFunc
() {
$func
=
"TestClass::funcToCall"
;
$func
();
}
}
?>
3 months ago
While the documentation suggests that the use of a constant is similar to the use of a variable, there is an exception regarding variable functions. You cannot use a constant as the function name to call a variable function.
const DEBUGME ="func";
function func($s) { echo $s. "\n"; }
DEBUGME("abc"); // results in a syntax error
$call = DEBUGME;
$call("abc"); // does the job
But you can use a constant as an argument to a function. Here"s a simple workaround when you need to call a variable constant function:
function dynamic($what, $with)
{
$what($with);
}
dynamic(DEBUGME, "abc");
This makes sense to me to hide API"s and/or long (complicated) static calls.
Enjoy!
13 years ago
If you want to call a static function (PHP5) in a variable method:
Make an array of two entries where the 0th entry is the name of the class to be invoked ("self" and "parent" work as well) and the 1st entry is the name of the function. Basically, a "callback" variable is either a string (the name of the function) or an array (0 => "className", 1 => "functionName").
Then, to call that function, you can use either call_user_func() or call_user_func_array(). Examples:
class A {
Protected
$a
;
protected
$c
;
Function
__construct
() {
$this
->
a
= array("self"
,
"a"
);
$this
->
c
= array("self"
,
"c"
);
}
Static function
a
($name
, &
$value
) {
echo
$name
,
" => "
,
$value
++,
"\n"
;
}
Function
b
($name
, &
$value
) {
call_user_func_array
($this
->
a
, array($name
, &
$value
));
}
Static function
c
($str
) {
echo
$str
,
"\n"
;
}
Function
d
() {
call_user_func_array
($this
->
c
,
func_get_args
());
}
Function
e
() {
call_user_func
($this
->
c
,
func_get_arg
(0
));
}
class B extends A {
Function
__construct
() {
$this
->
a
= array("parent"
,
"a"
);
$this
->
c
= array("self"
,
"c"
);
}
Static function
c
() {
print_r
(func_get_args
());
}
Function
d
() {
call_user_func_array
($this
->
c
,
func_get_args
());
}
Function
e
() {
call_user_func
($this
->
c
,
func_get_args
());
}
$a
=& new
A
;
$b
=& new
B
;
$i
=
0
;
A
::
a
("index"
,
$i
);
$a
->
b
("index"
,
$i
);
$a
->
c
("string"
);
$a
->
d
("string"
);
$a
->
e
("string"
);
# etc.
?>
Итак, что такое функция (function)на PHP ?
Функция (function)-
это мини-программа, которая выполняет какие-то полезные действия и выдает готовый результат.
Давайте посмотрим на схемку:
Попробуем по готовому шаблону функции написать мини программу.
Готовый шаблон функции:
Припустим, нам нужно написать функцию, которая сможет подсчитать сумму чисел 5 и 2 . Смотрим на шаблон и пишем:
Разберем код
.
function suma()
- это функция с именем suma
;
echo 5 + 2;
- в теле функции мы указали, что числа 5
и 2
нужно сложить вместе (5 + 2)
;
suma();
- вызываем функцию. Вызов функции означает ее выполнение. То есть, задачка 5 + 2
должна быть выполнена и дать результат 7
.
Теперь попробуем рассмотреть функции поэтапно.
Этапы создания функции на PHP
Этап
I
. Создание функции
Вспомните готовый шаблон функции:
Вот таким способом создается функция на PHP.
Давайте в теле функции напишем текст «Я рад видеть вас на блоге сайт
».
Только не забудьте: текст пишем через .
.ru
";
}
?>
Теперь нужно вызвать функцию «сайт() ».
Этап
II
. Вызов готовой функции на
PHP
Функция создана и теперь она должна быть выполнена. Для выполнения и вывода функции достаточно указать «имя функции();
»
сайт();
Это будет выглядеть вот так:
"; } сайт(); ?>
Можно это сделать и так:
"; } ?> Куча текста….. ?> Куча текста…..
Введите в браузере адрес:
Результат:
Функции PHP с аргументами
Все примеры с функциями выше были без аргументов. Что такое аргумент я вам объясню на коде:
Итак, я создал функцию с именем «сайт ». В параметрах (там, где скобки) прописал через запятую две переменные $a и $b .
Function сайт ($a , $b )
$a
и $b
– это и есть два аргумента.
echo "$a + $b = ";
– здесь я вывел на монитор текст. Результат: 5 + 5 =
echo $a + $b;
– здесь я указал функции, что переменную $a
и $b
нужно сложить вместе.
сайт (15, 5);
– вызвал функцию. Внимание: в скобках я указал два аргумента (15, 5)
, которые ждет переменная $a
и $b
. Переменная $a
получит первый аргумент – 15
, $b
– второй 5
.
Для тех, кто не понял, куда подставляется аргумент и в какой очередности, вот схема:
Итак, готовый код: