php - 在插件中启动全局变量

标签 php

我正在尝试编写一个插件,并尝试定义一个 API key 并启动一个我的其他函数可以使用的新类。我希望它始终启动(即使在我的插件已经注册之后)。我尝试了以下代码:

if ( !class_exists( 'Mailchimp' ) )
{
    require_once 'src/Mailchimp.php';
}

function init() {
    $apiKey = '1234';
    $api = new Mailchimp( $apiKey );
}

但是,我稍后还有另一个函数,如下所示:

function rb_mailchimp_options() {
     $types = array('user'=>true, 'base'=>true);
     $filters = array('include_inactive'=>true, 'include_drag_and_drop'=>true);
     $templates = $api->templates->getList($filters);
}

我收到一条错误消息,因为它显示调用非对象上的成员函数 getList(),因此它无法识别 $api 变量我之前尝试初始化的。任何建议将不胜感激。

最佳答案

如果您只想在该类中使用 API,请将其存储在类变量中

protected $api;
function init() {
    $apiKey = '1234';
    $this->api = new Mailchimp( $apiKey );
}

function rb_mailchimp_options() {
     $types = array('user'=>true, 'base'=>true);
     $filters = array('include_inactive'=>true, 'include_drag_and_drop'=>true);
     $templates = $this->api->templates->getList($filters);
}

请参阅添加的 $this->api 以访问类中的类变量。

如果你想在类之外使用它,你应该创建一个 getter。

进行编辑:

如果您的类中没有这些函数,但它们像这样一起工作,您应该考虑将它们组合到一个类中以便更轻松地管理它们。

如果您不想这样做,最简单的方法是使用 $api 作为参数:

function init() {
    $apiKey = '1234';
    return new Mailchimp( $apiKey );
}
function rb_mailchimp_options($api) {
     $types = array('user'=>true, 'base'=>true);
     $filters = array('include_inactive'=>true, 'include_drag_and_drop'=>true);
     $templates = $api->templates->getList($filters);
}

而不是这样调用它们:

$api = init();
rb_mailchimp_options($api);

关于php - 在插件中启动全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31810167/

相关文章:

php - 在 PHP 中对 2 列进行排序而无需重做 MySQL 查询

php - 从两个不同的表中更新多个具有相同 id 的数据

php - 如何向 Blueimp Uploader 提交额外的表单数据?

php - 如何在 PHP 中使用另一个数组对数组进行计数?

php - `date_sub` 无法通过 laravel 在 SQL 中工作

php - 从 php 操作 HTML

php - 如何正确地将结果备份到数据库?

PHP 脚本即使登录不正确也能登录

php - 使用具有相同 ClassName 的其他命名空间扩展类

php - mod_pagespeed 添加 <head/> 标签到响应