PHP 如何在同一文件中调用和不调用函数时访问该函数?
PHP How to make a function accessible with and without the call in the same file?
对不起,如果我的问题不是很清楚,我不知道如何用英语表达我想说的。
这不是代码本身的问题,因为它的工作方式如图所示,但主要是对 PHP 的行为有疑问。
当我从另一个 php 文件调用函数时,它似乎读取函数本身,即 function loademp(){}
但是,如果我从 ajax 访问包含该函数的文件,它似乎需要调用该函数,即 loademp()
在同一个文件中。
因为我遇到了这个问题,所以我结束了这段代码,以使其从两个来源开始工作,在 if 条件中调用 ajax,否则它会从 php 文件:
<?php
if ($_POST['runFunct']=="loademp"){ //call from ajax needs 'loademp()' to access the function;
loademp();
}
function loademp(){ //loaded from another file apparently.
try{
//PDO code
print_r(json_encode($results));
}catch(PDOException $e){
echo $e;
}
}
我的其他文件是这样的:
require __DIR__.'loademp.php';
loademp();
有没有一种更实用的方法可以只针对这两种情况使用代码,而不根据来源进行任何条件调整?由于我无法在不使用 POST 变量的情况下从 ajax 调用特定函数,因此我想这是最好的情况,但如果您能指出有关它的良好做法,我将不胜感激.
我认为您在定义函数和执行函数之间存在混淆。
要定义一个函数,你可以这样写:
function say_hello_world() {
echo "Hello, World!\n";
}
这不会立即导致任何事情发生,它只是定义如何做某事。在这种情况下,基本上就像在说:
Whenever I ask you to "say hello world", output to the screen "Hello, World!\n"
要让事情真正发生,你必须执行函数,它看起来像这样:
say_hello_world();
基本上就是说:
Do the actions I gave you for "say hello world"
在您的示例中,您的文件 'loademp.php'
定义了 一个名为 loademp
的函数 - 它说“每当我要求您 'loademp',这就是我要你做的”。在您的其他文件中,您包含该文件,因此定义了函数。然后,你 运行 用这条线:
loademp();
AJAX 调用与任何其他页面加载没有区别,因此您需要在那里做同样的事情 - 首先,定义 函数,或包括做的文件;然后,执行函数。
因此,与其直接调用 loademp.php
,您可以调用 PHP 脚本,如 define_and_execute_loademp.php
,并使用您提到的行:
require __DIR__.'loademp.php';
loademp();
对不起,如果我的问题不是很清楚,我不知道如何用英语表达我想说的。
这不是代码本身的问题,因为它的工作方式如图所示,但主要是对 PHP 的行为有疑问。
当我从另一个 php 文件调用函数时,它似乎读取函数本身,即 function loademp(){}
但是,如果我从 ajax 访问包含该函数的文件,它似乎需要调用该函数,即 loademp()
在同一个文件中。
因为我遇到了这个问题,所以我结束了这段代码,以使其从两个来源开始工作,在 if 条件中调用 ajax,否则它会从 php 文件:
<?php
if ($_POST['runFunct']=="loademp"){ //call from ajax needs 'loademp()' to access the function;
loademp();
}
function loademp(){ //loaded from another file apparently.
try{
//PDO code
print_r(json_encode($results));
}catch(PDOException $e){
echo $e;
}
}
我的其他文件是这样的:
require __DIR__.'loademp.php';
loademp();
有没有一种更实用的方法可以只针对这两种情况使用代码,而不根据来源进行任何条件调整?由于我无法在不使用 POST 变量的情况下从 ajax 调用特定函数,因此我想这是最好的情况,但如果您能指出有关它的良好做法,我将不胜感激.
我认为您在定义函数和执行函数之间存在混淆。
要定义一个函数,你可以这样写:
function say_hello_world() {
echo "Hello, World!\n";
}
这不会立即导致任何事情发生,它只是定义如何做某事。在这种情况下,基本上就像在说:
Whenever I ask you to "say hello world", output to the screen "Hello, World!\n"
要让事情真正发生,你必须执行函数,它看起来像这样:
say_hello_world();
基本上就是说:
Do the actions I gave you for "say hello world"
在您的示例中,您的文件 'loademp.php'
定义了 一个名为 loademp
的函数 - 它说“每当我要求您 'loademp',这就是我要你做的”。在您的其他文件中,您包含该文件,因此定义了函数。然后,你 运行 用这条线:
loademp();
AJAX 调用与任何其他页面加载没有区别,因此您需要在那里做同样的事情 - 首先,定义 函数,或包括做的文件;然后,执行函数。
因此,与其直接调用 loademp.php
,您可以调用 PHP 脚本,如 define_and_execute_loademp.php
,并使用您提到的行:
require __DIR__.'loademp.php';
loademp();