不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015

tp中, 通常说的系统就是框架; 项目就是 "应用程序",就是"网站"

模板, 用Tpl表示, 为什么不用Tmp, 因为temp常常简写为tmp, 可能被误解为 "临时目录", 而tmpl则不会产生误解??

控制器为什么用m表示, 而不用c: controller表示?

第一, 好像c表示的是conifg, 配置, 而且, C函数也是用来访问配置情况的.

第二, 用m来 表示控制器, 其实控制器就是一个"模块", 一个module. 只是这个模块放在url请求路径中, 跟Model当然就不一样. 那你也不能说, m就是Model阿,它也可以表示module阿!

为什么叫控制器: 完全可以比对"遥控板的控制器的 概念": 理解控制器, 如同一个遥控板, 就是一个控制器, 一个具有多种操作功能的模块, 如遥控器, 可以开机, 关机, 选台, 调音量, 亮度等等, 它就是多种操纵方法的集合.

同样的, tp中的一个控制器, 表示的是 一组相互关联, 相互之间在逻辑上有关系的 多个 操作(一个操作就是一个成员函数) 的集合, 一个控制器就是一个模块, 就是一个*.class.php 文件, 一个类, 它包含多个 成员函数, 这些成员函数=方法, 就是表示多个操作. 控制器是从功能上来说的, 模块是从结构上来说的, 两者是统一的.

总之, 多个方法函数的集合体就是一个控制器, 就是一个模块. 这些方法操作的结果 , 就是 对应的视图(即网页, 页面). 如同遥控板控制器, 选台操作, 的结果就是 更换频道, 调节音量的结果就是 声音的增大或减小. 有了这样的理解, 今后组织网站逻辑功能的时候, 就可以更清楚的根据功能/操作的集合 ,写控制器, 模块了.


Aop: aspect oriented program, 面向方面的编程, 方面是指切面, 是多个不同的对象都 有公共的行为时, 如果对每个对象都封装相同的行为, 会造成代码的急剧重复增长, 如果新增/扩展对象也有这样的行为时, 也会出现同样的问题, 不便于扩展. 所以就把这样的公共行为提起出来,相当于把每个对象横切开来, 形成一个切面, 然后这个切面可以对每个对象完成相同的操作, 只要你传入相应的对象就号了.

在tp中, Aop是通过设计模式"代理"来实现的...


tp笔记

thinkphp中的常量:

  1. 为什么要使用常量?

    其实这些所谓的常量也不是真的不变, 只是一些“伪常量”, 代表一些内容/配置/路径, 你完全可以写死, 只是为了代码的灵活性和 移植性的目的

  2. 为什么要这么多常量?

    因为在不同的 模块、 组件、 功能中, 需要不同的处理, 所以需要用不同的常量来表示/代表/处理。

  3. 应该按分类来记忆这些变量

    包括类别:
  • 预定义常量, 不会随环境的变化而变化, 一旦下载的框架定了, 就是不变的, 相当于真的 常量
  • 路径常量, 包括系统(框架的路径常量)和项目(网站程序)的目录路径常量, 用于系统默认的目录规范,如果不希望定制目录, 这些路径常量一般不需要更改。
  • 系统常量,是指随着开发环境的改变、设置的改变而改变的。如: IS_POST,ROOT, APP_NAME, THINK_PATH之类的等。
  • 注意, tp中的 惯例配置中, 也有很多(其实也是分类的) 大写的下划线连接的"变量", 注意那个不是常量, 那个是配置 key.

    为什么要设置语言lang/zh-cn.php变量?

    主要是为了在 程序中 输出 提示信息, 而且这些提示信息, 用有意义的、 “见名知义”的变量来表示,而不是用“随意的字符串信息”来表示, 便于 管理(一次修改提示信息,处处生效); 便于在程序中多次使用,不用每次都输入;使程序更规范, 而不是更随意, 符合软件工程!

ThinkPHP框架下:

  • common/functions是由tp框架提供的函数库, 如同c语言提供的函数库一样, 是一些基本操作,底层最基本的函数, 如同php提供的函数库一样, 是可以直接使用的, 如php语言提供的函数substr,strstr,strpos等函数可以直接使用一样。 主要是为了和后面的 类的对象中的 成员函数相区别。

  • 框架提供的库Library包括几个:一是框架提供的核心类库Think, 然后是其他Org和Vendor和Behavior库


