Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-包括类,并将其放入类变量中_Php_Class_Variables_Public - Fatal编程技术网

PHP-包括类,并将其放入类变量中

PHP-包括类,并将其放入类变量中,php,class,variables,public,Php,Class,Variables,Public,我在php代码中的一个类中编写了这个语法 public static function cmp_header() { ?> <div class="header"> <div class="upside"> <div class="upside-layout layout"> <div class="title">

我在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();
}
有什么可能的原因要这样做吗?要使类存储在类内的变量上,如
public$config

感谢您的纠正和建议。

问题在于:

public static function cmp_header() {
这是一个静态方法,因此在该方法中没有
$This
,因为您可以仅使用类名来调用它,而不在特定对象上调用它


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

您不能在任意位置创建类。例如,您可以执行以下操作:

。。。但并非如此,例如:

这就是语言的工作原理

不过,在您的情况下,我怀疑您甚至没有尝试嵌套类。将
include
语句移动到文件的顶部(或者更好地,实现类自动加载),这将得到解决

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

public static function cmp_header(config $config) {
    if($config->something()) {

您能否编辑问题并展示
config.php
中的代码,而不是仅仅描述它?您试图在何处以及如何访问
config
属性,代码是什么样子以及它的上下文是什么?您需要在导致错误的行周围发布代码。@阿尔瓦罗冈萨雷斯确定您不能在任意位置创建类,更不用说类方法了。这就是PHP语法的工作原理(它实际上与
include
无关)。@lvaroGonzález这意味着什么?抱歉,我是新手,你能详细说明一下吗?你的意思是,我需要编写
公共函数cmp_header()
,而不是
公共静态cmp_header()
?@IrvanHilmi,这取决于你如何调用它。还请注意我的编辑,解决这个问题后,您将遇到下一个问题。我已经更新了代码,编写了如下方法
publicstaticcmp_header()
,并使用这行脚本
$this->config->something()但仍然得到相同的错误。我可以用另一种方式调用它吗?因为我做了一些其他的事情,包括一个有类的文件,只使用
$sampleClass=new sampleClass()
调用它,工作正常,但是当我试图在包含该文件的类中存储
$sampleClass
at class变量时,就像
public$sampleClass
并分配类
$this->sampleClass=new sampleClass()
,我想调用方法iside
$this->sampleClass
$this->sampleClass->somethod()但是我得到了那个错误,如果我让你困惑,很抱歉。我真的不明白我现在遇到了什么问题,你说得对,当我解决它的时候,我面临着更多的问题,但我已经用自动加载的东西修复了它,得到了我想要的东西,我尝试了
spl\u autoload()
,它工作得很好。
class A{}

function create_b()
{
    class B{}  
}
class A
{
    public function foo()
    {
        class B{}
    }
}
// Fatal error: Class declarations may not be nested
public static function cmp_header(config $config) {
    if($config->something()) {