【问题标题】:How to use variable in two different class methods?如何在两个不同的类方法中使用变量?
【发布时间】:2018-07-04 10:43:36
【问题描述】:

我有以下代码:

<?php
class my_class{

  private static $var;

  function __construct(){
    add_action('save_post',array($this,'func_a'));
    add_action('wp',array($this,'func_b'));
  }

  function func_a($post_id){
    $this->var[] = $post_id;
  }

  function func_b(){
    var_dump($this->var);
  }

}

$class = new my_class();

我想要做的是:保存时 - 在经过一些检查后将帖子 ID 添加到数组中。然后在加载任何页面或帖子时,使用该帖子 ID 数组进行一些其他检查。当我保存帖子时,变量会按预期更新。问题是在任何页面上调用变量上的 var_dump 时,它返回“NULL”。 我好像遗漏了什么,有人可以帮我吗?

【问题讨论】:

  • PHP 中任何变量的值只会在脚本运行期间保留。如果您加载一个新页面,整个过程将从头开始,没有保留上一页面加载的值。您可能需要查看会话:php.net/manual/en/session.examples.basic.php

标签: php wordpress class


【解决方案1】:

请在下面使用它会帮助你。

class my_class{

 private $var = array();
 private $final_val, $saved_val;

 function __construct(){
   add_action('save_post',array($this,'func_a'));
   add_action('wp',array($this,'func_b'));
 }

 function func_a($post_id){
   global $post;
   if( get_option( 'class_option' ) ){
    $this->saved_val = explode(",", get_option( 'class_option' ));
    foreach ($this->saved_val as $key => $value) {
        $this->var[] = $value;
    }
 }
$this->var[] = $post->ID;
$this->final_val = implode(",", $this->var);
update_option( 'class_option', $this->final_val );
}

function func_b(){
 var_dump(get_option( 'class_option' ));
}

}
$class = new my_class();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2021-08-22
    • 1970-01-01
    • 2019-09-09
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多