我已经在我的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
这样的类中的变量上?
感谢任何纠正和建议。
答案 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()) {