【问题标题】:Making a Codeigniter CMS Dry使 Codeigniter CMS 干燥
【发布时间】:2012-12-10 19:51:26
【问题描述】:

我看到一些网站讨论如何制作一个登录功能,使其在每次页面加载后自动运行,而无需在每个控制器中调用该功能,我想知道是否有人可以将我指向其中一个因为我丢失了我看到的少数几个的链接。

我发现这个网站讨论了如何实现这一目标:

philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

我创建了一个扩展 CI_Controller 的 MY_Controller 以及扩展了控制我网站主站点的 MY_Controller 的 Frontend_Controller,我还创建了一个控制我正在创建的 CMS 的 Backend_Controller。

我还有一个扩展 Backend_Controller 的登录控制器。我的问题是,如果我想为整个后端区域运行 if 语句以查看是否有会话变量 isset,如果有,则检查该值是否为数字。如果是,则让他们重定向到登录名,如果不是,则让他们重定向到控制面板控制器,该控制器也扩展了 Backend_Controller。我是否在 Backend_Controller 中执行此 if 语句?

这是我想出来的。

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

class Backend_Controller extends MY_Controller
{
    public function __construct()
    {
        parent::__construct(); 

        if (!!isset($this->session->userdata('xtr'))) && (!is_integer($this->session->userdata('user_variable_id'))))
        {
            redirect('login');
        }
    }
}  

这是实现这一目标的正确方法以及这样做的正确位置吗?如果是这样,我会针对登录控制器或其他控制器执行任何特定的操作来管理用户吗?

或者有更好的想法来解决这个问题?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    这个问题对于 codeigniter 来说确实不是古怪/独特的,这更像是一个面向对象/基于类的问题,而不是其他任何问题。意见问题最好问如何从另一个类扩展一个类,以及我实际上可以在我的类的构造函数中放入什么。但话虽这么说,但更多的是静音点,也许我只是挑剔的意思。那个

    在这方面你有构造函数/解构函数的对象/类。您通常可以放置变量和函数调用。但是我不确定 if 语句是否会起作用,也许如果您在其中包含相同的 if-else 的类中创建一个函数/方法,并让它相应地执行您的竞标,它会比在构造中使用它更好。

    不过,我是根据前段时间读到的内容进行的,从那以后发生了很多变化..

    我会说看看

    What can I add in constructors in PHP?

    http://php.net/manual/en/language.oop5.decon.php

    这可能比我目前能更好地帮助你,因为我已经有一段时间没有完成一个完整的课程了,我创建的方法比现在任何东西都多,我从 PHP v 5.3.2 知道到 5.3.3,由于与旧 php 和新版本的兼容性,整个逻辑的工作方式发生了一些变化。所以总而言之,我想这更多的是提供指导而不是直接回答问题。

    我将依靠可能的引擎盖,最有可能取决于您的 PHP 版本的机会是 if-else,在构造中不是您想要做的事情,而是制作一个从构造中调用的方法。

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多