13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv
14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱动_高清.mp4
15集: ThinkPHP3.1.3使用视频教程--通过后台管理许愿墙贴子与分页类的使用_高清.mp4

在editplus中 编译IndexAction.class.php文件时, 会提示" cannot find class 'Action'"?

这是因为, 你直接编译 / 直接访问的是 IndexAction.class.php 文件本身!
不能这样访问IndexAction.class.php本身文件, 要通过 入口文件 index.php/Index/Index/index来访问!

判断是否通过 登陆 进入后台页面的方法?

可以通过IS_POst, 或者通过判断 if(!isset($_SESSION['uid'] || !isset($_SESSION['username'])), 在登陆页面写入 session.
关于!的使用: 在判断if(...)的时候, 直接写, 如果要判断 "没有..., 不是..."的时候, 就直接在原来 的条件前面加!.
||: 表示两者当中的任意一个条件的时候, 用或/

也可以在后台 对应的 类 IndexAction 等 都继承自 CommonAction, 而不是继承自基类 Action,
在CommonAction中写自动函数:
public function _initialize(){...} // initialize前只有一个下划线
然后在_initialize()方法中去判断是否是通过登陆页面进入的, 就去判断是否设置了 $_SESSION['id']等变量, 否则就跳转到登陆页面...

thinkphp中删除session?

用session_unset();
session_destroy();

判断字符串中是否包含子字符串(子字符)? int index= strpos($hay, $needle); 从函数名称都可以看出来... // 不能用false==来判断, 要用=== 来判断
截取子字符串: substr($str, $start, $length)...
c/c++系列的{大括号通常是单独占一行, java, php系列的大括号{ 通常是在一行 的 末尾!
if(){}else{} ... if(){} elseif(){}

Dreamweaver设置文件编码: 默认的是utf-8编码, unicode 标准化表单: c(规范分解, 后跟规范合成)

将session不存入文件而是写入数据库?

默认的处理session是放在 .../wamp/tmp下的
tp处理session是在函数 THINK_PATH/common/functions.php中

       if(C('SESSION_TYPE')) { // 读取session驱动  // 在自定义conf中配置:  'SESSION_TYPE'=> 'Db' 必须这样设置, 因为系统中只定义了SessionDb类$class      = 'Session'. ucwords(strtolower(C('SESSION_TYPE')));// 检查驱动类if(require_cache(EXTEND_PATH.'Driver/Session/'.$class.'.class.php')) {$hander = new $class();  // 生成了SessionDb 类$hander->execute();}else {// 类没有定义throw_exception(L('_CLASS_NOT_EXIST_').': ' . $class);}}// 启动sessionif(C('SESSION_AUTO_START'))  session_start();

所以将session写入数据库的步骤就是:

  1. 配置 'SESSION_TYPE'=> 'Db',
  2. 创建session表 包含前缀: hd_session....
  3. 然后就是往 "$_SESSION['username']中写数据

ucwords ucfirst lcfirst

这些都是php本身自带的内置的函数:
ucwords('hello world'); // output is: Hello World
ucfirest('hello world'); Hello world
lcfirst('HELLO WORDL'); // hELLO WORDL

函数G写法的借鉴

在函数内部用static 关键字, 变量名的风格是: $_xxxx.

function G($start,$end='',$dec=4) {static $_info       =   array();static $_mem        =   array();if(is_float($end)) { // 记录时间$_info[$start]  =   $end;}elseif(!empty($end)){ // 统计时间和内存使用
.........other codes//*** 优化的require_once* @param string $filename 文件地址* @return boolean*/
function require_cache($filename) {static $_importFiles = array();if (!isset($_importFiles[$filename])) {if (file_exists_case($filename)) {   // file_exists_case()区分大小写的来判断文件是存在.require $filename;$_importFiles[$filename] = true;} else {$_importFiles[$filename] = false;}}return $_importFiles[$filename];
}

页面布局版式上 注意 "内容横向上的长度 要控制, 适当的 多向纵向排列 :: 布局上不用table, 而在内容表现上可以考虑多采用表格/图表/图片的手段" 的用法

表格的内容可以实现 分组: thead, tbody, tfoot, 如果这样使用的话, 表格总是从 头/body/foot的顺序显示, 而不管他们书写的先后顺序
每个分组都要包含完整的 tr>...td>.../td> /tr>

<table border="1">  <thead>  <tr>  <th>Month</th>  <th>Savings</th>  </tr>  </thead>  <tbody>  <tr>  <td>January</td>  <td>$100</td>  </tr>  </tbody>  <tfoot>  <tr>  <td>Sum</td>  <td>$180</td>  </tr>  </tfoot>
</table> 

*{margin:0;padding:0}的写法叫css reset, 据说有性能问题...

=================================

tp如何写Redis 的session存储机制?

php的函数命名: 总是以某一类 / 要处理的对象关键字 / 等开头...

user-level自定义的session storage 机制:

session_set_save_handler(...)

这里有两个函数:
call_user_func()调用回调函数: 可以是全局函数, 也可以是类的静态/非静态方法.

有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。
一个 PHP 函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了语言结构如 array(),echo(),empty(),eval(),exit(),isset(),list(),print()和 unset()。
一个对象的方法以数组的形式来传递,数组的下标 0 指明对象名,下标 1 指明方法名。
对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可。

session_set_save_handler(callback $open....)的参数是回调函数. 由于这里调用的回调是类的方法, 所以采用数组的方式, 数组的第一元素是: 类名: 类名要是传引用; 第二个元素是 回调的函数名或方法名, 所以就是:
array(&$this, 'open'), array(&$this, 'close'),.....

session的处理机制有6个方法, 分成3组:
open($id, $name), close()| read($id), write($id, $data)|destroy($id), gc($maxLifeTime).

对于分组项目, 链接跳转地址的写法:

href={:U('Admin(分组)/MsgManager(控制器 模块)/index(方法))}

对于分组项目, 链接跳转地址的写法:

href={:U('Admin(分组)/MsgManager(控制器 模块)/index(方法))}


### thinkphp中引入css文件?
使用css标签: <css file='__PUBLIC__/Css/public.css' />
使用js标签 <js file='__PUBLIC__/Js/public.js' />

```

tp中如何使用分页类?

// 这里直接就写 ORG开始了, 包括tp的很多地方, 系统在 内部 都已经规定了 路径的前面部分(前缀) 所以写路径的时候, 就直接按照tp的规定 写后面的路径部分就可以了.

 首先要导入 分页类: import('ORG/Util/Page'); // tp自动就设置了导入类库的路径是: Think_Path/Extend/Library/

Page类的new: 如果类有同名的函数则new时调用那个同名函数, 否则就调用 __construct函数.
Page的__construct构造函数需要两个变量: $totalRows, $listRows

Page类的成员变量.
有public成员 : $url, $parameter, $firstRow, $listRows, 注意其他有些是 protected成员, 如$totalRows $totalPages, $nowPage, $config等.

扩展的Page类中的函数?

Page类有三个函数,

  1. 一个是Page类的构造函数 __construct
  2. 一个是设置Page的保护成员$config的: setConfig. 因为可以在$config中 自定义的加入你要显示提示内容等等
  3. 一个就是最重要的show( )函数, 它返回在 分页页面的最低处要显示的 字符串内容, 是通过 str_replace($this->config['theme']...)中的相关内容来实现的,你可以返回这个字符串, 并把它分配到 模板页.

使用左右alt键 的方法是: 放在空格键上的 左右大拇指!

方法页面的变量 必须经过分配后, 才能在模板页使用输出, 这是为了安全! 但是分配的方法有两种:一是使用assign, 另一种是使用$this->tpl_var = $var. 感觉后一种方法更直接!! 能够识别和习惯使用这种直接输出的方式: 实际上当前类中, 是没有定义这样的 成员变量的, 所以这种写法就是这样的...

而且可以分配多个变量, 写多个$this-> var1 = $var1; $this->var2 = $var2 而assign要通过数组来分配多个模板变量

M方法中, 最后的应该是select方法, 倒数接着是: limit, 再接着是order等...顺序不应该乱!

##在thinkphp中 有的地方写 点语法不行, 比如在模板页使用传递过来的变量时, 就不能用点语法来写哦. 但是, 数组的写法总是可以的, 所以为了安全起见, 建议
数组/对象? 都用 [] 中括号数组的写法形式.

关于NULL的写法: 有些时候可以写成为null, 但是写成NULL是一定可以的, 也推荐写成NULL

编程中 关于加不加引号的问题?
一个核心, 一个宗旨就是 : 主要是进行分析语义:
函数, 只有当在调用的时候, 它表示是一个函数的时候, 才直接用, 不加引号
数字变量, 只有当它表示数字的时候, 才直接使用, 不加引号: 0和"0", 前者表示数字数值0, 后者表示字符0.
true/false, 只有当它表示 逻辑值时, 才直接使用, 不加引号.

等等.....
其他所有的地方, 根据语义分析, 凡是不是表示 其本义 的时候, 只是 引用/表示 它的名称的 时候, 都使用 字符串, 用引号括起来!!

thinkphp有两个重要的函数文件:
common.php是tp的 基础函数库
functions.php 是tp的标准模式下的 公共函数库.
****** 借鉴tp的设计思想: 设计一个函数时, 为了减少函数的个数, 尽量扩展/增加函数的功能! 那就是适当增加函数的参数, 在一个函数中可以实现多个/多种 功能! 如success和error, 除了显示提示信息时, 还可以 指定跳转地址:

success($message, [$jumpUrl], [$ajax])...

记住: success和error是Action类的方法, 因为它是表示 Action类中操作/方法 是否成功的/失败的 情况, 所以不是全局函数.

Db.class.php中的数据库类中的delete函数方法, 中的变量, 可以是数组, 如果是删除的主键, 可以直接传递该主键 , 如:
M('wish')->delete($id); 传统的方法是: M('wish')->where(array('id'=>$id))->delete();

U方法: 在php文件中, 就可以直接调用它就可以了, 在模板中要用: {:U('..')}...

U方法中地址的写法:
如果是 非分组, 就直接写方法名称(在本模块内部)
如过是 分组, 只有一个入口文件, 就要写完整: U('分组名称/模块名/方法名称')

转载于:https://www.cnblogs.com/bkylee/p/5408545.html

thinkphp学习笔记13-15集相关推荐

  1. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  2. # PyTorch学习笔记(15)--神经网络模型训练实战

    PyTorch学习笔记(15)–神经网络模型训练实战     本博文是PyTorch的学习笔记,第15次内容记录,主要是以一个实际的例子来分享神经网络模型的训练和测试的完整过程. 目录 PyTorch ...

  3. 尚硅谷云原生学习笔记(1-75集)

    笔记列表: 尚硅谷云原生学习笔记(1-75集) 尚硅谷云原生学习笔记(76~143集) 尚硅谷云原生学习笔记(144~172集) 尚硅谷云原生学习笔记(173~XXX集) 目录 1.什么是云计算 1. ...

  4. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  5. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

  6. 台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning

    台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning 本博客参考整理自: http://blog.csdn.net/xzy_t ...

  7. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  8. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

  9. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  10. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

最新文章

  1. 【学习笔记】超简单的多项式反三角函数(含全套证明)
  2. UFS和eMMC闪存差异在哪?
  3. fastText中的子词嵌入和高效文本分类:简单高效性能好
  4. libgdx 3D 测试一
  5. 模拟撞击_模玩资讯:EPOCH 汽车撞击测试用模拟假人与实验车辆
  6. Django笔记---数据库设计
  7. go 编译 android arm,golang交叉编译
  8. Java并发(十九):final实现原理
  9. 值得永久收藏的 C# 设计模式套路(一)
  10. maven常用插件功能
  11. 使用Flex4画图形
  12. jdk环境配置-windows 10
  13. 为什么不能说“接受原假设”?
  14. 梯形法则 matlab代码,matlab第二章常微分方程的数值解法
  15. 进阶 | 手把手教你模拟键盘和鼠标操作-ActionChains
  16. 郑州等保测评公司有哪些?在哪里?
  17. 公鸡每只值5文钱,母鸡每只值3文钱,而三只小鸡值一文钱。用100文钱买100只鸡,问:公鸡,母鸡,小鸡各有多少只?
  18. 软件测试中的心理学效应
  19. 培根芦笋卷+蚝油家常豆腐+春笋甜椒拌饭
  20. 【学习笔记】系统的松弛线性性、时不变性、因果性

热门文章

  1. linux标准daemon编写方式
  2. java设计模式之为别人做嫁衣----代理模式
  3. 【DB】几种ETL模式
  4. FreeMarker中文帮助手册API文档,基础入门学习文档
  5. apache源码安装
  6. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
  7. iOS Bluetooth(蓝牙)
  8. Jetty 基本使用样例
  9. java.lang.VerifyError
  10. Laravel5.4 使用Carbon人性化显示发表评论中文时间