我正在从一个函数调用多个函数...根据我的范围,我想根据调用该函数的文件从父函数调用一个特定的函数...
function dispcategories() {
include ('database/connection.php');
$select = mysqli_query($con, "SELECT * FROM categories");
while ($row = mysqli_fetch_assoc($select)) {
echo "<table class='category-table'>";
echo "<tr><td class='main-category' colspan='2'>".$row['category_title']."</td></tr>";
dispsubcategories($row['cat_id']);
dispsubcategoriesstate($row['cat_id']);
echo "</table>";
}
}
从dispcategories我想调用dispsubcategoriesstate()当且仅当文件updatestate.php调用dispcategories()...如果任何其他文件调用dispcategories()而不是它不应该调用dispsubcategoriesstate()... 希望每个人都能得到一个问题,如果条件与否,谁可以检查文件名是否被调用
答案 0 :(得分:1)
包含文件就像在源代码中输入一样。您可以使用魔术常量__FILE__
来确定当前文件,但这不会告诉您写入调用函数的文件。
我建议你更应该将一个参数传递给你的函数,然后根据它调用子程序。
声明您的函数,并将行dispsubcategoriesstate($row['cat_id']);
替换为下面显示的块
function dispcategories($fetchSubCategories = false) {
// your code goes here
if ($fetchSubCategories === true) {
dispsubcategoriesstate($row['cat_id']);
}
// the rest of your code goes here
}
当您从不想要子类别的文件中调用它时,您将像现在一样调用它:
dispcategories();
每当您希望它获取子类别时,您可以通过以下方式传递参数:
dispcategories(true);
我正在使用可选的函数参数,如果这令人困惑,您应该阅读manual page。