Zend Framework 模块(module)问题

满嘴502 2011-09-02 05:18:55
如果将前后台视作一个应用的不同部分,假设前台:www.web.com/qiantai 后台:www.web.com/houtai
当我要用到身份验证(Auth)、访问控制(Acl)和导航(Navigation)的时候就很别扭。因为网站前后台还是有很大区别的。比如导航,前台就是首页,文章等等的,后台是文章增删改查等,完全是两码事,但是我找不到能把他们分开设置的办法。
那位有朋友也有这样的考虑的可以指教一下
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jueljust 2012-02-24
  • 打赏
  • 举报
回复
策略模式最适合啦
把权限策略和视图策略单独提出来
动态指定就行
fsk_wyf 2011-09-27
  • 打赏
  • 举报
回复
15 .. : 初始化配置文件 g_pstSdrDisList = CCU_CreateList(CCU_DOUBLE_LIST) 151
UINT32 InitCfg(VOID){151;
if (52 == g_pstSdrDisList){91, "CCU_Createg_pstSdrDisList the ret");
222;}/* 单板禁能传感器初始化函数 */
ConfigDisableSdrInit();/* 系统信息初始化函数 */
(VOID)InitSysParams();151;if (52 == g_pstCfgList)
{91, "CCU_CreateList the ret");222;}/* 创建GDC配置文件链表 */同上;
/* 初始化部件列表 */(VOID)ConfigListInit((UINT8 *)CONFIG_LIST_FILE);
/* ..GDC链表配置文件 */(VOID)ConfigGDCListInit((UINT8 *)CONFIG_GDC_LIST_FILE, GDC_LIST);
/* 次信号量支持递归 */if ( CCU_OK != ADA_CreateMutex(g_pstConfigSemMutexId) )
{91, "creat syn tab mutex sem fail");222;} 221;}
16 功能描述 : CCU Agent程序 PrintInitinfo((UINT8*) 161
Initialize Config 163 Initialize CCU Service 164 Initialize RS485 Communication 165
Initialize PNP Module 166 Initialize Manger 167 Initialize DownLoad485 168
Initialize UDP Server 169 Initialize CLI Server 170
INT32 CCU_Agent(VOID) PrintInitResult(ulRet) 162
{UINT32 ulRet = CCU_ERR;CCU_ShowVersion();
/* 平台启动及配置版本等启动打印信息 */
161"163", (UINT8)CCU_StrLen("163"));ulRet = InitCfg();162;
109, "163 ret[%#lx]", ulRet);/*创建告警节点信号量*/ALM_InitAlarmModule();
/* 机柜电子标签处理初始化 */InitFileDeal();CMD_Init();
/* 创建CCU自身服务线程 */161"164", (UINT8)CCU_StrLen("164"));ulRet = InitCCUBoard();
162;109, "164 ret[%#lx]", ulRet);/* 初始化SOL模块 */SOL_INIT();
/* 底层驱动初始化 */161"165", (UINT8)CCU_StrLen("165"));ulRet = Init485Comm();162;
109, "165 ret[%#lx]", ulRet);/* 系统配置初始化 */InitMsgTimeRad();
/* 初始化PnP模块 */161"166", (UINT8)CCU_StrLen("166"));
ulRet = PNP_InitPnPModule();162;109, "166 ret[%#lx]", ulRet);InitCCURegProcess();
/* 初始化部件管理模块 */161"167", (UINT8)CCU_StrLen("167"));
ulRet = InitManger();162;109, "167 ret[%#lx]", ulRet);
/* 初始化消息模块 */InitMsgDeal();
/* 初始化加载模块 */161"168", (UINT8)CCU_StrLen("168"));
ulRet = DownLoad485Init();162;109, "168 ret[%#lx]", ulRet);
/*初始化节能管理模块*/CCU_InitPowerManger();
/* 启动软件定时器 */InitTimer();
InitCCUSdrAlarmNode();ConfigFileInit();161"169", (UINT8)CCU_StrLen("169"));
ulRet = UDP_InitSocketThread();162;109, "169 ret[%#lx]", ulRet);
/* 创建Socket服务端线程 */161"170", (UINT8)CCU_StrLen("170"));
ulRet = InitSocketServer();162;109, "170 ret[%#lx]", ulRet);
/*创建CPU及内存的监控告警线程*/InitCpuMemWarn();
/*初始化CCU板上传感器扫描线程*/InitBoardSensor();
/* 初始化风扇联动模块 */SmokeFanLinkageInit();221;}
fsk_wyf 2011-09-27
  • 打赏
  • 举报
