探究thinkphp URL路由流程主流程 : > URL访问 > 路由配置参数解析 > 路由匹配实例化
探究thinkphp如何实现路由访问?怎么实现?
index模块建立test控制器id()方法
路径thinkphp_5.0.7_core/application/index/controller/test.php
123456789101112131415<?phpnamespace app\index\controller;use think\console\command\make\Model;use think\Controller;use think\Route;class Test extends Controller{ public function id() { $id = input('id'); return sprintf('current page id %s',$id); }}
配置路由
...
thinkphp框架浅析(一) : url路由解析到类映射实例化加载原理剖析
源码解读通过thinkphp test控制器test方法 探究thinkphp运行处理流程
路径: thinkphp_5.0.7_core/application/index/controller/test.php1234567891011121314151617181920<?phpnamespace app\index\controller;use think\Controller;class Test extends Controller{ public function __construct() { parent::__construct(); } public function index() { echo 'test/index'; } public function test(){ ...
thinkphp 架构
框架源码目录结构
1234567891011121314151617181920212223242526├─thinkphp 框架系统目录│ ├─lang 语言文件目录│ │ ├─ zn-cn.php 中文文案配置│ ├─library 框架类库目录│ │ ├─think Think类库包目录│ │ │ ├─ cache 缓存模块│ │ │ │ ├─ Driver.php 缓存驱动抽象类│ │ │ │ ├─ driver 缓存驱动实现类库目录。包含文件(默认)、Lite、Memcache、Redis、Sqlite、Wincache、Xcache驱动类实现。│ │ └─traits 系统Trait目录│ ││ ├─tpl 系统模板目录│ ├─base.php 基础定义文件│ ├─console.php ...
golang go map 声明、赋值、循环
声明格式
1var map1 map[keytype]valuetype
未初始化的map值是nil 在声明的时候不需要知道 map 的长度,map 是可以动态增长的。
声明与赋值
12345678910111213 var mapLit map[string]int//var mapCreated map[string]float32var mapAssigned map[string]intmapLit = map[string]int{"one": 1, "two": 2}mapCreated := make(map[string]float32)mapAssigned = mapLitmapCreated["key1"] = 4.5mapCreated["key2"] = 3.14159mapAssigned["two"] = 3fmt.Print(mapAssigned)
make 操作
12345 ...
go 数组使用
123456789101112var arr2 [5]intarr2[1] = 5 //数组声明以后可以直接赋值fmt.Println(arr2)arr := new([5]int) //&[0 0 0 0 0] 返回带地址的初始化值fmt.Println(arr)arr1 := [5]int{} // [0 0 0 0 0] 返回初始化的值fmt.Println(arr1)arr3 := [5]int{1,2,3}fmt.Println(arr3)
go slice 使用
123456789101112131415161718var s []int//s[0] = 10 //不能未初始化赋值s = make([]int,5)s[0] = 10 //初始化以后才能赋值fmt.Println(s)s1 := make([]int,5) //make 第二个参数需要指定长度s1[0] = 5 //通过make初始化以后就可以赋值了fmt.Println(s1)s2 := new([]int)fmt.Println ...
php 内置函数方法使用
reset
strip_tags
ReflectionClass::getConstructor
ReflectionClass
newInstanceArgs
is_callable()
reset
输出数组中的当前元素和下一个元素的值,然后把数组的内部指针重置到数组中的第一个元素:
代码示例123456<?php$people = array("Bill", "Steve", "Mark", "David");echo current($people) . "<br>"; //Billecho next($people) . "<br>"; //Steveecho reset($people); //Bill?>
strip_tags
剥去字符串中的 HTML 标签:
代码示例123<?phpecho strip_tags("Hello <b>world! ...
php 内置函数方法使用(2)
fastcgi_finish_request
putenv
parse_ini_file()
spl_autoload_unregister
class_alias
使用fastcgi_finish_request提高页面响应速度当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法.
12345678<?phpecho '例子:';fastcgi_finish_request(); /* 响应完成, 关闭连接 *//* 记录日志 */file_put_contents('log.txt', '依然可以输入日志');?>
123456789101112131415<?phpecho '例子:';file_put_contents('log.txt', date(& ...
php自身并不支持多继承,但是可以用过Trait实现多继承。
Trait和Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
代码实例
12345678910111213141516171819202122232425262728trait ezcReflectionReturnInfo { public function __construct() { echo 'ezcReflectionReturnInfo'; } function getReturnType() { echo 'getReturnType'; } function getReturnDescription() { echo 'getReturnDescription'; ...
Mysql三范式第一范式:无重复的列
字段不可再拆分
第二范式:属性完全依赖于主键 [ 消除部分子函数依赖 ]
范式是递增的,要满足第二范式,必须满足第一范式!2NF要求字段对主键没有部分依赖!
123456789 先说部分,有部分说明主键是复合主键。来个彻底的解决办法就是,让主键不是复合主键,即让主键是一个字段!再说依赖,依赖是通过一个字段能确定另一字段,我们就说被确定的字段对确定它的字段有依赖。比如:知道了“名字”字段,便能确定“性别”字段。我们就说“性别”字段对“名字”字段有依赖。最后连起来解释部分依赖,记录中某些字段的值只是被复合主键中的某个值确定了,我们就说字段对主键有部分依赖。做法:只要给表一个“id”字段,并设置自动增长,便可。其实就是取消掉复合主键。通过另一个单一字段的主键来代替。一句话,没有复合主键,就没有部分依赖。写法为:id int unsigned primary key auto_inrement
第三范式:属性不依赖于其它非主属性 [ 消除传递依赖 ]
满足第二范式,并取消传递依赖。要满足第三范式,不能在一张表上操作了,需要把原表拆分成几个表。当然如果 ...
mysql_fetch_row和mysql_fetch_assoc区别
mysql_fetch_row()把数据库的一列储存在一个以零为基数的阵列中,阵列索引以0开始。
mysql_fetch_assoc()把数据库的一列储存在一个关联阵列中,阵列的索引是栏位名称,即字段名。
mysql_fetch_array()可以同时送回mysql_fetch_row()和mysql-fetch_assoc()的值
Mysql数据库中MyISAM和InnoDB的区别
区别于其他数据库的最重要的特点就是其插件式的表存储引擎
存储引擎是给予表的,而不是基于数据库的
InnoDB存储引擎:主要面向OLTP(Online Transaction Processing,在线事务处理)方面的应用,是第一个完整支持ACID事务的存储引擎(BDB第一个支持事务的存储引擎,已经停止开发)。
特点:
行锁设计、支持外键
支持类似于Oracle风格的一致性非锁定读(即:默认情况下读取操作不会产生锁)
InnoDb将数据放在一个逻辑的表空间中,有InnoDB自生进行管理。从MySQL4.1版本开始,可以将每个In ...