最近公司要做微信接口开发。用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模板文件,齐活,一个网页就这么动起来了。