【发布时间】:2020-10-24 15:33:56
【问题描述】:
注意:这个问题对我来说真的很难解释,所以我没有合适的标题名称。欢迎任何更改。
我有 3 个文件,它们的名称是 home.php main_system.php 和 app_list.inc.php。 Home.php 包括 main_system.php 和 app_list.php main_system.php 具有自动加载功能,并包含更多文件,其中一个是 file1.php。 App_list.inc.php 有一个名为 AppList 的类。 这是home.php的代码
<?php
include_once '../fc_system/main_system.php';
include_once 'extensions/app_list.inc.php';
?>
File1.php 代码
<?php
use AppList\AppList;
$api = new API;
$app = new AppList;
if($api->Plugin_Permission_Set('root')) {
$app->SetApp('./other/settings.svg', 'Settings', './extensions/settings.ext.php');
}
?>
代码 AppList.inc.php
<?php
use AppList\AppList;
$applist = new AppList;
$applist->LoadAPP();
?>
main_system.php的代码
include_once './Plugins/file1.php';
function Classes_Loader($classname) {
$path = '../fc_system/Classes/';
$ext = '.class.php';
$full_path = $path . $classname . $ext;
include_once $full_path;
if(!file_exists($full_path)) {
return false;
}
}
spl_autoload_register("Classes_Loader");
最后来自 AppList 类的代码:
<?php
namespace AppList;
class AppList
{
public $icon;
public $title;
public $link;
public function SetApp($icon, $title, $link) {
$this->icon = $icon;
$this->title = $title;
$this->link = $link;
}
public function LoadAPP() {
echo '<div class="app">'.
'<a href="' . $this->link .'">'.
'<div class="img">'.
'<img src="' . $this->icon . '">'.
'</div><div class="title">' . $this->title . '</div></a>';
}
}
我想要做的是使用SetApp() 函数在file1.php 中设置参数,并使用app_list.php 中的LoadApp() 在home.php 上显示它们。
我得到了 html,但我没有看到我在 file1.php 中设置的参数($this->icon, $this->title 等)
我测试了问题是否出在 file1.php Plugin_Permission_Set() 中,但功能正常工作。我还尝试从LoadApp() 返回输出并在app_list.php 中回显它。我仍然得到相同的结果。
注意:没有错误或警告。
【问题讨论】:
-
这里有很多代码,大部分可能和你的问题无关。这让我们很难跟踪,也很难让您自己找到错误。尝试分解问题并创建minimal reproducible example - 删除部分代码,将内容合并到一个文件中,等等。您可能会在这样做时发现问题,但如果没有,您会有一个问题让其他人更容易提供帮助。
-
@IMSoP 哦,对不起,我将排除带有自动加载器的那个,我只是想表明自动加载器正在工作。
-
不要只排除它,写一个不使用它的代码版本。看看您是否可以用一个文件或两个文件中的所有内容重现问题。还要消除不相关的细节——HTML、数据库连接等。目的是使代码尽可能短,但仍能代表实际问题。
-
这样更好吗?再次对此感到抱歉,我在这里没有发布那么多。
-
现在我们错过了实际的
echo代码,除非我读错了。同样,您是否尝试过将所有内容放入一个文件中,根本不包含任何内容?这仍然重现问题吗?如果不是,那说明问题是什么?缩小范围,继续删除内容,不要试图在“足够短”时停止,当您无法找到任何方法使其更短并且仍然看到问题时停止。