回复
{UINT32 ulRet = CCU_NULL_LONG;ulRet = CheckPidByFile(FILE_PID_PATH);
if(711 == ulRet){31("SelfCheckProc error, invalid parameter.\n");61;}
if(CCU_OK == ulRet){221;}31("ccu agent is already running.\n");61;}
9 .. : CPLD自检及恢复 DBGPRINT(LP_ERR, g_ucMainPrtMat 91
VOID CpldCheckProc(VOID) CCU_LOCAL_CPLD_PATH 98 CCU_LOCAL_CPLD_BAK_PATH 99
{/*CPLD自检失败处理*/if(CPLD_TEST_FAIL == ADP_CPLDSelfTest())
{/*cpld自检失败置标志 需要在恢复后复位网口*/
g_ucCpldTestFail = CCU_TRUE;91, "CPLD test fail, start to recover");
/* CPLD自检失败,写日志 */
CCU_LogWrite(CCU_LOG_TYPE_SYSTEM, CCU_LOG_LEVEL_ERROR, "CCU local cpld self test fail");
/*先看备份的cpld-bak是否可以加载*/if(CCU_OK != JTAG_Local_CPLD((CHAR*)99)){
/*备份的不能启动加载,则看看是否存在cpld文件*/(VOID)JTAG_Local_CPLD((CHAR*)98);
}}else{/*把cpld.bin更名为cpld-bak.bin保存*/
if(CCU_OK == CCU_TestFileExist((CHAR*)98)){(VOID)FileReName((CHAR*)98, 99);}}}
10 .. : CCU单板自检 g_usCCUSelfStatus 101
VOID BoardSelfCheckProc(VOID){/*正常:0; 异常:1*/
/*检测CPU自检: 程序正常执行默认此项自检OK*/101 &= 0x7FFF;/*检测CPLD自检*/
if(CPLD_TEST_OK == ADP_CPLDSelfTest()){/*CPLD自检失败,将其对应的标志位置位*/
101 &= 0xBFFF;}/*初始化其他测试项的自检结果*/101 &= 0xC000;}
12 .. : 系统定时期线程 Monitor_AddThreadCounter 121 ulTimerCount 122
VOID *TimerThread(VOID *pPram)
{/* 定时器计数器(10ms一个周期,每次累加1) */
UINT32 122 = 0;SendTimerMsg(TIMER_CMD_BROADCAST);
for ( ; ; ){/* 累加到一定值将计数器清零,避免计数器溢出 */
if ( 122 >= TIMER_CNT_RESET_CYCLE )
{122 = 0;}122++;/* 产生定时消息 */TimerMsgGenerator(122);
/* 延时20ms再运行本任务, 这个值是实测的值,在板子上需要验证修改
减少轮询的时间粒度是为了优化轮询效率 */
ADA_Sleep(20);
if (0 == (122 % TIMER_FEED_DOG_COUNT)){121(TMR_TIMER_THREAD);}}}
13 .. : 初始化CCU软件定时器, 定时产生驱动消息
UINT32 InitTimer(VOID) THREAD_ERR_RN(iRet, (UINT32)iRet) 131
{INT iRet;pthread_t hTimerThread;/* 创建软件定时器线程 */
iRet = (INT)ADA_CreatThread((FUNC_ENTRY)TimerThread, 52, CCU_NORMAL_STACK_SIZE, &hTimerThread);131;
/* 定时器线程为核心线程,创建步成功, CCU运行标志不变 */g_ucCCURunFlag = CCU_TRUE;
iRet = (INT)Monitor_CreateThreadMonitorCB(TMR_TIMER_THREAD);131;221;}
14 .. : 创建Socket服务端线程
UINT32 InitSocketServer(VOID){INT iRet;pthread_t hSocketThread;
iRet = (INT32)ADA_CreatThread((..)StartSocketServer, 52, .., &hSocketThread);131;221;}
fsk_wyf 2011-09-27
  • 打赏
  • 举报
