Codeigniter:使用静态变量

时间:2016-07-20 07:12:39

标签: php codeigniter

我正在建立一个网站,我必须保存一个全局变量。

我正在使用此人代码globals_helper.php custom global variable class

但我总是得到静态变量值null。

globals_helper.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 // Application specific global variables
class Globals
{
 private static $authenticatedMemberId = null;
 private static $initialized = false;

 private static function initialize()
 {
     if (self::$initialized)
         return;

     self::$authenticatedMemberId = null;
     self::$initialized = true;
 }

 public static function setAuthenticatedMemeberId($memberId)
 {
     self::initialize();
     self::$authenticatedMemberId = $memberId;
 }


 public static function authenticatedMemeberId()
 {
    self::initialize();
     return self::$authenticatedMemberId;
 }
}

我已完成所有步骤,例如在helper文件夹中添加globals_helper.php和更新的自动加载文件。现在我试图从自定义库“Ctrl_utility”函数“get_search_term”访问这些静态变量,我的控制器调用get_search_term函数

Ctrl_utility.php

class Ctrl_utility {
 protected $CI;
public static $static_search = "";


public function __construct()
{
    // Assign the CodeIgniter super-object
    $this->CI =& get_instance();

}

public function get_search_term($searchTerm){

    $searchTerm = $this->CI->security->xss_clean(htmlspecialchars($searchTerm));

    if (isset($searchTerm) && strlen($searchTerm)>0) {
        Globals::setAuthenticatedMemeberId($searchTerm);  
    } else {
       $searchTerm = Globals::authenticatedMemeberId();
    }
    return $searchTerm;
}

我的一个控制器,它们都有类ctrl_utility,get_search_term函数:

class Blog_controller extends CI_Controller{

public function __construct() {

    parent::__construct();

    $this->load->model('blogs_model');
}

public function index(){


    //Get SearchTerm Values
    $searchTerm = $this->ctrl_utility->get_search_term($this->input->post('searchTerm'));

    //Get Url First Parameter
    $start = $this->ctrl_utility->get_url_first_parameter();

    // Get Data from solr 
    $rows = 10;
    $data = $this->blogs_model->solrData($start, $rows, $searchTerm); //give start of documents

    //Pagination
    $this->pagination->initialize($this->ctrl_utility->pagination_config($this->uri->segment(1), $rows, $data['found']));

    //Views
    $this->load->view('tabs/blogs', $data);


}
}

我做错了吗?

1 个答案:

答案 0 :(得分:0)

现在,当在CodeIgniter中定义它们时,有几种方法可以做到这一点。我在下面列出了其中一些:

  1. 在应用程序/库中创建自己的文件,其中类构造函数包含一个数组作为参数。现在在/ application / config中创建一个新文件,其名称与application / libraries中给出的名称相同,并在其中声明全局变量。现在使用这些变量,自动加载新创建的库。

  2. 在application / core中创建自己的文件,并在其中声明全局变量。在控制器中,您需要扩展文件名而不是CI_Controller。

  3. 如果全局变量是真常量,只需将它们添加到application / config / constants.php文件中,并将它们全部大写,就像定义其他变量一样。

  4. 如果要设置应用程序常量,请创建新的配置文件并添加变量。现在将其加载为$ this-&gt; config-&gt; load('filename');并将这些变量作为

    访问

    $这 - &GT; config-&GT;项(“变量名”);

  5. 而不是创建帮助器创建库

      

    步骤1:首先,打开应用程序/库并创建自定义   类名globals.php。它包含一个构造函数   包含一个数组作为参数。

    <?php
    
    class Globals {
    
    //  Pass array as an argument to constructor function
    public function __construct($config = array()) {
    
    //  Create associative array from the passed array
    foreach ($config as $key => $value) {
    $data[$key] = $value;
    }
    
    // Make instance of CodeIgniter to use its resources
    $CI = & get_instance();
    
    // Load data into CodeIgniter
    $CI->load->vars($data);
    }
    
    }
    
    ?>
    
      

    步骤2:现在制作配置文件,打开application / config并创建   将文件作为globals.php文件并编写下面给出的代码。这个文件包含   config变量将作为数组传递给构造函数   Globals类,其键和值存储在$ data

    <?php
    
    // Create customized config variables
    $config['web_Address']= 'https://www.example.com/blog';
    $config['title']= 'CodeIgniter Global Variable';
    
    ?>
    
      

    当构造函数加载时,它将采用配置变量   从配置文件中,以便在任何地方使用这些变量。

         

    注意:上述文件的名称必须与创建的类相同   库文件夹,否则代码将无法正常工作。

         

    步骤3:但在使用这些变量之前,我们必须自动加载新的   创建了库全局变量,如下所示。

    在自动加载中加载库

    $autoload['libraries'] = array('globals');
    

    现在,您可以在控制器中使用全局变量

    <?php
    class CI_Global_Variable_Tutorial extends CI_Controller{
    public function __construct() {
    parent::__construct();
    }
    // Load view page
    public function index() {
    $this->load->view('show_global_variables');
    }
    }
    ?>
    
      

    观看次数:show_global_variables.php

         

    在视图页面中,我们可以根据需要使用全局变量。

    <?php
    echo "Title of the blog post : ".$title;
    echo "<a href='$web_Address'>"."Click here to go to blog page"."</a>";
    ?>