我正在建立一个网站,我必须保存一个全局变量。
我正在使用此人代码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);
}
}
我做错了吗?
答案 0 :(得分:0)
现在,当在CodeIgniter中定义它们时,有几种方法可以做到这一点。我在下面列出了其中一些:
在应用程序/库中创建自己的文件,其中类构造函数包含一个数组作为参数。现在在/ application / config中创建一个新文件,其名称与application / libraries中给出的名称相同,并在其中声明全局变量。现在使用这些变量,自动加载新创建的库。
在application / core中创建自己的文件,并在其中声明全局变量。在控制器中,您需要扩展文件名而不是CI_Controller。
如果全局变量是真常量,只需将它们添加到application / config / constants.php文件中,并将它们全部大写,就像定义其他变量一样。
如果要设置应用程序常量,请创建新的配置文件并添加变量。现在将其加载为$ this-&gt; config-&gt; load('filename');并将这些变量作为
访问$这 - &GT; config-&GT;项(“变量名”);
而不是创建帮助器创建库
步骤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>";
?>