Как вызвать функцию PHP
Пусть у нас есть функция func , которая возвращает какой-то текст:
Для того, чтобы вызвать нашу функцию, необходимо написать ее имя и круглые скобки, вот так: func . Результат работы функции мы можем вывести на экран, а можем записать в переменную и потом что-то с ним сделать.
Давайте для примера выведем результат работы нашей функции на экран:
echo func(); // выведет ‘text’ ?>?php>
А теперь давайте запишем результат работы функции в переменную:
Пусть у нас теперь есть функция, которая параметром принимает число, а возвращает квадрат этого числа:
Найдем с помощью этой функции квадрат числа 3 :
echo square(3); // выведет 9 ?>?php>
Давайте теперь не будем выводить квадрат тройки на экран, а вначале запишем его в переменную, затем прибавим к этой переменной число 1 и выведем результат на экран:
Как вызвать функцию php в html
PHP поддерживает концепцию переменных функций. Это означает, что если к имени переменной присоединены круглые скобки, PHP ищет функцию с тем же именем, что и результат вычисления переменной, и пытается её выполнить. Эту возможность можно использовать для реализации обратных вызовов, таблиц функций и множества других вещей.
Переменные функции не будут работать с такими языковыми конструкциями как echo , print , unset() , isset() , empty() , include , require и т.п. Вам необходимо реализовать свою функцию-обёртку для того, чтобы приведённые выше конструкции могли работать с переменными функциями.
Пример #1 Работа с функциями посредством переменных
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()
>
?php
$foo = new Foo ();
$funcname = «Variable» ;
$foo -> $funcname (); // Обращаемся к $foo->Variable()
При вызове статических методов вызов функции «сильнее», чем оператор доступа к статическому свойству:
Пример #3 Пример вызова переменного метода со статическим свойством
class Foo
static $variable = ‘статическое свойство’ ;
static function Variable ()
echo ‘Вызов метода Variable’ ;
>
>
?php
echo Foo :: $variable ; // Это выведет ‘статическое свойство’. Переменная $variable будет разрешена в этой области видимости.
$variable = «Variable» ;
Foo :: $variable (); // Это вызовет $foo->Variable(), прочитав $variable из этой области видимости.
Пример #4 Сложные callable-функции
$func = array( «Foo» , «bar» );
$func (); // выведет «bar»
$func = array(new Foo , «baz» );
$func (); // выведет «baz»
$func = «Foo::bar» ;
$func (); // выведет «bar»
?>
Смотрите также
- is_callable()
- call_user_func()
- function_exists()
- переменные переменных
User Contributed Notes 6 notes
4 years 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)
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!
12 years ago
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
/*
You might have found yourself at this php variable functions page because, like me, you wanted to pass functions
around like objects to client objects as you can in JavaScript. The issue I ran into was although
I could call a function using a variable like this » $v(); «. I could not do it like this » $obj->p() » where
‘p’ is a property containing the name of the method to call. Did not want to save my property off to a variable prior
to making my call: » $v = $obj->p; $v(); «; even if one finds a way, the below applies.
?php
I credit this expanded work to this person: tatarynowicz at gmail dot com;
without them I would not have gotten here.
*/
interface iface_dynamic_members //Use of this interface enables type-hinting for objects that implement it.
public function __call ( $name , $args );
public function __set ( $name , $value );
public function quietly_fail (): bool ;
>
trait trait_has_dynamic_members //Implementing these magic methods in the form of a trait, frees the client object up
//so it can still inherit from a parent-class.
public function __call ( $name , $args ) if ( is_callable ( $this -> $name )) return call_user_func ( $this -> $name , $args );
>
else //Your dynamic-membered object can declare itself as willing to ignore non-existent method calls or not.
if( $this -> quietly_fail ()=== true ) echo ‘Method does not exist, but I do not mind.’ ;
>else echo ‘Method does not exist, I consider this a bug.’ ;
>
>
>
public function __set ( $name , $value ) $this -> $name = is_callable ( $value ) ? $value -> bindTo ( $this , $this ): $value ; //Assignment using ternary operator.
>
>
abstract class MBR_ATTR //A class full of attributes that objects can take on; abstract since not to be instantiated (If I could make it «final» as well, I would).
public static function is_a_walker ( iface_dynamic_members $obj , ? string $walker_type = ‘normal pace’ ) $obj -> walker_type = $walker_type ;
$obj -> walker_walk = function() return «I am walking < $this ->walker_type > .» ;
>;
>
public static function is_a_runner ( iface_dynamic_members $obj , string $runner_type ) $obj -> runner_type = $runner_type ;
$obj -> runner_run = function() return «I am running < $this ->runner_type > .» ;
>;
self :: is_a_walker ( $obj ); //If can run, also can walk.
>
>
class cls_partly_dynamic implements iface_dynamic_members use trait_has_dynamic_members ;
public function quietly_fail (): bool return true ;
>
>
// Report all errors except E_NOTICE
error_reporting ( E_ALL & ~ E_NOTICE ); //Enable all error-reporting except notices.
//—-
//config runner object.
$obj_runner = new cls_partly_dynamic ();
MBR_ATTR :: is_a_runner ( $obj_runner , ‘fast’ );
$obj_runner -> runner_type = ‘a bit slow’ ;
//—-
//config walker object.
$obj_walker = new cls_partly_dynamic ();
MBR_ATTR :: is_a_walker ( $obj_walker , ‘slow’ );
$obj_walker -> walker_type = ‘super fast’ ;
//—-
//Do stuff.
echo ‘walker in action. ‘ . ‘
‘ ;
echo $obj_walker -> walker_walk () . ‘
‘ ;
echo ‘
‘ ;
echo ‘runner in action. ‘ . ‘
‘ ;
echo $obj_runner -> walker_walk () . ‘
‘ ;
echo $obj_runner -> runner_run () . ‘
‘ ;
echo $obj_runner -> xxx () . ‘
‘ ; //Try calling a non-existent method.
//I would agree that the above approach/technique is not always ideal, particulary due to the loss of code-completion in your
//IDE of choice; I would tend to use this approach for dynamic-programming in response to the user dictating processing steps via a UI.
?>
3 years ago
If you are here looking for a function reference, this is NOT how to do it:
function func1 ()< echo "hell0 1" ;>
$choice = func1 ; // no quotes
?>
It works, but $choice is not what you might think, a reference to a function. It is simply the name of the function as a string, written without (!) quotes.
It’s the same as
$choice = «func1» ; // with quotes
?>
You can do echo gettype($choice) to confirm.
So calling
$choice ()
?>
is a variable-function for both cases, calling it by its name, not by reference.
Go via an assigned anonymous function to get a reference to the function:
$func1 = function()< echo "hell0 1" ;>
$func1 = function()< echo "hell0 2" ;>
?>
Now you can pass around the function like a first class object
$choice = $func1 ;
?>
or
$choice = $func2 ;
?>
and call it
$choice ();
?>
If you want to pass around a class method, use the «Complex callables» from the manual, above. It’s a call by name (not a reference), but since you can include the object you can still get the flexibility you want:
class C <
function k () < echo "inside k" ;>
function j ()< echo "inside j" ; return array( $this , "k" );>>;
?>
You can use $this as the object in the first element of the array.
$c = new C ;
$c -> k ();
inside k
$func = $c -> j ();
inside j
?>
And now, le moment supreme:
$func ();
inside k
?>
7 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 static function callOtherFunc () $func = ‘\Project\TestClass::funcToCall’ ;
$func ();
>
>
?>
and not:
class OtherTest static function callOtherFunc () $func = ‘TestClass::funcToCall’ ;
$func ();
>
>
?>
1 year ago
static bar method works with statically or non statically wherese non static method could not work statically
?php
//non static method
class myCls public function foo () echo «foo function» ;
>
static public function bar () echo «static bar function» ;
$a = new myCls ;
$myf = «foo» ;
$a -> $myf (); //works
echo «\n» ;
$a = [new myCls , «foo» ]; //works
$a ();
echo «\n» ;
//$a = [«myCls»,»foo»];//fatal error
//$a();
echo «\n» ;
//$a = «myCls::foo»;//fatal error
//$a();
echo «\n» ;
//static method called with statically or nonstatically
$b = new myCls ;
$myf = «bar» ;
$b -> $myf (); //works
echo «\n» ;
$b = [new myCls , «bar» ]; //works
$b ();
echo «\n» ;
$b = «myCls::bar» ; //works
$b ();
echo «\n» ;
$b = [ «myCls» , «bar» ]; //works
$b ();
echo «\n» ;
- Функции
- Функции, определяемые пользователем
- Аргументы функции
- Возврат значений
- Обращение к функциям через переменные
- Встроенные функции
- Анонимные функции
- Стрелочные функции
- Callback-функции как объекты первого класса
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Как вызвать функцию php в html
Как можно сделать так, чтобы функция check_domen() вызывалась только после того, как мы передали в $_POST имя домена, который необходимо проверить?
?>
Document Отслеживать
71.2k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков
задан 10 мая 2021 в 16:48
71 6 6 бронзовых знаков
Что это за функция такая, и что Вам нужно конкретно? Выложите код, без кода ничем не помочь.
10 мая 2021 в 17:05
Прошу прощения, забыл вставить код.
10 мая 2021 в 17:18Нельзя в код добавлять то, что было в ответе. Это сбивает с толку. Если есть новый вопрос или уточнение к ответу — надо и спрашивать, а не править вопрос не своим решением
10 мая 2021 в 18:26
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Надо проверять отправлена ли форма и есть ли там имя
Отслеживать
ответ дан 10 мая 2021 в 17:42
Антон Металлов Антон Металлов
125 6 6 бронзовых знаков
Сделал как вы сказали, и теперь функция всегда выдает Домен свободен, с чем это связано?
10 мая 2021 в 18:19@Rumeone Значит некорректное имя вводите. Смотрите отладкой что происходит внутри функции. Потому что при наличии домена — всё так и выведет: sandbox.onlinephpfunctions.com/code/… (это ответ на ip-api.com/json/pinterest.ru?lang=ru)
10 мая 2021 в 18:34
@Rumeone Также замечу, что должно быть так: $host = $_POST[‘name’]; . Вы же имя должны как-то получить из поста?
10 мая 2021 в 18:36
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как из html вызвать функцию php?
Нельзя напрямую вызвать функцию php из html, но можно создать ссылку в html, которая будет вести на страницу с кодом php, который будет выполнять нужную функцию.
Для этого можно использовать тег , который позволяет встраивать исполняемый PHP-скрипт в HTML-код:
type="text/php"> // Здесь пишется PHP-код
Также можно использовать тег , чтобы встроить результаты работы PHP-скрипта в HTML-код:
src="path/to/script.php">
Как сделать вызов функции php при нажатии на кнопку?
Для этого можно использовать тег , который при нажатии на кнопку будет отправлять данные на сервер. На сервере можно использовать скрипт PHP, который будет принимать данные и вызывать нужную функцию.
// html-страница form action="script.php" method="post"> input type="submit" value="Нажми меня" /> form> // script.php php if ($_SERVER['REQUEST_METHOD'] == 'POST') myFunction(); > function myFunction() // Тут код функции >
Как можно вызвать функцию PHP в index.html файле?
Я видел примеры, как функцию php вызывают из другого файла в основном index.php
Но я хочу вызвать функцию php в index.html если это возможно конечно.
Накидайте пожалуйста пример как это правильно делается.
Что нужно написать в index.html
Что нужно написать в test.php- Вопрос задан более трёх лет назад
- 129 просмотров
Комментировать
Решения вопроса 1Чебуратор тега РНР
Никак.
переименуй index.html в index.php и вызывай что угодно
Ответ написан более трёх лет назад
Нравится 1 3 комментарияBrendan Castaneda @ae_ph Автор вопроса
Ок спасибо!
Я думал есть что-то подобное как вызов в форме.Но скорее всего это возможно только для формы
Brendan Castaneda, обработчик можете так прикрепить и в html
если тебе надо вызвать не «функцию» а целиком файл, то можешь просто сделать ссылку.
А лучше всего объяснить своими словами что тебе нужно, не употребляя терминов, значения которых ты не понимаешь — например «функция», «вызвать», «html» и пр.
Пиши просто «у меня сайтик по продаже цветочков, я хочу чтобы при при покупке была скидочка» вот в таком стиле.Ответы на вопрос 0
Ваш ответ на вопросВойдите, чтобы написать ответ
- PHP
- +1 ещё
Как настроить в PHP заполнение БД по расписанию?
- 1 подписчик
- 9 минут назад
- 5 просмотров
Как вызвать функцию PHP?
Как вызвать javascript функцию из php?
Доброго времени суток. Помогите плиз разобраться Как вызвать функцию My_javascript(int id).Как вызвать javascript функцию из PHP
Здравствуйте, уважаемые участники форума Релиб! Надо при загрузке файла через форму <input.Как вызвать функцию обработки onclick, которая описана в другом php-файле?
как вызвать функцию обработки onclick на картинку в html-файле, если эта функция описана в другом.Вызвать функцию php
Необходимо при нажатии на кнопку выполнить функцию php пробую так: <HTML> <HEAD> <TITLE> .2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
Используйте Ajax. Только придется функцию в другой файл сунуть! Ну или так:1 2 3 4 5 6 7 8 9 10
function Mine(){ //function } if(isset($_POST['function'])) Mine(); else { //Выводим форму. print '; } ?>
Могу на JQuery показать
1 2 3 4 5 6 7 8
$(document).ready(function(){ $('#bt').click(function(){ var inp = $('#mine').val(); $.post('index.php',{'function':'yes','val': inp}, function(data){ alet(data); } }); });
Не проверял, но должно работать.
Регистрация: 13.07.2010
Сообщений: 38Нет, нужно чтобы при нажатии на определенную кнопку вызывалась определенная функция, написанная в этом же файле, чтоб страницу не перезагружать потом.
2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 41 2 3 4 5 6 7 8 9 10
function Mine(){ //function } if(isset($_POST['function'])) Mine(); else { //Выводим кнопку. print '; } ?>
1 2 3 4 5 6 7
$(document).ready(function(){ $('#bt').click(function(){ $.post('index.php',{'function':'yes'}, function(data){ //Ответ } }); });
Регистрация: 13.07.2010
Сообщений: 38
Смотрите у нас есть файл test.php
Его содержимое:1 2 3 4 5 6 7 8 9
function f($text) { обработка $text; } ?> f(for_func.value);?>">
2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069-Alice-, PHP выполняется на сервере. То, что он(скрипт.php) там(на сервере) навыводил, то и оказывается на странице в браузере. Чтобы «выполнить функцию на PHP», надо послать запрос на сервер и получить ответ (что Вам и предлагается в приведенном JS коде с помощью $.post).
Если Вам надо, чтобы на странице выполнялось сложение 2+3 (например), то это делается на JavaScript’е, и PHP здесь не нужен.
bigMatherHacker
112 / 81 / 12
Регистрация: 18.08.2010
Сообщений: 237Вы хотите, чтобы по нажатию кнопки вызывалась функция, которая что сделает? создаст новую форму ? или добавит полей к уже существующим?
Регистрация: 13.07.2010
Сообщений: 38Я хочу, чтобы на сервер передались данные из двух полей ввода, а сервер записал их в базу, при этом на странице ничего не изменилось
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
-Alice-, Вот с этого и надо было начинать
Регистрация: 13.07.2010
Сообщений: 38
А Вы не знаете, как это можно сделать? И можно ли. )))
bigMatherHacker
112 / 81 / 12
Регистрация: 18.08.2010
Сообщений: 237
Как в базу записать не знаю. А как обработать данные и упаковать в массив могу написать.
Регистрация: 13.07.2010
Сообщений: 38В базу записывать я умею) Я хотела саму эту запись скинуть в функцию. В ф-цию передавать данные с инпутов. А ф-цию вызывать при onClick кнопки. Вот как-то так. Мне бы хотя бы как функцию вызвать узнать. )))
bigMatherHacker
112 / 81 / 12
Регистрация: 18.08.2010
Сообщений: 237Вот простой пример как обработать данные из формы. И нельзя вызов php функции вешать на событие onClick, для этого уже существует JS, чтобы обрабатывать события.
1 2 3 4 5
form method=post> input type=text name="value1" /> input type=text name="value2" /> input type=submit name=submit /> /form>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
if (isset($_POST['submit'])) { $arr=array($_POST['value1'], $_POST['value2']); $z=get_my_vars($arr); echo $z; } function get_my_vars($arr){ foreach($arr as $key=>$value){ /*тут код вывода данных переданных в $arr как вариант лучше исользовать канкатенацию и вернуть все значения*/ $val.=$value; } return $val; }?> >
Регистрация: 13.07.2010
Сообщений: 38Ладно, я видимо не совсем понимаю всё это. (((( Ну, скажите, Hurtsok, пожалуйста:
1. Вообще нельзя php-функции на подобных событиях (onClick) вызывать?
2. Если делать, как в предложенном вами варианте, будет ли страница перезагружаться?
Спасибо за ответы!)bigMatherHacker
112 / 81 / 12
Регистрация: 18.08.2010
Сообщений: 237Вешать PHP функцию на событие onClick нельзя для этого существует JavaScript. PHP выполняется на стороне сервера. Сервер обрабатывает данные и возвращает результат, который вы видите на экране.
Событие же onClick выполняется на стороне клиента(то есть ваш браузер).
Что бы не было как вы говорите «без перезагрузок» надо использовать AJAX, ну и смотря какую задачу вы решаете. В данном варианте можно просто в форме указать