【发布时间】:2017-05-31 08:01:10
【问题描述】:
我有一个 php 类,它使用“include”从文件中加载一些 html 和 php。在该文件中,我想访问包含该文件的类对象,但我不断收到“致命错误:在非对象上调用成员函数 makeSizesSelect() ...”
我尝试过 include 和 require,我尝试过声明全局变量,我已经尝试了我能想到的所有东西,以及到目前为止我在 SO 上找到的所有东西。似乎没有什么允许我包含的文件让 php 代码访问包含它的对象。
有什么想法吗?
这里有几个sn-ps ...
类文件:
class cdf {
public $version = 001;
public function cdf_shortcode( $atts,$content )
{
$this->slog( 2,"shortcode() case: show" );
require( 'templates/container.php' );
}
}
所需的文件 container.php 包含以下内容(以及其他内容):
<?php
echo "version = ".$this->version;
?>
然后我尝试使用该对象:
$cdf = new cdf();
$cdf->cdf_shortcode( null, null);
$this->slog( 2,"shortcode() case: show" ) 行有效。它运行该功能(我没有包含在这个 sn-p 中)就好了。但是我需要(或包含)的文件不能使用 $this 来访问该对象。我不知所措。 :-(
我要做的就是在包含的文件中访问包含该文件的类中的变量和方法...
抱歉,补充了一些信息。我不确定这是否有什么不同。上面的代码都是 WordPress 插件的一部分。
【问题讨论】:
-
包含一个文件是不够的,你需要实例化你的类。
-
因为在包含 $obj=new cdf(); 这样的类的创建对象之后,您还没有创建任何对象来访问您的类。然后访问成员函数,如 $obj->cdf_shortcode( '','' )
-
我很抱歉。该类显然已实例化,并且该对象存在。正如我所说,简码函数的第一行有效。如果我没有实例化对象,情况就不会如此。
标签: php wordpress class include