我是PHP的新手,不管我所知道的是它的“功能编程”方面。我使用的插件似乎遵循“面向对象编程”样式,并且想要访问变量以在我自己的函数中使用。我不知道怎么做。
为了给你一个想法,这就是插件中的类定义(类似):
<?php
class WPSEO_Frontend {
public function canonical() {
$canonical = get_page_link();
}
}
?>
这就是插件中的另一个文件如何调用变量$canonical
:
<?php
class WPSEO_Twitter extends WPSEO_Frontend {
public function twitter_url() {
echo '<meta name="twitter:url" content="' . esc_url( $this->canonical() ) . '"/>' . "\n";
}
}
?>
现在,我希望能够在我的函数中以不同的文件访问$canonical
变量(在函数式编程风格中)。例如,像这样:
<?php
function seo_meta_tags() {
echo '<meta property="og:url" content="' . $canonical . '">' . PHP_EOL;
}
?>
我该怎么做?有可能吗?
PS:鉴于我的知识,我不知道我是否遗漏了任何东西,所以请告诉我。
答案 0 :(得分:2)
这里有几个问题。
WPSEO_Frontend::canonical
函数应返回一个值,以便在代码的其他部分调用函数时返回值而不是void。canonical
是WPSEO_Frontend
的成员函数,因此您需要WPSEO_Frontend
的实例来调用canonical
函数。更新WPSEO_Frontend::canonical
功能以返回get_page_link()
:
<?php
class WPSEO_Frontend {
public function canonical() {
return get_page_link();
}
}
?>
然后在seo_meta_tags
函数中使用WPSEO_Frontend
的实例来调用canonical
:
<?php
function seo_meta_tags() {
$wp_seo_frontend = new WPSEO_Frontend();
echo '<meta property="og:url" content="' . $wp_seo_frontend->canonical() . '">' . PHP_EOL;
}
?>
答案 1 :(得分:2)
您需要拥有WPSEO_Frontend类(或扩展它的类)的实例。我称之为$instance
。然后,您将该变量传递给您的函数。
我假设第一个函数要么返回值,要么使用$ this关键字将其设置为属性。
WPSEO_Frontend类可能具有该属性的getter函数,因此您可能需要执行
$instance->getCanonical();
或者只是
$instance->canonical;
如果没有看到更多的实际代码,我们就无法告诉你更多。如果函数canonical()
实际上返回了某个东西,那就是要调用的函数。