云客专题

云客Drupal源码分析之页面缓存PageCache的请求策略RequestPolicy及响应策略ResponsePolicy

在drupal中提供了两个页面缓存模块,一个是PageCache用于匿名访问时,一个是dynamic_page_cache用于处理任意用户的页面缓存,后者进一步运用缓存能力。他们都有对应的请求策略及响应策略。 那么这两种策略如何运作?作用是什么呢?请看下面 先讲讲用于匿名用户的页面缓存PageCache的请求响应策略: RequestPolicy:请求策略,用于判定评估请求是否允许利用匿名页

云客Drupal源码分析之HttpKernel堆栈

HttpKernel为何物?从名字可以看出它就是处理http请求的核心,只需要把请求对象传给它,就返回响应对象,一次http访问大体上就算完成了(为什么说是大体上,在实际应用中发送完响应还会做一些类似于析构函数工作的事情),为规范统一HttpKernel的使用symfony为此定义了HttpKernel接口,位于\vendor\symfony\http-kernel\HttpKernelInter

云客Drupal源码分析之服务容器及Symfony依赖注入组件

迟迟未写这个主题是因为它太重要,以至于是drupal8系统运行的一个阶段性标识,它贯穿整个系统,服务容器及Symfony依赖注入组件是drupal8系统的中枢,学习的重中之重 很多新同学可能对“服务容器”、“依赖注入”这样的词感觉陌生,其实非常简单,只是名字玄乎而已,下面解释一下: 何为依赖注入?当一个对象的运行要依靠另外一个对象的帮助,那么就是依赖,把这个依赖的对象保存到本对象的属性中以便随

云客Drupal源码分析之Session系统

Session在网站中扮演非常重要的角色,储存临时用户数据、登录数据等等都用到了它,Drupal使用到了Symfony的Session组件,该组件非常强大灵活,drupal在此基础上有所改造和扩展,要理解Symfony的Session组件让我们先从原生php的Session机制说起: php原生的Session采用服务器文件系统储存用户会话数据,这对一般小型网站足够了,但php做的远非如此,它提

云客Drupal源码分析之响应对象Response及Cookie设置

要理解这一部分推荐先了解RFC2616文档,RFC文档就是互联网技术的魂,该文档定义了http协议,里面详细阐述了各类http头的使用,作为补充材料可以看一看上野宣所著的《图解HTTP》一书,于均良翻译,(题外话:日本人写的技术书籍大多比较踏实,印象深刻的是远山启写的《数学与生活》简述极限概念的时候比国内高等教育教科书好太多,希望国内多出好书,) Drupal使用了symfony框架的http-

云客Drupal源码分析之请求对象Request及请求堆栈

drupal是建立在Symfony组件之上,Symfony认为网站系统无非就是一个将请求转化为响应的系统,并以此设计执行流程,drupal也是如此,所以整个系统运行之初就是建立请求对象,这个对象将贯穿整个程序,被各个模块访问。 建立请求对象也是为适应面向对象开发方式,这个对象将把以前面向过程式程序设计经常使用的系统输入、环境变量、cookies、session等等数据封装起来,后续程序仅仅面对该

云客Drupal源码分析之自动加载器与Composer

自动加载器: drupal启动的第一步就是创建自动加载器,自动加载器是什么玩意?它是怎么产生的? 在面向对象的php程序开发的时候,要实例化一个类对象则需要先加载类定义文件,当php发现并没有包含类定义文件时,并不会立即报错,它会去一个列队里面依次调用里面定义的函数或者方法,如果在这个过程中类定义文件被加载了,则返回继续实例化对象,程序可以没有问题的继续执行,否则程序报错,那么这个列队里面的函

云客Drupal源码分析之PHP代码储存PhpStorage

在做项目时,有时需要储存php代码,由于她是可执行的,我们并不希望被随意执行或者修改,drupal提供了一个php代码储存组件来保障这一点,她使用文件系统储存,本篇讲解她的使用和原理。 前备知识点: 首先我们需要明确知道文件系统操作的以下几点: 一个文件有三个时间: 创建时间、修改时间、最后访问时间, 她们分别对应php函数: filectime()、filemtime()、fileatime

云客Drupal源码分析之主题管理器themeManager

主题管理器主要作用是调用模板或主题函数(主题函数不是主题钩子函数,将在D9中移除)将渲染数组转化为页面字符串输出、执行主题修改钩子等,在阅读本篇前,你应该先阅读本系列的以下章节: 主题处理器: 服务id:theme_handler 类:Drupal\Core\Extension\ThemeHandler 和主题管理器只一字之差,但功能完全不同,她是更底层的,用于提供主题扩展的扫描、安装等 主题协商

