首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个用户模型中重新定义Codeigniter段塞常数

问在每个用户模型中重新定义Codeigniter段塞常数
EN

Stack Overflow用户
提问于 2016-08-18 18:34:44
回答 1查看 256关注 0票数 0

我有一个内容管理系统,其中为每个登录用户的适当目录定义了模型中的一个或所有控制器的基于片段的常量。我碰巧偶然发现了这个发现,因为我尝试了重新定义每个登录用户的常量。

我认为重新定义常量是不可能的,但我不理解Codeigniter或PHP是如何以这种方式重新定义常量的。我没有收到任何PHP错误,说明它无法重新定义常量,所以我必须相信模型或控制器实例对于每个控制器都是未设置的?

主计长:

代码语言:javascript
复制
class Content extends CI_Controller {
    function __construct()
    {
        parent::__construct();
        $this->load->model('main_model');

        ...
            get slug from logged_in user
        ...

        $this->main->set_slug_based_constants($slug)
    }
}

一种主要的模式(我知道这样做是不好的):

代码语言:javascript
复制
class Main_model extends CI_Model{

    public function set_slug_based_constants($slug)
    {
        define('CLOUDFRONT_DIRECTORY', $slug.'_cloudfront_directory');
    }
}

来自Codeigniter文档:动态实例化。在CodeIgniter中,只在请求时才加载组件并执行例程,而不是全局执行。

因此,我想相信,在这种情况下,基于Codeigniter文档,我的假设是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 13:58:13

与其说是“未定”,不如说是“尚未界定”。对URL (控制器)的每个浏览器请求都是服务器中唯一的进程。因此,该常量不会被重新定义,而是对每个URL请求进行新的实例化。

如果您第二次尝试运行$this->main_model->set_slug_based_constants($slug);,将得到一个错误消息,说明已经定义的常量CLOUDFRONT_DIRECTORY。

尝试此版本的控制器以查看错误。

代码语言:javascript
复制
class Content extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('main_model');
        $this->main_model->set_slug_based_constants("Dave");
    }

    function index()
    {
        echo "The constant's value is <strong>".CLOUDFRONT_DIRECTORY."</strong><br>";
        $this->main_model->set_slug_based_constants("jruser");
        echo "The constant's value is  <strong>".CLOUDFRONT_DIRECTORY."</strong><br>";;
    }

}

它将产生类似这样的输出。

常数的值是Dave_cloudfront_directory 遇到PHP错误 严重程度:通知 消息:常量CLOUDFRONT_DIRECTORY已经定义 文件名:model/Main_model.Main 线路号码: 13 常数的值是Dave_cloudfront_directory

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39025256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档