您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSV9框架代码分析
凡旋2025-05-19phpcms教程已有6人查阅
导读PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户直接请求运行的。
PHPCMS V9的入口程序(index.php)如下: 第一行:定义项目的根路径,后面文件查找依赖此变量。
DIRECTORY_SEPARATOR(目录分隔符)是一个返回与操作系统相关的路径分隔符的内置命令,不需要任何定义与包含即可直接使用。由于windows上习惯性的使用\作为文件分隔符,但是在linux上人家是不认识这个标识的,人家只认识/,于是就要引入下面这个php内置常量:DIRECTORY_SEPARATOR。
第二行:根据项目根路径引入base.php文件,文件内容如下: base.php文件为框架入口文件,包含实例化系统/模块类方法,调用系统/模块方法,系统常用常量等。为了便于理解,现按顺序分四部分解析:
[1] 定义常量 IN_PHPCMS 在phpcms项目源码搜索关键字“IN_PHPCMS”,相关的代码语句有: 以及: defined:是用来检查常量是否已定义。
注意:如果你要检查一个变量是否存在,请使用isset()。如果你要检查一个函数是否存在,使用function_exists()。defined()函数仅对constants常量有效:如果该名称的常量已定义,返回TURE;未定义则返回FALSE。
or:如果or前面的代码语句执行失败(或者返回false、0、null),那么执行or到其后第一个分号前面的代码(但双引号的分号不算);如果or前面的代码执行成功(或者返回true、非0、非null),那么不执行or到其后第一个分号前面的代码。
综上所述,phpcms为了代码不执行错误,每个执行文件都会判断是否包含了base.php文件,以减少错误。
[2] 定义PHPCMS框架路径、缓存文件夹地址
具体代码片段见上文base.php文件代码详细
__FILE__ 返回文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径,比如PHPCMS里面的 PC_PATH.’..’.DIRECTORY_SEPARATOR)
dirname(__FILE__) 函数返回的是脚本所在的路径,不会返回当前的文件名称。如果b.php包含了dirname(__FILE__)相关代码,同时b.php被其他目录里的a.php文件require或者include已用的话,返回的依然是b.php所在的那个文件夹路径,而不是变成a.php文件所在目录。
[3] 主机协议、当前访问的主机名、来源、系统开始时间 [4] 加载共用函数库 很显然,类中静态方法调用,具体执行步骤见类pc_base(上文base.php文件中)的函数。
头两句分别加载了/phpcms/libs/functions/global.func.php 和 /phpcms/libs/functions/extention.func.php文件。
global.func.php是共用函数库。
extension.func.php是用户自定义函数库。
之后一句是加载/phpcms/libs/functions/autoload/文件夹下面 *.func.php 文件(详见函数注释)。
第三行:pc_base是base.php定义的类,调用类方法create_app。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户直接请求运行的。
PHPCMS V9的入口程序(index.php)如下: 第一行:定义项目的根路径,后面文件查找依赖此变量。
DIRECTORY_SEPARATOR(目录分隔符)是一个返回与操作系统相关的路径分隔符的内置命令,不需要任何定义与包含即可直接使用。由于windows上习惯性的使用\作为文件分隔符,但是在linux上人家是不认识这个标识的,人家只认识/,于是就要引入下面这个php内置常量:DIRECTORY_SEPARATOR。
第二行:根据项目根路径引入base.php文件,文件内容如下: base.php文件为框架入口文件,包含实例化系统/模块类方法,调用系统/模块方法,系统常用常量等。为了便于理解,现按顺序分四部分解析:
[1] 定义常量 IN_PHPCMS 在phpcms项目源码搜索关键字“IN_PHPCMS”,相关的代码语句有: 以及: defined:是用来检查常量是否已定义。
注意:如果你要检查一个变量是否存在,请使用isset()。如果你要检查一个函数是否存在,使用function_exists()。defined()函数仅对constants常量有效:如果该名称的常量已定义,返回TURE;未定义则返回FALSE。
or:如果or前面的代码语句执行失败(或者返回false、0、null),那么执行or到其后第一个分号前面的代码(但双引号的分号不算);如果or前面的代码执行成功(或者返回true、非0、非null),那么不执行or到其后第一个分号前面的代码。
综上所述,phpcms为了代码不执行错误,每个执行文件都会判断是否包含了base.php文件,以减少错误。
[2] 定义PHPCMS框架路径、缓存文件夹地址
具体代码片段见上文base.php文件代码详细
__FILE__ 返回文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径,比如PHPCMS里面的 PC_PATH.’..’.DIRECTORY_SEPARATOR)
dirname(__FILE__) 函数返回的是脚本所在的路径,不会返回当前的文件名称。如果b.php包含了dirname(__FILE__)相关代码,同时b.php被其他目录里的a.php文件require或者include已用的话,返回的依然是b.php所在的那个文件夹路径,而不是变成a.php文件所在目录。
[3] 主机协议、当前访问的主机名、来源、系统开始时间 [4] 加载共用函数库 很显然,类中静态方法调用,具体执行步骤见类pc_base(上文base.php文件中)的函数。
头两句分别加载了/phpcms/libs/functions/global.func.php 和 /phpcms/libs/functions/extention.func.php文件。
global.func.php是共用函数库。
extension.func.php是用户自定义函数库。
之后一句是加载/phpcms/libs/functions/autoload/文件夹下面 *.func.php 文件(详见函数注释)。
第三行:pc_base是base.php定义的类,调用类方法create_app。
本文标签:
很赞哦! (2)
暂无内容 |
暂无内容 |
相关教程
相关源码
-
pbootcms模板(PC+WAP)微信小程序开发公司网站本模板为微信小程序开发代理、软件开发公司等企业设计,基于PbootCMS内核开发,支持PC+WAP双端响应式布局,数据实时同步,适用于多行业快速建站。查看源码
-
pbootcms模板PC+WAP娱乐新闻资讯类博客网站源码该模板基于PbootCMS内核开发,专为娱乐新闻、健康生活类资讯网站设计,同时支持快速适配其他行业(如企业官网、博客门户等),仅需替换图文内容即可完成转型。查看源码
-
pbootcms模板(PC+WAP)APP应用软件下载类官网源码为APP应用软件官网打造的响应式解决方案,PC端与移动端(WAP)数据实时同步,一次更新全网生效,满足多终端用户无缝体验需求。查看源码
-
工商注册财务代理记账类自适应pbootcms网站工商注册、财务代理记账企业打造的数字化门户模板,基于PbootCMS内核深度开发。采用前沿响应式架构,无缝适配手机端触控交互与PC端展示需求查看源码
-
(PC+WAP)绿色草坪地坪操场pbootcms网站模板该模板基于PbootCMS内核开发,专为人造草坪、地坪施工企业设计,采用绿色主题呼应行业属性,实现PC与WAP端全栈响应式适配,确保跨设备无缝浏览体验。查看源码
-
(pc+wap)pbootcms网站模板蓝色小程序网站开发公司基于PbootCMS内核开发的营销型门户模板,为小程序开发公司、电商软件企业打造。采用HTML5自适应架构,实现PC与手机端数据实时同步展示查看源码
暂无内容 |
暂无内容 |
图文教程
PHPCMSV9点击量排行调用方法
另外我们还需要修改phpcms里模型代码以适用其上面的调用标签,打开 phpcms\modules\content\classes\content_tag.class.php 文件,在里面添加一个函数,phpcms前台js获取不到cookie用户信息的解决方法
头一:保证login.js和data/config.js的完整性;第二:检查config.js里设置的cookie前缀是否和include/config.php里的cookie前缀一致。phpcms手机站制作方法
PHPCMS搭建PC端网站比较方便,但是在wap手机端方面却不怎么实用,而且自带的手机建站感觉不是很好,而且模版不好控制,现在对其进行修改。phpcms v9 0day
只要url编码一下,替换一下就ok了在updatexml里必须只能有三个值所以爆帐号密码要一个一个爆
分享笔记 (共有 0 篇笔记) |