云客Drupal源码分析之主题钩子注册theme.registry

以下内容仅是一个预览,完整内容请见文尾: 全文目录(全文11509字): 主题钩子定义: 主题注册服务: 主题实现: 主题钩子注册: 主题钩子类型: 函数注册: 扫描注册: 注册顺序及覆写: 主题钩子、主题函数、模板命名: 预处理函数: 注册后处理及修改: 运行时主题注册表: 补充说明:BUG报告: 一、在drupal8.5中主题钩子注册逻辑有多个bug,简要说明如下,请避免,这些云客已经向官

云客Drupal源码分析之主题初始化器

在主题处理器一节提到了主题扩展对象(\Drupal\Core\Extension\Extension),该对象包含了一个主题的全部信息,但仅仅是该主题的信息,在系统中许多地方实际使用的是更高层次的活动主题对象(见下),她包含前者所有信息,还处理库覆写、库继承等主题与主题间相互影响的内容,该对象就是在主题初始化器中产生的,同时主题初始化器还负责加载主题主扩展文件等工作。主题初始化器: 服务id:th

云客Drupal源码分析之主题协商theme negotiator

drupal主题系统十分灵活,你可以全站使用一套主题,用响应式设计去兼容移动端和pc端,如果响应式无法满足要求,你可以在各端分别使用不同的主题,但其灵活性远不止如此,实际上在同一个站点中你可以根据任意条件使用不同的主题,系统后台设定的只是默认值而已,比如在pc端或移动端你可以为不同语言采用不同主题,甚至不同用户采用不同模板,条件是任意的,只需要简单实现一个主题协商即可,这就是本篇所讲的内容。 在d

云客Drupal源码分析之主题处理器theme handler

主题处理器theme_handler与主题管理器theme.manager都是系统提供的服务,虽然一字之差但她们功能完全不同,主题管理器用于主题渲染和派发主题修改钩子,而主题处理器完成更为底层的工作,向上为主题管理器、初始化器等各主题相关组件提供基础功能支持,定义如下: 服务id:theme_handler 类:Drupal\Core\Extension\ThemeHandler 获取方法:\Dr

云客Drupal源码分析之资源库assets library详解

以下内容仅是一个预览,完整内容请见文尾: 全文目录(全文10512字):   SMACSS 资源库静态定义 各设置项及属性数组详解 资源库动态定义 库定义注意事项 资源库覆写 资源库覆写顺序 样式表移除设置 资源库继承 资源库运用 补充说明   各位《云客drupal8源码分析》系列的读者: 本系列分享希望帮助大家理解drupal8底层原理,并缩短学习时间,但部分重点

云客Drupal源码分析之内部动态页面缓存dynamic_page_cache

以下内容仅是一个预览,完整内容请见文尾: 在阅读本篇前请先阅读本系列的《云客Drupal8源码分析之页面缓存PageCache的请求策略RequestPolicy及响应策略ResponsePolicy》内部页面缓存和内部动态页面缓存的区别: 内部页面缓存Internal Page Cache,服务id:http_middleware.page_cache,可以视为匿名用户缓存(对登录用户不起作

05 动力云客之分页查询用户 + 查询用户详情 + 新增用户

1. 用户列表分页查询实现 核心 使用pageHelper实现分页 @GetMapping(value = "api/users")//分页的参数可以不传, 不传就默认设置为1public R userPage(@RequestParam(value = "current", required = false) Integer current) {if (current == nul

04 动力云客之登录后获取用户信息+JWT存进Redis+Filter验证Token + token续期

1. 登录后获取用户信息 非常好实现. 只要新建一个controller, 并调用SS提供的Authentication对象即可 package com.sunsplanter.controller;@RestControllerpublic class UserController {@GetMapping(value = "api/login/info")public R login

03 动力云客项目之登录功能后端实现

创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大.

01动力云客之环境准备+前端Vite搭建VUE项目入门+引入Element PLUS

1. 技术选型 前端:Html、CSS、JavaScript、Vue、Axios、Element Plus 后端:Spring Boot、Spring Security、MyBatis、MySQL、Redis 相关组件:HiKariCP(Spring Boot默认数据库连接池)、Spring-Data-Redis(Spring整合Redis)、Lombok(代码生成工具)、jwt(Json we

02 动力云客之登陆界面

1. 前端登录界面 需求样式: 1. 自定义登录页面装配到main.js src下新建一个文件夹view, view下新建一个Vue Component , 名为LoginView.vue , 并选择options API Composition API用于复杂页面. 生成的LoginView.vue文件 <script>export default {//组件的名字name: "