Typecho Framework简介

简介: Typecho Framework是SegmentFault所用的框架,由创始人joyqi亲手打造。joyqi也是国内知名博客平台Typecho的作者。

Typecho FrameworkSegmentFault所用的框架,由创始人joyqi亲手打造。joyqi也是国内知名博客平台Typecho的作者。

Typecho Framework代码已经开源,本文简单介绍Typecho Framework,希望能帮助PHPer了解 Typecho Framework。


目录结构

Typecho Framework的目录结构如下:

  • Cache
  • DB
  • Helper
  • MVC
  • Validator


Cache

基于Redis的缓存。

Redis是一个开源、基于内存、键值对数据库,使用ANSI C编写。Redis这种基于内存的性质,与在执行一个事务时将每个变化都写入硬盘的数据库系统相比就显得执行效率非常高。


DB

顾名思义这就是和数据库打交道的。

  • Connector.php
  • Adapter
  • Query


Connector

Connector.php中是Connector类,封装了数据库的初始化、选取、更新、增删、插入、查询等操作的函数。


Adapter

数据库的适配器,支持SQLite、MySQL、PostgreSQL。


Query

具体的query封装,InsertDeleteQuerySelectUpdate等等。


Helper

提供一些辅助功能:

  • Autoloader.php 自动加载
  • Config.php 配置
  • HttpClient.php HTTP客户端
  • Logger.php 日志


Validator

顾名思义,各种验证。例如URL、Email、字符串长度,等等。

上面的介绍有意略过了Mvc,因为这部分是整个框架的核心,留待下面重点介绍。


MVC

HTTP请求由Server容器处理,Server容器中包括请求、响应、路由、拦截器等对象。Server收到HTTP请求后,会生成相应的请求和响应对象,以注入的方式传给Action。

获得Server注入的对象后,Action与更后端的Service打交道,获取所需的数据。例如数据库等操作,都由Service打理。Action从Service获取所需数据后,传递result给Server的响应对象。

Action传递result,这是Typecho Framework的特色。result可以是template,也可以是json,等等。使用result,方便代码更好地复用。

上面提到了注入。这也是Typecho Framework的特色。关于注入这个概念,可以参考wikipedia的解释。举个例子吧。假设Action A需要使用Model X,通常的做法是用$this->load(XModel)来导入,或者直接使用$this->Xmodel(通过__get这样的magic method实现)。而使用了注入,则只需在Action A中使用private XModel声明,非常的优雅,由于XModel在内存中只有一个实例,性能上也很不错。


小练习

做中学是一种高效的学习方法。通过上面的介绍,你应该对Typecho有了一定的了解,现在是练手的时候了。

参考Typecho Framework的源代码,以及Typecho Framework示例,完成以下三个joyqi给出的小练习:

  1. 输出Hello World
  2. 使用模板输出Hello World
  3. 使用模板,模板中涉及传入的参数
相关文章
|
XML Android开发 数据安全/隐私保护
Android DEX加壳
1. APP加固 1). 原理 图1.png 加密过程的三个对象: 1、需要加密的Apk(源Apk) 2、壳程序Apk(负责解密Apk工作) 3、加密工具(将源Apk进行加密和壳Dex合并成新的Dex) 2). DEX头内容 图2.png 需要关注的字段: checksum 文件校验码 ,使用alder32 算法校验文件除去 maigc ,checksum 外余下的所有文件区域 ,用于检查文件错误 。
2508 0
|
12月前
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
21326 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
NoSQL Ubuntu Redis
Ubuntu开机自启redis
本文介绍了如何在Ubuntu系统中通过创建systemd服务单元文件、重新加载systemd配置、启用服务和启动服务的步骤来实现Redis的开机自启动。
901 1
|
缓存 人工智能 算法
Nvidia_Mellanox_CX5和6DX系列网卡_RDMA_RoCE_无损和有损_DCQCN拥塞控制等技术简介-一文入门RDMA和RoCE有损无损
Nvidia_Mellanox_CX5和6DX系列网卡_RDMA_RoCE_无损和有损_DCQCN拥塞控制等技术简介-一文入门RDMA和RoCE有损无损
4732 0
|
弹性计算 安全 API
HTTP 405 Method Not Allowed:解析与解决
本文详细解析了HTTP 405 "Method Not Allowed" 错误,包括其定义、常见原因、示例代码及解决方案。通过检查API文档、修改请求方法或更新服务器配置,可有效解决此错误,提升Web开发效率。
9854 2
|
机器学习/深度学习 数据采集 算法
Python基础算法解析:逻辑回归
Python基础算法解析:逻辑回归【2月更文挑战第20天】
520 1
Python基础算法解析:逻辑回归
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
11859 1
|
人工智能 供应链 云栖大会
做好全域消费者数智化营销 太古可口可乐念好数字化的“经”
做好全域消费者数智化营销 太古可口可乐念好数字化的“经”
512 0
做好全域消费者数智化营销 太古可口可乐念好数字化的“经”
|
网络协议 算法 Linux
半道转嵌入式开发适合吗?(从事十年的我建议不要,你会后悔的)
半道转嵌入式开发适合吗?(从事十年的我建议不要,你会后悔的)

热门文章

最新文章