PHP-包括一个类,一个放入类内部变量

时间:2018-12-26 14:46:08

标签: php class variables public

我已经在我的PHP代码的类中编写了这种语法

public static function cmp_header() {
    ?>
    <div class="header">
        <div class="upside">
            <div class="upside-layout layout">
                <div class="title">
                    <span class="logo">
                        <img src="<?php echo me_url ?>images/websites/logo-meapp.png" alt="">
                    </span>
                    <span class="label">MeApp</span>
                </div>
                <div class="navigation">
                    <div class="navigation-layout layout">
                        <?php
                            if($this->config->something()) {
                                ?>
                                <div class="masuk no-events menu" atr="redirect/masuk">
                                    <div class="masuk click-events header-button menu" atr="redirect|daftar">Welcome, Irvan Hilmi</div>
                                </div>
                                <?php
                            } else {
                                ?>
                                <div class="masuk no-events menu" atr="redirect/masuk">
                                    <div class="masuk click-events header-button menu" atr="redirect|daftar">Daftar</div>
                                </div>
                                <div class="masuk no-events menu" atr="redirect/masuk">
                                    <div class="masuk click-events header-button menu" atr="redirect|masuk">Masuk</div>
                                </div>
                                <?php
                            }
                        ?>
                        <div class="# no-events menu" atr="do/toggle-more-menu">
                            <div class="# click-events header-button menu" atr="do|toggle-more-menu">#</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <?php
}
public function __construct() {
    require_once('config.php');
    $this->config = new config();
}

config.php文件具有名为config的类,我已经将变量$config设置为public。在类中用public $config声明。

但是问题是,当我尝试使用语句$config访问变量$this->config并在config类内调用方法时,就像$this->config->something();一样,这是一个错误这样。

  

致命错误:未捕获错误:在对象上下文中不使用$ this

我还已经确保config.php中的类和方法在public范围内。

这是config.php文件

class config {
    public function something() {
        // the method script here
    }
    public function __construct() {
        // nothing just yet
    }
}

有没有可能这样做?使一个类存储在public $config这样的类中的变量上?

感谢任何纠正和建议。

2 个答案:

答案 0 :(得分:2)

问题是这样的:

public static function cmp_header() {

这是一个静态方法,因此在此方法内没有$this,因为您可以仅使用类名来调用它,而不能在特定对象上调用它。

请注意,解决此问题时,您将遇到另一个问题,即无法嵌套类声明。您应该在文件顶部包含该类,或者-更好-使用自动加载来加载所需的类。

答案 1 :(得分:0)

您不能在任意位置创建类。例如,您可以执行this

class A{}

function create_b()
{
    class B{}  
}

...但不是this

class A
{
    public function foo()
    {
        class B{}
    }
}
// Fatal error: Class declarations may not be nested

这就是语言的工作方式。

但是,对于您而言,我怀疑您甚至没有尝试嵌套类。将include语句移到文件顶部(或者甚至更好地实现类自动加载),将解决此问题。

最后但并非最不重要的一点,cmp_header()不能是静态的,并且不能同时访问实例属性。使其成为常规方法或完全更改设计并将config作为参数传递:

public static function cmp_header(config $config) {
    if($config->something()) {
相关问题