我对 PHP OOP 还很陌生,我遇到的问题是我无法理解我的脚本的以下布局:
- 设置主类,它设置页面并扩展 mysql 类并通过 __construct 创建数据库连接
- 在主类中,我运行一个公共函数,该函数包含()一个文件并访问该包含文件中的一个函数
- 在包含文件中的函数中,我似乎无法通过实际的全局变量或使用 $this->blah 访问主类
有没有人有任何指示或方向。我试着用谷歌搜索它,但找不到任何与我试图做的事情相近的东西。
它开始于: - 作品
$gw = new GWCMS();
然后在 GWCMS() 的 _construct 内部,GWCMS 扩展了 mySQL - 工作
parent::__construct(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$this->build();
然后它调用 build() - 工作
public function build(){
...
$page['content'] = $this->plugins($page['content']);
...
$output = $this->output($theme,$page);
echo eval('?>' . $output);
}
调用 plugins() - 我们开始遇到问题
public function plugins($content){
$x = 0;
if ($handle = opendir(STOCKPLUGINPATH)) {
while (false !== ($entry = readdir($handle))) {
if(is_dir(STOCKPLUGINPATH . $entry . '/') && $entry != '.' && $entry != '..'){
if(file_exists(STOCKPLUGINPATH . $entry . '/inc.php')){
include(STOCKPLUGINPATH . $entry . '/inc.php');
$content = do_shortcode($content);
}
}
}
closedir($handle);
}
return $content;
}
前面的代码包括 inc.php ,其中列出了要包含的文件:
include(STOCKPLUGINPATH . 'Test/test.php');
test.php 包含函数列表。上面的 do_shortcode 可以毫无问题地访问函数并完成工作,但是我需要 test.php 中的以下函数来访问 $gw->fetchAssoc(); 哪个 fetchAssoc 在 gwcms 的父级中
function justtesting2($attr){
$config = $gw->fetchAssoc("Select * from gw_config");
foreach($config as $c){
echo $c['value'];
}
}
当我运行脚本时,我得到
Fatal error: Call to a member function fetchAssoc() on a non-object in /home/globalwe/public_html/inhouse/GWCMS/gw-includes/plugins/Test/test.php on line 9