实际上 tphp3.2.3 可以叫thinkphp4.x, 相对于3.1.x 有很大的不同, 包括php_version>=5.3, 包括namespace, 等等.

thinkphp3.2.3 , 帮你 创建了 index.php文件, 和 应用目录application

在linux下, 要注意 文件和目录的模式, 读写权限..

只对于目录, 当添加其他用户的写权限时 , 将会用 黄色 highlight显示,提醒, 表示警告!(文件不会高亮显示警告)

在整个解压目录中, 就包括几样东西: index.php, Application/, ThinkPHP/ , Public/


ThinkPHP中疑难笔记的更多相关文章

  1. 关于thinkphp框架中模型笔记

    模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...

  2. thinkphp一句话疑难解决笔记 2

    php中的_ _call()方法? 它是php5后为对象 类 新增的一个自动方法. 它会监视类的其他方法的调用, 当调用类的不存在的方法时, 会自动调用类的__call方法. tp的 "命名 ...

  3. thinkphp一句话疑难解决笔记

    URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/hom ...

  4. 关于ThinkPhp中getField方法存在的问题

    在ThinkPhp中我们可以通过以下方式获取数据库数据 query:直接执行SQL查询操作 find:查询单选数据集 getField查询字段值 select:查询数据集 其他......   但今天 ...

  5. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  6. thinkphp中的setInc、setDec方法

    thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 $User = M("User ...

  7. iOS:项目中疑难Crash问题集锦

    项目中疑难Crash问题集锦 iOS App运行中遇到Crash的情况相信大家都遇到过,开发和者测试中遇到了可能很方便的办法就是直接拿着设备连接一下,然后使用Xcode自带的工具就可以解析出Crash ...

  8. ThinkPHP中关于JS文件如何添加类似__PUBLIC__图片路径

    在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:

  9. ThinkPHP中initialize和construct的不同

    ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...

随机推荐

  1. Keystone 命令汇总

    Keystone 命令汇总   目录 [隐藏] 1 用户(User) 1.1 查看用户列表 1.2 创建用户 1.3 删除用户 1.4 显示用户详细信息 1.5 更新用户的密码 1.6 赋予用户一个角 ...

  2. linux tomcat 的安装

    1.tomcat6 下载地址 http://tomcat.apache.org/download-60.cgi 下载的话,下载那个.tar.gz后缀名的即可. 好像在 Linux.Unix上tomca ...

  3. 使用开发者工具调试jsp页面中的脚本

    只举例火狐和谷歌.如果是火狐,一般是用firebug,首先确保开启脚本调试: 然后刷新一下要调试的页面,点击firebug中的行内,选择当前页面: js文件一般直接显示的是js文件的名字,而页面一般是 ...

  4. DNS查找域名的过程

    当我们在浏览器输入一个url地址时,需要获取到这个url的域名,本篇文章主要介绍了关于DNS查找解析域名的过程的一些东西. 关于DNS 不清楚DNS的小伙伴可以点这里:关于域名系统DNS解析IP地址的 ...

  5. 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行

    最近发现easyui时间控件的值格式不支持带斜杠的日期(2016/10/31),必须是2016-10-31这类的才能正常使用,否则默认初始化为当前时间 <input id="Retur ...

  6. Bootstrap CSS 栅格、代码和表格

    一.bootstrap栅格 Bootstrap 提供了一套响应式.移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. Bootstrap 网格系统(G ...

  7. 数字图像处理中的4邻接,8邻接与m邻接

    像素之间的邻接性: 4邻接.如果q在集合N4(p)中,则具有V中数值的两个像素p和q是4邻接的. 8邻接.如果q在集合N8(p)中,则具有V中数值的两个像素p和q是8邻接的. m邻接(混合邻接).如果 ...

  8. while跟do...while的用法

    while语句的形式: while(逻辑表达式){语句:.......} 执行过程: 先判断逻辑表达式的值.若=true,则执行其后面的语句,然后在次判断条件并反复执行, 直到条件不成立为止. do ...

  9. [译]用AngularJS构建大型ASP.NET单页应用(一)

    原文地址:http://www.codeproject.com/Articles/808213/Developing-a-Large-Scale-Application-with-a-Single 渣 ...

  10. 2.1 python使用MongoDB 示例代码

    import pymongo client = pymongo.MongoClient('localhost', 27017) # MongoDB 客户端 walden = client['walde ...