PHP-包括类,并将其放入类变量中
我在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">
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()) {