在CodeIgniter中,是否可以使用以下示例中的会话检查全局定义常量
if($this->session->userdata("private")){
define("TAB_ACCOUNTS","accounts");
define("TAB_INVENTORY","inventory");
define("TAB_INVENTORY_PRODUCTS","inventory_products");
define("TAB_INVENTORY_VIEW","inventory_view");
define("TAB_ORDER_PRODUCTS","order_products");
define("TAB_ORDERS","orders");
define("TAB_ORDERS_VIEW","orders_view");
define("TAB_VENDORACCOUNTS","vendoraccounts");
}else{
define("TAB_ACCOUNTS","back_accounts");
define("TAB_INVENTORY","back_inventory");
define("TAB_INVENTORY_PRODUCTS","back_inventory_products");
define("TAB_INVENTORY_VIEW","back_inventory_view");
define("TAB_ORDER_PRODUCTS","back_order_products");
define("TAB_ORDERS","back_orders");
define("TAB_ORDERS_VIEW","back_orders_view");
define("TAB_VENDORACCOUNTS","back_vendoraccounts");
}
我的要求是基于会话使用表名MySQL查询...
更新:我需要在config.php或任何地方声明这些常量。我需要在整个项目中访问它们,而不是在函数或控制器中
发布于 2018-06-28 07:45:51
因为您需要启动并运行session
,所以最简单的解决方案是利用“post_controller_constructor”钩子。
在config.php中
$config['enable_hooks'] = TRUE;
文件application/config/hooks.php
$hook['post_controller_constructor'][] = array(
'class' => '',
'function' => 'set_tab_constants',
'filename' => 'post_controller_hook.php',
'filepath' => 'hooks'
);
在文件application/hooks/post_controller_hook.php中
function set_tab_constants()
{
if(isset($_SESSION['private']))
{
define("TAB_ACCOUNTS", "accounts");
define("TAB_INVENTORY", "inventory");
define("TAB_INVENTORY_PRODUCTS", "inventory_products");
define("TAB_INVENTORY_VIEW", "inventory_view");
define("TAB_ORDER_PRODUCTS", "order_products");
define("TAB_ORDERS", "orders");
define("TAB_ORDERS_VIEW", "orders_view");
define("TAB_VENDORACCOUNTS", "vendoraccounts");
}
else
{
define("TAB_ACCOUNTS", "back_accounts");
define("TAB_INVENTORY", "back_inventory");
define("TAB_INVENTORY_PRODUCTS", "back_inventory_products");
define("TAB_INVENTORY_VIEW", "back_inventory_view");
define("TAB_ORDER_PRODUCTS", "back_order_products");
define("TAB_ORDERS", "back_orders");
define("TAB_ORDERS_VIEW", "back_orders_view");
define("TAB_VENDORACCOUNTS", "back_vendoraccounts");
}
}
直接访问超全局$_SESSION
可避免获取CI
实例的开销,以便session
类可用于读取userdata
。无论如何,该方法直接读取$_SESSION
变量。避开中间商,直接购买!
在PHP中,常量的作用域是全局的。您可以在脚本中的任何位置访问常量,而无需考虑作用域。
发布于 2018-06-28 06:35:07
据我所知,您的公共/后端表( else
块)总是以back_
为前缀,因此我建议不要使用这些常量。
相反,在您的模型中使用普通表名,并创建一个方法来验证会话并返回一个空字符串或"back_“字符串,然后在"from”子句中使用此方法。
换句话说:“当唯一的区别是字符串前缀时,为什么要有这么多常量?”
此外,如果这些镜像表代表相同的记录,请注意您的必需品,例如,如果accounts
表中的记录与back_accounts
中的记录种类/类型相同,我认为它们应该都是同一个表。:-)我假设你不能改变这个必备条件:-)
https://stackoverflow.com/questions/51071438
复制相似问题