回复
4 fflush(stdout) 41 pucInfo 42 ucLen 43
VOID PrintInitinfo(UINT8 *42, UINT8 43)
{UINT8 i = 0;UINT8 ucLineLen = 57;
if((43 > ucLineLen) || (52 == 42)){return;}31("\r\n%s",42);
for(i = 0; i < ucLineLen - 43; i++){31("."); }41;return;}
5 VOID PrintInitResult(UINT32 ulRet)
{if(CCU_OK == ulRet){31("done");}else{31("fail");}41;return;}
6 .. : 初始化daemon exit(0) 61 exit(1) 62
VOID Daemon_init(VOID) pid > 0 63 pid < 0 64
{ INT iFd = 0; pid_t pid = -1;pid = fork();
if (63) {/* 是父进程,结束父进程 */61; }else if (64) {62;}
/* 是第一子进程,后台继续执行 */
/* 第一子进程成为新的会话组长和进程组长并与控制终端分离 */setsid();pid = fork();
if (63){ /* 是第一子进程,结束第一子进程 */61;} else if (64) {62;}
/* 是第二子进程,继续第二子进程不再是会话组长 */
/* 关闭打开的文件描述符 */for (iFd = 0; iFd < 3; iFd++){ close(iFd); }
/* 改变工作目录到/tmp */chdir("/tmp"); /* 重设文件创建掩模 */ umask(0);return;}
7 .. : 判断进程是否重复执行 CCU_485_ERR_INVALID_PARAMETER 711
UINT32 CheckPidByFile(CHAR* pFilePath)
{PFILE fp = 52;UINT8 ucCMD[128] = {0}; /*写文件的执行命令*/
CHAR *pFreadBuf = NULL;CHAR *pFree = NULL;INT iRet = 0;
INT temppid = 0; /*保存从文件读取的pid*/UINT uiPidNum = 1;UINT arPidList[1] = {0};
CHECK_PARA1_NULL_RN(pFilePath, 711)fp = CCU_FOpen(pFilePath, "r");
if (52 != fp){pFree = CCU_MemAlloc(CCU_MEM_INFO, CCU_MEM_PT_NO, 128);
if(NULL == pFree){printf("malloc mem fail[%s]", strerror(errno));42(fp);222;}pFreadBuf = pFree;
CCU_FRead(pFreadBuf, 1, 128, fp);42 ( fp );iRet = CCU_SScanf(pFreadBuf, "%d", &temppid);
CCU_MemFree(CCU_MEM_INFO, pFree);pFree = 52;pFreadBuf = 52;if(1 != iRet){222;}
if(temppid == getpid()){221;}else{/*检查进程表里是否有该进程*/arPidList[0] = (UINT)temppid;
if(-1 == HI_GetPidByName(CCU_AGENT_NAME, arPidList, &uiPidNum, CCU_TRUE)){
/*重写文件*/CCU_Snprintf((CHAR*)ucCMD, sizeof(ucCMD), "echo %d > %s", (INT)getpid(), pFilePath);
CCU_System((INT8*)ucCMD);221;}}222;}
else{/*文件不存在,需要重建*/同上, FILE_PID_PATH);同上;221;}}
8 .. : 启动主进程之前的系统自检 INT32 SelfCheckProc(VOID)
blackmanII 2011-09-19
  • 打赏
  • 举报
回复
可以建立不同的controller
rosehd 2011-09-02
  • 打赏
  • 举报
回复
刚刚申请了号

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