PHPCMS v9 分析(1)

最近公司要做微信接口开发。用asp.net 始终取不到微信用户的openId,换了php却可以。于是把代码改用PHP开发了。

于是在项目中引入了PHPCMS V9这个框架。 学习PHP的第一份资料

其实很早就用PHPCMS V9了,但是一直没有深入研究。这些天正好仔细分析一下。

一: 先简单看了看PHP语法:

PHP是一种弱类型,解释型,动态的语言,和C#不一样,和javascript有那么点相似。

PHP中的类没有public修饰符。据说php5已经开始由namespace,但是phpcms v9目前没有使用。

类中函数的调用:

刚用的时候老闹心了。非静态的方法是$this->方法名。我经常用this->。

类中的静态方法是类名::方法名.

 include,inlude_once,require,require_once

类似C#中的using还是java里的import ,不过这里需要指明php文件的路径。

因为 include 是一个特殊的语言结构,其参数不需要括号。在比较其返回值时要注意

处理返回值:在失败时 include 返回 FALSE 并且发出警告。成功的包含则返回 1

如果来自远程服务器的文件应该在远端运行而只输出结果,那用readfile() 函数更好。另外还要格外小心以确保远程的脚本产生出合法并且是所需的代码

require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行。

include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。

php 5 说是面向对象的,但是它和C#,java不一样,并不能算是完全的面向对象。

至少C# ,java除了main函数,都是类。php 5除了类还有独立的define或者function 等。

二 phpcms v9 的基本结构:

【1】 caches 文件夹放着配置文件和缓存文件。 phpcms v9 使用了文件型缓存,当然也可以配置memcache。

【2】statics 目录 放静态文件JS,CSS,images

【3】phpcms 是程序主文件。

--libs 系统核心库

-- model文件夹    数据表模型,并不像C#活java 里头做ORm时,每个数据表对应一个实体类,实体类每个字段和数据表的字段对应。这里的实体类只是指明了类对应的表而已。每一个model 都继承自父类model

而这个model类,更像是早几年甚至现在都用的SqlHelper。

在phpcms v9中,每个model对单表操作还可以,想写个联合查询是很难滴。目前我用视图实现。即先做一个多表操作的视图,然后在phpcms v9 里放一个视图的model,把视图当表操作么。

【4】 modules 目录放着phpcms v9的所有模块。

每个模块至少有这么几个目录,classes,functions,templates 。

classes:可以看做是控制器的基础类吧

functions:工具函数?

templates : 这是给管理端操作这个模块用的。

三. PHPCMS v9    的运行流程 

1:  index.php 调用base.php.

2:  定义变量,拆分路由,加载路由指定的module中的方法。

其中用了几个反射【不知道是不是可以这么称呼】。

class_exists 判断控制器是否存在,

method_exists 判断方法是否存在。

call_user_func(array($controller, ROUTE_A));  调用控制器里的防范。

在方法中include  php模板文件,齐活,一个网页就这么动起来了。

时间: 2024-08-06 15:41:18

PHPCMS v9 分析(1)的相关文章

phpcms v9升级后台无法上传缩略图的原因分析

phpcms V9 是目前国内使用人数最多的一款开源免费的CMS系统,正是由于他的免费性,开源性,以及其自身的功能性比较强大,所以倍受许多站长朋友们的亲来,以及许多的公司的喜欢.phpcms也为了完善程序漏洞,官方人员会经常性的发布一些程序补丁,让用户使用.防止一些特殊群体,通过程序的漏洞去攻击别人的网站.不过这次更新了phpcms v9之后,发现网站后台上传缩略图的时候,会出现无法上传的现象,浏览器提示undefined错误,经过一方面的测试,发现这个错误,只有一些火狐核心的浏览器才会出现,I

phpcms V9 栏目管理

关于phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: 1 <?php 2 3 // 文件路径:phpcms/modules/admin/category.php 控制器,主要用来控制栏目相关的操作 4 5 defined('IN_PHPCMS') or exit('No permission resources.'); 6 pc_base::load_app_class('admin','admin',0);

phpcms V9 前台首页模板文件的解析

在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是content模块下index控制器的init方法. 下面, 我们逐步分析过程如下: 第一.首页默认执行的是index.php?m=content&c=index&a=init 第二.获取SEO信息:phpcms/libs/functions/global.func.php 第三.模板调用:phpcms/libs/functions/global.func.php 第四.模板解析:phpcms/li

PHPCMS v9.6.0 wap模块 SQL注入

调试这个漏洞的时候踩了个坑,影响的版本是php5.4以后. 由于漏洞是由parse_str()函数引起的,但是这个函数在gpc开启的时候(也就是php5.4以下)会对单引号进行过滤\'  . 看这里:https://github.com/80vul/pasc2at 漏洞来源:https://www.seebug.org/vuldb/ssvid-92929 分析:这个漏洞要三步的过程,直接进入第三步. 根据给的poc:   /phpv9.6.0/index.php?m=content&c=down

phpcms v9 中 PHPSSO无法通讯解决方法(PHPSSO无法通讯间接影响phpcms v9注册会员无法通过“重名无法通过”)

问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同

phpcms v9模板制作常用代码集合

phpcms v9模板制作常用代码集合(个人收藏) 1.截取调用标题长度 {str_cut($r[title],36,'')} 2.格式化时间 调用格式化时间 2011-05-06 11:22:33 {date('Y-m-d H:i:s',$r[inputtime])} 3.多栏目调用&多推荐位调用 调用需求:文章范围为59 60 61三个栏目,并且推送到了27 和28两个推荐位:从第三条开始,连续调用7篇文章. {pc:get sql="SELECT * FROM v9_news WH

phpcms V9的各种功能总结

[1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示: [2]想修改默认的模板风格怎么办? PHPCMS V9默认的网页模板在phpcms目录下的templates文件夹.如果想更换模板,可以根据新模板的文件组织结构,分别覆盖default文件夹和static文件夹.然后到网页后台管理平台,切换网页风格,就可以看到新换的网页模板首页样式. 后台管理操作步骤如下:设置-->站点管理-->修改-->模板风格配置(切换风格,当然风格由自己提前

PHPCMS V9 学习总结(转)

转自:http://www.cnblogs.com/Braveliu/p/5074930.html 在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示: [2]想修改默认的模板风格怎么办? PHPCMS V9默认的网页模板在phpcms目录下的templates文件夹.如果想更换模板,可以根据新模板的文件组织结构,分别覆盖default文件夹和st

phpcms V9 首页模板文件解析(转)

转自:http://www.cnblogs.com/Braveliu/p/5100018.html 转在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是content模块下index控制器的init方法. 下面, 我们逐步分析过程如下: 第一.首页默认执行的是index.php?m=content&c=index&a=init 如下代码(路径:phpcms\modules\content\index.php),先从init函数分析: 1 class