【问题标题】:PHP OOP doesn't echo variables [closed]PHP OOP不回显变量[关闭]
【发布时间】: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-&gt;icon, $this-&gt;title 等) 我测试了问题是否出在 file1.php Plugin_Permission_Set() 中,但功能正常工作。我还尝试从LoadApp() 返回输出并在app_list.php 中回显它。我仍然得到相同的结果。 注意:没有错误或警告。

【问题讨论】:

  • 这里有很多代码,大部分可能和你的问题无关。这让我们很难跟踪,也很难让您自己找到错误。尝试分解问题并创建minimal reproducible example - 删除部分代码,将内容合并到一个文件中,等等。您可能会在这样做时发现问题,但如果没有,您会有一个问题让其他人更容易提供帮助。
  • @IMSoP 哦,对不起,我将排除带有自动加载器的那个,我只是想表明自动加载器正在工作。
  • 不要只排除它,写一个不使用它的代码版本。看看您是否可以用一个文件或两个文件中的所有内容重现问题。还要消除不相关的细节——HTML、数据库连接等。目的是使代码尽可能短,但仍能代表实际问题。
  • 这样更好吗?再次对此感到抱歉,我在这里没有发布那么多。
  • 现在我们错过了实际的echo 代码,除非我读错了。同样,您是否尝试过将所有内容放入一个文件中,根本不包含任何内容?这仍然重现问题吗?如果不是,那说明问题是什么?缩小范围,继续删除内容,不要试图在“足够短”时停止,当您无法找到任何方法使其更短并且仍然看到问题时停止。

标签: php html oop


【解决方案1】:

我解决了。 在 app_list.inc.php 中,我需要使用 file1.php 中的变量,我无法将该类重新声明为新变量。

来自 app_list.inc.php 的新代码:

<?php
$app->LoadAPP();
?>

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2016-11-10
    • 2013-09-27
    • 2015-08-15
    • 2012-10-12
    • 2014-03-27
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多